def index_pay(): ex_change = SqlData.search_admin_field('ex_change') ex_range = SqlData.search_admin_field('ex_range') hand = SqlData.search_admin_field('hand') dollar_hand = SqlData.search_admin_field('dollar_hand') context = dict() context['ex_change'] = ex_change context['ex_range'] = ex_range context['hand'] = hand context['dollar_hand'] = dollar_hand return render_template('pay/index.html', **context)
def change_pass(): if request.method == 'GET': admin_name = g.admin_name context = dict() context['admin_name'] = admin_name return render_template('admin/changePwd.html', **context) if request.method == 'POST': results = {"code": RET.OK, "msg": MSG.OK} data = json.loads(request.form.get('data')) old_pass = data.get('old_pass') new_pass_one = data.get('new_pass_one') new_pass_two = data.get('new_pass_two') if new_pass_two != new_pass_one: results['code'] = RET.SERVERERROR results['msg'] = '两次输入密码不一致!' return jsonify(results) res = re.match( '(?!.*\s)(?!^[\u4e00-\u9fa5]+$)(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^.{8,16}$', new_pass_one) if not res: results['code'] = RET.SERVERERROR results['msg'] = '密码不符合要求!' return jsonify(results) password = SqlData.search_admin_field('password') if old_pass != password: results['code'] = RET.SERVERERROR results['msg'] = '密码错误!' return jsonify(results) SqlData.update_admin_field('password', new_pass_one) session.pop('admin_id') session.pop('admin_name') return jsonify(results)
def top_cn(): if request.method == 'POST': ''' 1:校验前端数据是否正确 2:查看实时汇率有没有变动 3:核实客户是否存在 ''' data = json.loads(request.form.get('data')) sum_money = data.get('sum_money') top_money = data.get('top_money') cus_name = data.get('cus_name') cus_account = data.get('cus_account') phone = data.get('phone') phone2 = data.get("phone2") res = SqlData.search_user_check(cus_name, cus_account) if float(top_money) < 100: return jsonify({'code': RET.SERVERERROR, 'msg': '充值金额不能小于100$'}) if not res: return jsonify({'code': RET.SERVERERROR, 'msg': '没有该用户!请核实后重试!'}) if phone: ret = re.match(r"^1[35789]\d{9}$", phone) if not ret: results = dict() results['code'] = RET.SERVERERROR results['msg'] = '请输入符合规范的电话号码!' return jsonify(results) if phone2: ret = re.match(r"^1[35789]\d{9}$", phone2) if not ret: results = dict() results['code'] = RET.SERVERERROR results['msg'] = '请输入符合规范的电话号码!' return jsonify(results) ex_change = SqlData.search_admin_field('ex_change') ex_range = SqlData.search_admin_field('ex_range') hand = SqlData.search_admin_field('hand') _money_self = float(top_money) * (ex_change + ex_range) * (hand + 1) money_self = round(_money_self, 10) sum_money = round(float(sum_money), 10) if money_self == sum_money: return jsonify({'code': RET.OK, 'msg': MSG.OK}) else: return jsonify({'code': RET.SERVERERROR, 'msg': '汇率已变动!请刷新界面后重试!'})
def notice(): if request.method == 'GET': note = SqlData.search_admin_field('notice') context = dict() context['note'] = note return render_template('admin/notice.html', **context) if request.method == 'POST': data = json.loads(request.form.get('data')) note = data.get('note') SqlData.update_admin_field('notice', note) return jsonify({"code": RET.OK, "msg": MSG.OK})
def top_msg(): if request.method == 'GET': push_json = SqlData.search_admin_field('top_push') info_list = list() if push_json: push_dict = json.loads(push_json) for i in push_dict: info_dict = dict() info_dict['user'] = i info_dict['email'] = push_dict.get(i) info_list.append(info_dict) context = dict() context['info_list'] = info_list return render_template('admin/top_msg.html', **context) if request.method == 'POST': try: results = {"code": RET.OK, "msg": MSG.OK} data = json.loads(request.form.get('data')) top_people = data.get('top_people') email = data.get('email') push_json = SqlData.search_admin_field('top_push') if not push_json: info_dict = dict() info_dict[top_people] = email else: info_dict = json.loads(push_json) if top_people in info_dict and email == '删除': info_dict.pop(top_people) else: info_dict[top_people] = email json_info = json.dumps(info_dict, ensure_ascii=False) SqlData.update_admin_field('top_push', json_info) return jsonify(results) except Exception as e: logging.error(str(e)) return jsonify({'code': RET.SERVERERROR, 'msg': MSG.SERVERERROR})
def user_main(): user_id = g.user_id balance = SqlData.search_user_field('balance', user_id) # 支出中有部分退款产生,所以所有支出减去退款才是真实支出 sum_out_money = SqlData.search_trans_sum( user_id) - SqlData.search_income_money(user_id) sum_top_money = SqlData.search_user_field('sum_balance', user_id) card_num = SqlData.search_card_status("WHERE user_id={}".format(user_id)) vice_num = SqlData.search_vice_count(user_id) notice = SqlData.search_admin_field('notice') card_remain = SqlData.search_sum_card_balance(user_id) update_t = '2020-01-01 12:23:32' context = dict() context['balance'] = balance context['sum_out_money'] = sum_out_money context['sum_top_money'] = sum_top_money context['card_num'] = card_num context['card_remain'] = card_remain context['update_t'] = update_t context['vice_num'] = vice_num context['notice'] = notice return render_template('user/main.html', **context)
def pay_pic(): if request.method == 'GET': sum_money = request.args.get('sum_money') top_money = request.args.get('top_money') cus_name = request.args.get('cus_name') cus_account = request.args.get('cus_account') phone = request.args.get('phone') phone2 = request.args.get("phone2") ex_change = request.args.get('ex_change') # 取出目前当前收款金额最低的收款码 qr_info = SqlData.search_qr_code('WHERE status=0') if not qr_info: url = '' else: url = '' value_list = list() for i in qr_info: value_list.append(i.get('sum_money')) value = min(value_list) for n in qr_info: money = n.get('sum_money') if value == money: url = n.get('qr_code') break context = dict() bank_top_data = SqlData.search_bank_info(sql_line='WHERE status=2') if bank_top_data: data = bank_top_data[0] context['bank_name'] = data.get('bank_name') context['bank_number'] = data.get('bank_number') context['bank_address'] = data.get('bank_address') else: # 一下三个循环和判断为处理相同收款人,多个账号,取低于累计20万的中的最小收款账号 bank_data = SqlData.search_bank_info(sql_line='WHERE status=0') # bank_info 整理为一个收款人对应多个收款卡号 {'':[],'':[]} 格式 bank_info = dict() for n in bank_data: bank_name = n.get('bank_name') if bank_name in bank_info: info_list = bank_info.get(bank_name) info_list.append(n) else: info_list = list() info_list.append(n) bank_info[bank_name] = info_list # sum_money_dict 为统计一个账号一共充值了多少元 sum_money_dict = dict() for i in bank_info: value = bank_info.get(i) money = 0 for m in value: money += float(m.get('day_money')) sum_money_dict[i] = money # min_dict 为取出满足累计收款低于20万的账户,且最小的充值战账户 min_dict = dict() for acc in sum_money_dict: if sum_money_dict.get(acc) < 200000: min_dict[acc] = sum_money_dict.get(acc) if len(min_dict) == 0: context['bank_name'] = '无符合要求收款账户!' context['bank_number'] = '请联系管理员处理!' context['bank_address'] = '-------------' else: # 在最小充值账户中取出最小收款卡号推送 min_acc = min(zip(min_dict.values(), min_dict.keys())) min_acc = min_acc[1] acc_list = bank_info.get(min_acc) data = min(acc_list, key=dic_key) context['bank_name'] = data.get('bank_name') context['bank_number'] = data.get('bank_number') context['bank_address'] = data.get('bank_address') context['sum_money'] = sum_money context['top_money'] = top_money context['cus_name'] = cus_name context['cus_account'] = cus_account context['phone'] = "{},{}".format(phone, phone2) if phone2 else phone context['url'] = url context['ex_change'] = ex_change return render_template('pay/pay_pic.html', **context) if request.method == 'POST': ''' 获取充值金额, 保存付款截图. 发送邮件通知管理员 ''' # try: # 两组数据,1,表单信息充值金额,等一下客户信息 2,截图凭证最多可上传5张 # print(request.form) # print(request.files) data = json.loads(request.form.get('data')) top_money = data.get('top_money') sum_money = data.get('sum_money') cus_name = data.get('cus_name') cus_account = data.get('cus_account') phone = data.get('phone') exchange = data.get('exchange') url = json.loads(request.form.get('url')) change_type = json.loads(request.form.get("change_type")) bank_name = json.loads(request.form.get("bank_name")) bank_number = json.loads(request.form.get("bank_number")) bank_address = json.loads(request.form.get("bank_address")) results = {'code': RET.OK, 'msg': MSG.OK} try: # 保存所有图片 file_n = 'file_' pic_list = list() # 判断有无上传图片 f_obj = request.files.get("{}{}".format(file_n, 1)) if not f_obj: return jsonify({'code': RET.SERVERERROR, 'msg': "请先上传图片再操作"}) for i in range(5): file_name = "{}{}".format(file_n, i + 1) fileobj = request.files.get(file_name) if fileobj: now_time = sum_code() file_name = cus_account + "_" + str(now_time) + str( i) + ".png" file_path = os.path.join(DIR_PATH.PHOTO_DIR, file_name) fileobj.save(file_path) pic_list.append(file_path) n_time = xianzai_time() vir_code = str(uuid.uuid1())[:6] context = "556338平台客户: " + cus_name + " , 于<span style='color:red'>" + n_time + "</span>在线申请充值: " \ + top_money + "美元, 折和人名币: <span style='color:red'>" + sum_money + "</span>元。本次计算汇率为: " + exchange + ", 验证码为: " + vir_code cus_id = SqlData.search_user_check(cus_name, cus_account) sum_money = float(sum_money) top_money = float(top_money) if change_type == "pic": SqlData.insert_pay_log(n_time, sum_money, top_money, vir_code, '待充值', phone, url, cus_id) elif change_type == "bank": SqlData.insert_pay_log( n_time, sum_money, top_money, vir_code, '待充值', phone, "{},{},{}".format(bank_name, bank_number, bank_address), cus_id) # 获取要推送邮件的邮箱 top_push = SqlData.search_admin_field('top_push') top_dict = json.loads(top_push) email_list = list() for i in top_dict: email_list.append(top_dict.get(i)) for p in email_list: executor.submit(send, context, pic_list, p) # send(context, pic_list, p) return jsonify(results) except Exception as e: logging.error(str(e)) return jsonify({'code': RET.SERVERERROR, 'msg': str(e)})
def notice(): notice = SqlData.search_admin_field('notice') s = '<html><body><div style="padding:15px 20px; text-align:justify; line-height: 22px; text-indent:2em;">' \ '<p class="layui-red">{}</p></div></body></html>'.format(notice) return s
def password(): password = SqlData.search_admin_field('password') return jsonify({'code': RET.OK, 'msg': password})