예제 #1
0
def investmentInfo(product_id, num):
    response_data = {'num': num}
    p = request.args.get('p')
    res_dadata = {}
    replace_id = str(product_id).replace('-', '')
    if str(num) == '3':
        try:
            query_file_top = db.session.query(Borrow_file, Borrow_attachment)
            query_file_list = query_file_top.filter(
                and_(Borrow_file.borrowId == str(replace_id),
                     Borrow_attachment.id == Borrow_file.id)).all()

            jiekuan_array = []
            zhiya_array = []
            tongyi_array = []
            need_data = {}
            for i in query_file_list:
                res_data = {}
                res_data['path'] = JAVA_BAOQUAN_URL + '/' + i[1].realpath
                res_data['name'] = i[1].attachmenttitle
                if '借款合同' in res_data['name']:
                    jiekuan_array.append(res_data)
                    jiekuan_array = htsort(jiekuan_array)
                if '质押' in res_data['name']:
                    zhiya_array.append(res_data)
                    zhiya_array = htsort(zhiya_array)
                if '同意' in res_data['name']:
                    tongyi_array.append(res_data)
                    tongyi_array = htsort(tongyi_array)

            need_data['borrow'] = jiekuan_array
            need_data['zhiya'] = zhiya_array
            need_data['tongyi'] = tongyi_array
            res_dadata['code'] = u'10000'
            res_dadata['desc'] = u''
            res_dadata['content'] = need_data
        except Exception as e:
            res_dadata['code'] = u'10004'
            res_dadata['desc'] = u'数据库操作失败'
            res_dadata['content'] = []
        if p:
            return toolkit.response(res_dadata, 200, None, True)
        else:
            return render_template('product/borrow_demo.html',
                                   response_data=response_data)

    query_detail = db.session.query(Product_info, Borrower_info,
                                    Product_info.borrow_id)
    query_result = query_detail.filter(
        Product_info.id == replace_id,
        Borrower_info.id == Product_info.borrow_id).first()

    if product_id and query_result:

        response_data["product_type"] = query_result[0].product_type \
                                        if query_result[0].product_type != '房产抵押' else '抵押贷'
        response_data["rate"] = query_result[0].rate
        response_data["time_limit"] = query_result[0].time_limit
        response_data["total_mount"] = query_result[0].total_mount
        response_data["product_status"] = str(query_result[0].product_status)
        response_data["repay_type"] = query_result[0].repay_type
        response_data["product_detail"] = query_result[0].product_detail
        response_data["product_loan_use"] = query_result[0].loan_use
        response_data["product_borrower"] = query_result[1].borrower_name
        query_top = db.session.query(Invest_info, Member)
        query_bottom = query_top.filter(
            Invest_info.product_id == str(replace_id),
            Member.id == Invest_info.member_id).order_by(
                Invest_info.time.desc()).all()

        lists = []
        for i in query_bottom:
            lists.append((convertPhone(i[1].phone), i[0].money,
                          i[0].time.strftime('%Y-%m-%d')))

        response_data["borrower_list"] = lists
        response_data['boluo_url'] = JAVA_BAOQUAN_IMAGES_URL

        # ------------------------合同相关图片---------------------------
        query_image_top = db.session.query(Product_image,
                                           Product_borrower_image)
        query_image_list = query_image_top.filter(
            or_(Product_image.borrow_id == str(replace_id),
                Product_borrower_image.borrower_id == str(replace_id))).all()
        images = []
        for i in query_image_list:
            if i[0]:
                images.append(JAVA_BAOQUAN_IMAGES_URL + i[0].image)
            else:
                images.append(JAVA_BAOQUAN_IMAGES_URL + i[1].image_url)
        response_data['images'] = list(set(images))
    return render_template('html5/investmentInfo.html',
                           response_data=response_data,
                           convertPhone=convertPhone)
예제 #2
0
def expose_data_info_ajax():
    response_data = {}
    invest_list_top = db.session.query(Invest_info.time, Invest_info.money,
                                       Invest_info.hongbao)
    ybd = datetime.now() + timedelta(days=-103)
    invest_list = invest_list_top.filter(and_(Invest_info.time >= ybd)).all()
    invest_money_f01 = 0
    invest_money_f02 = 0
    invest_money_f03 = 0
    invest_money_f04 = 0
    for i in invest_list:
        if i.money + i.hongbao >= 0 and i.money + i.hongbao < 10000:
            invest_money_f01 += 1
        elif i.money + i.hongbao >= 10000 and i.money + i.hongbao < 30000:
            invest_money_f02 += 1
        elif i.money + i.hongbao >= 30000 and i.money + i.hongbao < 50000:
            invest_money_f03 += 1
        elif i.money + i.hongbao >= 50000 and i.money + i.hongbao < 100000:
            invest_money_f04 += 1

    stroke_count_list = [
        invest_money_f01, invest_money_f02, invest_money_f03, invest_money_f04
    ]
    stroke_count_list_total = float(invest_money_f01 + invest_money_f02 +
                                    invest_money_f03 + invest_money_f04)
    stroke_count_list = [
        round(float(x) / stroke_count_list_total, 2) * 100
        for x in stroke_count_list
    ]
    response_data['stroke_count_list'] = stroke_count_list

    tttt = datetime.now() + timedelta(days=-83)
    real_info_tops = db.session.query(Member_real_info.real_identid)
    ages = real_info_tops.filter(Member_real_info.create_time > tttt).all()
    agearr = [0.0, 0.0, 0.0, 0.0]
    sexdic = {'man': 0, 'women': 0}
    for i in ages:
        idcard = i.real_identid
        if 1960 <= int(idcard[6:10]) < 1970:
            agearr[0] += 1.0
        elif 1970 <= int(idcard[6:10]) < 1980:
            agearr[1] += 1.0
        elif 1980 <= int(idcard[6:10]) < 1990:
            agearr[2] += 1.0
        elif 1990 <= int(idcard[6:10]) < 2000:
            agearr[3] += 1.0
        else:
            pass
        if int(idcard[-2]) % 2 == 1:
            sexdic['man'] += 1
        elif int(idcard[-2]) % 2 == 0:
            sexdic['women'] += 1
    total = sexdic['man'] + sexdic['women']

    agetotal = sum(agearr)
    agearr = [str(round(x / agetotal, 2) * 100) for x in agearr]

    sexdic['man'] = sexdic['man'] / total * 100
    sexdic['women'] = sexdic['women'] / total * 100
    response_data['ages'] = agearr  # 年龄比例
    response_data['sex'] = sexdic  # 性别比例
    return toolkit.response(response_data, 200, None, True)
예제 #3
0
def send_verify_code():
    # 初始化REST SDK
    to_phone = request.form.get('phone')
    tempId = request.form.get('tem_id')
    key = request.form.get('key')
    response_data = {}

    mykey = '%s%s' % (PUBLIC_KEY, to_phone)
    if md5(mykey).hexdigest() != key:
        response_data["code"] = u"10003"
        response_data["desc"] = u"验证码发送失败"
        return toolkit.response(response_data, 200, None, True)

    if str(
            request.user_agent
    ) == 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)':
        response_data["code"] = u"10000"
        response_data["desc"] = u"验证码发送成功"
        print '=========ip攻击中========'
        return toolkit.response(response_data, 200, None, True)

    if to_phone is None:
        response_data["code"] = u"10002"
        response_data["content"] = u"手机号码不能为空"
        return toolkit.response(response_data, 200, None, True)

    rest = REST(SERVER_IP, SERVER_PORT, SOFT_VERSION)
    rest.setAccount(ACCOUNT_SID, ACCOUNT_TOKEN)
    rest.setAppId(APP_ID)
    redisClient = redis.StrictRedis(host='127.0.0.1',
                                    port=6379,
                                    db=0,
                                    password='******')
    verify_code = randint(100000, 999999)
    key = "%s_%s" % (to_phone, verify_code)
    key1 = '%s_switch' % to_phone

    try:
        try:
            if not redisClient.get(key):
                redisClient.set(key, str(verify_code))
                redisClient.expire(key, 300)

            if not redisClient.get(key1):
                redisClient.set(key1, '1')
                redisClient.expire(key1, 500)
            else:
                redisClient.set(key1, '2')
        except (ValueError, TypeError):
            raise
        value1 = redisClient.get(key1)

        datas = [verify_code]
        tempId = 42447
        if value1 == '1':
            rest.sendTemplateSMS(to_phone, datas, int(tempId))
            print 'success for sms yuntongxun !!!!!!!!!!!'
        elif value1 == '2':
            aliyunsdkcore.AliyunMonitor().do_request(to_phone, verify_code)
            print 'success for sms aliyun !!!!!!!!!!!'
        response_data["code"] = u"10000"
        response_data["desc"] = u"验证码发送成功"
        return toolkit.response(response_data, 200, None, True)
    except:
        response_data["code"] = u"10004"
        response_data["desc"] = u"您发送的频率过快,请稍候再试"
        return toolkit.response(response_data, 200, None, True)
예제 #4
0
파일: xinv.py 프로젝트: sunshine2995/boluo
def xinwang_order(name_or_phone,
                  order_id=None,
                  product_id=None,
                  total_fee=None,
                  red_pocket_id=None):
    product_id = request.form.get("product_id", product_id)
    total_fee = request.form.get("total_fee", total_fee)
    red_pocket_id = request.form.get("red_pocket_id", red_pocket_id)
    total_fee = float(total_fee)
    response_data = {}

    if not product_id or not total_fee:
        response_data["code"] = u"10001"
        response_data["desc"] = u"参数字段不能为空"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)
    m = Member.query.filter(
        or_(Member.name == name_or_phone,
            Member.phone == name_or_phone)).first()

    if int(m.is_identity_bind) == 0:
        response_data["code"] = u"10018"
        response_data["desc"] = u"用户未认证"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)
    try:
        if total_fee < 1:
            response_data["code"] = u"10003"
            response_data["desc"] = u"交易金额不能小于1元"
            response_data["content"] = {}
            return toolkit.response(response_data, 200, None, True)
        elif float(total_fee) > 100000:
            response_data["code"] = u"10026"
            response_data["desc"] = u"交易金额不能大于100000元"
            response_data["content"] = {}
            return toolkit.response(response_data, 200, None, True)
    except:
        pass

    asset = Member_asset_info.query.filter(
        Member_asset_info.member_id == str(m.id).replace('-', '')).first()

    pro = Product_info.query.filter_by(id=product_id).first()
    if pro is None:
        response_data["code"] = u"10021"
        response_data["desc"] = u"该产品不存在"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    if pro.product_type == '新手标':
        is_new_product = True
    else:
        is_new_product = False

    if is_new_product:
        if is_new_member(name_or_phone) == 'false':
            response_data["code"] = u"10022"
            response_data["desc"] = u"您已经不是新手了"
            response_data["content"] = {}
            return toolkit.response(response_data, 200, None, True)

    if total_fee > pro.limit_mount:
        response_data["code"] = u"10023"
        response_data["desc"] = u"新手标限额%s" % pro.limit_mount
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    has_total_total = total_fee + float(calculate_percentage(product_id))

    if has_total_total > float(pro.total_mount):
        response_data["code"] = u"10013"
        response_data["desc"] = u"投资总额已达上限"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    # -----------------------------使用红包------------------------------------

    rp = None
    rpt = None

    # 额外加息
    qg_rate = 0.0
    is_rate_pocket_val = False
    red_pocket_val = 0.0
    rate_security = 0.0
    # 可以用红包但不是新手
    hongbao_source = ''
    if red_pocket_id:
        if not is_new_product:
            query_top = db.session.query(Member_red_pocket_type,
                                         Member_red_pocket)
            query_res = query_top.filter(and_(Member_red_pocket.sort_id == Member_red_pocket_type.id, \
                                              Member_red_pocket.id == red_pocket_id)).all()
            if len(query_res) == 0 or query_res is None:
                response_data["code"] = u"10008"
                response_data["desc"] = u"红包不存在,请检查错误"
                response_data["content"] = {}
                return toolkit.response(response_data, 200, None, True)
            elif len(query_res) > 1:
                response_data["code"] = u"10007"
                response_data["desc"] = u"存在多个红包,请检查错误"
                response_data["content"] = {}
                return toolkit.response(response_data, 200, None, True)
            else:
                rp = query_res[0][1]
                if rp.generate_time < datetime.now():
                    response_data["code"] = u"10008"
                    response_data["desc"] = u"红包不存在,请检查错误"
                    response_data["content"] = {}
                    return toolkit.response(response_data, 200, None, True)

                rpt = query_res[0][0]

                if int(rpt.invest_days) > int(pro.time_limit):
                    response_data["code"] = u"10008"
                    response_data["desc"] = u"该红包不适用于当前期限的项目"
                    response_data["content"] = {}
                    return toolkit.response(response_data, 200, None, True)

                if rpt.type == '99' and total_fee >= float(
                        query_res[0][0].start_money):
                    rate_security = float(query_res[0][0].rate)
                    red_pocket_val = round(
                        total_fee * rate_security * float(pro.time_limit) /
                        360.0, 2)
                    total_fee_jhb = total_fee - red_pocket_val
                else:
                    red_pocket_val = float(query_res[0][0].money)
                    red_pocket_val_start_money = float(
                        query_res[0][0].start_money)
                    total_fee_jhb = total_fee - red_pocket_val
                    if rp.is_freeze:
                        response_data["code"] = u"10007"
                        response_data["desc"] = u"红包已使用,请检查错误"
                        response_data["content"] = {}
                        return toolkit.response(response_data, 200, None, True)

                    if total_fee >= red_pocket_val_start_money:
                        pass
                    else:
                        response_data["code"] = u"10016"
                        response_data["desc"] = u"%s元红包的起投金额为%s, 请重新选择!" % (
                            query_res[0][0].money,
                            int(red_pocket_val_start_money +
                                query_res[0][0].money))
                        response_data["content"] = {}
                        return toolkit.response(response_data, 200, None, True)
                hongbao_source = query_res[0][0].name
        else:
            response_data["code"] = u"10025"
            response_data["desc"] = u"新手不能使用红包"
            response_data["content"] = {}
            return toolkit.response(response_data, 200, None, True)
    else:
        total_fee_jhb = total_fee

    if asset.remainamount + asset.rechargeamount < total_fee_jhb:
        response_data["code"] = u"10015"
        response_data["desc"] = u"账户余额不够,请充值"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    # 抢购加息
    if total_fee <= 10000 and total_fee + float(
            calculate_percentage(product_id)) + 0.1 >= float(pro.total_mount):
        qg_rate += 0.01

    # 红包ID
    if rp:
        hongbao_info_id = rp.id
    else:
        hongbao_info_id = None


# -----------------------------end使用红包------------------------------------

    inv = Invest_info(member_id=str(m.id).replace('-',''), money=total_fee_jhb, hongbao=red_pocket_val,\
                      member_name=m.name, hongbao_source=hongbao_source, hongbao_info_id=hongbao_info_id)

    if Member_invite_info.query.filter_by(
            invited_id=str(m.id).replace('-', '')).first():
        inv.yaoqing_money = round(
            total_fee_jhb * 0.01 * float(pro.time_limit) / 360.0, 2)

    # 默认为投资中
    inv.status = 1
    inv.product_id = product_id
    inv.is_effect = 0
    # 会员加息
    if m.level == 1:
        qg_rate += 0.01

    # 计算总收益
    pro_fit = round(
        total_fee_jhb + red_pocket_val +
        float(total_fee_jhb *
              (float(pro.rate) + float(pro.rate_increase) + qg_rate) *
              float(pro.time_limit) / 360.0), 2)
    # 普通收益
    inv.interest = round(
        total_fee_jhb * float(pro.rate) * float(pro.time_limit) / 360.0, 2)
    # 活动收益
    inv.activity_interest = round(
        total_fee_jhb * (float(pro.rate_increase) + qg_rate) *
        float(pro.time_limit) / 360.0, 2)

    inv.profit = pro_fit
    inv.time = datetime.now()
    inv.expect_time = inv.time + timedelta(days=int(pro.time_limit))
    if order_id:
        inv.order_id = order_id
    else:
        inv.order_id = "%d%06d" % (time.time() * 1000000, randint(0, 999999))
    inv.bluuid = m.bluuid
    inv.rate_security = rate_security
    inv.extra_rate = qg_rate
    mlogin = Member_login.query.filter(
        Member_login.member_id == m.id).order_by(
            Member_login.last_time.desc()).first()
    if mlogin:
        inv.equipment = mlogin.equipment_name
    else:
        inv.equipment = 'app'
    inv.channel = m.channel_id

    try:
        db.session.add(inv)
        db.session.commit()
        db.session.merge(pro)
        db.session.commit()

        response_data['order_id'] = inv.order_id
        response_data['red_pocket_val'] = red_pocket_val
        response_data["code"] = u"10000"
        response_data["desc"] = u"数据库操作成功"
        response_data["content"] = {}
    except Exception, e:
        error = Error_log(phone=name_or_phone,
                          type=u'下订单',
                          description=str(e),
                          creat_time=datetime.now())
        db.session.add(error)
        db.session.commit()
        response_data["code"] = u"10004"
        response_data["content"] = u"数据库操作失败"
        response_data["content"] = {}
예제 #5
0
파일: xinv.py 프로젝트: sunshine2995/boluo
        response_data['red_pocket_val'] = red_pocket_val
        response_data["code"] = u"10000"
        response_data["desc"] = u"数据库操作成功"
        response_data["content"] = {}
    except Exception, e:
        error = Error_log(phone=name_or_phone,
                          type=u'下订单',
                          description=str(e),
                          creat_time=datetime.now())
        db.session.add(error)
        db.session.commit()
        response_data["code"] = u"10004"
        response_data["content"] = u"数据库操作失败"
        response_data["content"] = {}
    print response_data
    return toolkit.response(response_data, 200, None, True)


@app.route('/xinwang/invest/order/info/<path>', methods=['GET', 'POST'])
def xw_invest_info(path):
    response_data = {'is_effect': '0'}
    order_id = request.args.get('order_id')
    if path == 'user_pre_transaction':
        inv = Invest_info.query.filter_by(order_id=order_id).first()
        if inv:
            pro_info = Product_info.query.filter_by(id=inv.product_id).first()
            response_data['is_effect'] = inv.is_effect
            response_data['product_name'] = pro_info.product_name
            response_data['time_limit'] = '%s天' % pro_info.time_limit
            response_data['money'] = '%s元' % inv.money
            response_data['rate'] = '%s' % (
예제 #6
0
파일: views.py 프로젝트: sunshine2995/boluo
def post_prize_result(phone):

    prize_id = request.form.get("prize_id", None)
    activity_id = request.form.get("activity_id", None)
    response_data = {}
    if prize_id is None:
        response_data["code"] = u"10001"
        response_data["desc"] = u"参数为空"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    m = Member.query.filter(Member.phone == phone).first()

    if m.isblack == 'Sync':
        response_data["code"] = u"10002"
        response_data["content"] = {}
        response_data["desc"] = u"您的账户已被迁移到菠萝理财存管版,请用菠萝理财存管版登录!"
        return toolkit.response(response_data, 200, None, True)

    if m is None:
        response_data["code"] = u"10002"
        response_data["desc"] = u"用户不存在"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    p = PrizeType.query.filter(
        or_(PrizeType.id == prize_id,
            PrizeType.hongbao_id == prize_id)).first()
    if p is None:
        response_data["code"] = u"10007"
        response_data["desc"] = u"奖品不存在"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    pr = Prize.query.filter(Prize.phone == phone,
                            Prize.activity_id == activity_id).all()
    ps = PrizeShare.query.filter(
        PrizeShare.phone == phone,
        PrizeShare.activity_id == activity_id).first()
    if ps is None:
        response_data["code"] = u"10009"
        response_data["desc"] = u"尚未注册手机号"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    if len(pr) >= ps.total_num:
        response_data["code"] = u"10003"
        response_data["desc"] = u"抽奖次数已用尽"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)

    if len(pr) < ps.total_num:
        now_time = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')
        try:
            pp = Prize(phone=m.phone,
                       prize_id=prize_id,
                       time=now_time,
                       activity_id=activity_id)
            if prize_id == "36dc6dd45146b629015146b77be30004" or \
               prize_id == "36dc6dd45146b629015146b7ad080006" or \
               prize_id == "40288007518b44c901518b5007bd0001" or \
               prize_id == "8a2db3e852a0744f0152a0860865000d" or \
               prize_id == "8a2db3e852a0744f0152a08651e0000f" or \
               prize_id == "8a2db3e852a0744f0152a0867e220011" or \
               prize_id == "8a2db3e852a0744f0152a086efad0013":
                mr = gen_reg_red_pocket(p.hongbao_id,
                                        str(m.id).replace("-", ""))
                db.session.add(mr)
                db.session.commit()
                pp.is_grant = 1

            db.session.add(pp)
            db.session.commit()
            response_data["code"] = u"10000"
            response_data["desc"] = u"抽奖成功"
            response_data["content"] = {}

            return toolkit.response(response_data, 200, None, True)
        except:
            response_data["code"] = u"10004"
            response_data["desc"] = u"抽奖出现网络错误"
            response_data["content"] = {}
            return toolkit.response(response_data, 200, None, True)
    else:
        response_data["code"] = u"10003"
        response_data["desc"] = u"抽奖次数已用尽"
        response_data["content"] = {}
        return toolkit.response(response_data, 200, None, True)
예제 #7
0
def test():
    response_data = {}
    return toolkit.response(response_data, 200, None, True)