示例#1
0
文件: user.py 项目: HelenLiu97/huihui
def up_auth():
    '处理正在使用的客户被删除的问题'
    vice_id = request.args.get('vice_id')
    field = request.args.get('field')
    check = request.args.get('check')
    value = request.args.get('value')
    if check:
        field_status = ''
        if check == "true":
            field_status = 'T'
        elif check == 'false':
            field_status = 'F'
        SqlData.update_vice_field(field, field_status, int(vice_id))
        res = SqlData.search_one_acc_vice(vice_id)
        RedisTool.hash_set('svb_vice_auth', res.get('vice_id'), res)
        return jsonify({'code': RET.OK, 'msg': MSG.OK})
    if value:
        if field == "v_account":
            if SqlData.search_value_in('vice_account', value, field):
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '用户名已存在,请重新命名!'
                })
        SqlData.update_vice_field(field, value, int(vice_id))
        return jsonify({'code': RET.OK, 'msg': MSG.OK})
示例#2
0
def lock_acc():
    acc_name = request.args.get('acc_name')
    u_id = SqlData.search_user_field_name('id', acc_name)
    check = request.args.get('check')
    if check == 'true':
        RedisTool.string_del(u_id)
    elif check == 'false':
        RedisTool.string_set(u_id, 'F')
    return jsonify({'code': RET.OK, 'msg': MSG.OK})
示例#3
0
文件: user.py 项目: HelenLiu97/huihui
def add_vice():
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        return render_template('user/no_auth.html')
    if request.method == 'GET':
        return render_template('user/update_vice.html')
    if request.method == 'POST':
        user_id = g.user_id
        data = json.loads(request.form.get('data'))
        v_account = data.get('account')
        v_password = data.get('password')
        c_card = data.get('c_card')
        top_up = data.get('top_up')
        refund = data.get('refund')
        del_card = data.get('del_card')
        up_label = data.get('up_label')
        account = v_account.strip()
        password = v_password.strip()
        if len(account) < 6 or len(password) < 6:
            return jsonify({"code": RET.SERVERERROR, 'msg': '账号或密码长度小于6位!'})
        # 判断用户选择可哪些权限开启
        c_card_status = 'T' if c_card else 'F'
        top_up_status = 'T' if top_up else 'F'
        refund_status = 'T' if refund else 'F'
        del_card_status = 'T' if del_card else 'F'
        up_label_status = 'T' if up_label else 'F'
        res = SqlData.search_vice_count(user_id)
        # 判断是否已经添加子账号,已添加则更新
        if res < 3:
            if SqlData.search_value_in('vice_user', account, 'v_account'):
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '用户名已存在,请重新命名!'
                })
            SqlData.insert_account_vice(account, password, c_card_status,
                                        top_up_status, refund_status,
                                        del_card_status, up_label_status,
                                        user_id)
            vice_id = SqlData.search_vice_id(v_account)
            res = SqlData.search_one_acc_vice(vice_id)
            RedisTool.hash_set('svb_vice_auth', res.get('vice_id'), res)
            return jsonify({'code': RET.OK, 'msg': MSG.OK})
        else:
            return jsonify({
                'code': RET.SERVERERROR,
                'msg': '您的账号已添加3个子账号,不可重复添加!'
            })
示例#4
0
文件: user.py 项目: HelenLiu97/huihui
def change_card_name():
    '''
    更改卡姓名和标签信息
    :return:
    '''
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
        if auth_dict is None:
            return render_template('user/no_auth.html')
        c_card = auth_dict.get('refund')
        if c_card == 'F':
            return render_template('user/no_auth.html')

    if request.method == 'GET':
        card_number = request.args.get('card_number')
        context = dict()
        context['card_number'] = card_number
        return render_template('user/card_label.html', **context)
    if request.method == 'POST':
        try:
            data = json.loads(request.form.get('data'))
            card_number = data.get('card_number')
            card_label = data.get('card_label')
            card_number = card_number.strip()
            if card_label:
                SqlData.update_card_info_card_no('label', card_label,
                                                 card_number)
            return jsonify({'code': RET.OK, 'msg': MSG.OK})
        except Exception as e:
            logging.error(str(e))
            return jsonify({'code': RET.SERVERERROR, 'msg': MSG.SERVERERROR})
示例#5
0
 def wraaper(*args, **kwargs):
     """具体实现判断用户账号是否被锁定"""
     user_id = session.get('user_id')
     res = RedisTool.string_get(user_id)
     if res:
         return render_template('user/lock_acc.html')
     else:
         return view_func(*args, **kwargs)
示例#6
0
文件: user.py 项目: HelenLiu97/huihui
def card_delete():
    if request.method == "DELETE":

        # 判断是否是子账号用户
        vice_id = g.vice_id
        if vice_id:
            auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
            if auth_dict is None:
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })
            c_card = auth_dict.get('refund')
            if c_card == 'F':
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })

        card_number = request.args.get('card_number')
        card_status = SqlData.search_one_card_status(card_number)
        if card_status:
            card_id = SqlData.search_card_field('card_id', card_number)
            card_detail = svb.card_detail(card_id)
            if not card_detail:
                return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
            available_balance = card_detail.get('data').get(
                'available_balance')
            res = svb.delete_card(card_id)
            if res:
                user_id = g.user_id
                before_balance = SqlData.search_user_field('balance', user_id)
                update_balance = float(available_balance / 100)
                SqlData.update_balance(update_balance, user_id)
                balance = SqlData.search_user_field("balance", user_id)
                SqlData.update_card_info_card_no('status', 'F', card_number)
                n_time = xianzai_time()
                SqlData.insert_account_trans(n_time, TRANS_TYPE.IN, "注销",
                                             card_number, update_balance,
                                             before_balance, balance, user_id)

                return jsonify({
                    "code": RET.OK,
                    "msg": '注销成功!退回金额:$' + str(update_balance)
                })

        else:
            return jsonify({'code': RET.SERVERERROR, 'msg': '该卡已注销!'})
示例#7
0
文件: user.py 项目: HelenLiu97/huihui
def create_card():
    if request.method == 'GET':
        user_id = g.user_id
        min_top = SqlData.search_user_field('min_top', user_id)
        create_price = SqlData.search_user_field('create_price', user_id)
        context = dict()
        context['min_top'] = min_top
        context['create_price'] = create_price
        return render_template('user/create_card.html', **context)
    if request.method == 'POST':
        # 判断是否是子账号用户
        vice_id = g.vice_id
        if vice_id:
            auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
            if auth_dict is None:
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })
            c_card = auth_dict.get('c_card')
            if c_card == 'F':
                return jsonify({
                    'code': RET.SERVERERROR,
                    'msg': '抱歉您没有权限执行此操作!'
                })
        data = json.loads(request.form.get('data'))
        top_money = data.get('top_money')
        label = data.get('label')
        card_num = data.get('card_num')
        user_id = g.user_id
        user_data = SqlData.search_user_index(user_id)
        create_price = user_data.get('create_card')
        min_top = user_data.get('min_top')
        max_top = user_data.get('max_top')
        balance = user_data.get('balance')

        card_num = int(card_num)
        if card_num > 10:
            results = {"code": RET.SERVERERROR, "msg": "批量开卡数量不得超过10张!"}
            return jsonify(results)

        if not check_float(top_money):
            results = {"code": RET.SERVERERROR, "msg": "充值金额不能为小数!"}
            return jsonify(results)

        # 本次开卡需要的费用,计算余额是否充足
        money_all = (int(top_money) + create_price) * card_num
        if money_all > balance:
            results = {
                "code": RET.SERVERERROR,
                "msg": "本次消费金额:" + str(money_all) + ",账号余额不足!"
            }
            return jsonify(results)

        # 计算充值金额是否在允许范围
        # if not min_top <= int(top_money) <= max_top:
        if not min_top <= int(top_money):
            results = {"code": RET.SERVERERROR, "msg": "充值金额不在允许范围内!"}
            return jsonify(results)
        # 该处修改开卡
        try:
            data_list = []
            cents = int(top_money) * 100
            for i in range(card_num):
                data = svb.create_card(cents)
                if data:
                    # 开卡费用
                    n_time = xianzai_time()
                    card_number = data.get('card_number')
                    cvc = data.get('cvc')
                    expiry = data.get('expiry')
                    card_id = data.get('card_id')
                    last4 = data.get('last4')
                    valid_starting_on = data.get('valid_start_on')
                    valid_ending_on = data.get('valid_end_on')

                    # 插入卡信息
                    SqlData.insert_card(card_number, cvc, expiry, card_id,
                                        last4, valid_starting_on,
                                        valid_ending_on, label, 'T',
                                        int(top_money), user_id)

                    # 扣去开卡费用
                    before_balance = SqlData.search_user_field(
                        'balance', user_id)
                    create_price_do_money = float(
                        create_price) - float(create_price) * 2
                    SqlData.update_balance(create_price_do_money, user_id)
                    balance = SqlData.search_user_field("balance", user_id)
                    # balance = before_balance - create_price
                    SqlData.insert_account_trans(n_time, TRANS_TYPE.OUT,
                                                 DO_TYPE.CREATE_CARD,
                                                 card_number, create_price,
                                                 before_balance, balance,
                                                 user_id)

                    # 扣去充值费用
                    before_balance = SqlData.search_user_field(
                        'balance', user_id)
                    top_money = int(top_money)
                    top_money_do_money = top_money - top_money * 2
                    SqlData.update_balance(top_money_do_money, user_id)
                    balance = SqlData.search_user_field("balance", user_id)
                    n_time = xianzai_time()
                    SqlData.insert_account_trans(n_time, TRANS_TYPE.OUT,
                                                 DO_TYPE.TOP_UP, card_number,
                                                 top_money, before_balance,
                                                 balance, user_id)
                    data_list.append(card_num)
            return jsonify({
                "code":
                RET.OK,
                "msg":
                "成功开卡" + str(len(data_list)) + "张! 账户余额为: $" + str(balance)
            })

        except Exception as e:
            logging.error(str(e))
            return jsonify({
                "code": RET.SERVERERROR,
                "msg": "网络繁忙, 开卡失败, 请稍后再试"
            })
示例#8
0
文件: user.py 项目: HelenLiu97/huihui
def top_up():
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
        if auth_dict is None:
            return render_template('user/no_auth.html')
        c_card = auth_dict.get('top_up')
        if c_card == 'F':
            return render_template('user/no_auth.html')
    if request.method == 'GET':
        card_number = request.args.get('card_number')
        context = dict()
        context['card_number'] = card_number
        return render_template('user/card_top.html', **context)
    if request.method == 'POST':
        data = json.loads(request.form.get('data'))
        user_id = g.user_id
        card_number = request.args.get('card_number')
        top_money = data.get('top_money')
        user_data = SqlData.search_user_index(user_id)
        before_balance = user_data.get('balance')
        if not check_float(top_money):
            results = {"code": RET.SERVERERROR, "msg": "充值金额不能为小数!"}
            return jsonify(results)
        if int(top_money) > before_balance:
            results = {
                "code": RET.SERVERERROR,
                "msg": "本次消费金额:" + str(top_money) + ",账号余额不足!"
            }
            return jsonify(results)
        card_status = SqlData.search_one_card_status(card_number)
        if not card_status:
            return jsonify({'code': RET.SERVERERROR, 'msg': "该卡已注销,不支持此操作!"})
        card_id = SqlData.search_card_field('card_id', card_number)
        card_detail = svb.card_detail(card_id)
        if card_detail:
            available_balance = card_detail.get('data').get(
                'available_balance')
            now_balance = available_balance + int(top_money) * 100
            res = svb.update_card(card_id, now_balance)
            if res:
                top_money = int(top_money)
                top_money_do_money = top_money - top_money * 2
                SqlData.update_balance(top_money_do_money, user_id)
                n_time = xianzai_time()
                balance = SqlData.search_user_field('balance', user_id)
                SqlData.insert_account_trans(n_time, TRANS_TYPE.OUT,
                                             DO_TYPE.TOP_UP, card_number,
                                             top_money, before_balance,
                                             balance, user_id)
                return jsonify({
                    'code':
                    RET.OK,
                    'msg':
                    '充值成功!账户余额:$ ' + str(balance) + ",卡余额:$ " +
                    str(now_balance / 100)
                })
            return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
        else:
            return jsonify({'code': RET.SERVERERROR, 'msg': '网络繁忙,请稍后重试!'})
示例#9
0
文件: user.py 项目: HelenLiu97/huihui
def del_vice():
    vice_id = request.args.get('vice_id')
    SqlData.del_vice(int(vice_id))
    RedisTool.hash_del('svb_vice_auth', int(vice_id))
    return jsonify({'code': RET.OK, 'msg': MSG.OK})
示例#10
0
文件: user.py 项目: HelenLiu97/huihui
def bento_refund():
    # 判断是否是子账号用户
    vice_id = g.vice_id
    if vice_id:
        auth_dict = RedisTool.hash_get('svb_vice_auth', vice_id)
        if auth_dict is None:
            return jsonify({'code': RET.SERVERERROR, 'msg': '抱歉您没有权限执行此操作!'})
        c_card = auth_dict.get('refund')
        if c_card == 'F':
            return jsonify({'code': RET.SERVERERROR, 'msg': '抱歉您没有权限执行此操作!'})

    # 参数获取
    data = request.form.get("data")
    card_number = request.form.get("card_number").strip()
    user_id = g.user_id

    # 金额的校验
    if "-" in str(data):
        return jsonify({"code": RET.SERVERERROR, 'msg': "请输入正确金额!"})
    if "." in str(data):
        if len(str(data).split(".")[1]) > 2:
            return jsonify({"code": RET.SERVERERROR, 'msg': "精度不大于两位小数!"})

    # 校验卡状态(注销无法更新)
    card_status = SqlData.search_one_card_status(card_number)
    if not card_status:
        return jsonify({'code': RET.SERVERERROR, 'msg': "该卡已注销,不支持此操作!"})

    # 查询卡余额,校验退款金额大小
    card_id = SqlData.search_card_field('card_id', card_number)
    card_detail = svb.card_detail(card_id)
    if not card_detail:
        return jsonify({"code": RET.SERVERERROR, 'msg': "网络繁忙,请稍后重试!"})
    available_balance = card_detail.get('data').get('available_balance')
    refund_money = float(data) * 100
    if refund_money >= available_balance:
        return jsonify({
            "code": RET.SERVERERROR,
            'msg': "卡余额不足!当前卡余额:$" + str(available_balance / 100)
        })

    # 更新卡余额
    update_money = int(available_balance - refund_money)
    res = svb.update_card(card_id, update_money)

    # 成功则更新账户余额
    if res:
        before_balance = SqlData.search_user_field('balance', user_id)
        SqlData.update_balance(float(data), user_id)
        balance = SqlData.search_user_field("balance", user_id)
        n_time = xianzai_time()
        SqlData.insert_account_trans(n_time, TRANS_TYPE.IN, "退款", card_number,
                                     float(data), before_balance, balance,
                                     user_id)

        return jsonify({
            "code": RET.OK,
            "msg": '退款成功!当前卡余额:$' + str(update_money / 100)
        })
    else:
        return jsonify({"code": RET.SERVERERROR, 'msg': "网络繁忙,请稍后重试!"})
示例#11
0
文件: user.py 项目: HelenLiu97/huihui
def login():
    if request.method == 'GET':
        str_data, img = createCodeImage(height=38)
        context = dict()
        context['img'] = img
        context['code'] = ImgCode().jiami(str_data)
        return render_template('user/login.html', **context)

    if request.method == 'POST':
        data = json.loads(request.form.get('data'))
        user_name = data.get('user_name')
        user_pass = data.get('pass_word')
        image_real = data.get('image_real')
        image_code = data.get('image_code')
        cus_status = data.get('cus_status')
        results = {'code': RET.OK, 'msg': MSG.OK}
        try:
            img_code = ImgCode().jiemi(image_real)
            if image_code.lower() != img_code.lower():
                results['code'] = RET.SERVERERROR
                results['msg'] = '验证码错误!'
                return jsonify(results)
            if cus_status == "main":
                user_data = SqlData.search_user_info(user_name)
                if user_data:
                    user_id = user_data.get('user_id')
                    pass_word = user_data.get('password')
                    name = user_data.get('name')
                    if user_pass == pass_word:
                        last_login_time = SqlData.search_user_field(
                            'last_login_time', user_id)
                        if not last_login_time:
                            return jsonify({'code': 307, 'msg': MSG.OK})
                        now_time = xianzai_time()
                        SqlData.update_user_field('last_login_time', now_time,
                                                  user_id)
                        session['user_id'] = user_id
                        session['name'] = name
                        session['vice_id'] = None
                        session.permanent = True
                        return jsonify(results)
                    else:
                        results['code'] = RET.SERVERERROR
                        results['msg'] = MSG.PSWDERROR
                        return jsonify(results)
                else:
                    results['code'] = RET.SERVERERROR
                    results['msg'] = MSG.PSWDERROR
                    return jsonify(results)
            if cus_status == 'vice':
                user_data = SqlData.search_user_vice_info(user_name)
                user_id = user_data.get('user_id')
                password = user_data.get('password')
                vice_id = user_data.get('vice_id')
                if password == user_pass:
                    # 存储到缓存
                    session['user_id'] = user_id
                    session['name'] = user_name
                    session['vice_id'] = vice_id
                    session.permanent = True
                    # 存储子子账号操作权限到redis
                    res = SqlData.search_one_acc_vice(vice_id)
                    RedisTool.hash_set('svb_vice_auth', res.get('vice_id'),
                                       res)
                    return jsonify(results)
                else:
                    results['code'] = RET.SERVERERROR
                    results['msg'] = MSG.PSWDERROR
                    return jsonify(results)

        except Exception as e:
            logging.error(str(e))
            results['code'] = RET.SERVERERROR
            results['msg'] = MSG.DATAERROR
            return jsonify(results)