-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathmodels.py
249 lines (221 loc) · 12.1 KB
/
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# coding: utf-8
from web_apps import db
import datetime
class BaseModel(db.Model):
'''
数据库orm模型基类
'''
__abstract__ = True
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True,
comment='id主键')
description = db.Column(db.Text, default='', comment='简介')
sort_no = db.Column(db.Float, default=1, comment='排序')
del_flag = db.Column(db.SmallInteger, default=0, comment='软删除标记')
create_by = db.Column(db.String(100), default='', comment='创建者')
create_time = db.Column(
db.TIMESTAMP,
server_default=db.text('CURRENT_TIMESTAMP'),
comment='创建时间')
update_by = db.Column(db.String(100), default='', comment='修改者')
update_time = db.Column(
db.TIMESTAMP,
server_default=db.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
comment='修改时间')
def to_dict(self, date_type='str'):
'''
转为字典
:return:
'''
value = {}
for column in self.__table__.columns:
attribute = getattr(self, column.name)
if isinstance(attribute, datetime.datetime) and date_type == 'str':
attribute = str(attribute)
value[column.name] = attribute
return value
def from_dict(self, attributes):
"""Update the current instance base on attribute->value by *attributes*"""
for attribute in attributes:
setattr(self, attribute, attributes[attribute])
return self
class User(BaseModel):
'''
用户表
'''
__tablename__ = 'sys_user'
username = db.Column(db.String(100), index=True, comment='登录的用户名')
password = db.Column(db.String(128), index=True, comment='密码')
nickname = db.Column(db.String(100), index=True, comment='昵称')
avatar = db.Column(db.String(1024), comment='头像')
birthday = db.Column(db.DateTime, comment='生日')
sex = db.Column(db.SmallInteger, default=0, comment='性别(0-默认未知,1-男,2-女)')
email = db.Column(db.String(45), index=True, comment='邮箱')
phone = db.Column(db.String(45), index=True, comment='手机号')
org_code = db.Column(db.String(64), index=True, comment='登录会话的机构编码')
tenant_id = db.Column(db.String(64), index=True, comment='登录会话的租户id')
status = db.Column(db.SmallInteger, default=1, comment='2-冻结,1-正常,0-禁用')
user_identity = db.Column(db.SmallInteger, default=1, comment='身份(1普通成员 2上级)')
third_id = db.Column(db.String(100), index=True, comment='第三方登陆的唯一标志')
third_type = db.Column(db.String(100), comment='第三方登陆的类型')
work_no = db.Column(db.String(100), index=True, comment='工号')
depart_id_list = db.Column(db.Text, default='[]', comment='部门列表')
post_id_list = db.Column(db.Text, default='[]', comment='职务列表')
role_id_list = db.Column(db.Text, default='[]', comment='角色列表')
tenant_id_list = db.Column(db.Text, default='[]', comment='租户列表')
verify_token = db.Column(db.String(50), default='', comment='验证token')
login_times = db.Column(db.Integer, default=0, comment='登录次数')
login_time = db.Column(db.Integer, comment='上次登录时间')
login_ip = db.Column(db.String(500), comment='上次登录IP')
valid_start_time = db.Column(db.Integer, comment='有效期(开始)')
valid_end_time = db.Column(db.Integer, comment='有效期(结束)')
class Role(BaseModel):
'''
角色表
'''
__tablename__ = 'sys_role'
role_name = db.Column(db.String(100), index=True, comment='角色名称')
role_code = db.Column(db.String(100), index=True, comment='角色编码')
status = db.Column(db.SmallInteger, default=1, comment='1-正常,0-禁用')
permissions = db.Column(db.Text, default='[]', comment='权限列表')
class Depart(BaseModel):
'''
部门表
'''
__tablename__ = 'sys_depart'
depart_name = db.Column(db.String(100), index=True, comment='机构/部门名称')
parent_id = db.Column(db.Integer, comment='父级ID')
depart_name_en = db.Column(db.String(500), index=True, comment='英文名')
depart_name_abbr = db.Column(db.String(500), index=True, comment='缩写')
org_category = db.Column(db.SmallInteger, default=1, comment='机构类别 1公司,2组织机构,2岗位')
org_type = db.Column(db.SmallInteger, default=1, comment='机构类型 1一级部门 2子部门')
org_code = db.Column(db.String(100), index=True, comment='机构编码')
mobile = db.Column(db.String(32), comment='手机号')
fax = db.Column(db.String(32), comment='传真')
address = db.Column(db.String(100), comment='地址')
memo = db.Column(db.String(500), comment='备注')
is_leaf = db.Column(db.SmallInteger, default=1, comment='是否叶子节点: 1:是 0:不是')
status = db.Column(db.SmallInteger, default=1, comment='状态(1启用,0不启用)')
qywx_identifier = db.Column(db.String(100), comment='对接企业微信的ID')
permissions = db.Column(db.Text, default='[]', comment='权限列表')
class Position(BaseModel):
'''
职务表
'''
__tablename__ = 'sys_position'
name = db.Column(db.String(100), comment='名称')
code = db.Column(db.String(100), comment='编码')
org_code = db.Column(db.String(100), default='', comment='所属机构编码')
post_rank = db.Column(db.Integer, default=1, comment='职级')
company_id = db.Column(db.Integer, comment='公司id')
class Tenant(BaseModel):
'''
租户表
'''
__tablename__ = 'sys_tenant'
name = db.Column(db.String(100), comment='租户名称')
begin_date = db.Column(db.Integer, comment='开始时间')
end_date = db.Column(db.Integer, comment='结束时间')
status = db.Column(db.SmallInteger, default=1, comment='状态 1正常 0冻结')
class PerMission(BaseModel):
'''
权限表
'''
__tablename__ = 'sys_permission'
name = db.Column(db.String(100), index=True, comment='名称')
parent_id = db.Column(db.Integer, comment='父级ID')
url = db.Column(db.String(255), default="", comment='路径')
component = db.Column(db.String(255), default="", comment='组件')
component_name = db.Column(db.String(100), default="", comment='组件名称')
redirect = db.Column(db.String(255), default="", comment='一级菜单跳转地址')
menu_type = db.Column(db.SmallInteger, default=0, comment='菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)')
perms = db.Column(db.String(255), comment='菜单权限编码')
perms_type = db.Column(db.SmallInteger, default=1, comment='权限策略1显示2禁用')
always_show = db.Column(db.SmallInteger, default=1, comment='聚合子路由: 1是0否')
icon = db.Column(db.String(255), comment='菜单图标')
is_route = db.Column(db.SmallInteger, default=1, comment='是否路由菜单: 0:不是 1:是(默认值1)')
is_leaf = db.Column(db.SmallInteger, default=1, comment='是否叶子节点: 1:是 0:不是')
keep_alive = db.Column(db.SmallInteger, default=1, comment='是否缓存该页面: 1:是 0:不是')
hidden = db.Column(db.SmallInteger, default=1, comment='是否隐藏路由: 0否,1是')
hide_tab = db.Column(db.SmallInteger, default=1, comment='是否隐藏tab: 0否,1是')
rule_flag = db.Column(db.SmallInteger, default=0, comment='是否添加数据权限1是0否')
status = db.Column(db.SmallInteger, default=1, comment='按钮权限状态(0无效1有效)')
internal_or_external = db.Column(db.SmallInteger, default=1, comment='外链菜单打开方式 0/内部打开 1/外部打开')
class Dict(BaseModel):
'''
数据字典表
'''
__tablename__ = 'sys_dict'
dict_name = db.Column(db.String(100), comment='字典名称')
dict_code = db.Column(db.String(100), default='', comment='字典编码')
type = db.Column(db.SmallInteger, default=1, comment='字典值类型,0为string,1为number')
class DictItem(BaseModel):
'''
数据字典详情
'''
__tablename__ = 'sys_dict_item'
dict_id = db.Column(db.Integer, comment='所属字典id')
name = db.Column(db.String(50), comment='字典项文本')
value = db.Column(db.String(50), default='', comment='字典项值')
extend = db.Column(db.Text, default='{}', comment='额外参数')
status = db.Column(db.SmallInteger, default=1, comment='状态(1启用 0禁用)')
class File(BaseModel):
'''
文件资源表
'''
__tablename__ = 'sys_file'
file_name = db.Column(db.String(255), nullable=True, comment='文件名称')
url = db.Column(db.TEXT, nullable=True, comment='文件地址')
file_type = db.Column(db.String(50), nullable=True, comment='文档类型(folder:文件夹 excel:excel doc:word ppt:ppt image:图片 archive:其他文档 video:视频 pdf:pdf)')
store_type = db.Column(db.String(50), nullable=True, comment='文件上传类型(temp/本地上传(临时文件) manage/知识库)')
parent_id = db.Column(db.Integer, comment='父级id')
tenant_id = db.Column(db.Integer, comment='租户id')
file_size = db.Column(db.Float, comment='文件大小(kb)')
iz_folder = db.Column(db.SmallInteger, default=0, comment='是否文件夹(1:是 0:否)')
iz_root_folder = db.Column(db.SmallInteger, default=0, comment='是否为1级文件夹,允许为空 (1:是 )')
iz_star = db.Column(db.SmallInteger, default=0, comment='是否标星(1:是 0:否)')
down_count = db.Column(db.Integer, default=0, comment='下载次数')
read_count = db.Column(db.Integer, default=0, comment='阅读次数')
share_url = db.Column(db.String(255), comment='分享链接')
share_perms = db.Column(db.SmallInteger, default=0, comment='分享权限(1.关闭分享 2.允许所有联系人查看 3.允许任何人查看)')
enable_down = db.Column(db.SmallInteger, default=0, comment='是否允许下载(1:是 0:否)')
enable_update = db.Column(db.SmallInteger, default=0, comment='是否允许修改(1:是 0:否)')
class Notice(BaseModel):
'''
通知公告
'''
__tablename__ = 'sys_notice'
title = db.Column(db.String(200), comment='标题')
msg_content = db.Column(db.Text, comment='内容')
start_time = db.Column(db.Integer, comment='开始时间')
end_time = db.Column(db.Integer, comment='结束时间')
sender = db.Column(db.String(100), comment='发送人')
priority = db.Column(db.String(10), default='M', comment='优先级(L低,M中,H高)')
msg_category = db.Column(db.String(10), comment='消息类型1:通知公告2:系统消息')
msg_type = db.Column(db.String(10), comment='通告对象类型(USER:指定用户,ALL:全体用户)')
send_status = db.Column(db.String(10), default='0', comment='发布状态(0未发布,1已发布,2已撤销)')
send_time = db.Column(db.Integer, comment='发送时间')
cancel_time = db.Column(db.Integer, comment='撤销时间')
bus_type = db.Column(db.String(20), comment='业务类型(email:邮件 bpm:流程)')
bus_id = db.Column(db.String(50), comment='业务id')
open_type = db.Column(db.String(20), comment='打开方式(组件:component 路由:url)')
open_page = db.Column(db.String(255), comment='组件/路由 地址')
user_ids = db.Column(db.Text, default='[]', comment='指定用户')
msg_abstract = db.Column(db.Text, default='', comment='摘要')
dt_task_id = db.Column(db.String(100), comment='钉钉task_id,用于撤回消息')
class NoticeSend(BaseModel):
'''
通知公告发送记录
'''
__tablename__ = 'sys_notice_send'
notice_id = db.Column(db.Integer, comment='通知id')
user_id = db.Column(db.Integer, comment='用户id')
read_flag = db.Column(db.SmallInteger, default=0, comment='阅读状态(0未读,1已读)')
star_flag = db.Column(db.SmallInteger, default=0, comment='标星状态( 1为标星 空/0没有标星)')
read_time = db.Column(db.Integer, comment='阅读时间')
if __name__ == '__main__':
db.create_all()
db.session.commit()
db.session.flush()