def index(): resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 query = Member.query if 'mix_kw' in req: query = query.filter( Member.nickname.ilike("%{0}%".format(req['mix_kw']))) if 'status' in req and int(req['status']) > -1: query = query.filter(Member.status == int(req['status'])) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] list = query.order_by(Member.id.desc()).offset(offset).limit( app.config['PAGE_SIZE']).all() resp_data['list'] = list resp_data['pages'] = pages resp_data['search_con'] = req resp_data['status_mapping'] = app.config['STATUS_MAPPING'] resp_data['current'] = 'index' return render_template_ops("member/index.html", resp_data)
def index(): resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 query = Food.query if 'mix_kw' in req: rule = or_(Food.name.ilike("%{0}%".format(req['mix_kw'])), Food.tags.ilike("%{0}%".format(req['mix_kw']))) query = query.filter(rule) if 'status' in req and int(req['status']) > -1: query = query.filter(Food.status == int(req['status'])) if 'cat_id' in req and int(req['cat_id']) > 0: query = query.filter(Food.cat_id == int(req['cat_id'])) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] list = query.order_by(Food.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all() cat_mapping = getDictFilterField(FoodCat, FoodCat.id, "id", []) resp_data['list'] = list resp_data['pages'] = pages resp_data['search_con'] = req resp_data['status_mapping'] = app.config['STATUS_MAPPING'] resp_data['cat_mapping'] = cat_mapping resp_data['current'] = 'index' return render_template_ops("food/index.html", resp_data)
def set(): resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 query = PayOrder.query.filter_by( status = 1 ) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] list = query.order_by(PayOrder.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all() stat_info = db.session.query( PayOrder,func.sum( PayOrder.total_price ).label("total") )\ .filter( PayOrder.status == 1 ).first() app.logger.info ( stat_info ) resp_data['list'] = list resp_data['pages'] = pages resp_data['total_money'] = stat_info[ 1 ] if stat_info[ 1 ] else 0.00 resp_data['current'] = 'account' return render_template_ops( "finance/account.html",resp_data )
def edit(): if request.method == "GET": return render_template_ops("user/edit.html", {'current': 'edit'}) req = request.values nickname = req.get("nickname", '') email = req.get('email', '') resp = {'code': 200, 'msg': '操作成功', 'data': {}} if not nickname or len(nickname) < 4: resp['code'] = -1 resp['msg'] = "请输入符合规范的姓名~" return jsonify(resp) if email is None or len(email) < 4: resp['code'] = -1 resp['msg'] = "请输入符合规范的邮箱~~" return jsonify(resp) user_info = g.current_user user_info.nickname = nickname user_info.email = email db.session.add(user_info) db.session.commit() return jsonify(resp)
def index(): now = datetime.datetime.now() date_before_30days = now + datetime.timedelta(days=-30) default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d") default_date_to = getFormatDate(date=now, format="%Y-%m-%d") resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 date_from = req['date_from'] if 'date_from' in req else default_date_from date_to = req['date_to'] if 'date_to' in req else default_date_to query = StatDailySite.query.filter(StatDailySite.date >= date_from) \ .filter(StatDailySite.date <= date_to) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] list = query.order_by(StatDailySite.id.desc()).offset( offset ).limit( app.config['PAGE_SIZE'] ).all() resp_data['list'] = list resp_data['pages'] = pages resp_data['current'] = 'index' resp_data['search_con'] = { 'date_from':date_from, 'date_to':date_to } return render_template_ops( "stat/index.html",resp_data )
def index(): resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 query = User.query if 'mix_kw' in req: # 模糊查询 ilike 忽略大小写 rule = or_(User.nickname.ilike("%{0}%".format(req['mix_kw'])), User.mobile.ilike("%{0}%".format(req['mix_kw']))) query = query.filter(rule) # 查询是否删除的 if 'status' in req and int(req['status']) > -1: query = query.filter(User.status == int(req['status'])) # request.full_path 默认带 ? 号 page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), ""), } pages = iPagination(page_params) # 偏移量 offset = (page - 1) * app.config['PAGE_SIZE'] limit = app.config['PAGE_SIZE'] * page # 根据uid倒叙排序 list = query.order_by(User.uid.desc()).all()[offset:limit] resp_data['list'] = list resp_data['pages'] = pages resp_data['search_con'] = req resp_data['status_mapping'] = app.config['STATUS_MAPPING'] return render_template_ops("account/index.html", resp_data)
def comment(): resp_data = {} req = request.args page = int(req['p']) if ('p' in req and req['p']) else 1 query = MemberComments.query page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] comment_list = query.order_by( MemberComments.id.desc()).offset(offset).limit( app.config['PAGE_SIZE']).all() data_list = [] if comment_list: member_map = getDictFilterField( Member, Member.id, "id", selectFilterObj(comment_list, "member_id")) food_ids = [] for item in comment_list: tmp_food_ids = (item.food_ids[1:-1]).split("_") tmp_food_ids = {}.fromkeys(tmp_food_ids).keys() food_ids = food_ids + list(tmp_food_ids) food_map = getDictFilterField(Food, Food.id, "id", food_ids) for item in comment_list: tmp_member_info = member_map[item.member_id] tmp_foods = [] tmp_food_ids = (item.food_ids[1:-1]).split("_") for tmp_food_id in tmp_food_ids: tmp_food_info = food_map[int( tmp_food_id)] if tmp_food_id in food_ids else None if tmp_food_info: tmp_foods.append({'name': tmp_food_info.name}) tmp_data = { "content": item.content, "score": item.score, "member_info": tmp_member_info, "foods": tmp_foods } data_list.append(tmp_data) resp_data['list'] = data_list resp_data['pages'] = pages resp_data['current'] = 'comment' return render_template_ops("member/comment.html", resp_data)
def resetPwd(): if request.method == "GET": return render_template_ops("user/reset_pwd.html", {'current': 'reset-pwd'}) resp = {'code': 200, 'msg': '操作成功~', 'data': {}} req = request.values user_info = g.current_user old_password = req['old_password'] if 'old_password' in req else '' new_password = req['new_password'] if 'new_password' in req else '' if user_info.login_pwd != UserService.getPwd(old_password, user_info.login_salt): resp['code'] = -1 resp['msg'] = "原密码输入错误~~" return jsonify(resp) if old_password is None or len(old_password) < 6: resp['code'] = -1 resp['msg'] = "请输入符合规范的原密码~~" return jsonify(resp) if new_password is None or len(new_password) < 6: resp['code'] = -1 resp['msg'] = "请输入符合规范的新密码~~" return jsonify(resp) if old_password == new_password: resp['code'] = -1 resp['msg'] = "请重新输入一个吧,新密码和原密码不能相同哦~~" return jsonify(resp) user_info = g.current_user # if user_info.uid == 1: # resp['code'] = -1 # resp['msg'] = "该用户是演示账号,不准修改密码和登录用户名~~" # return jsonify(resp) user_info.login_pwd = UserService.getPwd(new_password, user_info.login_salt) db.session.add(user_info) db.session.commit() # 为了防止修改密码后直接退出 更新cookie response = make_response(json.dumps(resp)) response.set_cookie(app.config['AUTH_COOKIE_NAME'], '%s#%s' % (UserService.setAuthcode(user_info), user_info.uid), 60 * 60 * 24) # 保存1天 return response
def cat(): resp_data = {} req = request.values query = FoodCat.query if 'status' in req and int(req['status']) > -1: query = query.filter(FoodCat.status == int(req['status'])) # 先按照权重排 然后再按照id 倒序排 list = query.order_by(FoodCat.weight.desc(), FoodCat.id.desc()).all() app.logger.info(list) resp_data['list'] = list resp_data['search_con'] = req resp_data['status_mapping'] = app.config['STATUS_MAPPING'] resp_data['current'] = 'cat' return render_template_ops( "food/cat.html" , resp_data)
def index(): ## # 为了不让每一个页面都传current_user 我们需要修改 render_template libs 下创建helper文件 统一使用新的render_template ### resp_data = { 'data': { "finance": { "today": 0, "month": 0 }, "member": { "today_new": 0, "month_new": 0, "total": 0 }, "order": { "today": 0, "month": 0, }, "shared": { "today": 0, "month": 0 } } } now = datetime.datetime.now() date_before_30day = now + datetime.timedelta(days=-30) date_from = getFormatDate(date=date_before_30day, format="%Y-%m-%d") date_to = getFormatDate(date=now, format="%Y-%m-%d") list = StatDailySite.query.filter(StatDailySite.date >= date_from)\ .filter(StatDailySite.date <= date_to).order_by(StatDailySite.id.asc()).all() data = resp_data['data'] if list: for item in list: data['finance']['month'] += item.total_pay_money data['member']['month_new'] += item.total_new_member_count data['member']['total'] = item.total_member_count data['order']['month'] += item.total_order_count data['shared']['month'] += item.total_shared_count if getFormatDate(date=item.date, format="%Y-%m-%d") == date_to: data['finance']['today'] = item.total_pay_money data['member']['today'] = item.total_new_member_count data['order']['today'] = item.total_order_count data['shared']['today'] = item.total_pay_money return render_template_ops("index/index.html", resp_data)
def food(): now = datetime.datetime.now() date_before_30days = now + datetime.timedelta(days=-30) default_date_from = getFormatDate(date=date_before_30days, format="%Y-%m-%d") default_date_to = getFormatDate(date=now, format="%Y-%m-%d") resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 date_from = req['date_from'] if 'date_from' in req else default_date_from date_to = req['date_to'] if 'date_to' in req else default_date_to query = StatDailyFood.query.filter(StatDailyFood.date >= date_from) \ .filter(StatDailyFood.date <= date_to) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] list = query.order_by(StatDailyFood.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all() date_list = [] if list: food_map = getDictFilterField(Food, Food.id, "id", selectFilterObj(list, "food_id")) for item in list: tmp_food_info = food_map[item.food_id] if item.food_id in food_map else {} tmp_data = { "date": item.date, "total_count": item.total_count, "total_pay_money": item.total_pay_money, 'food_info': tmp_food_info } date_list.append(tmp_data) resp_data['list'] = date_list resp_data['pages'] = pages resp_data['current'] = 'food' resp_data['search_con'] = { 'date_from': date_from, 'date_to': date_to } return render_template_ops( "stat/food.html",resp_data )
def info(): resp_data = {} req = request.values id = int(req['id']) if 'id' in req else 0 reback_url = UrlManager.buildUrl("/finance/index") if id < 1: return redirect( reback_url ) pay_order_info = PayOrder.query.filter_by( id = id ).first() if not pay_order_info: return redirect(reback_url) member_info = Member.query.filter_by( id = pay_order_info.member_id ).first() if not member_info: return redirect(reback_url) order_item_list = PayOrderItem.query.filter_by( pay_order_id = pay_order_info.id ).all() data_order_item_list = [] if order_item_list: food_map = getDictFilterField(Food, Food.id, "id", selectFilterObj(order_item_list, "food_id")) for item in order_item_list: tmp_food_info = food_map[ item.food_id ] tmp_data = { "quantity":item.quantity, "price":item.price, "name":tmp_food_info.name } data_order_item_list.append( tmp_data ) address_info = MemberAddress.query.filter_by(id=pay_order_info.express_address_id).first() if address_info: address_info = { 'mobile': address_info.mobile, 'nickname': address_info.nickname, "address": "%s%s%s%s" % ( address_info.province_str, address_info.city_str, address_info.area_str, address_info.address) } resp_data['pay_order_info'] = pay_order_info resp_data['pay_order_items'] = data_order_item_list resp_data['member_info'] = member_info resp_data['address_info'] = address_info resp_data['current'] = 'index' return render_template_ops( "finance/pay_info.html",resp_data )
def info(): resp_data = {} req = request.args uid = int(req.get('id', 0)) reback_url = UrlManager.buildUrl("/account/index") if uid < 1: return redirect(reback_url) info = User.query.filter_by(uid=uid).first() if not info: return redirect(reback_url) error_log = AppAccessLog.query.filter_by(uid=uid)\ .order_by(AppAccessLog.uid.desc()).all()[:AppAccessLog.query.filter_by(uid=uid).count() if AppAccessLog.query.filter_by(uid=uid).count() < 5 else 5] # access_list = AppAccessLog.query.filter_by( uid = uid).order_by(AppAccessLog.id.desc() ).limit(10).all() resp_data['info'] = info # resp_data['access_list'] = access_list resp_data['error_log'] = error_log return render_template_ops("account/info.html", resp_data)
def info(): resp_data = {} req = request.args id = int(req.get("id", 0)) reback_url = UrlManager.buildUrl("/food/index") if id < 1: return redirect(reback_url) info = Food.query.filter_by(id=id).first() if not info: return redirect(reback_url) stock_change_list = FoodStockChangeLog.query.filter(FoodStockChangeLog.food_id == id) \ .order_by(FoodStockChangeLog.id.desc()).all() resp_data['info'] = info resp_data['stock_change_list'] = stock_change_list resp_data['current'] = 'index' return render_template_ops( "food/info.html", resp_data)
def login(): if request.method == "GET": if g.current_user: return redirect(UrlManager.buildUrl("/")) return render_template_ops("user/login.html", {'SEO_TITLE': app.config['SEO_TITLE']}) resp = {'code': 200, 'msg': '登录成功', 'data': {}} req = request.values login_name = req.get("login_name", '') login_pwd = req.get("login_pwd", '') if not login_name or len(login_name) < 5: resp['code'] = -1 resp['msg'] = "请输入正确的用户名" return jsonify(resp) if not login_pwd or len(login_pwd) < 6: resp['code'] = -1 resp['msg'] = "请输入正确的密码" return jsonify(resp) user_info = User.query.filter_by(login_name=login_name).first() if not user_info: resp['code'] = -1 resp['msg'] = "请输入正确的用户名密码" return jsonify(resp) if user_info.login_pwd != UserService.getPwd(login_pwd, user_info.login_salt): resp['code'] = -2 resp['msg'] = "请输入正确的用户名密码" return jsonify(resp) if user_info.status != 1: resp['code'] = -3 resp['msg'] = "账号被禁用" return jsonify(resp) response = make_response(json.dumps(resp)) # expires=time.time() + 10 设置过期时间 10s response.set_cookie( app.config['AUTH_COOKIE_NAME'], "%s#%s" % (UserService.setAuthcode(user_info), user_info.uid)) return response
def set(): if request.method == "GET": resp_data = {} req = request.args id = int(req.get("id", 0)) reback_url = UrlManager.buildUrl("/member/index") if id < 1: return redirect(reback_url) info = Member.query.filter_by(id=id).first() if not info: return redirect(reback_url) if info.status != 1: return redirect(reback_url) resp_data['info'] = info resp_data['current'] = 'index' return render_template_ops("member/set.html", resp_data) resp = {'code': 200, 'msg': '操作成功~~', 'data': {}} req = request.values id = req['id'] if 'id' in req else 0 nickname = req['nickname'] if 'nickname' in req else '' if nickname is None or len(nickname) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的姓名~~" return jsonify(resp) member_info = Member.query.filter_by(id=id).first() if not member_info: resp['code'] = -1 resp['msg'] = "指定会员不存在~~" return jsonify(resp) member_info.nickname = nickname member_info.updated_time = getCurrentDate() db.session.add(member_info) db.session.commit() return jsonify(resp)
def info(): resp_data = {} req = request.args id = int(req.get("id", 0)) reback_url = UrlManager.buildUrl("/member/index") if id < 1: return redirect(reback_url) info = Member.query.filter_by(id=id).first() if not info: return redirect(reback_url) pay_order_list = PayOrder.query.filter_by( member_id = id ).filter( PayOrder.status.in_( [-8,1] ) )\ .order_by( PayOrder.id.desc() ).all() comment_list = MemberComments.query.filter_by(member_id=id).order_by( MemberComments.id.desc()).all() resp_data['info'] = info resp_data['pay_order_list'] = pay_order_list resp_data['comment_list'] = comment_list resp_data['current'] = 'index' return render_template_ops("member/info.html", resp_data)
def catSet(): if request.method == "GET": resp_data = {} req = request.args id = int(req.get("id", 0)) info = None if id: info = FoodCat.query.filter_by( id = id ).first() resp_data['info'] = info resp_data['current'] = 'cat' return render_template_ops( "food/cat_set.html" ,resp_data ) resp = {'code': 200, 'msg': '操作成功~~', 'data': {}} req = request.values id = req['id'] if 'id' in req else 0 name = req['name'] if 'name' in req else '' weight = int( req['weight'] ) if ( 'weight' in req and int( req['weight']) > 0 ) else 1 if name is None or len( name ) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的分类名称~~" return jsonify( resp ) food_cat_info = FoodCat.query.filter_by( id = id ).first() if food_cat_info: model_food_cat = food_cat_info else: model_food_cat = FoodCat() model_food_cat.created_time = getCurrentDate() model_food_cat.name = name model_food_cat.weight = weight model_food_cat.updated_time = getCurrentDate() db.session.add(model_food_cat) db.session.commit() return jsonify( resp )
def error_404( e ): LogService.addErrorLog( str(e) ) return render_template_ops( 'error/error.html',{ 'status':404,'msg':'很抱歉!您访问的页面不存在' } )
def set(): default_pwd = "******" if request.method == "GET": resp_data = {} req = request.args uid = int(req.get("id", 0)) info = None if uid: info = User.query.filter_by(uid=uid).first() resp_data['info'] = info return render_template_ops("account/set.html", resp_data) resp = {'code': 200, 'msg': '操作成功~~', 'data': {}} req = request.values id = req['id'] if 'id' in req else 0 nickname = req['nickname'] if 'nickname' in req else '' mobile = req['mobile'] if 'mobile' in req else '' email = req['email'] if 'email' in req else '' login_name = req['login_name'] if 'login_name' in req else '' login_pwd = req['login_pwd'] if 'login_pwd' in req else '' if nickname is None or len(nickname) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的姓名~~" return jsonify(resp) if mobile is None or len(mobile) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的手机号码~~" return jsonify(resp) if email is None or len(email) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的邮箱~~" return jsonify(resp) if login_name is None or len(login_name) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的登录用户名~~" return jsonify(resp) if login_pwd is None or len(email) < 6: resp['code'] = -1 resp['msg'] = "请输入符合规范的登录密码~~" return jsonify(resp) has_in = User.query.filter(User.login_name == login_name, User.uid != id).first() if has_in: resp['code'] = -1 resp['msg'] = "该登录名已存在,请换一个试试~~" return jsonify(resp) user_info = User.query.filter_by(uid=id).first() if user_info: model_user = user_info else: model_user = User() model_user.created_time = getCurrentDate() model_user.login_salt = UserService.setSalt() model_user.nickname = nickname model_user.mobile = mobile model_user.email = email model_user.login_name = login_name if login_pwd != default_pwd: model_user.login_pwd = UserService.getPwd(login_pwd, model_user.login_salt) model_user.updated_time = getCurrentDate() db.session.add(model_user) db.session.commit() return jsonify(resp)
def index(): resp_data = {} req = request.values page = int(req['p']) if ('p' in req and req['p']) else 1 query = PayOrder.query if 'status' in req and int( req['status'] ) > -1 : query = query.filter( PayOrder.status == int( req['status'] ) ) page_params = { 'total': query.count(), 'page_size': app.config['PAGE_SIZE'], 'page': page, 'display': app.config['PAGE_DISPLAY'], 'url': request.full_path.replace("&p={}".format(page), "") } pages = iPagination(page_params) offset = (page - 1) * app.config['PAGE_SIZE'] pay_list = query.order_by(PayOrder.id.desc()).offset(offset).limit(app.config['PAGE_SIZE']).all() data_list = [] if pay_list: pay_order_ids = selectFilterObj( pay_list,"id" ) pay_order_items_map = getDictListFilterField( PayOrderItem,PayOrderItem.pay_order_id,"pay_order_id", pay_order_ids ) food_mapping = {} if pay_order_items_map: food_ids = [] for item in pay_order_items_map: tmp_food_ids = selectFilterObj( pay_order_items_map[ item ],"food_id" ) tmp_food_ids = {}.fromkeys(tmp_food_ids).keys() food_ids = food_ids + list( tmp_food_ids ) #food_ids里面会有重复的,要去重 food_mapping = getDictFilterField( Food,Food.id,"id", food_ids ) for item in pay_list: tmp_data = { "id":item.id, "status_desc":item.status_desc, "order_number":item.order_number, "price":item.total_price, "pay_time":item.pay_time, "created_time":item.created_time.strftime("%Y%m%d%H%M%S") } tmp_foods = [] tmp_order_items = pay_order_items_map[ item.id ] for tmp_order_item in tmp_order_items: tmp_food_info = food_mapping[ tmp_order_item.food_id ] tmp_foods.append( { 'name':tmp_food_info.name, 'quantity':tmp_order_item.quantity } ) tmp_data['foods'] = tmp_foods data_list.append( tmp_data ) resp_data['list'] = data_list resp_data['pages'] = pages resp_data['search_con'] = req resp_data['pay_status_mapping'] = app.config['PAY_STATUS_MAPPING'] resp_data['current'] = 'index' return render_template_ops( "finance/index.html",resp_data )
def set(): if request.method == "GET": resp_data = {} req = request.args id = int( req.get('id',0) ) info = Food.query.filter_by( id = id ).first() if info and info.status != 1: return redirect( UrlManager.buildUrl("/food/index") ) cat_list = FoodCat.query.all() resp_data['info'] = info resp_data['cat_list'] = cat_list resp_data['current'] = 'index' return render_template_ops( "food/set.html" ,resp_data) resp = {'code': 200, 'msg': '操作成功~~', 'data': {}} req = request.values id = int(req['id']) if 'id' in req and req['id'] else 0 cat_id = int(req['cat_id']) if 'cat_id' in req else 0 name = req['name'] if 'name' in req else '' price = req['price'] if 'price' in req else '' main_image = req['main_image'] if 'main_image' in req else '' summary = req['summary'] if 'summary' in req else '' stock = int(req['stock']) if 'stock' in req else '' tags = req['tags'] if 'tags' in req else '' if cat_id < 1: resp['code'] = -1 resp['msg'] = "请选择分类~~" return jsonify(resp) if name is None or len(name) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的名称~~" return jsonify(resp) if not price or len( price ) < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的售卖价格~~" return jsonify(resp) price = Decimal(price).quantize(Decimal('0.00')) if price <= 0: resp['code'] = -1 resp['msg'] = "请输入符合规范的售卖价格~~" return jsonify(resp) if main_image is None or len(main_image) < 3: resp['code'] = -1 resp['msg'] = "请上传封面图~~" return jsonify(resp) if summary is None or len(summary) < 3: resp['code'] = -1 resp['msg'] = "请输入图书描述,并不能少于10个字符~~" return jsonify(resp) if stock < 1: resp['code'] = -1 resp['msg'] = "请输入符合规范的库存量~~" return jsonify(resp) if tags is None or len(tags) < 1: resp['code'] = -1 resp['msg'] = "请输入标签,便于搜索~~" return jsonify(resp) food_info = Food.query.filter_by(id=id).first() before_stock = 0 if food_info: model_food = food_info before_stock = model_food.stock else: model_food = Food() model_food.status = 1 model_food.created_time = getCurrentDate() model_food.cat_id = cat_id model_food.name = name model_food.price = price model_food.main_image = main_image model_food.summary = summary model_food.stock = stock model_food.tags = tags model_food.updated_time = getCurrentDate() db.session.add(model_food) db.session.commit() # 库存变更 FoodService.setStockChangeLog( model_food.id,int(stock) - int(before_stock),"后台修改" ) return jsonify(resp)