class OrderModel(db.Model): '''订单表''' id = db.Column(db.Integer, primary_key=True) store_id = db.Column(db.Integer) # 仓位id user_id = db.Column(db.Integer) # 用户id valid_time = db.Column(db.Integer) # 订单有效时间 status = db.Column(db.String(32)) # 订单状态 gmoney = db.Column(db.Integer) # 游戏币 money = db.Column(db.Integer) # 人民币 is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict
class LvlValidTimeModel(db.Model): '''账号等级与订单有效时间对应表''' id = db.Column(db.Integer, primary_key=True) lvl = db.Column(db.Integer) valid_time = db.Column(db.Integer) # 有效时间,单位(分) is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now)
class SalePriceModel(db.Model): id = db.Column(db.Integer, primary_key=True) area_id = db.Column(db.Integer) # 大区id sale_price = db.Column(db.Integer) valid_time = db.Column(db.DateTime, default=datetime.datetime.now) is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict
class StoreHouseModel(db.Model): '''仓库表''' id = db.Column(db.Integer, primary_key=True) area_id = db.Column(db.Integer) # 大区id store_id = db.Column(db.String(16)) # 仓位号 is_used = db.Column(db.Boolean, default=False) # 是否使用中 is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict
class AreaModel(db.Model): '''大区表''' id = db.Column(db.Integer, primary_key=True) parent_id = db.Column(db.Integer) area_name = db.Column(db.String(64), unique=True) is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict
class UserModel(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True) passhash = db.Column(db.String(128)) active = db.Column(db.Boolean, default=True) authenticated = db.Column(db.Boolean, default=False) detail = db.relationship('UserDetailModel', backref='user_model', lazy='dynamic') is_deleted = db.Column(db.Boolean, default=False) dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def get_id(self): return self.id def is_active(self): return self.active def is_authenticated(self): return self.authenticated @property def is_anonymous(self): return False @classmethod def register(cls, username, password, is_active=True, is_authenticated=True, lvl=1, area_id=0): try: passhash = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) user = cls(username=username, passhash=passhash, active=is_active, authenticated=is_authenticated) db.session.add(user) db.session.commit() user_detail = UserDetailModel(user_id=user.id, lvl=lvl, area_id=area_id) db.session.add(user_detail) db.session.commit() ret = { 'errcode': 0, 'errmsg': 'OK', 'data': user, } except Exception as e: db.session.rollback() ret = { 'errcode': 500, 'errmsg': e, } return ret @classmethod def login(cls, username, password): try: user = cls.query.filter_by(username=username).one() if user.passhash.encode('utf-8') == bcrypt.hashpw( password.encode('utf-8'), user.passhash.encode('utf-8')): ret = { 'errcode': 0, 'errmsg': 'OK', 'data': user, } else: ret = { 'errcode': 1, 'errmsg': u'密码输入错误,请重新输入', } except NoResultFound as e: db.session.rollback() ret = {'errcode': 2, 'errmsg': u'此用户不存在'} except MultipleResultsFound as e: db.session.rollback() ret = { 'errcode': 3, 'errmsg': 'duplicated user found, please check database' } except Exception as e: db.session.rollback() ret = { 'errcode': 500, 'errmsg': e, } return ret def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict
class UserDetailModel(db.Model): id = db.Column(db.Integer, primary_key=True) lvl = db.Column(db.Integer) # 账号权限等级 area_id = db.Column(db.Integer) # 大区id account_balance = db.Column(db.Integer, default=0) # 账户余额 account_score = db.Column(db.Integer, default=0) # 账户积分 user_id = db.Column(db.Integer, db.ForeignKey('user_model.id')) gender = db.Column(db.String(16)) english_name = db.Column(db.String(32)) chinese_name = db.Column(db.String(32), default='') avatar = db.Column(db.String(255), default='/static/pic/avatar.jpg') email = db.Column(db.String(128)) phone = db.Column(db.String(32)) wechat = db.Column(db.String(32)) address = db.Column(db.String(255)) extra = db.Column(db.String(255), default='') dt_create = db.Column(db.DateTime, default=datetime.datetime.now) dt_update = db.Column(db.DateTime, default=datetime.datetime.now) def to_dict(self): ret_dict = {} for k in self.__table__.columns: value = getattr(self, k.name) if isinstance(value, datetime.datetime): value = value.strftime('%Y-%m-%d') ret_dict[k.name] = value if value else '' return ret_dict