class Project(db.Model): '''项目''' __tablename__ = 'apitest_project' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) project_name = db.Column(db.String(255), comment='项目名') project_description = db.Column(db.String(255), comment='项目描述') module_count = db.Column(db.Integer(), comment='模块数量') interface_count = db.Column(db.Integer(), comment='接口数量') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='项目创建时间') modify_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='项目修改时间') status = db.Column(db.Boolean(), default=False) user_id = db.Column(db.Integer(), db.ForeignKey('common_user.id'), comment='项目负责人id') interface = db.relationship('Interface', backref=db.backref('project', lazy='dynamic')) module = db.relationship('Module', backref=db.backref('project', lazy='dynamic')) def __str__(self): return self.project_name
class InterfaceCase(db.Model): '''接口测试用例''' __tablename__ = 'apitest_interface_case' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) interface_url = db.Column(db.String(255), comment='接口url') interface_headers = db.Column(db.String(255), comment='http请求消息头') interface_method = db.Column(db.String(255), server_default='GET', comment='接口请求方式') interface_params = db.Column(db.String(255), comment='请求参数') interface_response = db.Column(db.String(255), comment='请求响应') interface_response_assert = db.Column(db.String(255), comment='请求响应断言') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='用例创建时间') modify_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='用例修改时间') status = db.Column(db.Boolean(), default=False, comment='是否开启') interface_id = db.Column(db.Integer(), db.ForeignKey('apitest_interface.id'), comment='接口id') user_id = db.Column(db.INTEGER(), db.ForeignKey('common_user.id'), comment='测试执行者id') case_result = db.relationship('CaseResult', backref=db.backref('interface_case', lazy='dynamic'))
class Module(db.Model): '''模块,有的接口是根据模块来划分的''' __tablename__ = 'apitest_module' id = db.Column(db.Integer, primary_key=True, autoincrement=True) module_name = db.Column(db.String(255), comment='模块名') module_description = db.Column(db.String(255), comment='模块描述') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='模块创建时间') modify_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='模块修改时间') status = db.Column(db.Boolean(), default=False) user_id = db.Column(db.Integer(), db.ForeignKey('common_user.id'), comment='模块负责者id') project_id = db.Column(db.Integer(), db.ForeignKey('apitest_project.id'), comment='项目id') interface = db.relationship('Interface', backref=db.backref('module', lazy='dynamic')) def __str__(self): return self.module_name
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 结账流水号 后期银行对接 可以用上 先架构着 默认是8个0 accountNo = db.Column(db.String(50), nullable=False, default='00000000') # 结账时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) accountMoney = db.Column(db.REAL(), nullable=False, default=0) # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='account')
class Role(db.Model, RoleMixin): '''角色''' __tablename__ = 'common_role' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) name = db.Column(db.String(80), unique=True, comment='角色名称') permissions = db.Column(db.Integer(), default=Permission.LOGIN) description = db.Column(db.String(255), comment='描述') def __init__(self, name, description): self.name = name self.description = description
class Drug(db.Model): __tablename__ = 'drug' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) num = db.Column(db.String(50), nullable=False) name = db.Column(db.String(50), nullable=False) count = db.Column(db.Integer(), nullable=False) saleCount = db.Column(db.Integer(), nullable=False, default=0) price = db.Column(db.REAL(), nullable=False, default=0) desc = db.Column(db.String(500), nullable=False) # 关联药品类别表id drugTypeId = db.Column(db.Integer(), db.ForeignKey('drugType.id')) drugType = db.relationship('DrugType', backref='drug')
class Sale(db.Model): __tablename__ = 'sale' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 选购时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) # 用户外键 userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='sale') # 药品外键 # drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) # 药品编号 drugNum = db.Column(db.String(50), nullable=False)
class Stock(db.Model): __tablename__ = 'stock' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) stockDate = db.Column(db.DateTime(), nullable=False, default=datetime.now) stockPrice = db.Column(db.REAL(), nullable=False) stockCount = db.Column(db.Integer(), nullable=False) stockMoney = db.Column(db.REAL(), nullable=False) # 关联药品表id drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drug = db.relationship('Drug', backref='stock') # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='stock')
class Sale(db.Model): __tablename__ = 'sale' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) time = db.Column(db.DateTime(), nullable=False, default=datetime.now) saleCount = db.Column(db.Integer(), nullable=False) saleMoney = db.Column(db.REAL(), nullable=False) # 关联用户表id userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='sale') # 关联结账表id accountId = db.Column(db.Integer(), db.ForeignKey('account.id')) account = db.relationship('Account', backref='sale') # 关联药品表id drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drug = db.relationship('Drug', backref='sale')
class Account(db.Model): __tablename__ = 'account' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) # 结账流水号 后期银行对接 可以用上 先架构着 默认是8个0 accountNo = db.Column(db.String(50), nullable=False, default='00000000') # 结账时间 time = db.Column(db.DateTime(), nullable=False, default=datetime.now) # 用户外键 userId = db.Column(db.Integer(), db.ForeignKey('user.id')) user = db.relationship('User', backref='account') # 药品外键 drugId = db.Column(db.Integer(), db.ForeignKey('drug.id')) drugNum = db.Column(db.String(50), nullable=False) # 药品编号 drug = db.relationship('Drug', backref='account')
class Drug(db.Model): __tablename__ = 'drug' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) num = db.Column(db.String(50), nullable=False) name = db.Column(db.String(50), nullable=False) desc = db.Column(db.String(500), nullable=False) isSale = db.Column(db.Boolean(), nullable=False, default=False) # isChoose = db.Column(db.Boolean(), nullable=False, default=False) stockDate = db.Column(db.DateTime(), default=datetime.now) stockPrice = db.Column(db.REAL(), nullable=True, default=0) saleDate = db.Column(db.DateTime(), nullable=True) salePice = db.Column(db.REAL(), nullable=True, default=0) # foreignkey药品关联药品类别表id drugTypeId = db.Column(db.Integer(), db.ForeignKey('drugType.id')) drugType = db.relationship('DrugType', backref='drug')
class Answer(db.Model): __tablename__ = 'answer' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) content = db.Column(db.Text, nullable=False) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) autor_id = db.Column(db.Integer, db.ForeignKey('user.id')) create_time = db.Column(db.DateTime, default=datetime.now) question = db.relationship('Question', backref=db.backref('answers')) autor = db.relationship('User', backref=db.backref('answers'))
class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) username = db.Column(db.Text(100), nullable=False) age = db.Column(db.String(100), nullable=False) telephon = db.Column(db.String(100), nullable=False) password = db.Column(db.Text(100), nullable=False) usertype = db.Column(db.String(100), nullable=False) sex = db.Column(db.Text(100), nullable=False) avatar = db.Column(db.Text, nullable=True) birthday = db.Column(db.String(100), nullable=False) userbgimg = db.Column(db.Text, nullable=True)
class Interface(db.Model): '''接口''' __tablename__ = 'apitest_interface' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) interface_name = db.Column(db.String(255), comment='接口名') interface_url = db.Column(db.String(255), comment='接口url') interface_headers = db.Column(db.String(255), comment='http请求消息头') interface_method = db.Column(db.String(255), server_default='GET', comment='接口请求方式') interface_params = db.Column(db.String(255), comment='请求参数示例') interface_response = db.Column(db.String(255), comment='请求响应示例') interface_description = db.Column(db.String(255), comment='接口描述') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='接口创建时间') modify_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='接口修改时间') status = db.Column(db.Boolean(), default=False) developer_id = db.Column(db.Integer(), db.ForeignKey('common_user.id'), comment='接口开发者id') tester_id = db.Column(db.Integer(), db.ForeignKey('common_user.id'), comment='接口负责者id') project_id = db.Column(db.Integer(), db.ForeignKey('common_user.id'), comment='项目id') module_id = db.Column(db.Integer(), db.ForeignKey('apitest_module.id'), comment='模块id') interface_case = db.relationship('InterfaceCase', backref=db.backref('interface', lazy='dynamic')) def __str__(self): return self.interface_name
class DrugType(db.Model): __tablename__ = 'drugType' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) # relationship的作用是将药品和药品类别连接起来 # drugs = db.relationship('Drug', backref='drugType', lazy='dynamic') def get_count(self): return self.count def set_count(self, count): self.count = count
class Roles(db.Model, RoleMixin): __tablename__ = 'role' id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) roleUsers = db.relationship('RolesUsers', backref="role", lazy="dynamic") def __str__(self): return self.name def __hash__(self): return hash(self.name)
class CaseResult(db.Model): '''用例执行结果''' __tablename__ = 'apitest_caseresult' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) interface_case_id = db.Column(db.INTEGER(), db.ForeignKey('apitest_interface_case.id'), comment='接口用例id') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now(), comment='测试结果生成时间') result = db.Column(db.String(255), comment='测试结果') user_id = db.Column(db.INTEGER(), db.ForeignKey('common_user.id'), comment='测试执行者id')
class users(db.Model, UserMixin): __tablename__ = 'user_info' User_ID = db.Column(db.String(3), primary_key=True) Password = db.Column(db.String(6), nullable=True) Privilege = db.Column(db.Integer(), nullable=True) Department = db.Column(db.String(20), nullable=True) def __repr__(self): return '<user %r>' % self.User_ID def check_password(self, password): return self.Password == password def get_id(self): return unicode(self.User_ID) def get_privilege(self): return unicode(self.Privilege)
class RolesUsers(db.Model): __tablename__ = 'roles_users' id = db.Column(db.Integer(), primary_key=True) user_id = db.Column(db.Integer(), db.ForeignKey('user.id')) role_id = db.Column(db.Integer(), db.ForeignKey('role.id'))
LOGIN = 0x01 EDITOR = 0x02 OPERATOR = 0x04 ADMINISTER = 0xff PERMISSION_MAP = { LOGIN: ('login', 'Login user'), EDITOR: ('editor', 'Editor'), OPERATOR: ('operator', 'Operator'), ADMINISTER: ('admin', 'Super Adminitrator') } '''角色用户关系''' common_role_user = db.Table( 'common_role_user', db.Column('id', db.Integer(), primary_key=True, autoincrement=True), db.Column('common_user_id', db.Integer(), db.ForeignKey('common_user.id')), db.Column('common_role_id', db.Integer(), db.ForeignKey('common_role.id'))) class Role(db.Model, RoleMixin): '''角色''' __tablename__ = 'common_role' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) name = db.Column(db.String(80), unique=True, comment='角色名称') permissions = db.Column(db.Integer(), default=Permission.LOGIN) description = db.Column(db.String(255), comment='描述') def __init__(self, name, description): self.name = name self.description = description
class User(db.Model, UserMixin): '''用户''' __tablename__ = 'common_user' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) username = db.Column(db.String(64), unique=True, nullable=False, comment='用户名') realname = db.Column(db.String(64), nullable=False, comment='真实姓名') phone = db.Column(db.String(11), default=None, comment='电话') gender = db.Column(db.String(1), nullable=False, comment='性别', server_default='男') email = db.Column(db.String(255), unique=True, comment='电子邮箱') _password = db.Column(db.String(255), nullable=False, comment='密码') active = db.Column(db.Boolean(), nullable=False, comment='用户是否处于激活状态', server_default='1') create_date = db.Column(db.TIMESTAMP, nullable=False, server_default=func.now()) role = db.relationship('Role', secondary=common_role_user, backref=db.backref('user', lazy='dynamic')) def __init__(self, username=None, realname=None, password=None, gender=None, phone=None, email=None): self.username = username self.realname = realname self.password = password self.gender = gender self.phone = phone self.email = email @property def password(self): return self._password @password.setter def password(self, rawpwd): self._password = generate_password_hash(rawpwd) def check_password(self, rawpwd): return check_password_hash(self.password, rawpwd) def can(self, permissions): if self.roles is None: return False all_permissions = reduce(or_, map(lambda x: x.permissions, self.roles)) return all_permissions & permissions == permissions def can_admin(self): return self.can(Permission.ADMINISTER) @property def is_authenticated(self): '''是否认证''' return True @property def is_active(self): '''用户是否处于激活状态''' if self.active and self.active is True: return True else: return False @property def is_anonymous(self): '''用户是否匿名用户''' return False def get_id(self): '''获取userId''' return self.id
class DrugType(db.Model): __tablename__ = 'drugType' id = db.Column(db.Integer(), primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False)