示例#1
0
async def balance_add(request):
    if request.method == 'GET':
        return jinja.render("admin/balance-add.html", request,message='')
    if request.method == "POST":
        money = request.form.get("money")
        try:
            float(money)
        except:
            return jinja.render("admin/balance-add.html", request,message="输入金额错误")
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get('id')
        pay_orders = PayOrders()
        pay_orders.user_id = user_id
        pay_orders.product = '单号储值{0}'.format(money)
        pay_orders.out_trade_no =str(int(time.time()*1000))+str(user_id)
        pay_orders.total_fee=float(money)
        pay_orders.status = 0
        pay_orders.notify_url=app_notify_url

        order_string = _alipay.api_alipay_trade_page_pay(out_trade_no=pay_orders.out_trade_no,
                                                        total_amount=money,
                                                        subject=pay_orders.product)
        pay_orders.ali_pay_str = order_string
        pay_orders.save()
        return response.redirect('https://openapi.alipay.com/gateway.do?'+order_string)
示例#2
0
async def area_update(request,show_id=''):
    '''
    更新地址
    :param request:
    :param show_id:
    :return:
    '''
    if request.method == 'GET':
        show_id = request.args.get("show_id")
        areas = Areas.select().filter(Areas.parent_code == '+86').order_by(Areas.order.asc())
        send = SendAddress.get(SendAddress.id == request.app.get_id_by_show_id(show_id))
        return jinja.render("admin/area_update.html", request, send=send, areas=areas)
    if request.method == 'POST':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        data = request.form
        kargs = {key: value[0] for key, value in data.items()}

        {'sender_name': '赵六', 'sender_mobile': '1221212121',
         'sender_prov': '14', 'sender_city': '杭州市', 'sender_area': '余杭区',
         'sender_address': '231312312'}
        try:
            prov_code = int(kargs.pop('sender_prov'))
            sender_prov = Areas.get(Areas.code==prov_code).name
            city_code = int(kargs.pop('sender_city'))
            sender_city = Areas.get(Areas.code == city_code).name
            area_code = int(kargs.pop('sender_area'))
            sender_area = Areas.get(Areas.code == area_code).name
        except:
            pass
        kargs.update({'sender_prov':sender_prov,'sender_city':sender_city,'sender_area':sender_area})
        SendAddress.update(**kargs).where(SendAddress.id == request.app.get_id_by_show_id(show_id),
                                        SendAddress.user_id == request.app.get_id_by_show_id(user.get('show_id'))).execute()
        return text('修改成功')
示例#3
0
async def balance_list(request):
    cookie = request.cookies.get("user")
    user = get_cookies(AGENT_COOKIE_TOKEN,cookie)
    phone = user.get('phone')
    user_id = user.get('id')
    data = Balance().filter(Balance.user_id==user_id,Balance.phone==phone)
    return jinja.render("admin/balance-list.html", request, data=data)
示例#4
0
async def user_list(request):
    """
用户列表
:param request:
:return:
"""
    if request.method == 'GET':
        user_query = Users.select().filter(Users.deleted == 0)
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        username = user.get('username')
        is_admin = user.get('is_admin')
        kargs = {}
        kargs['username'] = username
        kargs['is_admin'] = is_admin
        kargs['id'] = request.args.get("id", "")
        kargs['phone'] = request.args.get("phone", "")
        kargs["username"] = request.args.get("username", "")
        kargs["level"] = request.args.get("level", "")
        kargs["agent_id"] = request.args.get("agent_id", "")
        kargs["is_admin"] = request.args.get("is_admin", "")
        query = UserService().user_list(**kargs)
        data = get_page_data(request, query)
        return jinja.render("admin/user-list.html",
                            request,
                            kargs=kargs,
                            data=data,
                            user_query=user_query)
    elif request.method == "POST":
        id = request.form.get("id")
        Users.update({Users.deleted: 1}).where(Users.id == id).execute()
        return text("已删除")
示例#5
0
async def device_add(request):
    if request.method == 'GET':
        data = Product.select().filter(Product.deleted == 0)
        agent = AgentMerchant.select().filter(AgentMerchant.deleted == 0)
        profit = AdvertiseProfit.select().filter(AdvertiseProfit.deleted == 0)
        group = AdvertiseGroup.select().filter(AdvertiseGroup.deleted == 0)
        return jinja.render("agent/device-add.html",
                            request,
                            data=data,
                            agent=agent,
                            group=group,
                            profit=profit)
    elif request.method == "POST":
        data = request.form
        if not request.files.get("qrcode_img"):
            data["qrcode_img"] = ["无"]
        else:
            img_file = request.files.get('qrcode_img')
            file_parameters = {
                'body': img_file.body,
                'name': img_file.name,
                'type': img_file.type,
            }
            is_sucess, img_url = upload_stream(file_parameters)
            data["qrcode_img"] = [img_url]
        user = request.app.user
        data["username"] = [user.get("username", "")]
        DeviceService().add_device(data)
        return response.redirect('/agent_device/list')
示例#6
0
async def area_add(request):
    '''
    添加地址
    :param request:
    :return:
    '''
    if request.method == 'GET':
        send = SendAddress.select().filter(SendAddress.deleted == 0)
        areas = Areas.select().filter(Areas.parent_code == '+86').order_by(Areas.order.asc())
        return jinja.render("admin/area_add.html", request, areas=areas, send=send)
    elif request.method == "POST":
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        data = request.form
        if request.form.get("sender_prov", ""):
            data["sender_prov"] = Areas.get(Areas.code==request.form.get("sender_prov", "")).name
        else:
            data["sender_prov"] = request.form.get("sender_prov", "")
        if request.form.get("sender_city", ""):
            data["sender_city"] = Areas.get(Areas.code == request.form.get("sender_city", "")).name
        else:
            data["sender_city"] = request.form.get("sender_city", "")
        if request.form.get("sender_area", ""):
            data["sender_area"] = Areas.get(Areas.code == request.form.get("sender_area", "")).name
        else:
            data["sender_area"] = request.form.get("sender_area", "")
        AreaService().add_Area(data, user_id)
        return text("添加完成")
示例#7
0
async def login(request):
    if request.method == 'POST':
        username = request.form.get('username', '')
        password = request.form.get('password', '')
        #用户名和密码长度,类型等验证,
        pwd = Users().passwd(password)
        admin = Users.get(Users.phone == username, Users.password == pwd)
        if admin:
            keys = [
                'show_id', 'username', 'phone', 'is_admin', 'level', 'id',
                'agent_id'
            ]
            cookies = admin.to_dict(keys)
            cookies_json = set_cookies(COOKIE_TOKEN, cookies)
            res = response.text(ujson.dumps({'login': '******', 'code': 1}))
            res.cookies['user'] = cookies_json
            res.cookies["user"]["max-age"] = 36000
            return res
        else:
            res = response.text(
                ujson.dumps({
                    'login': '******',
                    'code': 0,
                    'info': '登录失败:用户名或密码错误'
                }))
            return res
    else:
        return jinja.render("admin/login.html", request, message="")
示例#8
0
async def device_add_list(request):
    if request.method == 'GET':
        data = Product.select().filter(Product.deleted == 0)
        return jinja.render("agent/device-add-list.html", request, data=data)
    elif request.method == "POST":
        data = request.form
        user = request.app.user
        data["username"] = [user.get("username", "")]
        DeviceService().add_list_device(data)
        return response.redirect('/agent_device/list')
示例#9
0
async def user_register(request):
    if request.method == 'POST':
        name = request.form.get('name', '')
        phone = request.form.get('username', '')
        password = request.form.get('pwd', '')
        pwd = Users().passwd(password)
        code = request.form.get('user_code', '')
        admin = Users.get(Users.phone == phone)
        if admin:
            content = """<html>
                            <script>
                            alert("该用户已注册");
                            window.location.href='http://{0}/change_pwd';
                            </script>
                            </html>
                        """.format(request.host)
            return response.html(content)
        else:
            #默认注册账号为1级代理
            users = Users()
            users.username = name
            users.phone = phone
            users.password = pwd
            users.level = 1
            users.user_code = uuid.uuid4()
            if code == "":
                users.agent_id = 0
            else:
                invite_user = users.get(user_code=code)
                users.agent_id = invite_user.id
            users.save()
            balance = Balance()
            balance.username = name
            balance.phone = phone
            balance.amount = 0
            balance.commission = 0
            user = Users().get(Users.phone == phone)
            balance.user_id = user.id
            balance.save()
            content = """
                <html>
                <script>
                alert("注册成功");
                window.location.href='http://{0}/login';
                </script>
                </html>
            """.format(request.host)
            return response.html(content)
    else:
        user_code = request.args.get("user_code", "")
        return jinja.render("admin/change_pwd.html",
                            request,
                            user_code=user_code,
                            message="")
示例#10
0
async def device_update(request):
    if request.method == 'GET':
        show_id = request.args.get("show_id")
        data = Devices.select().filter(Devices.show_id == int(show_id)).get()
        data = model_to_dict(data)
        return jinja.render("agent/device-used.html", request, data=data)
    if request.method == 'POST':
        data = request.form
        show_id = data.get('show_id', "")
        kargs = {key: value[0] for key, value in data.items()}
        Devices.update(**kargs).where(Devices.show_id == show_id).execute()
        return text('修改完成')
示例#11
0
async def pay_report_info(request):
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        pay_report = PayOrders.select().filter(PayOrders.deleted == 0,PayOrders.user_id == user_id)
        kargs = {}
        kargs['user_id'] = request.args.get("user_id", "")
        kargs["out_trade_no"] = request.args.get("out_trade_no", "")
        # kargs["pay_trade_no"] = request.args.get("pay_trade_no","")
        query = PayService().query_pay_report(kargs,user_id)
        data = get_page_data(request, query)
        return jinja.render("admin/pay_report.html", request, data=data, kargs=kargs, pay_report=pay_report)
示例#12
0
async def login_agent(request):
    if request.method == 'GET':
        return jinja.render("agent/login.html", request)
    if request.method == 'POST':
        username = request.form.get('username', '')
        password = request.form.get('password', '')
        # 用户名和密码长度,类型等验证,
        pwd = AgentMerchant().passwd(password)
        agent = AgentMerchant.get(AgentMerchant.phone == username, AgentMerchant.password == pwd)
        if agent:
            keys = ['show_id', 'phone', 'level', 'parent_id','username','agent_company']
            cookies = agent.to_dict(keys)
            cookies_json = set_cookies(AGENT_COOKIE_TOKEN, cookies)
            res = response.text(ujson.dumps({'status': 'success', 'code': 1}))
            res.cookies['agent_user'] = cookies_json
            res.cookies["agent_user"]["max-age"] = 3600
            return res
        else:
            res = response.text(ujson.dumps({'status':'failed','code':0,'info':'登录失败:用户名或密码错误'}))
            return res
    else:
        return jinja.render("agent/login.html", request, message="")
示例#13
0
async def commission_info(request):
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        kargs = {}
        kargs["user_id"] = request.args.get("user_id", "")
        kargs["from_user_id"] = request.args.get("from_user_id", "")
        query = UserService().query_commission(user, **kargs)
        data = get_page_data(request, query)
        return jinja.render("admin/commission_list.html",
                            request,
                            data=data,
                            kargs=kargs)
示例#14
0
async def agent_info(request):
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        kargs = {}
        kargs["agent_id"] = request.args.get("agent_id", "")
        kargs["username"] = request.args.get("username", "")
        kargs["user_id"] = request.args.get("user_id", "")
        query = UserService().query_invite(user, **kargs)
        data = get_page_data(request, query)
        return jinja.render("admin/invite_report.html",
                            request,
                            data=data,
                            kargs=kargs)
示例#15
0
async def balance_list(request):
    kargs={}
    kargs['id'] = request.args.get("id", "")
    kargs['phone'] = request.args.get("phone", "")
    kargs["username"] = request.args.get("username", "")
    query = Balance().filter(Balance.deleted==0)
    if "id" in kargs and kargs.get('id').strip():
        query = query.filter(user_id=int(kargs["id"]))
    if "username" in kargs and kargs.get('username').strip():
        query = query.filter(username=kargs["username"])
    if "phone" in kargs and kargs.get("phone").strip():
        query = query.filter(phone=kargs["phone"])
    data = get_page_data(request, query)
    return jinja.render("admin/balance_all_list.html", request, data=data, kargs=kargs)
示例#16
0
async def user_update(request, show_id):
    '''
    信息修改
    :param request:
    :return:
    '''
    if request.method == 'GET':
        data = Users.select().filter(Users.show_id == show_id).get()
        data = model_to_dict(data)
        return jinja.render("admin/user-update.html", request, data=data)
    elif request.method == 'POST':
        data = request.form
        user_id = request.app.get_id_by_show_id(show_id)
        UserService().update_user(user_id, data)
        return text('修改完成')
示例#17
0
async def agent_info(request):
    '''
    个人信息展示
    :param request:
    :return:
    '''
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        query = Users().select().filter(Users.deleted == 0,
                                        Users.id == user_id)
        code = Users().get(id=user_id)
        invite_url = "http://{}/change_pwd/?user_code={}".format(
            request.host, code.user_code)
        return jinja.render("admin/user_info.html",
                            request,
                            data=query,
                            invite_url=invite_url)
示例#18
0
async def order_list(request):
    """
订单列表
:param request:
:return:
"""
    if request.method == 'GET':
        users = request.app.user
        kargs = {}
        kargs["mailNo"] = request.args.get("mailNo", "")
        kargs["sender_name"] = request.args.get("sender_name", "")
        kargs["sender_mobile"] = request.args.get("sender_mobile", "")
        kargs["recive_name"] = request.args.get("recive_name", "")
        kargs["recive_mobile"] = request.args.get("recive_mobile", "")
        query = OrderService().query_list(users, **kargs)
        data = get_page_data(request, query)
        return jinja.render("admin/order-list.html",
                            request,
                            kargs=kargs,
                            data=data)
示例#19
0
async def device_inter(request):
    if request.method == 'GET':
        return jinja.render('agent/device_up_excel.html', request)
    else:
        test_file = request.files.get('excel')
        print(test_file.type)
        df = pd.read_csv(test_file.body)
        print(df)
        # 替换nan
        df = df.where(df.notnull(), "")
        # 矩阵
        data = np.array(df)
        for i in data:
            # 改成字典
            kargs = {}
            kargs["advertise_group_id"] = i[1]
            kargs["agent_id"] = i[2]
            kargs["profit_id"] = i[3]
            Devices.update(**kargs).where(
                Devices.device_name == i[0]).execute()
        return text('已导入')
示例#20
0
async def area_list(request):
    '''
    地址管理
    :param request:
    :return:
    '''
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        send = SendAddress.select().filter(SendAddress.user_id==user_id,SendAddress.deleted == 0)
        areas = Areas.select().filter(Areas.parent_code == '+86').order_by(Areas.order.asc())
        kargs = {}
        kargs["sender_name"] = request.args.get("sender_name", "")
        kargs["sender_mobile"] = request.args.get("sender_mobile", "")
        query = AreaService().query_list(user_id,**kargs)
        data = get_page_data(request, query)
        return jinja.render("admin/area_list.html", request, kargs=kargs, data=data, areas=areas,send=send)
    elif request.method == "POST":
        id = request.form.get("id")
        SendAddress.update({SendAddress.deleted: 1}).where(SendAddress.id == id).execute()
        return text("已删除")
示例#21
0
async def device_update(request, show_id):
    '''
    更新设备
    :param request:
    :param show_id:
    :return:
    '''
    if request.method == 'GET':
        agent = AgentMerchant.select().filter(AgentMerchant.deleted == 0)
        group = AdvertiseGroup.select().filter(AdvertiseGroup.deleted == 0)
        profit = AdvertiseProfit.select().filter(AdvertiseProfit.deleted == 0)
        data = Devices.select().filter(Devices.id == show_id).get()
        data = model_to_dict(data)
        return jinja.render("agent/device-updata.html",
                            request,
                            data=data,
                            agent=agent,
                            group=group,
                            profit=profit)
    elif request.method == 'POST':
        user = request.app.user
        data = request.form
        data["updata_user"] = [user.get("username", "")]
        data["update_time"] = [
            time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        ]
        if not request.files.get("qrcode_img"):
            del data["qrcode_img"]
        else:
            img_file = request.files.get('qrcode_img')
            file_parameters = {
                'body': img_file.body,
                'name': img_file.name,
                'type': img_file.type,
            }
            is_sucess, img_url = upload_stream(file_parameters)
            data["qrcode_img"] = [img_url]
        kargs = {key: value[0] for key, value in data.items()}
        old_device = Devices.select().filter(Devices.id == show_id).get()
        old_agent_id = old_device.agent_id
        agent_id = kargs.get("agent_id", "")
        if agent_id == "" or agent_id == old_agent_id or agent_id == "0":
            DeviceService().update_device(show_id, **kargs)
        else:
            add_id = AgentMerchant.select().filter(
                AgentMerchant.id == agent_id).get()
            AgentMerchant.update({
                AgentMerchant.device_count:
                int(add_id.device_count) + 1
            }).where(AgentMerchant.id == add_id).execute()
            minus = AgentMerchant.select().filter(
                AgentMerchant.id == old_agent_id)
            if minus:
                minus_id = minus.get()
                AgentMerchant.update({
                    AgentMerchant.device_count:
                    int(minus_id.device_count) - 1
                }).where(AgentMerchant.id == minus_id).execute()
            DeviceService().update_device(show_id, **kargs)

        return text('修改完成')
示例#22
0
async def index(request):
    user = request.app.user
    return jinja.render('admin/index.html', request, users=user)
示例#23
0
async def order_add(request):
    if request.method == 'GET':
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        area = SendAddress.get(SendAddress.deleted == 0,
                               SendAddress.user_id == user_id)
        orders = UserLogistic.select().filter(
            UserLogistic.deleted == 0,
            UserLogistic.user_id == user_id).order_by(
                UserLogistic.create_time.desc())
        old_balance = Balance.get(Balance.user_id == user_id)
        if orders.count() > 0:
            order = orders[0]
            data = orders[0]
        else:
            order = None
            data = None
        if old_balance.amount < 1.8:
            return response.html(
                '<html><center><h1>余额不足,请充值   <a href="/balance/add" target="_blank">点击充值</a></h1></center></html>'
            )
        else:
            if order and order.items:
                items = order.items.split('-')
                try:
                    item = [it.split(":")[1] for it in items]
                except:
                    item = []
            else:
                item = []
            return jinja.render("/admin/order-add.html",
                                request,
                                area=area,
                                data=data,
                                item=item)
    elif request.method == "POST":
        data = request.form
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")
        if not user.get('is_admin'):
            balance = Balance.get(Balance.user_id == user_id)
            if balance and balance.amount < 1.8:
                return response.html(
                    '<html><center><h1>余额不足,请充值   <a href="/balance/add">点击充值</a></h1></center></html>'
                )
        keys = [
            'sender_name', 'sender_mobile', 'sender_prov', 'sender_city',
            'sender_address', 'recive_name', 'recive_mobile', 'recive_prov',
            'recive_city', 'recive_address', 'itemName', 'number'
        ]
        for key in keys:
            if not request.form.get(key, '').strip():
                return json({'code': 0, 'msg': '参数{0}'.format(key) + '不能为空'})
            if len(request.form.get(key)) > 256:
                return json({
                    'code': 0,
                    'msg': '参数{0}'.format(key) + '长度不能超过256'
                })
        params = request.form
        sender.update({
            "name": params.get('sender_name'),
            "mobile": params.get('sender_mobile'),
            "prov": params.get('sender_prov'),
            "city": params.get('sender_city'),
            "address": params.get('sender_address')
        })
        recive.update({
            "name": params.get('recive_name'),
            "mobile": params.get('recive_mobile'),
            "prov": params.get('recive_prov'),
            "city": params.get('recive_city'),
            "address": params.get('recive_address')
        })

        items = []
        itemNames = request.form.get('itemName')
        numbers = request.form.get('number')
        itemValues = request.form.get('itemValue')
        weight = request.form.get('weight')

        items.append({
            "itemName": itemNames,
            "number": numbers,
            "itemValue": itemValues,
            "weight": weight
        })
        order_id = str(int(time.time() * 1000000)) + str(
            random.randint(10, 1000))
        data = {
            'clientID': config.get('ClientID'),
            'logisticProviderID': 'YTO',
            'customerId': config.get('ClientID'),
            'txLogisticID': order_id,
            'tradeNo': '',
            'orderType': 1,
            'serviceType': 0,
            'itemsWeight': 0.0,
            'flag': 0,
            'goodsValue': 0,
            'special': 0,
            'insuranceValue': 0.0,
            'totalServiceFee': 0.0,
            'codSplitFee': 0.0
        }
        data.update({"sender": sender, "receiver": recive, 'items': items})
        xml_body = dicttoxml(data,
                             root=True,
                             custom_root=custom_root,
                             attr_type=False)
        xml_body = xml_body.decode().replace(
            '<?xml version="1.0" encoding="UTF-8" ?>', '')
        # xml_body='<RequestOrder><clientID>K11122126</clientID><logisticProviderID>YTO</logisticProviderID><customerId>K11122126</customerId><txLogisticID>K11122126abc1004</txLogisticID><tradeNo>K11122126</tradeNo><orderType>1</orderType><serviceType>0</serviceType><itemsWeight>1.2</itemsWeight><flag>0</flag><goodsValue>0</goodsValue><special>0</special><insuranceValue>0.0</insuranceValue><totalServiceFee>0.0</totalServiceFee><codSplitFee>0.0</codSplitFee><sender><name>张三</name><mobile>13550031574</mobile><prov>浙江省</prov><city>杭州市</city><address>滨江区网商路599号</address></sender><receiver><name>李四</name><mobile>13550031578</mobile><prov>四川省</prov><city>成都市</city><address>龙泉驿区西河镇</address></receiver><items><item><itemName>男式衣服</itemName><number>1</number><itemValue>25</itemValue></item></items></RequestOrder>'
        data_digest = signatral(xml_body, config.get('ClientSec'))
        # print(data_digest)
        # data_digest='E9yeCCnxCFLmQs8bHM+oZQ=='
        params = {
            'clientId': config.get('ClientID'),
            'data_digest': data_digest,
            'logistics_interface': xml_body
        }
        # data = urllib.parse.urlencode(params)
        config.get('UrlOrder') + '?' + urllib.parse.urlencode(params)
        # print(urllib.parse.urlencode(params))
        res = requests.post(
            config.get('UrlOrder') + '?' + urllib.parse.urlencode(params))
        content = res.text
        res_data = xmltodict.parse(content)
        level = request.app.user.get('level', 0)
        if level == 1:
            level_proce = 1.8
        if level == 2:
            level_proce = 1.5
        if res_data.get('Response').get('success') in ('true', True):
            address = res_data['Response'].pop('distributeInfo')
            res_data = dict(res_data['Response'].items())
            res_data.update({'distributeInfo': dict(address)})
            res_data.update(data)
            old_shop = [
                i['itemName'] + ',' + i['number'] + ',' + i['itemValue']
                for i in res_data.get('items')
            ]
            shop = old_shop[0].split(",")
            kargs = {
                'user_id': user_id,
                'logisticProviderID': res_data.get('logisticProviderID', ''),
                'txLogisticID': res_data.get('txLogisticID', ''),
                'clientID': res_data.get('clientID', ''),
                'mailNo': res_data.get('mailNo', ''),
                'customerId': res_data.get('customerId', ''),
                'tradeNo': res_data.get('tradeNo', ''),
                'orderType': res_data.get('orderType', ''),
                'serviceType': res_data.get('serviceType'),
                'itemsWeight': res_data.get('itemsWeight'),
                'flag': res_data.get('flag'),
                'goodsValue': res_data.get('goodsValue', ''),
                'special': res_data.get('special', ''),
                'insuranceValue': res_data.get('insuranceValue', ''),
                'totalServiceFee': res_data.get('totalServiceFee', ''),
                'codSplitFee': res_data.get('codSplitFee', ''),
                'sender_name': res_data.get('sender').get('name', ''),
                'sender_mobile': res_data.get('sender').get('mobile', ''),
                'sender_prov': res_data.get('sender').get('prov', ''),
                'sender_city': res_data.get('sender').get('city', ''),
                'sender_address': res_data.get('sender').get('address', ''),
                'recive_name': res_data.get('receiver').get('name', ''),
                'recive_mobile': res_data.get('receiver').get('mobile', ''),
                'recive_prov': res_data.get('receiver').get('prov', ''),
                'recive_city': res_data.get('receiver').get('city', ''),
                'recive_address': res_data.get('receiver').get('address', ''),
                'items': "名称:{}-数量:{}-价值:{}".format(shop[0], shop[1], shop[2]),
                "weight": weight,
                "price": level_proce
            }
            UserLogistic.create(**kargs)
            # 减余额
            if not user.get('is_admin'):
                old_balance = Balance.get(Balance.user_id == user_id)
                Balance().update({
                    Balance.amount:
                    old_balance.amount - level_proce
                }).where(Balance.user_id == user_id).execute()

            # 佣金操作
            order_user = Users.get(Users.id == user_id)
            if order_user.agent_id != 0:
                once_amount = level_proce * 0.05
                detail = "你邀请ID为{}的下单奖励".format(user_id)
                Commission().create(user_id=order_user.agent_id,
                                    from_user_id=user_id,
                                    once_amount=once_amount,
                                    detail=detail)
                agent_old_balance = Balance.get(
                    Balance.user_id == order_user.agent_id)
                Balance().update({
                    Balance.commission:
                    agent_old_balance.commission + once_amount
                }).where(Balance.user_id == order_user.agent_id).execute()

            # 存库
            if request.form.get('weight', ''):
                paramSetWeight = {
                    'waybillNo': order_id,
                    'weight': weight,
                    'customerCode': config.get('ClientID'),
                    'clientId': config.get('WeightSec')
                }
                req = requests.get(config.get('UrlWeight'),
                                   params=paramSetWeight)
                w_text = req.text
            content = """
                    <html>
                    <script>
                    alert("下单成功");
                    window.location.href='http://{0}/order/add';
                    </script>
                    </html>
                    """.format(request.host)
            return response.html(content)

        else:
            # data = dict(res_data['Response'].items())
            # return json({'code': 0, 'data': data})
            content = """
                    <html>
                    <script>
                    alert("下单失败");
                    window.location.href='http://{0}/order/add';
                    </script>
                    </html>
                    """.format(request.host)
            return response.html(content)
示例#24
0
async def logout(request):
    response = jinja.render("admin/login.html", request)
    del response.cookies["user"]
    return response
示例#25
0
async def device_list(request):
    """
    条件查询
    :param request:
    :return:
    """
    if request.method == 'GET':
        # 产品
        product = Product.select().filter(Product.deleted == 0)
        # 广告组
        advertise_group = AdvertiseGroup.select().filter(
            AdvertiseGroup.deleted == 0)
        # 代理人
        device_agent = AgentMerchant.select().filter(
            AgentMerchant.deleted == 0)
        # APPLY_ID
        apply_id = DeviceBatchApply.select().filter(
            DeviceBatchApply.deleted == 0)

        cookie = request.cookies.get('agent_user')
        print("当前代理用户返回的cookies为 %s " % cookie)
        agent_dict = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        print(agent_dict)
        username = agent_dict.get('username')
        level = agent_dict.get('level')
        agent_id = request.app.get_id_by_show_id(agent_dict.get('show_id'))
        agents = AgentMerchant.select().filter(AgentMerchant.deleted == 0)
        kargs = {}
        kargs['username'] = username
        kargs['level'] = level
        kargs['agent_id'] = agent_id
        kargs["sn_no"] = request.args.get("sn_no", "")
        kargs["province"] = request.args.get("province", "")
        kargs["area"] = request.args.get("area", "")
        kargs["space_tag"] = request.args.get("space_tag", "")
        kargs["product_name"] = request.args.get("product_name", "")
        kargs["group_name"] = request.args.get("group_name", "")
        kargs["agent_name"] = request.args.get("agent_name", "")
        kargs["apply_id"] = request.args.get("apply_id", "")
        kargs["status"] = request.args.get("status", "")
        kargs["produce_version"] = request.args.get("produce_no", "")
        # query = DeviceService().query_list(**kargs)
        query = DeviceService().query_child_device(agent_id)
        page = get_page_data(request, query)

        data = {"render": page.render(), "result": []}
        for i in page.result:
            one_result = model_to_dict(i)
            # 代理
            if i.agent_id == 0:
                one_result["agent_company"] = "无"
            else:
                agent = AgentMerchant.get(AgentMerchant.id == i.agent_id)
                one_result["agent_company"] = agent.agent_company
            # # 广告组
            # if i.advertise_group_id == 0:
            #     one_result["group_name"] = "无"
            # else:
            #     group = AdvertiseGroup.get(AdvertiseGroup.id == i.advertise_group_id)
            #     one_result["group_name"] = group.group_name
            # 分成
            if i.profit_id == 0:
                one_result["profit_name"] = "无"
            else:
                profit = AdvertiseProfit.get(AdvertiseProfit.id == i.profit_id)
                one_result["profit_name"] = profit.profit_name
            data["result"].append(one_result)
        return jinja.render("agent/device-list.html",
                            request,
                            data=data,
                            kargs=kargs,
                            products=product,
                            agents=device_agent,
                            groups=advertise_group,
                            apply_ids=apply_id)
    # 删除
    elif request.method == "POST":
        id = request.form.get("id")
        Devices.update({Devices.deleted: 1}).where(Devices.id == id).execute()
        device = Devices.select().filter(Devices.id == id).get()
        agent_id = device.agent_id
        if agent_id != 0:
            id = AgentMerchant.select().filter(
                AgentMerchant.id == agent_id).get()
            AgentMerchant.update({
                AgentMerchant.device_count:
                int(id.device_count) - 1
            }).where(AgentMerchant.id == id).execute()
        return response.redirect('/agent_device/list')
示例#26
0
async def excel_upload(request):
    if request.method == 'GET':
        return jinja.render("admin/excel.html", request)
    else:
        cookie = request.cookies.get("user")
        user = get_cookies(AGENT_COOKIE_TOKEN, cookie)
        user_id = user.get("id")

        img_file = request.files.get('ytofile')
        if img_file:
            file_parameters = {
                'body': img_file.body,
                'name': img_file.name,
                'type': img_file.type,
            }
            filename = img_file.name
            f = open(filename, 'wb')
            f.write(img_file.body)
            f.close()
            # 只能读不能写
            book = xlrd.open_workbook(filename)  # 打开一个excel
            sheet = book.sheet_by_index(0)  # 根据顺序获取sheet

            if not user.get('is_admin'):
                balance = Balance.get(Balance.user_id == user_id)
                if balance and balance.amount < 1.8 * sheet.nrows:
                    return response.html(
                        '<html><center><h1>余额不足,请充值   <a href="/balance/add">点击充值</a></h1></center></html>'
                    )
            fail = []
            level_proce = ""
            area = SendAddress.get(SendAddress.user_id == user_id,
                                   SendAddress.deleted == 0)
            for i in range(sheet.nrows):
                if i == 0:
                    continue
                row_values = sheet.row_values(i)
                if area and not row_values[0]:
                    name = area.sender_name
                else:
                    name = row_values[0]
                if area and not row_values[1]:
                    mobile = area.sender_mobile
                else:
                    mobile = row_values[1]
                if area and not row_values[2]:
                    prov = area.sender_prov
                else:
                    prov = row_values[2]
                if area and not row_values[3]:
                    city = area.sender_city
                else:
                    city = row_values[3]
                if area and not row_values[4]:
                    address = area.sender_address
                else:
                    address = row_values[4]
                sender = {
                    "name": name,
                    "mobile": mobile,
                    "prov": prov,
                    "city": city,
                    "address": address
                }
                recive = {
                    "name": row_values[5],
                    "mobile": row_values[6],
                    "prov": row_values[7],
                    "city": row_values[8],
                    "address": row_values[9]
                }
                items = [{
                    "itemName": row_values[10],
                    "number": int(row_values[11]),
                    "itemValue": row_values[12]
                }]
                weight = row_values[13]
                order_id = str(int(time.time() * 1000000)) + str(
                    random.randint(10, 1000))
                data = {
                    'clientID': config.get('ClientID'),
                    'logisticProviderID': 'YTO',
                    'customerId': config.get('ClientID'),
                    'txLogisticID': order_id,
                    'tradeNo': '',
                    'orderType': 1,
                    'serviceType': 0,
                    'itemsWeight': 0.0,
                    'flag': 0,
                    'goodsValue': 0,
                    'special': 0,
                    'insuranceValue': 0.0,
                    'totalServiceFee': 0.0,
                    'codSplitFee': 0.0
                }
                data.update({
                    "sender": sender,
                    "receiver": recive,
                    'items': items
                })
                xml_body = dicttoxml(data,
                                     root=True,
                                     custom_root=custom_root,
                                     attr_type=False)
                xml_body = xml_body.decode().replace(
                    '<?xml version="1.0" encoding="UTF-8" ?>', '')
                data_digest = signatral(xml_body, config.get('ClientSec'))
                params = {
                    'clientId': config.get('ClientID'),
                    'data_digest': data_digest,
                    'logistics_interface': xml_body
                }
                config.get('UrlOrder') + '?' + urllib.parse.urlencode(params)
                res = requests.post(
                    config.get('UrlOrder') + '?' +
                    urllib.parse.urlencode(params))
                content = res.text
                res_data = xmltodict.parse(content)
                level = request.app.user.get('level', 0)
                if level == 1:
                    level_proce = 1.8
                if level == 2:
                    level_proce = 1.5
                if res_data.get('Response').get('success') in ('true', True):
                    address = res_data['Response'].pop('distributeInfo')
                    res_data = dict(res_data['Response'].items())
                    res_data.update({'distributeInfo': dict(address)})
                    res_data.update(data)
                    kargs = {
                        'user_id':
                        user_id,
                        'logisticProviderID':
                        res_data.get('logisticProviderID', ''),
                        'txLogisticID':
                        res_data.get('txLogisticID', ''),
                        'clientID':
                        res_data.get('clientID', ''),
                        'mailNo':
                        res_data.get('mailNo', ''),
                        'customerId':
                        res_data.get('customerId', ''),
                        'tradeNo':
                        res_data.get('tradeNo', ''),
                        'orderType':
                        res_data.get('orderType', ''),
                        'serviceType':
                        res_data.get('serviceType', ''),
                        'itemsWeight':
                        res_data.get('itemsWeight', ''),
                        'flag':
                        res_data.get('flag', ''),
                        'goodsValue':
                        res_data.get('goodsValue', ''),
                        'special':
                        res_data.get('special', ''),
                        'insuranceValue':
                        res_data.get('insuranceValue', ''),
                        'totalServiceFee':
                        res_data.get('totalServiceFee', ''),
                        'codSplitFee':
                        res_data.get('codSplitFee', ''),
                        'sender_name':
                        res_data.get('sender').get('name', ''),
                        'sender_mobile':
                        str(int(res_data.get('sender').get('mobile', ''))),
                        'sender_prov':
                        res_data.get('sender').get('prov', ''),
                        'sender_city':
                        res_data.get('sender').get('city', ''),
                        'sender_address':
                        res_data.get('sender').get('address', ''),
                        'recive_name':
                        res_data.get('receiver').get('name', ''),
                        'recive_mobile':
                        str(int(res_data.get('receiver').get('mobile', ''))),
                        'recive_prov':
                        res_data.get('receiver').get('prov', ''),
                        'recive_city':
                        res_data.get('receiver').get('city', ''),
                        'recive_address':
                        res_data.get('receiver').get('address', ''),
                        'items':
                        "名称:{}-数量:{}-价值:{}".format(items[0]["itemName"],
                                                   items[0]["number"],
                                                   items[0]["itemValue"]),
                        "weight":
                        weight,
                        "price":
                        level_proce
                    }
                    UserLogistic.create(**kargs)
                    if not user.get('is_admin'):
                        old_balance = Balance.get(Balance.user_id == user_id)
                        Balance().update({
                            Balance.amount:
                            old_balance.amount - level_proce
                        }).where(Balance.user_id == user_id).execute()

                    # 佣金操作
                    order_user = Users.get(Users.id == user_id)
                    if order_user.agent_id != 0:
                        once_amount = level_proce * 0.05
                        detail = "你邀请ID为{}的下单奖励".format(user_id)
                        Commission().create(user_id=order_user.agent_id,
                                            from_user_id=user_id,
                                            once_amount=once_amount,
                                            detail=detail)
                        agent_old_balance = Balance.get(
                            Balance.user_id == order_user.agent_id)
                        Balance().update({
                            Balance.commission:
                            agent_old_balance.commission + once_amount
                        }).where(
                            Balance.user_id == order_user.agent_id).execute()
                    # if request.form.get('weight', ''):
                    #     paramSetWeight = {'waybillNo': order_id, 'weight':weight, 'customerCode': config.get('ClientID'),
                    #                       'clientId': config.get('WeightSec')}
                    #     req = requests.get(config.get('UrlWeight'), params=paramSetWeight)
                    #     w_text = req.texts
                else:
                    fail.append(i + 1)
            if fail:
                return text('失败行数')
            else:
                return text('全部执行成功')

        else:
            return text('没有上传文件')