def shopHandler(sid): # get shop info if request.method == 'GET': shop = get_shop_detail(sid) logger.info(f'try to get shop: id: {sid} info') if shop is None: return jsonify(status=False, message='shop not existed', data='') else: shop = shop.serialize() return jsonify(status=True, message='succeed', data=shop) # update shop info elif request.method == 'PUT': shopInfo = form2Dict(request.json, {'id': sid, 'name': '', 'description': '', 'img': ''}) logger.info(f'try to update shop: id: {sid} info: {shopInfo}') status = update_shop_info(shopInfo) if status: logger.info(f'succeed to update shop: id: {sid} info') return jsonify(status=True, message='succeed', data='') else: logger.info(f'fail to update shop: id: {sid} info') return jsonify(status=False, message='failed', data='') # delete shop else: # 首先删除销量数据和店铺商品 logger.info(f'try to delete shop: id: {sid} info') delete_records_by_sid(sid) delete_products_by_sid(sid) status = delete_shop(sid) if status: return jsonify(status=True, message='succeed', data='') else: return jsonify(status=False, message='failed', data='')
def productHandler(pid): # get product info if request.method == 'GET': product = get_product_detail_by_pid(pid) if product is not None: product = product.serialize() product["type"] = json.loads(product["type"]) return jsonify(status=True, message='succeed', data=product) else: return jsonify(status=False, message='product does not exist', data='') # update product info elif request.method == 'PUT': productInfo = form2Dict(request.json, {'id':'-1', 'name': '', 'status':'on-sale', \ 'description': '', 'type':'', 'img': ''}) productInfo['type'] = ast.literal_eval(productInfo['type']) for key in productInfo['type'].keys(): productInfo['type'][key] = int(productInfo['type'][key]) productInfo['type'] = json.dumps(productInfo['type']) status = update_product_info(productInfo) if status: return jsonify(status=True, message='succeed', data='') else: return jsonify(status=False, message='failed', data='') # delete product else: delete_records_by_pid(pid) status, sid = delete_product_by_pid(pid) if status: increase_shop_product_amount(sid, -1) return jsonify(status=True, message='succeed', data='') else: return jsonify(status=False, message='failed', data='')
def createProduct(): productInfo = form2Dict(request.json, {'name': '', 'status':'on-sale', 'description': '', \ 'img': 'default-product.png', 'sid': '-1', 'shop': '', 'type':'', 'salesVolumes': 0}) productInfo['type'] = json.dumps(ast.literal_eval(productInfo['type'])) if productInfo['img'] == '': productInfo['img'] = 'default-product.png' pid = create_product(productInfo) increase_shop_product_amount(productInfo['sid'], 1) return jsonify(status=True, message='succeed', data={'pid': pid})
def createShop(): username = session.get('username') uid = get_uid_by_username(username) shopInfo = form2Dict(request.json, {'name': '', 'description': '', 'img': 'default-shop.jpeg', 'uid': uid}) if shopInfo['img'] == '': shopInfo['img'] = 'default-shop.jpeg' logger.info(f'user: {username} try to create shop:{shopInfo}') sid = create_shop(shopInfo) logger.info(f'shop-id: {sid} created') return jsonify(status=True, message='succeed', data={'sid': sid})
def salesRecordHandler(pid): # get record info if request.method == 'GET': rdate = request.args.get('date', date.today().isoformat()) rdate = date.fromisoformat(rdate) record = get_record_one_day(pid, rdate) if record is None: return jsonify(status=False, message='failed', data='') return jsonify(status=True, message='succeed', data=record.serialize()) # update record info elif request.method == 'PUT': recordDate = request.json.get('date', date.today().isoformat()) recordDate = date.fromisoformat(recordDate) newSales = json.dumps(ast.literal_eval(request.json.get('sales', ''))) # 更新记录表 originRecord = get_record_one_day(pid, recordDate) if originRecord is not None: originSalesCount = getSalesCountfromSalesStr(originRecord.sales) newSalesCount = getSalesCountfromSalesStr(newSales) # 更新各销量 update_record_sales(pid, recordDate, newSales) increase_shop_sales(originRecord.sid, newSalesCount - originSalesCount) increase_product_sales(pid, newSalesCount - originSalesCount) # 更新商品库存 update_product_inventory(pid, True, originRecord.sales) update_product_inventory(pid, False, newSales) return jsonify(status=True, message='succeed', data='') else: recordInfo = form2Dict(request.json, {'pid': '', 'sid': '', 'pname': '', 'date': date.today().isoformat(), 'sales': ''}) recordInfo['date'] = date.fromisoformat(recordInfo['date']) recordInfo['sales'] = json.dumps(ast.literal_eval(recordInfo['sales'])) rid = create_new_record(recordInfo) salesCount = getSalesCountfromSalesStr(recordInfo['sales']) # 更新库存 update_product_inventory(recordInfo['pid'], False, recordInfo['sales']) # 更新商品、店铺销量 increase_product_sales(recordInfo['pid'], salesCount) increase_shop_sales(recordInfo['sid'], salesCount) return jsonify(status=True, message='create new record', data={'rid': rid}) # delete record else: recordDate = request.json.get('date', date.today().isoformat()) recordDate = date.fromisoformat(recordDate) originRecord = get_record_one_day(pid, recordDate) if originRecord is not None: originSalesCount = getSalesCountfromSalesStr(originRecord['sales']) # 减少商品销量 increase_shop_sales(originRecord['sid'], -originSalesCount) increase_product_sales(pid, -originSalesCount) # 恢复库存 update_product_inventory(pid, True, originRecord['sales']) delete_record(pid, recordDate) return jsonify(status=True, message='succeed', data='') else: return jsonify(status=False, message='failed', data='')
def createSalesRecord(): recordInfo = form2Dict(request.json, {'pid': '', 'sid': '', 'pname': '', 'date': date.today().isoformat(), 'sales': ''}) recordInfo['date'] = date.fromisoformat(recordInfo['date']) recordInfo['sales'] = json.dumps(ast.literal_eval(recordInfo['sales'])) rid = create_new_record(recordInfo) salesCount = getSalesCountfromSalesStr(recordInfo['sales']) # 更新库存 update_product_inventory(recordInfo['pid'], False, recordInfo['sales']) # 更新商品、店铺销量 increase_product_sales(recordInfo['pid'], salesCount) increase_shop_sales(recordInfo['sid'], salesCount) return jsonify(status=True, message='succeed', data={'rid': rid})
def register(): if request.method == 'GET': username = request.args.get('username') exist = username_exist(username) if exist[0]: logger.warning(f'register failed, username:{username} has existed') return jsonify(status=False, message="username has existed", data='') else: logger.info('username available') return jsonify(status=True, message="username available", data='') else: userInfo = form2Dict(request.json, { 'username': '', 'password': '', 'phone': '' }) status, uid = create_user(userInfo) if status: return jsonify(status=True, message="succeed", data={'uid': uid}) else: return jsonify(status=False, message="failed", data='')