新版对象相关底层操作函数
<p><strong>简要描述:</strong> </p>
<ul>
<li>新版对象相关底层操作函数</li>
</ul>
<p><strong>redis数据结构</strong></p>
<pre><code>{
'人物_Object_Basic_Table': {
"name": "",
"obj_name": "",
"aka": "",
"preffix": "",// 前缀
"suffix": "",// 后缀 默认为空字符串
"base_object": "", // 默认为空字符串
"name_mappers": [],
"name_roots": [],
"c_name": "",
"cpath": "",// 与概念一样
"belong_object": "",// 对象主键 默认为空字符串,只能一个主键
"sub_objects": [], // 默认空列表
"structure": "", // 默认空字符串
"ctime": "2019-03-26 14:43:22",
"mtime": "2019-03-26 14:43:22",
"update_time": "2019-03-26 14:43:22",
"cuser": "root", // 代表系统添加
"summary": "", // 对象简单描述
"image": "", // 图片
"video": "",// 视频
"audio": "",// 音频
"tags":[],// 对象的标签 空列表 不能编辑
"relation_stat": { // 默认为空字典
"compressors": [],// 默认为空列表
"peers": [],
"numbers": [],
"times": [],
"locations": [],
"shorttext": [],
"articles": [],
"images": [],
"images": [],
"audios": [],
"videos": [],
}, // 对象关联数据是统一按概念计算,还是指定主键计算?
"relation_snapshot": {}, // 对象重要关联属性的快照,先计算relation_stat后计算
"values": {
"number": '12', // 数字 默认为''
"unit": "cm", // 对应的单位 默认为'''
},
"ext_data": {
"lon": '1', // 经度 默认为''
"lat": '2', // 纬度 默认为''
},
"object_group": [] // 实时添加
}
}
``
`</code></pre>
<p>对象基础信息</p>
<pre><code>"obj_key": "",
"obj_name": "",
"aka": "",
"cname": "",
"summary": "",
"image": "",
"video": "",
"audio": "",</code></pre>
<p><strong>开发注意:</strong></p>
<ol>
<li>对象标准名和别称的修改,一定会涉及到name_mappers和name_roots,这两个需要联动修改</li>
<li>对象基本信息修改,需要联动修改mtime</li>
<li>relation_stat,relation_snapshot的信息修改,需要联动修改update_time</li>
<li>创建对象 cuser默认为root</li>
<li>文本联想表: 前缀+对象基本名/别称+后缀</li>
<li>map表:对象标准名,别称,前缀+对象基本名,前缀+别称,标准名+后缀,别称+后缀</li>
</ol>
<p><strong>类的构成</strong></p>
<pre><code>class BaseObject(Base):
@property
def preffix(self):
# 对象的名字前缀,可编辑
return
@preffix.setter
def preffix(self,name):
return
@property
def suffix(self):
# 对象的名字后缀,可编辑
return
@suffix.setter
def suffix(self,name):
return
@property
def base_object(self):
# 基础对象 针对于后缀不是空的对象,记录这个对象的基础对象,不可编辑
return
def _set_base_object(self):
pass
@property
def name_mappers(self):
# 本对象的所有在map表中存在的字符映射名字 一般不可编辑
return
def _set_name_mappers(self):
pass
@property
def name_roots(self):
# 本对象的所有在文本联想表表中存在的字符映射名字,不可编辑
return
def _set_name_roots(self):
return
@property
def cpath(self):
# 概念路径,不可以直接编辑,只有移动对象操作可以改变这个属性
return
def _set_cpath(self):
pass
@property
def belong_object(self):
# 如果这个对象是某一个其他对象的一部分,则这里记录隶属对象的主键,可以编辑
return
@belong_object.setter
def belong_object(self, obj_key):
return
@property
def sub_objects(self):
# 如果这个对象包含一系列的其他对象作为一部分,则这里记录包含的对象主键,可以编辑
return []
@sub_objects.setter
def sub_objects(self, obj_key):
return
@sub_objects.deleter
def sub_objects(self):
return
# 移除sub_objects中主键
def remove_sub_objects(self, obj_key):
return
def judge_sub_objects(self):
# 判断一个对象是否属于另外一个对象
# 对象的上一个/下一个对象
pass
@property
def ctime(self):
# 对象的创建时间,不可编辑
return
def _set_ctime(self, ctime):
return
@property
def mtime(self):
# 对象的最后修改时间,只能由系统编辑
return
def _set_mtime(self, set_mtime):
return
@property
def update_time(self):
# 对象的最后刷新时间(由于部分对象基础数据中存在需要根据对象的关联等等动态更新的内容,因此需要刷新),只能由系统编辑
return
def _set_update_time(self, utime):
return
@property
def cuser(self):
# 对象的创建信息 ,不可编辑
return
def _set_cuser(self, user):
pass
@property
def summary(self):
# 对象的简短文字介绍,可以编辑
return
@summary.setter
def summary(self, summary):
pass
@property
def image(self):
# 对象的头像图片,不是全部的图片,可以编辑
return
@image.setter
def image(self, img):
return
@property
def video(self):
# 对象的头像视频,不是全部的视频,可以编辑
return
@video.setter
def video(self, video):
return
@property
def audio(self):
# 对象的音频,不是全部的音频,可以编辑
return
@audio.setter
def audio(self, audio):
return
@property
def relation_stat(self):
# 根据对象的关联动态计算的关联统计数据
return
@property
def relation_snapshot(self):
# 对象的若干重要的关联对象的缓存数据,用于筛选和排序
return
def get_values(self, key=None):
# 对象的所有数值信息,包括value和其他描述这个对象的数值
return
def set_values(self, key, value):
pass
def get_ext_data(self, key=None):
# 用于保存特定概念下的对象属性,例如地理概念下的坐标数据,一个可以扩展的json字典
pass
def set_ext_data(self, key, value):
pass
@property
def object_group(self):
# 一个列表,标记该对象隶属的所有对象分组
return
@object_group.setter
def object_group(self, group_name):
pass
</code></pre>
<table>
<thead>
<tr>
<th>对象列表快照</th>
<th>字段</th>
<th>类型</th>
<th>解释</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>concept_name</td>
<td>str</td>
<td>概念名</td>
<td></td>
</tr>
<tr>
<td>order</td>
<td>int</td>
<td>序号</td>
<td></td>
</tr>
<tr>
<td>data</td>
<td>list</td>
<td>存储对象数据(对象基本信息)</td>
<td></td>
</tr>
</tbody>
</table>