def update_class(): # print(request.json) id = request.json.get('id', None) name = request.json.get('name', None) info = request.json.get('info', None) sort = request.json.get('sort', None) methord = request.json.get('methord', None) #update,add,delete print(methord) if methord not in ['update','delete','add']: return 'Missing data 1', 400 # 调用smtp函数发送邮件 try: if methord == 'update': if not all([id,name,info,sort]): return 'Missing data', 400 ProdCag.query.filter_by(id = id).update({'name':name,'info':info,'sort':sort}) elif methord == 'delete': if not id: return 'Missing data', 400 ProdCag.query.filter_by(id = id).delete() else: if not name or not info or not sort: return 'Missing data 2', 400 new_cag = ProdCag(name,info,sort) db.session.add(new_cag) db.session.commit() except Exception as e: log(e) return '数据库异常', 500 # 重定向登录界面 return '修改成功', 200
def get_smtp(): try: smtp = Notice.query.filter_by(id=1).first() return jsonify(smtp.to_json()) except Exception as e: log(e) return '数据库异常', 500
def detail(shop_id): try: prod = ProdInfo.query.filter_by( id=shop_id).first_or_404('Product not exist') except Exception as e: log(e) return '数据库异常', 503 res = prod.detail_json() try: if len(res['price_wholesale']) > 5: price = res['price_wholesale'].split('#')[1] num = res['price_wholesale'].split('#')[0] prices = price.split(',') # 处理数量列表 nums = [] temp = num.split(',') s = len(temp) if s == 1: nums.append('1~' + temp[0]) nums.append(str(int(temp[0]) + 1) + '~') elif s == 2: nums.append('1~' + temp[0]) nums.append(str(int(temp[0]) + 1) + '~' + temp[1]) nums.append(str(int(temp[1]) + 1) + '~') elif s == 3: nums.append('1~' + temp[0]) nums.append(str(int(temp[0]) + 1) + '~' + temp[1]) nums.append(str(int(temp[1]) + 1) + '~' + temp[2]) nums.append(str(int(temp[2]) + 1) + '~') else: pass res['pifa'] = {'nums': nums, 'prices': prices, 'slice': temp} except: pass return jsonify(res)
def login(): try: # start_t = time.time() email = request.json.get('email', None) password = request.json.get('password', None) if not email: return '邮箱参数丢失', 400 if not password: return '密码参数丢失', 400 user = AdminUser.query.filter_by(email=email).first() if not user: return '账号不存在或密码不正确', 404 # 已知道mysql模式下使用utf8 #if bcrypt.checkpw(password.encode('utf-8'), user.hash.encode('utf-8')): # sqlite模式下,起步没问题,后续需要移除hash的encode,因此采用下面的转换,可兼容mysql和sqlite try: user_defin = user.hash.encode('utf-8') except: user_defin = user.hash # print(time.time() - start_t) if bcrypt.checkpw(password.encode('utf-8'), user_defin): # executor.submit(login_record) # 当前问题是此处的request.remote_addr为空,执行无效 # print(time.time() - start_t) access_token = create_access_token(identity={"email": email}) # print(time.time() - start_t) return {"access_token": access_token}, 200 else: return '账号不存在或密码不正确2', 400 except AttributeError as e: log(e) return 'Provide an Email and Password in JSON format in the request body', 400
def get_notice(): try: notices = Notice.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json() for x in notices])
def get_card(): try: cards = Card.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json() for x in cards])
def get_shop(): try: prod_shops = ProdInfo.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.admin_json() for x in prod_shops])
def update_card(): # print(request.json) id = request.json.get('id', None) prod_name = request.json.get('prod_name', None) card = request.json.get('card', None) isused = request.json.get('isused', None) reuse = request.json.get('reuse', None) methord = request.json.get('methord', None) #update,add,delete if methord not in ['update','delete','add','add_all']: return 'Missing methord', 400 # 调用smtp函数发送邮件 try: if methord == 'update': if not all([id,prod_name,card]): return 'Missing data 1', 400 Card.query.filter_by(id = id).update({'prod_name':prod_name,'card':card,'isused':isused,'reuse':reuse}) elif methord == 'delete': if not id: return 'Missing data', 400 Card.query.filter_by(id = id).delete() # elif methord == 'add': else: if not all([prod_name,card]): return 'Missing data', 400 # print(card.split('\n')) tmp_cards = list(filter(None,card.split('\n'))) if len(tmp_cards) >1: reuse = False db.session.add_all([Card(prod_name,card=x,isused=0,reuse=reuse) for x in tmp_cards]) db.session.commit() # 重定向登录界面 return '修改成功', 200 except Exception as e: log(e) return '数据库异常', 500
def update_notice(): data = request.json.get('data', None) if not data: return 'Missing Data', 400 #数组数据更新--->两字典判断是否相等,不相等则更新 try: old_data = [x.to_json() for x in Notice.query.filter().all()] for (i, index) in enumerate(data): if old_data[i] == index: pass #数据未更新 else: Notice.query.filter_by(id=index['id']).update({ 'config': str(index['config']), 'admin_account': index['admin_account'], 'admin_switch': index['admin_switch'], 'user_switch': index['user_switch'] }) db.session.commit() except Exception as e: log(e) return '数据库异常', 500 return '修改成功', 200
def get_sms(): try: sms = Notice.query.filter_by(name='短信通知').first() return jsonify(sms.to_json()) except Exception as e: log(e) return '数据库异常', 500
def theme_list(): info = {} # 系统信息 try: prods = ProdInfo.query.filter_by(isactive=True).order_by( ProdInfo.sort).all() cags = ProdCag.query.filter().order_by(ProdCag.sort).all() except Exception as e: log(e) return '数据库异常', 503 prod_list = [x.to_json() for x in prods] cag_list = [x.to_json()['name'] for x in cags] tmp_cags = [] for x in prod_list: if {'cag_name': x['cag_name'], 'shops': []} not in tmp_cags: tmp_cags.append({'cag_name': x['cag_name'], 'shops': []}) sub_num = {} for index, i in enumerate(tmp_cags): sub_num[i['cag_name']] = index for i in prod_list: tmp_cags[sub_num[i['cag_name']]]['shops'].append(i) new_cags = [] for i in cag_list: for x in tmp_cags: if x['cag_name'] == i: new_cags.append(x) info['shops'] = new_cags info['shops2'] = prod_list # 主题 res = Config.query.filter_by(name='theme').first() info['theme'] = res.to_json()['info'] return jsonify(info)
def local_backup(): # types = request.json.get('types', None) #备份类型;支付邮箱等系统配置;商品分类及卡密备份;历史订单备份 # print(request.args) types = request.args.get('types', None) # print(type(types)) try: types = int(types) except: return '需要int参数', 400 if not types or types not in [1, 2, 3]: return '参数丢失', 400 try: if types == 1: # 支付邮箱系统配置 msg = loc_sys_back() elif types == 2: # 卡密备份 msg = loc_shop_back() else: # 历史订单备份 msg = loc_order_back() res = make_response(msg) filename = '4545' #失效 res.headers[ "Content-Disposition"] = f"p_w_upload; filename={filename}.txt" return res except Exception as e: log(e) return '导出失败', 400
def get_orders(): try: orders = Order.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.admin_json() for x in orders])
def get_pays(): try: pays = Payment.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.all_json() for x in pays])
def update_pays(): try: if request.method == 'GET': pay_id = request.args.get('id') return jsonify( Payment.query.filter_by(id=pay_id).first().all_json()) else: # print(request.json) data = request.json.get('data', None) if not data: return 'Missing Data', 400 # print(type(data['config'])) Payment.query.filter_by(id=data['id']).update({ 'icon': data['icon'], 'config': str(data['config']), 'isactive': data['isactive'] }) db.session.commit() return '修改成功', 200 except Exception as e: log(e) return '数据库异常', 500
def detail(shop_id): try: prod = ProdInfo.query.filter_by(id = shop_id).first_or_404('Product not exist') except Exception as e: log(e) return '数据库异常', 500 return jsonify(prod.detail_json())
def theme_list(): info= {} # 系统信息 # from service.database.models import Config # # 商品列表 # 商品列表:【f按分类排除结果】 # from service.database.models import ProdInfo try: prods = ProdInfo.query.filter_by(isactive = 1).all() except Exception as e: log(e) return '数据库异常', 500 prod_list =[x.to_json() for x in prods] tmp_cags = [] num_list = [] num = -1 for x in prod_list: if x['cag_name'] not in tmp_cags: tmp_cags.append(x['cag_name']) num +=1 num_list.append(num) shop_list = [] for x,i in enumerate(tmp_cags): goods = {} goods['cag_name'] = i #大分类 shops = [] for y,n in enumerate(num_list): #y为位置,n为值 if x == n: shops.append(prod_list[y]) goods['shops'] = shops shop_list.append(goods) info['shops'] = shop_list return jsonify(info)
def get_class(): try: prod_cags = ProdCag.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json() for x in prod_cags])
def get_pay_list(): try: pays = Payment.query.filter_by(isactive = True).all() except Exception as e: log(e) return '数据库异常', 500 # return jsonify({'pays':['支付宝当面付','码支付微信','PAYJS支付宝'],'icons':['支付宝当面付','码支付微信','PAYJS支付宝']}) return jsonify([x.enable_json() for x in pays])
def home(): # 系统信息 # 前端需求:logo地址;footer信息,顶部公告;全局弹窗公告;加载公告 try: infos = Config.query.filter().all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json() for x in infos])
def update_shop(): id = request.json.get('id', None) cag_name = request.json.get('cag_name', None) name = request.json.get('name', None) info = request.json.get('info', None) img_url = request.json.get('img_url', None) sort = request.json.get('sort', None) discription = request.json.get('discription', None) price = request.json.get('price', None) price_wholesale = request.json.get('price_wholesale', None) auto = request.json.get('auto', None) sales = request.json.get('sales', None) tag = request.json.get('tag', None) isactive = request.json.get('isactive', None) methord = request.json.get('methord', None) #update,add,delete if methord not in ['update', 'delete', 'add']: return 'Missing data1', 400 # 调用smtp函数发送邮件 try: with db.auto_commit_db(): if methord == 'update': if not all([ id, cag_name, name, img_url, sort, discription, price, tag ]): #因修改时auto和isactive报错缺失,移除 return 'Missing data2', 400 ProdInfo.query.filter_by(id=id).update({ 'cag_name': cag_name, 'name': name, 'info': info, 'img_url': img_url, 'sort': sort, 'discription': discription, 'price': price, 'price_wholesale': price_wholesale, 'auto': auto, 'tag': tag, 'isactive': isactive }) elif methord == 'delete': if not id: return 'Missing data', 400 ProdInfo.query.filter_by(id=id).delete() else: if not all([name, info, sort]): return 'Missing data', 400 new_prod = ProdInfo(cag_name, name, info, img_url, sort, discription, price, price_wholesale, auto, sales, tag, isactive) db.session.add(new_prod) except Exception as e: log(e) return '数据库异常', 500 # return '修改成功', 200
def get_orders(): page = request.json.get('page',None) if not page: return 'Missing data1', 400 try: orders = Order.query.filter().offset((int(page)-1)*20).limit(20).all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.admin_json() for x in orders])
def get_order(): contact = request.json.get('contact',None) if not contact: return '参数丢失', 404 try: orders = Order.query.filter_by(contact = contact).all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.admin_json() for x in orders])
def get_tmp_orders(): page = request.json.get('page',None) if not page: return 'Missing data1', 400 try: # orders = TempOrder.query.filter().offset((int(page)-1)*20).limit(20).all() orders = TempOrder.query.order_by(TempOrder.id.desc()).offset((int(page)-1)*20).limit(20).all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json2() for x in orders])
def get_card(): out_order_id = request.json.get('out_order_id',None) if not out_order_id: return '参数丢失', 404 try: card = Order.query.filter_by(out_order_id = out_order_id).first_or_404() except Exception as e: log(e) return '虎皮椒请求错误', 502 return jsonify(card.only_card()) #返回卡密和订单时间
def remove_order(): id = request.json.get('id', None) if not id: return 'Missing Data', 400 try: Order.query.filter_by(id=id).delete() db.session.commit() return '删除成功', 200 except Exception as e: log(e) return '数据库异常', 500
def get_orders_pages(): try: nums = Order.query.filter().count() temp = nums // 20 if nums % 20: pages = temp + 1 else: pages = temp #整除 except Exception as e: log(e) return '数据库异常', 500 return str(pages), 200
def get_card(): # print(request.json) page = request.json.get('page',None) if not page: return 'Missing data1', 400 try: cards = Card.query.filter().offset((int(page)-1)*20).limit(20).all() except Exception as e: log(e) return '数据库异常', 500 return jsonify([x.to_json() for x in cards])
def update_smtp(): data = request.json.get('data', None) if not data: return 'Missing data', 400 # 密码加密存储 try: Notice.query.filter_by(id=1).update({'config': str(data['config'])}) db.session.commit() except Exception as e: log(e) return '数据库异常', 500 # 重定向登录界面 return '邮箱更新成功', 200
def get_card(): out_order_id = request.json.get('out_order_id',None) if not out_order_id: return '参数丢失', 404 try: card = Order.query.filter_by(out_order_id = out_order_id).first() except Exception as e: log(e) # time.sleep() return '订单创建失败', 400 return jsonify(card.only_card()) #返回卡密和订单时间