def get(self): self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') args = self.parser.parse_args() token = generate_confirmation_token(args.email) confirm_url = config.domain + "/api/v1/mall/confirm?token=" + token html = ''' <p>Welcome! Thanks for signing up. Please follow this link to activate your account:</p> <p><a href=''' + confirm_url + '''>''' + confirm_url + '''</a></p> <br> <p>Cheers!</p>''' subject = "Please confirm your email" send_email(args.email, subject, html) return pretty_result(code.OK, msg='Account already confirmed. Please login.')
def get(self): """ 获取用户列表信息 :return: json """ user = UsersModel.get(UsersModel, g.user_id) returnUser = { 'id': user.id, 'userName': user.username, 'email': user.email, 'permission': user.permission, 'avatar': user.avatar # 'login_time': user.login_time } totalCount = 3 List = [{ "id": "@id", "permission": "editor", }] return pretty_result(code.OK, data=List)
def post(self): """ 邀请表信息 :return: json """ self.parser.add_argument("email", type=inputs.regex(r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') args = self.parser.parse_args() inviter = InvitersModel.query.filter_by(invite=args.email).all() data = [] if inviter: for item in inviter: data.append({ 'id': item.id, 'invite': item.invite, 'invited': item.invited, 'point': config.Inviter_Point, 'register_on': item.update_time.strftime("%m/%d/%Y"), }) return pretty_result(code.OK, data=data, msg='get inviter info successful!')
def post(self): self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') args = self.parser.parse_args() password = uuid.uuid4().hex[:8] mallUserInfo = MallUsersModel.query.filter_by(email=args.email).first() mallUserInfo.password = MallUsersModel.set_password( MallUsersModel, password) MallUsersModel.update(mallUserInfo) html = ''' <p>Welcome! Please keep your password:</p> <p>''' + password + '''</p> <br> <p>Cheers!</p>''' subject = "Your Password" send_email(args.email, subject, html) return pretty_result(code.OK, msg='Please login again.')
def get(self): self.parser.add_argument("no", type=str, required=True, location="args", help='no format is incorrect') args = self.parser.parse_args() orderInfo = OrdersModel.query.filter_by(no=args.no).first() OrderItemVOS = [] productList = orderInfo.productList.split(',') for i in productList: productInfo = ProductsModel.query.filter_by(id=i).first() OrderItemVOS.append(productInfo.to_dict()) data ={ 'no': orderInfo.no, 'totalPrice': orderInfo.totalPrice, 'phone': orderInfo.phone, 'payType': orderInfo.payType, 'status': orderInfo.status, 'productList': orderInfo.productList, 'addressId': orderInfo.addressId, "createTime": orderInfo.createTime, 'OrderItemVOS': OrderItemVOS } return pretty_result(code.OK, data=data, msg="get order info successful!")
def post(self): """ 文本校正 --- consumes: application/json parameters: - name: url in: body required: true description: 输入文本图片url - name: urli2 in: body required: true description: 输入文本图片url responses: 200: description: 生成的URL """ # get URL self.parser.add_argument("url", type=str, location="json", required=True) args = self.parser.parse_args() # download fileName = wget.download(args.url) # handle txtLAdjust.run(fileName, "./txt.jpg") bos_client.upload_file_to_bos('./txt.jpg') url = bos_client.get_bos_file_url('txt.jpg') # return data = {'url': url} return pretty_result(code.OK, data=data)
def delete(self): self.parser.add_argument("ids", type=list, required=True, location="json", help='ids is required') self.parser.add_argument("updateUser", type=str, required=True, location="json", help='updateUser is required') self.parser.add_argument("content", type=list, required=True, location="json", help='content is required') args = self.parser.parse_args() for item in args.ids: productInfo = ProductsModel.query.filter_by(id=item).first() productPictureList = productInfo.picture.split(",") for j in productPictureList: old_fname = filePath + str(j) + '.png' if os.path.exists(old_fname): os.remove(old_fname) else: print(str(j) + " the file does not exist") ProductsModel.delete(ProductsModel, args.ids) content = str(args.content) if len(str(args.content)) > 500: content = str(args.ids) log = LogsModel(username=args.updateUser, model="product", action="delete", content=content) LogsModel.add(LogsModel, log) return pretty_result(code.OK, msg='商品信息删除成功!')
def get(self): """ 获取权限列表信息 :return: json """ self.parser.add_argument("totalPrice", type=int, required=True, location="args", help='totalPrice is required') self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="args", help='email format is incorrect') args = self.parser.parse_args() userInfo = MallUsersModel.query.filter_by(email=args.email).first() coupons = [] disabledCoupons = [] for item in userInfo.coupon.split(","): if item: coupon = CouponsModel.query.filter_by(id=item).first() if coupon.endTime > int(time.time()): if coupon.couponType == 1 and args.totalPrice < coupon.couponCondition: disabledCoupons.append({ 'id': coupon.id, 'name': coupon.couponName, 'startAt': coupon.startTime, 'endAt': coupon.endTime, 'condition': "无门槛\n" if coupon.couponType == 0 else "有门槛\n" + "" if coupon.couponType == 0 else "高于" + coupon.couponCondition + "可以使用", 'value': coupon.discountCondition * 100, 'reason': "不满足最低价格!", 'valueDesc': coupon.discountCondition, "discountType": coupon.discountType, 'unitDesc': "泰铢" if coupon.discountType == "1" else "折", }) else: coupons.append({ 'id': coupon.id, 'name': coupon.couponName, 'startAt': coupon.startTime, 'endAt': coupon.endTime, 'condition': "无门槛\n" if coupon.couponType == "0" else "有门槛\n" + ("" if coupon.couponType == "0" else "高于" + str(coupon.couponCondition) + "可以使用"), 'value': coupon.discountCondition * 100, 'description': coupon.description, 'valueDesc': coupon.discountCondition, "discountType": coupon.discountType, 'unitDesc': "泰铢" if coupon.discountType == "1" else "折", }) data = {'disabledCoupons': disabledCoupons, 'coupons': coupons} return pretty_result(code.OK, data=data, msg='优惠券信息获取成功!')
def post(self): """ 创建权限 :return: json """ # self.parser.add_argument("couponName", type=str, required=True, location="json", help='couponName is required') # self.parser.add_argument("startTime", type=str, required=True, location="json", help='startTime is required') # self.parser.add_argument("endTime", type=str, required=True, location="json", help='endTime is required') # self.parser.add_argument("couponType", type=str, required=True, location="json", help='couponType is required') # self.parser.add_argument("couponCondition", type=str, required=True, location="json", help='couponCondition is required') # self.parser.add_argument("discountType", type=str, required=True, location="json", help='discountType is required') # self.parser.add_argument("discountCondition", type=str, required=True, location="json", # help='discountCondition is required') # self.parser.add_argument("description", type=str, required=True, location="json",help='description is required') # self.parser.add_argument("couponStatus", type=str, required=True, location="json",help='couponStatus is required') # self.parser.add_argument("couponKey", type=str, required=True, location="json", help='couponKey is required') args = self.parser.parse_args() args.couponName = 'test5' couponsInfo = CouponsModel.query.filter_by( couponName=args.couponName).all() # couponName = db.Column(db.String(50), nullable=False) # startTime = db.Column(db.Integer, default=int(time.time()), nullable=True) # endTime = db.Column(db.Integer, default=int(time.time()), nullable=True) # couponCount = db.Column(db.Integer, nullable=True) # 兑换次数 # couponType = db.Column(db.String(50), nullable=False) # 优惠类型 有门槛 无门槛 # couponCondition = db.Column(db.Integer, nullable=True) # 优惠条件 高于该价格可以使用 # discountType = db.Column(db.String(50), nullable=False) # 折扣类型 优惠价格,折扣比例 # discountCondition = db.Column(db.Integer, nullable=True) # 优惠面值 折扣比例 # description = db.Column(db.String(50), nullable=False) # couponStatus = db.Column(db.String(50), nullable=False) # 全部可用 ,兑换码 # couponKey = db.Column(db.String(50), nullable=False) # 兑换码 dt = "2016-05-05 20:28:54" dt2 = "2022-05-05 20:28:54" args.startTime = int(time.time()) args.endTime = int(time.time()) args.couponType = 1 # 无门槛 args.couponCondition = 10 args.discountType = 2 # 价格 args.discountCondition = 8.8 args.description = "test3" args.couponStatus = 1 # 兑换码 args.couponKey = "" if couponsInfo: return pretty_result(code.ERROR, msg='该优惠券名字被添加!') coupon = CouponsModel(couponName=args.couponName, startTime=args.startTime, endTime=args.endTime, couponType=args.couponType, couponCondition=args.couponCondition, discountType=args.discountType, discountCondition=args.discountCondition, description=args.description, couponStatus=args.couponStatus, couponKey=args.couponKey) CouponsModel.add(CouponsModel, coupon) if args.discountType == 2: usersInfo = MallUsersModel.query.all() for item in usersInfo: if item.coupon: item.coupon = item.coupon + "," + str(coupon.id) else: item.coupon = str(coupon.id) MallUsersModel.update(item) if coupon.id: returnUser = { 'id': coupon.id, } return pretty_result(code.OK, data=returnUser, msg='优惠券添加成功') else: return pretty_result(code.ERROR, data='', msg='优惠券添加失败')
def post(self): """ 抽奖信息 :return: json """ self.parser.add_argument("gender", type=str, required=True, location="json", help='gender is required') self.parser.add_argument("size", type=str, required=True, location="json", help='size is required') self.parser.add_argument("age", type=str, required=True, location="json", help='age is required') self.parser.add_argument("Pclass", type=str, required=True, location="json", help='Pclass is required') self.parser.add_argument("count", type=int, required=True, location="json", help='count is required') self.parser.add_argument("point", type=int, required=True, location="json", help='point is required') self.parser.add_argument("email", type=inputs.regex(r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') args = self.parser.parse_args() products = ProductsModel.filter_by_gender_size_age_Pclass(ProductsModel, args.gender, args.size, args.age, args.Pclass) i = 0 showData = [] data=[] for item in products: print(item) if i >= args.count: break if item.status == "unsold": i = i + 1 showData.append(item) if i < args.count: for item in products: if i >= args.count: break if item.status == "online": if (datetime.datetime.now() - item.update_time).total_seconds() > config.countDown: i = i + 1 showData.append(item) if i < args.count: return pretty_result(code.ERROR, data=[], msg='Get award info failed, Product not enough!') else: for j in showData: # 更新次数和状态 productsInfo = ProductsModel.query.filter_by(id=j.id).first() productsInfo.status = 'online' productsInfo.showTimes = productsInfo.showTimes + 1 ProductsModel.update(productsInfo) url = '' pictures = productsInfo.picture.split(",") for i in pictures: url = config.domain + "/api/v1/pictureManagement/get?type=product&id=" + i break data.append( { 'id': productsInfo.id, 'no': productsInfo.no, 'position': productsInfo.position, 'picture': url, 'gender': productsInfo.gender, 'size': productsInfo.size, 'age': productsInfo.age, 'Pclass': productsInfo.Pclass, 'type': productsInfo.type, 'status': productsInfo.status, 'inPrice': productsInfo.inPrice, 'outPrice': productsInfo.outPrice, 'price': productsInfo.price, 'level': productsInfo.level, 'showTimes': productsInfo.showTimes, 'remark': productsInfo.remark, 'updateUser': productsInfo.updateUser, 'updateTime': productsInfo.update_time.strftime("%m/%d/%Y %H:%M:%S") } ) Cart = CartsModel(email=args.email, no=productsInfo.no) CartsModel.add(CartsModel, Cart) mallUserInfo = MallUsersModel.query.filter_by(email=args.email).first() mallUserInfo.point = mallUserInfo.point - args.point MallUsersModel.update(mallUserInfo) return pretty_result(code.OK, data=data, msg='Get award info successful!')
def put(self): self.parser.add_argument("id", type=int, required=True, location="json", help='id is required') self.parser.add_argument("couponName", type=str, required=True, location="json", help='couponName is required') self.parser.add_argument("startTime", type=str, required=True, location="json", help='startTime is required') self.parser.add_argument("endTime", type=str, required=True, location="json", help='endTime is required') self.parser.add_argument("couponType", type=str, required=True, location="json", help='couponType is required') self.parser.add_argument("couponCondition", type=str, required=True, location="json", help='couponCondition is required') self.parser.add_argument("discountType", type=str, required=True, location="json", help='discountType is required') self.parser.add_argument("discountCondition", type=str, required=True, location="json", help='discountCondition is required') self.parser.add_argument("description", type=str, required=True, location="json", help='description is required') self.parser.add_argument("couponStatus", type=str, required=True, location="json", help='couponStatus is required') self.parser.add_argument("couponKey", type=str, required=True, location="json", help='couponKey is required') args = self.parser.parse_args() couponInfo = CouponsModel.query.filter_by(id=args.id).first() couponInfo.couponName = args.couponName couponInfo.startTime = args.startTime couponInfo.endTime = args.endTime couponInfo.couponType = args.couponType couponInfo.couponCondition = args.couponCondition couponInfo.discountType = args.discountType couponInfo.discountCondition = args.discountCondition couponInfo.description = args.description couponInfo.couponStatus = args.couponStatus couponInfo.couponKey = args.couponKey CouponsModel.update(couponInfo) return pretty_result(code.OK, msg='优惠券信息更新成功!')
def post(self): """ 充值表信息 :return: json """ self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') self.parser.add_argument("username", type=str, location="json", required=True, help='username is required') self.parser.add_argument( "phone", type=inputs.regex( r'((\+66|0)(\d{1,2}\-?\d{3}\-?\d{3,4}))|((\+๖๖|๐)([๐-๙]{1,2}\-?[๐-๙]{3}\-?[๐-๙]{3,4}))' ), required=True, location="json", help='phone is required or format is incorrect') self.parser.add_argument("defaultFlag", type=int, location="json", required=True, help='defaultFlag is required') self.parser.add_argument("provinceName", type=str, location="json", required=True, help='provinceName is required') self.parser.add_argument("cityName", type=str, location="json", required=True, help='cityName is required') self.parser.add_argument("townName", type=str, location="json", required=True, help='townName is required') self.parser.add_argument("postCode", type=str, location="json", required=True, help='postCode is required') self.parser.add_argument("detailAddress", type=str, location="json", required=True, help='detailAddress is required') args = self.parser.parse_args() if args.defaultFlag: AddressModel.updateStatus(AddressModel, args.email) Address = AddressModel(email=args.email, addressId=int(time.time()), username=args.username, phone=args.phone.replace("-", ""), defaultFlag=args.defaultFlag, provinceName=args.provinceName, cityName=args.cityName, townName=args.townName, detailAddress=args.detailAddress, postCode=args.postCode) AddressModel.add(AddressModel, Address) if Address.id: return pretty_result(code.OK, msg='Add address successful!') else: return pretty_result(code.ERROR, msg='Add address failed')
def put(self): self.parser.add_argument("cartItemIds", type=list, location="json", help='cartItemIds format is incorrect') args = self.parser.parse_args() if args.cartItemIds: productInfo = ProductsModel.get_ids(ProductsModel, args.cartItemIds) data = [] for product in productInfo: url = '' countDown = (datetime.datetime.now() - product.update_time).total_seconds() pictures = product.picture.split(",") for i in pictures: url = config.domain + "/api/v1/pictureManagement/get?type=product&id=" + i break data.append({ 'id': product.id, 'no': product.no, 'name': product.name, 'description': product.description, 'position': product.position, 'picture': url, 'gender': product.gender, 'size': product.size, 'age': product.age, 'Pclass': product.Pclass, 'type': product.type, 'status': product.status, 'inPrice': product.inPrice, 'outPrice': product.outPrice, 'price': product.price, 'level': product.level, 'showTimes': product.showTimes, 'remark': product.remark, 'time': (config.countDown - countDown) * 1000, 'updateUser': product.updateUser, 'updateTime': product.update_time.strftime("%m/%d/%Y %H:%M:%S") }) return pretty_result(code.OK, data=data, msg="get create order info successful!") else: return pretty_result(code.OK, data=[], msg="get create order info successful!")
def post(self): """ 用户注册 :return: json """ self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') self.parser.add_argument( "username", type=str, required=True, location="json", help='username is required or format is incorrect') self.parser.add_argument( "inviterId", type=str, location="json", help='inviterId is required or format is incorrect') # self.parser.add_argument("phone", type=inputs.regex(r'((\+66|0)(\d{1,2}\-?\d{3}\-?\d{3,4}))|((\+๖๖|๐)([๐-๙]{1,2}\-?[๐-๙]{3}\-?[๐-๙]{3,4}))'), required=True, location="json", # help='phone is required or format is incorrect') # self.parser.add_argument("gender", type=str, required=True, location="json", # help='gender is required or format is incorrect') # self.parser.add_argument("birth", type=str, required=True, location="json", # help='birth is required or format is incorrect') self.parser.add_argument( "password", type=password_len, required=True, location="json", trim=True, help='password is required or format is incorrect') args = self.parser.parse_args() MallUserEmailInfo = MallUsersModel.query.filter_by( email=args.email).all() for item in MallUserEmailInfo: if item.id != args.id: return pretty_result(code.ERROR, msg='The email is exit!') # mallUser = MallUsersModel(email=args.email, username=args.username, password=MallUsersModel.set_password(MallUsersModel, getRSAtext(args.password)), # registered_on=int(time.time()),phone=args.phone.replace('-', ''), gender=args.gender,birthday=args.birth) mallUser = MallUsersModel(email=args.email, username=args.username, password=MallUsersModel.set_password( MallUsersModel, getRSAtext(args.password)), registered_on=int(time.time())) MallUsersModel.add(MallUsersModel, mallUser) token = generate_confirmation_token(args.email) confirm_url = config.domain + "/api/v1/mall/confirm?token=" + token html = ''' <p>Welcome! Thanks for signing up. Please follow this link to activate your account:</p> <p><a href=''' + confirm_url + '''>''' + confirm_url + '''</a></p> <br> <p>Cheers!</p>''' subject = "Please confirm your email" send_email(args.email, subject, html) if args.inviterId != 'undefined': try: inviteEmail = base64.b64decode(args.inviterId) inviter = InvitersModel(invite=inviteEmail, invited=args.email) InvitersModel.add(InvitersModel, inviter) userInfo = InvitersModel.query.filter_by( email=inviteEmail).first() userInfo.point = config.Inviter_Point InvitersModel.update(userInfo) except Exception as e: return pretty_result(code.OK, msg='inviterId is not correct') if mallUser.id: returnUser = { 'id': mallUser.id, 'username': mallUser.username, 'email': mallUser.email, 'phone': mallUser.phone, 'gender': mallUser.gender, 'birth': mallUser.birthday, 'confirmed': mallUser.confirmed, 'login_time': mallUser.login_time } return pretty_result(code.OK, data=returnUser, msg='User register successful') else: return pretty_result(code.ERROR, msg='User register failed')
def post(self): self.parser.add_argument("no", type=str, required=True, location="form", help='no is required') self.parser.add_argument("name", type=str, required=True, location="form", help='name is required') self.parser.add_argument("description", type=str, required=True, location="form", help='description is required') self.parser.add_argument("position", type=str, required=True, location="form", help='position is required') self.parser.add_argument("picture", type=FileStorage, required=True, location='files', action='append', help='picture is required') self.parser.add_argument("gender", type=str, required=True, location="form", help='gender is required') self.parser.add_argument("size", type=str, required=True, location="form", help='size is required') self.parser.add_argument("age", type=str, required=True, location="form", help='age is required') self.parser.add_argument("Pclass", type=str, required=True, location="form", help='Pclass is required') self.parser.add_argument("type", type=str, required=True, location="form", help='type is required') self.parser.add_argument("status", type=str, required=True, location="form", help='status is required') self.parser.add_argument("inPrice", type=int, required=True, location="form", help='inPrice is required') self.parser.add_argument("outPrice", type=int, required=True, location="form", help='outPrice is required') self.parser.add_argument("price", type=int, required=True, location="form", help='price is required') self.parser.add_argument("level", type=int, required=True, location="form", help='level is required') self.parser.add_argument("showTimes", type=int, default=0, location="form", help='showTimes is required') self.parser.add_argument("remark", type=str, location="form", help='remark is not required') self.parser.add_argument("updateUser", type=str, required=True, location="form", help='updateUser is required') self.parser.add_argument("removeList", type=str, required=True, location="form", help='removelist is required') args = self.parser.parse_args() productNoInfo = ProductsModel.query.filter_by(no=args.no).all() if productNoInfo: return pretty_result(code.ERROR, msg='该商品已经被录入!') removeList = args.removeList.split(",") pictureList = '' for item in args.picture: if item.filename in removeList: continue new_fname = filePath + str(item.filename) + '.png' item.save(new_fname) pictureList = pictureList + str(item.filename) + "," pictureList = pictureList[:-1] product = ProductsModel(no=args.no, position=args.position, picture=pictureList, gender=args.gender, size=args.size, age=args.age, Pclass=args.Pclass, type=args.type, name=args.name, description=args.description, status=args.status, inPrice=args.inPrice, outPrice=args.outPrice, price=args.price, level=args.level, remark=args.remark, showTimes=args.showTimes, updateUser=args.updateUser) ProductsModel.add(ProductsModel, product) if product.id: content = str({ "no": args.no, "name": args.name, "description": args.description, "position": args.position, "picture": pictureList, "gender": args.gender, "size": args.size, "age": args.age, "Pclass": args.Pclass, "type": args.type, "status": args.status, "inPrice": args.inPrice, "outPrice": args.outPrice, "price": args.price, "level": args.level, "remark": args.remark, "showTimes": args.showTimes, "updateUser": args.updateUser }) log = LogsModel(username=args.updateUser, model="product", action="add", content=content) LogsModel.add(LogsModel, log) return pretty_result(code.OK, msg='商品信息创建成功!') else: return pretty_result(code.Error, msg='商品信息创建失败!')
def get(self): user_id = get_jwt_identity() user = User.query.get(user_id) return pretty_result(http_code.OK, data=UserSchema().dump(user))
def param_error(e): return pretty_result(http_code.NOTFOUND_ERROR)
def post(self): self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') args = self.parser.parse_args() cartInfo = CartsModel.query.filter_by(email=args.email).all() data = [] for item in cartInfo: countDown = (datetime.datetime.now() - item.update_time).total_seconds() if countDown < config.countDown: product = ProductsModel.query.filter_by(no=item.no).first() url = '' pictures = product.picture.split(",") for i in pictures: url = config.domain + "/api/v1/pictureManagement/get?type=product&id=" + i break data.append({ 'id': product.id, 'no': product.no, 'name': product.name, 'description': product.description, 'position': product.position, 'picture': url, 'gender': product.gender, 'size': product.size, 'age': product.age, 'Pclass': product.Pclass, 'type': product.type, 'status': product.status, 'inPrice': product.inPrice, 'outPrice': product.outPrice, 'price': product.price, 'level': product.level, 'showTimes': product.showTimes, 'remark': product.remark, 'time': (config.countDown - countDown) * 1000, 'updateUser': product.updateUser, 'updateTime': product.update_time.strftime("%m/%d/%Y %H:%M:%S") }) return pretty_result(code.OK, data=data, msg="get cart info successful!")
def get(self): """ 地址表信息 :return: json """ self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), location="args", help='email format is incorrect') self.parser.add_argument("pageNo", type=int, required=True, location="args", help='pageNo format is incorrect') self.parser.add_argument("pageSize", type=int, required=True, location="args", help='pageSize format is incorrect') self.parser.add_argument("addressId", type=int, location="args", help='addressId format is incorrect') args = self.parser.parse_args() if args.addressId: Address = AddressModel.query.filter_by( addressId=args.addressId).all() result = [] if Address: for item in Address: result.append({ 'id': item.id, 'email': item.email, 'addressId': item.addressId, 'username': item.username, 'phone': item.phone, 'defaultFlag': item.defaultFlag, 'provinceName': item.provinceName, 'cityName': item.cityName, 'townName': item.townName, 'postCode': item.postCode, 'detailAddress': item.detailAddress, }) return pretty_result(code.OK, data=result[0], msg='Get address successful') Address = AddressModel.query.filter_by(email=args.email).all() totalCount = len(Address) result = [] if Address: for item in Address: result.append({ 'id': item.id, 'email': item.email, 'addressId': item.addressId, 'username': item.username, 'phone': item.phone, 'defaultFlag': item.defaultFlag, 'provinceName': item.provinceName, 'cityName': item.cityName, 'townName': item.townName, 'postCode': item.postCode, 'detailAddress': item.detailAddress, }) data = { 'pageNo': args.pageNo, 'pageSize': args.pageSize, 'totalCount': totalCount, 'items': result } return pretty_result(code.OK, data=data, msg='Get address successful')
def put(self): """ 充值表信息 :return: json """ self.parser.add_argument( "email", type=inputs.regex( r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'), required=True, location="json", help='email format is incorrect') self.parser.add_argument("username", type=str, location="json", required=True, help='username is required') self.parser.add_argument("addressId", type=str, location="json", required=True, help='addressId is required') self.parser.add_argument( "phone", type=inputs.regex( r'((\+66|0)(\d{1,2}\-?\d{3}\-?\d{3,4}))|((\+๖๖|๐)([๐-๙]{1,2}\-?[๐-๙]{3}\-?[๐-๙]{3,4}))' ), required=True, location="json", help='phone is required or format is incorrect') self.parser.add_argument("defaultFlag", type=int, location="json", required=True, help='defaultFlag is required') self.parser.add_argument("provinceName", type=str, location="json", required=True, help='provinceName is required') self.parser.add_argument("cityName", type=str, location="json", required=True, help='cityName is required') self.parser.add_argument("townName", type=str, location="json", required=True, help='townName is required') self.parser.add_argument("detailAddress", type=str, location="json", required=True, help='detailAddress is required') args = self.parser.parse_args() Address = AddressModel.query.filter_by( addressId=args.addressId).first() if Address.defaultFlag == 0 and args.defaultFlag == 1: AddressModel.updateStatus(AddressModel, args.email) Address.email = args.email Address.username = args.username Address.phone = args.phone Address.defaultFlag = args.defaultFlag Address.provinceName = args.provinceName Address.cityName = args.cityName Address.townName = args.townName Address.detailAddress = args.detailAddress AddressModel.update(Address) if Address.id: return pretty_result(code.OK, msg='Update address successful!') else: return pretty_result(code.ERROR, msg='Update address failed')
def param_error(e): return pretty_result(http_code.PARAM_ERROR)
def get(self): """ 获取商品列表信息 :return: json """ self.parser.add_argument("pageNo", type=int, required=True, location="args", help='pageNo is required') self.parser.add_argument("pageSize", type=int, required=True, location="args", help='pageSize is required') self.parser.add_argument("no", type=str, required=True, location="args", help='no is required') self.parser.add_argument("Pclass", type=str, required=True, location="args", help='Pclass is required') args = self.parser.parse_args() product_list = ProductsModel.paginate(ProductsModel, args.pageNo, args.pageSize) items = [] totalCount = product_list.total product_list = product_list.items if args.no or args.Pclass: product_list = ProductsModel.filter_by_no_Pclass( ProductsModel, args.no, args.Pclass) totalCount = len(product_list) for product in product_list: fileList = [] pictures = product.picture.split(",") for i in pictures: url = config.domain + "/api/v1/pictureManagement/get?type=product&id=" + i fileList.append({"name": i, "url": url}) items.append({ 'id': product.id, 'no': product.no, 'name': product.name, 'description': product.description, 'position': product.position, 'picture': fileList, 'gender': product.gender, 'size': product.size, 'age': product.age, 'Pclass': product.Pclass, 'type': product.type, 'status': product.status, 'inPrice': product.inPrice, 'outPrice': product.outPrice, 'price': product.price, 'level': product.level, 'showTimes': product.showTimes, 'remark': product.remark, 'updateUser': product.updateUser, 'updateTime': product.update_time.strftime("%m/%d/%Y %H:%M:%S") }) data = { 'pageNo': args.pageNo, 'pageSize': args.pageSize, 'totalCount': totalCount, 'items': items } return pretty_result(code.OK, data=data, msg='商品信息获取成功!')
def delete(self): self.parser.add_argument("addressId", type=str, required=True, location="json", help='addressId is required') args = self.parser.parse_args() AddressModel.delete(AddressModel, [args.addressId]) return pretty_result(code.OK, msg='Delete address successful!')
def get(self): """ 套餐细节信息 :return: json """ self.parser.add_argument("no", type=str, required=True, location="args", help='no is required') args = self.parser.parse_args() product_list = ProductsModel.query.filter_by(no=args.no).all() items = [] for product in product_list: fileList = [] pictures = product.picture.split(",") for i in pictures: url = config.domain + "/api/v1/pictureManagement/get?type=product&id=" + i fileList.append({"name": i, "url": url}) countDown = (datetime.datetime.now() - product.update_time).total_seconds() items.append({ 'id': product.id, 'no': product.no, 'name': product.name, 'description': product.description, 'position': product.position, 'picture': fileList, 'gender': product.gender, 'size': product.size, 'age': product.age, 'Pclass': product.Pclass, 'type': product.type, 'status': product.status, 'inPrice': product.inPrice, 'outPrice': product.outPrice, 'price': product.price, 'level': product.level, 'showTimes': product.showTimes, 'remark': product.remark, 'time': (config.countDown - countDown) * 1000, 'updateUser': product.updateUser, 'updateTime': product.update_time.strftime("%m/%d/%Y %H:%M:%S") }) if items: return pretty_result(code.OK, data=items, msg='Get product detail successful!') else: return pretty_result(code.ERROR, data=[], msg='The product no is exit!')
def put(self): self.parser.add_argument("id", type=int, required=True, location="form", help='id is required') self.parser.add_argument("no", type=str, required=True, location="form", help='no is required') self.parser.add_argument("name", type=str, required=True, location="form", help='name is required') self.parser.add_argument("description", type=str, required=True, location="form", help='description is required') self.parser.add_argument("position", type=str, required=True, location="form", help='position is required') self.parser.add_argument("picture", type=FileStorage, location='files', action='append', help='picture is file') self.parser.add_argument("gender", type=str, required=True, location="form", help='gender is required') self.parser.add_argument("size", type=str, required=True, location="form", help='size is required') self.parser.add_argument("age", type=str, required=True, location="form", help='age is required') self.parser.add_argument("Pclass", type=str, required=True, location="form", help='Pclass is required') self.parser.add_argument("type", type=str, required=True, location="form", help='type is required') self.parser.add_argument("status", type=str, required=True, location="form", help='status is required') self.parser.add_argument("inPrice", type=str, required=True, location="form", help='inprice is required') self.parser.add_argument("outPrice", type=str, required=True, location="form", help='outprice is required') self.parser.add_argument("price", type=int, required=True, location="form", help='price is required') self.parser.add_argument("level", type=int, required=True, location="form", help='level is required') self.parser.add_argument("showTimes", type=str, required=True, location="form", help='showTimes is required') self.parser.add_argument("remark", type=str, location="form", help='remark is not required') self.parser.add_argument("updateUser", type=str, required=True, location="form", help='updateUser is required') self.parser.add_argument("removeList", type=str, required=True, location="form", help='removelist is required') args = self.parser.parse_args() productNoInfo = ProductsModel.query.filter_by(no=args.no).all() for item in productNoInfo: if item.id != args.id: return pretty_result(code.ERROR, msg='该商品编号已存在,不可以编辑!') productInfo = ProductsModel.query.filter_by(no=args.no).first() productPictureList = productInfo.picture.split(",") removeList = args.removeList.split(",") pictureList = '' for j in removeList: if j in productPictureList: productPictureList.remove(j) old_fname = filePath + str(j) + '.png' if os.path.exists(old_fname): os.remove(old_fname) else: print(str(j) + " the file does not exist") if args.picture: for item in args.picture: if item.filename in removeList: continue new_fname = filePath + str(item.filename) + '.png' item.save(new_fname) productPictureList.append(str(item.filename)) pictureList = ','.join(productPictureList) productInfo.no = args.no productInfo.name = args.name productInfo.description = args.description productInfo.position = args.position productInfo.picture = pictureList productInfo.gender = args.gender productInfo.size = args.size productInfo.age = args.age productInfo.Pclass = args.Pclass productInfo.type = args.type productInfo.status = args.status productInfo.inPrice = args.inPrice productInfo.outPrice = args.outPrice productInfo.price = args.price productInfo.level = args.level productInfo.showTimes = args.showTimes productInfo.remark = args.remark productInfo.updateUser = args.updateUser ProductsModel.update(productInfo) content = str({ "no": args.no, "name": args.name, "description": args.description, "position": args.position, "picture": pictureList, "gender": args.gender, "size": args.size, "age": args.age, "Pclass": args.Pclass, "type": args.type, "status": args.status, "inPrice": args.inPrice, "outPrice": args.outPrice, "price": args.price, "level": args.level, "remark": args.remark, "showTimes": args.showTimes, "updateUser": args.updateUser }) log = LogsModel(username=args.updateUser, model="product", action="edit", content=content) LogsModel.add(LogsModel, log) return pretty_result(code.OK, msg='商品信息修改成功!')
def decorated_function(*args, **kwargs): if g.confirmed is False: return pretty_result(code.UNAUTHORIZATION_ERROR, msg='User must confirm Email.') else: return func(*args, **kwargs)
def put(self): self.parser.add_argument("id", type=int, required=True, location="form", help='id is required') self.parser.add_argument("no", type=str, required=True, location="form", help='no is required') self.parser.add_argument("name", type=str, required=True, location="form", help='name is required') self.parser.add_argument("type", type=str, required=True, location="form", help='type is required') self.parser.add_argument("gender", type=str, required=True, location="form", help='gender is required') self.parser.add_argument("size", type=str, required=True, location="form", help='size is required') self.parser.add_argument("age", type=str, required=True, location="form", help='age is required') self.parser.add_argument("Pclass", type=str, required=True, location="form", help='Pclass is required') self.parser.add_argument("count", type=str, required=True, location="form", help='count is required') # self.parser.add_argument("price", type=int, required=True, location="form", help='price is required') # self.parser.add_argument("total", type=int, required=True, location="form", help='total is required') self.parser.add_argument("picture", type=FileStorage, location='files', action='append', help='picture is file') self.parser.add_argument("description", type=FileStorage, location='files', action='append', help='description is file') self.parser.add_argument("point", type=int, required=True, location="form", help='point is required') self.parser.add_argument("remark", type=str, location="form", help='remark is required') self.parser.add_argument("updateUser", type=str, required=True, location="form", help='updateUser is required') self.parser.add_argument("removeList", type=str, required=True, location="form", help='removelist is required') self.parser.add_argument("removeList2", type=str, required=True, location="form", help='removelist2 is required') args = self.parser.parse_args() packageInfo = PackageModel.query.filter_by(name=args.name).all() for item in packageInfo: if item.id != args.id: return pretty_result(code.ERROR, msg='该套餐管理已经被添加!') packageInfo = PackageModel.query.filter_by(id=args.id).first() packagePictureList = packageInfo.picture.split(",") removeList = args.removeList.split(",") pictureList = '' for j in removeList: if j in packagePictureList: packagePictureList.remove(j) old_fname = filePath + str(j) + '.png' if os.path.exists(old_fname): os.remove(old_fname) else: print(str(j) + " the file does not exist") if args.picture: for item in args.picture: if item.filename in removeList: continue new_fname = filePath + str(item.filename) + '.png' item.save(new_fname) packagePictureList.append(str(item.filename)) pictureList = ','.join(packagePictureList) packagePictureList2 = packageInfo.description.split(",") removeList2 = args.removeList2.split(",") pictureList2 = '' for j in removeList2: if j in packagePictureList2: packagePictureList2.remove(j) old_fname = filePath + str(j) + '.png' if os.path.exists(old_fname): os.remove(old_fname) else: print(str(j) + " the file does not exist") if args.description: for item in args.description: if item.filename in removeList2: continue new_fname = filePath + str(item.filename) + '.png' item.save(new_fname) packagePictureList2.append(str(item.filename)) pictureList2 = ','.join(packagePictureList2) packageInfo.id = args.id packageInfo.no = args.no packageInfo.name = args.name packageInfo.type = args.type packageInfo.gender = args.gender packageInfo.size = args.size packageInfo.age = args.age packageInfo.Pclass = args.Pclass # packageInfo.price = args.price # packageInfo.total = args.total packageInfo.point = args.point packageInfo.picture = pictureList packageInfo.description = pictureList2 packageInfo.remark = args.remark packageInfo.updateUser = args.updateUser PackageModel.update(packageInfo) content = str({"name": args.name, "no":args.no, "type": args.type, "gender": args.gender, "size": args.size, "age": args.age, "Pclass": args.Pclass, "point": args.point,"picture": pictureList, "description": pictureList2, "remark": args.remark, "updateUser": args.updateUser}) log = LogsModel(username=args.updateUser, model="package", action="edit", content=content) LogsModel.add(LogsModel, log) return pretty_result(code.OK, msg='套餐管理信息更新成功!')
def get(self): """ 获取套餐管理列表信息 :return: json """ self.parser.add_argument("pageNo", type=int, required=True, location="args", help='pageNo is required') self.parser.add_argument("pageSize", type=int, required=True, location="args", help='pageSize is required') self.parser.add_argument("name", type=str, required=True, location="args", help='name is required') self.parser.add_argument("Pclass[]", type=str, location="args", action='append', help='Pclass is required') self.parser.add_argument("age", type=str, required=True, location="args", help='age is required') self.parser.add_argument("size", type=str, required=True, location="args", help='size is required') self.parser.add_argument("gender", type=str, required=True, location="args", help='gender is required') args = self.parser.parse_args() # package_list = PackageModel.paginate(PackageModel, args.pageNo, args.pageSize) items = [] # totalCount = package_list.total # package_list = package_list.items # if args.name and args.Pclass: Pclass = args['Pclass[]'] if(not args['Pclass[]']): Pclass = ['coat', 'pants', 'skirt'] package_list = PackageModel.filter_by_name_gender_size_age_Pclass(PackageModel, args.name, args.gender, args.size, args.age, Pclass) # package_list = PackageModel.filter_by_name_Pclass(PackageModel, args.name, args.Pclass) totalCount = len(package_list) for package in package_list: fileList = [] fileList2 = [] url = config.domain +"/api/v1/pictureManagement/get?type=package&id=" + package.picture fileList.append({"name": package.picture, "url": url}) description = package.description.split(",") for i in description: url2 = config.domain + "/api/v1/pictureManagement/get?type=package&id=" + i fileList2.append({"name": i, "url": url2}) items.append( { 'id': package.id, 'name': package.name, 'no': package.no, 'type': package.type, 'gender': package.gender, 'size': package.size, 'age': package.age, 'Pclass': package.Pclass, 'count': package.count, # 'price': package.price, # 'total': package.total, 'point': package.point, 'description': fileList2, 'picture': fileList, 'remark': package.remark, 'updateUser': package.updateUser, 'updateTime': package.update_time.strftime("%m/%d/%Y %H:%M:%S") } ) data = { 'pageNo': args.pageNo, 'pageSize': args.pageSize, 'totalCount': totalCount, 'items': items } return pretty_result(code.OK, data=data, msg='套餐配置信息获取成功!')
def get(self): """ 获取用户列表信息 :return: json """ self.parser.add_argument("pageNo", type=int, required=True, location="args", help='pageNo is required') self.parser.add_argument("pageSize", type=int, required=True, location="args", help='pageSize is required') self.parser.add_argument("username", type=str, required=True, location="args", help='username is required') self.parser.add_argument("model", type=str, required=True, location="args", help='model is required') self.parser.add_argument("action", type=str, required=True, location="args", help='action is required') args = self.parser.parse_args() log_list = LogsModel.paginate(LogsModel, args.pageNo, args.pageSize) items = [] totalCount = log_list.total log_list = log_list.items if args.username: log_list = LogsModel.filter_by_username_model_action( LogsModel, args.username, args.model, args.action) totalCount = len(log_list) for log in log_list: items.append({ 'id': log.id, 'username': log.username, 'model': log.model, 'action': log.action, 'content': log.content, 'updateTime': log.update_time.strftime("%m/%d/%Y %H:%M:%S") }) data = { 'pageNo': args.pageNo, 'pageSize': args.pageSize, 'totalCount': totalCount, 'items': items } return pretty_result(code.OK, data=data, msg='日志信息获取成功!')
def framework_error(e): print(e) if not app.config['DEBUG']: return pretty_result(http_code.UNKNOWN_ERROR) # 未知错误(统一为服务端异常) else: raise e