This commit is contained in:
resonate
2022-01-23 12:35:48 +08:00
parent 28d503eb8b
commit 4eeb2cfec9
13 changed files with 179 additions and 7 deletions
+9 -1
View File
@@ -1,6 +1,10 @@
import datetime
from entrance.extensions import db
from sqlalchemy.orm import relationship
from sqlalchemy import Table
from sqlalchemy import ForeignKey
from sqlalchemy.orm import backref
class BaseModel(db.Model):
@@ -33,6 +37,10 @@ class CurdModel(BaseModel):
Column = db.Column
Table = Table
relationship = relationship
ForeignKey = ForeignKey
backref = backref
TypeDecorator = db.TypeDecorator
INT = db.INT
@@ -76,4 +84,4 @@ PickleType = db.PickleType
Interval = db.Interval
Enum = db.Enum
ARRAY = db.ARRAY
JSON = db.JSON
JSON = db.JSON
+9
View File
@@ -0,0 +1,9 @@
from .admin_dept import Dept
from .admin_dict import DictType, DictData
from .admin_log import AdminLog
from .admin_photo import Photo
from .admin_power import Power
from .admin_role import Role
from .admin_role_power import role_power
from .admin_user import User
from .admin_user_role import user_role
+19
View File
@@ -0,0 +1,19 @@
import datetime
from common.model import BaseModel, Column, Integer, String, Text, DateTime
class Dept(BaseModel):
__tablename__ = 'admin_dept'
id = Column(Integer, primary_key=True, comment="部门ID")
parent_id = Column(Integer, comment="父级编号")
dept_name = Column(String(50), comment="部门名称")
sort = Column(Integer, comment="排序")
leader = Column(String(50), comment="负责人")
phone = Column(String(20), comment="联系方式")
email = Column(String(50), comment="邮箱")
status = Column(Integer, comment='状态(1开启,0关闭)')
remark = Column(Text, comment="备注")
address = Column(String(255), comment="详细地址")
create_at = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_at = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间')
+27
View File
@@ -0,0 +1,27 @@
import datetime
from common.model import BaseModel, Column, Integer, String, DateTime
class DictType(BaseModel):
__tablename__ = 'admin_dict_type'
id = Column(Integer, primary_key=True)
type_name = Column(String(255), comment='字典类型名称')
type_code = Column(String(255), comment='字典类型标识')
description = Column(String(255), comment='字典类型描述')
enable = Column(Integer, comment='是否开启')
create_time = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
class DictData(BaseModel):
__tablename__ = 'admin_dict_data'
id = Column(Integer, primary_key=True)
data_label = Column(String(255), comment='字典类型名称')
data_value = Column(String(255), comment='字典类型标识')
type_code = Column(String(255), comment='字典类型描述')
is_default = Column(Integer, comment='是否默认')
enable = Column(Integer, comment='是否开启')
remark = Column(String(255), comment='备注')
create_time = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
+16
View File
@@ -0,0 +1,16 @@
import datetime
from common.model import BaseModel, Column, Integer, String, Text, DateTime
class AdminLog(BaseModel):
__tablename__ = 'admin_admin_log'
id = Column(Integer, primary_key=True)
method = Column(String(10))
uid = Column(Integer)
url = Column(String(255))
desc = Column(Text)
ip = Column(String(255))
success = Column(Integer)
user_agent = Column(Text)
create_time = Column(DateTime, default=datetime.datetime.now)
+13
View File
@@ -0,0 +1,13 @@
import datetime
from common.model import BaseModel, Integer, Column, String, CHAR, DateTime
class Photo(BaseModel):
__tablename__ = 'admin_photo'
id = Column(Integer, primary_key=True)
name = Column(String(255), nullable=False)
href = Column(String(255))
mime = Column(CHAR(50), nullable=False)
size = Column(CHAR(30), nullable=False)
create_time = Column(DateTime, default=datetime.datetime.now)
+19
View File
@@ -0,0 +1,19 @@
import datetime
from common.model import BaseModel, Column, Integer, String, DateTime
class Power(BaseModel):
__tablename__ = 'admin_power'
id = Column(Integer, primary_key=True, comment='权限编号')
name = Column(String(255), comment='权限名称')
type = Column(String(1), comment='权限类型')
code = Column(String(30), comment='权限标识')
url = Column(String(255), comment='权限路径')
open_type = Column(String(10), comment='打开方式')
parent_id = Column(Integer, comment='父类编号')
icon = Column(String(128), comment='图标')
sort = Column(Integer, comment='排序')
create_time = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
enable = Column(Integer, comment='是否开启')
+16
View File
@@ -0,0 +1,16 @@
import datetime
from common.model import BaseModel, Column, String, Integer, DateTime,relationship
class Role(BaseModel):
__tablename__ = 'admin_role'
id = Column(Integer, primary_key=True, comment='角色ID')
name = Column(String(255), comment='角色名称')
code = Column(String(255), comment='角色标识')
enable = Column(Integer, comment='是否启用')
remark = Column(String(255), comment='备注')
details = Column(String(255), comment='详情')
sort = Column(Integer, comment='排序')
create_time = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
power = relationship('Power', secondary="admin_role_power", backref=backref('role'))
+8
View File
@@ -0,0 +1,8 @@
from common.model import Column, Table, Integer, ForeignKey
role_power = Table(
"admin_role_power",
Column("id", Integer, primary_key=True, autoincrement=True, comment='标识'),
Column("power_id", Integer, ForeignKey("admin_power.id"), comment='用户编号'),
Column("role_id", Integer, ForeignKey("admin_role.id"), comment='角色编号'),
)
+26
View File
@@ -0,0 +1,26 @@
import datetime
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from common.model import BaseModel, Column, Integer, String, DateTime, relationship
class User(BaseModel, UserMixin):
__tablename__ = 'admin_user'
id = Column(Integer, primary_key=True, autoincrement=True, comment='用户ID')
username = Column(String(20), comment='用户名')
realname = Column(String(20), comment='真实名字')
avatar = Column(String(255), comment='头像', default="/static/admin/admin/images/avatar.jpg")
remark = Column(String(255), comment='备注')
password_hash = Column(String(128), comment='哈希密码')
enable = Column(Integer, default=0, comment='启用')
dept_id = Column(Integer, comment='部门id')
create_at = Column(DateTime, default=datetime.datetime.now, comment='创建时间')
update_at = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间')
role = relationship('Role', secondary="admin_user_role", backref=backref('user'), lazy='dynamic')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def validate_password(self, password):
return check_password_hash(self.password_hash, password)
+8
View File
@@ -0,0 +1,8 @@
from common.model import Table, Column, Integer, ForeignKey
user_role = Table(
"admin_user_role",
Column("id", Integer, primary_key=True, autoincrement=True, comment='标识'),
Column("user_id", Integer, ForeignKey("admin_user.id"), comment='用户编号'),
Column("role_id", Integer, ForeignKey("admin_role.id"), comment='角色编号'),
)
+5 -5
View File
@@ -1,20 +1,20 @@
from common.model import BaseModel, Column, String, Integer
from pydantic import BaseModel as PModel
from common.BaseModel import BaseBaseModel, Column, String, Integer
from pydantic import BaseBaseModel as PBaseModel
class User(BaseModel):
class User(BaseBaseModel):
__tablename__ = 'admin_user'
id = Column(Integer, primary_key=True, autoincrement=True, comment='用户ID')
username = Column(String(20), comment='用户名')
class Test(BaseModel):
class Test(BaseBaseModel):
__tablename__ = 'admin_test'
id = Column(Integer, primary_key=True, autoincrement=True, comment='ID')
name = Column(String(20), comment='')
class Userschema(PModel):
class Userschema(PBaseModel):
id: int
username: str
+4 -1
View File
@@ -2,4 +2,7 @@
Flask==2.0.2
flask-restx==0.5.1
pymysql==1.0.2
Flask-Migrate==3.1.0
Flask-Migrate==3.1.0
flask-marshmallow==0.14.0
marshmallow-sqlalchemy==0.27.0
Flask-Login==0.5.0