def get(self):
        parser = RequestParser(trim=True)
        parser.add_argument('order_no', type=int)
        args = parser.parse_args(strict=True)

        # cost_detail = db.session.query(OnlineTradeConfirmDao).filter(OnlineTradeConfirmDao.order_no==1567578191100112352).first()
        cost_detail = db.session.query(OnlineTradeConfirmDao).filter(
            OnlineTradeConfirmDao.order_no == args['order_no']).first()
        result = []
        result.append({
            "id":
            cost_detail.id,
            "order_no":
            cost_detail.order_no,
            "bank_order_no":
            cost_detail.bank_order_no,
            "amount":
            float(keep_two_del(cost_detail.amount)),
            "cost_service":
            float(keep_two_del(cost_detail.cost_service)),
            "cost_agent":
            float(keep_two_del(cost_detail.cost_agent))
        })

        return result
Exemple #2
0
    def get(self):
        m_args = onlinetradesParsers.parse_args(strict=True)
        critern = set()
        if g.current_member:
            username = g.current_member.username
        else:
            return {'success': False, 'errorCode': 402, 'errorMsg': '请登录'}
        if int(g.current_member.type) == 4:
            critern.add(MerchantDao.parent_name == g.current_member.username)
        if m_args['username'] is not None:
            critern.add(DfTradeDao.mer_username == m_args['username'])
        if m_args['parents_name'] is not None:
            res = db.session.query(DfAgentRate.mer_username).filter(
                DfAgentRate.agent_name == m_args['parents_name']).all()
            result = []
            for i in res:
                result.append(i[0])
            critern.add(DfTradeDao.mer_username.in_(result))
        if m_args['org_order_no'] is not None:
            critern.add(DfTradeDao.org_order_no == m_args['org_order_no'])
        if m_args['amount_max'] is not None:
            critern.add(DfTradeDao.amount <= m_args['amount_max'])
        if m_args['amount_min'] is not None:
            critern.add(DfTradeDao.amount >= m_args['amount_min'])
        if m_args['state'] is not None:
            critern.add(DfTradeDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(DfTradeDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(DfTradeDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(DfTradeDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(DfTradeDao.audit_time <= m_args['end_time_au'])

        res = getOnlineDataTotal(critern)
        result = []
        for items in res:

            if items.sxf is not None:
                sxf = float('%.2f' % keep_two_del(items.sxf))
            else:
                sxf = 0

            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0

            result.append({
                "amounttotal": amount,
                "sxftotal": sxf,
            })

        return make_response(result)
Exemple #3
0
    def get(self):
        m_args = dfagentskkparser.parse_args(strict=True)
        critern = set()
        critern_xinyong = set()
        critern_sxf = set()
        if m_args['username'] is not None:
            critern.add(DfAgentRate.agent_name == m_args['username'])
        if m_args['state'] is not None:
            critern_xinyong.add(DfTradeDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern_xinyong.add(DfTradeDao.action_time >= m_args['begin_time'])
            critern_sxf.add(DfTradeSxfDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern_xinyong.add(DfTradeDao.action_time <= m_args['end_time'])
            critern_sxf.add(DfTradeSxfDao.action_time <= m_args['end_time'])
        res_args = DfAgentsResportsSer().get_kk(
            critern=critern,
            critern_xinyong=critern_xinyong,
            critern_sxf=critern_xinyong,
            page=m_args['page'],
            per_page=m_args['page_size'])
        result = []
        for res in res_args.items:
            if res.agent_name is None:
                continue
            if res.number is not None:
                number = int(res.number)
            else:
                number = 0

            if res.amount is not None:
                amount = float('%.2f' % keep_two_del(res.amount))
            else:
                amount = 0

            if res.sxf is not None:
                sxf = float('%.2f' % keep_two_del(res.sxf))
            else:
                sxf = 0
            result.append({
                'agent_name': res.agent_name,
                'number': number,
                'amount': amount,
                'sxf': sxf,
            })

        return make_response(result,
                             page=res_args.page,
                             pages=res_args.pages,
                             total=res_args.total)
Exemple #4
0
    def put(self):
        m_args = refulationParsers.parse_args(strict=True)
        res = getdate()
        if res is None:
            res = insert()
        id = res.id
        m_args['id'] = id
        up = update(m_args)
        res = getdate()
        result = []
        if res.large_limit_lower is not None:
            large_limit_lower = float('%.2f' % keep_two_del(res.large_limit_lower))
        else:
            large_limit_lower = 0

        if res.large_limit_upper is not None:
            large_limit_upper = float('%.2f' % keep_two_del(res.large_limit_upper))
        else:
            large_limit_upper = 0

        if res.small_limit_lower is not None:
            small_limit_lower = float('%.2f' % keep_two_del(res.small_limit_lower))
        else:
            small_limit_lower = 0

        if res.small_limit_upper is not None:
            small_limit_upper = float('%.2f' % keep_two_del(res.small_limit_upper))
        else:
            small_limit_upper = 0

        if res.perday_income is not None:
            perday_income = float('%.2f' % keep_two_del(res.perday_income))
        else:
            perday_income = 0
        result.append({
            "id": res.id if res else None,
            "agents": res.agents if res else None,
            "stop_service": res.stop_service if res else None,
            "exempt": res.exempt if res else None,
            "notify_times": res.notify_times if res else None,
            "pay_times": res.pay_times if res else None,
            "pay_url_times": res.pay_url_times if res else None,
            "perday_income": perday_income,
            "repetition_time": res.repetition_time if res else None,
            "large_limit_lower": large_limit_lower,
            "large_limit_upper": large_limit_upper,
            "small_limit_lower": small_limit_lower,
            "small_limit_upper": small_limit_upper
        })
        return make_response(result)
    def get(self):
        critern = set()
        zeroPoint = int(time.time()) - int(time.time() - time.timezone) % 86400
        shijiancuo = int(time.time())
        if g.current_member:
            username = g.current_member.username
            critern.add(DfTradeDao.mer_username == username)
            critern.add(DfTradeDao.state == 2)
            critern.add(zeroPoint <= DfTradeDao.action_time)
            critern.add(DfTradeDao.action_time <= shijiancuo)

        else:
            return {'success': False, 'errorCode': 402, 'errorMsg': '请登录'}
        res = tongji(critern)
        times = res[0][0]
        real_amount_sum = res[0][1]
        result = []

        data = {}
        data['number_day'] = times
        data["sum_amount_day"] = float('%.2f' % keep_two_del(real_amount_sum))

        # 今天日期
        today = datetime.date.today()
        # 昨天时间
        yesterday = today - datetime.timedelta(days=1)
        # 昨天开始时间戳
        yesterday_start_time = int(
            time.mktime(time.strptime(str(yesterday), '%Y-%m-%d')))
        # 昨天完成时间戳
        yesterday_end_time = int(
            time.mktime(time.strptime(str(today), '%Y-%m-%d'))) - 1
        args = db.session.query(
            func.coalesce(
                func.count(
                    DfTradeDao.mer_username == g.current_member.username),
                0).label('times'),
            func.coalesce(func.sum(
                DfTradeDao.amount), 0).label('real_amount_sum')).filter(
                    yesterday_start_time <= DfTradeDao.action_time,
                    DfTradeDao.mer_username == username, DfTradeDao.state == 2,
                    DfTradeDao.action_time <= yesterday_end_time).all()
        ytimes = args[0][0]
        yreal_amount_sum = args[0][1]
        data['number_yes'] = ytimes
        data["sum_amount_yes"] = float('%.2f' % keep_two_del(yreal_amount_sum))
        result.append(data)
        return make_response(result)
Exemple #6
0
    def put(self, code):
        m_args = agentsparserput.parse_args()
        m_args['code'] = code
        args = UpdataData(m_args)
        result = []
        for items in args:

            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' %
                                      keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                "code": items.code,
                "username": items.username,
                "type": items.type,
                "wrdraw_amount": wrdraw_amount,
                "parent_code": items.parent_code,
                "rate": items.rate,
                "level": items.level,
                "state": items.state,
                "mobilephone": items.mobilephone,
                "email": items.email,
                "name": items.name,
                "remark": items.remark,
                "default_level": items.default_level,
                "levelname": items.levelname,
                "isShowRate": False,
                "isShowNum": False,
                "actionTime": items.actionTime
            })

        return make_response(result)
Exemple #7
0
    def post(self):
        m_args = agentsparserpost.parse_args(strict=True)
        if m_args['username'] is None:
            return {'errorMsg': "用户名不能为空"}
        if m_args['rate'] is None:
            return {'errorMsg': "费率不能为空"}

        mem = db.session.query(MerchantDao.username).filter(
            MerchantDao.username == m_args['username']).first()
        if mem is not None:
            return jsonify({
                'success': False,
                'errorCode': 403,
                'errorMsg': '该商户/代理已存在'
            })

        res = insertData(m_args)
        result = []
        for items in res:
            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' %
                                      keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                "code": items.code,
                "username": items.username,
                "type": items.type,
                "parent_code": items.parent_code,
                "rate": items.rate,
                "secret_key": items.secret_key,
                "amount": amount,
                "level": items.level,
                "state": items.state,
                "default_level": items.default_level,
                "wrdraw_amount": wrdraw_amount,
                "isShowRate": False,
                "isShowNum": False,
                "actionTime": items.actionTime
            })

        return make_response(result)
Exemple #8
0
    def get(self):
        res = getdate()
        result = []
        if res.large_limit_lower is not None:
            large_limit_lower = float('%.2f' % keep_two_del(res.large_limit_lower))
        else:
            large_limit_lower = 0

        if res.large_limit_upper is not None:
            large_limit_upper = float('%.2f' % keep_two_del(res.large_limit_upper))
        else:
            large_limit_upper = 0

        if res.small_limit_lower is not None:
            small_limit_lower = float('%.2f' % keep_two_del(res.small_limit_lower))
        else:
            small_limit_lower = 0

        if res.small_limit_upper is not None:
            small_limit_upper = float('%.2f' % keep_two_del(res.small_limit_upper))
        else:
            small_limit_upper = 0

        if res.perday_income is not None:
            perday_income = float('%.2f' % keep_two_del(res.perday_income))
        else:
            perday_income = 0
        result.append({
            "id": res.id if res else None,
            "agents": res.agents if res else None,
            "stop_service": res.stop_service if res else None,
            "exempt": res.exempt if res else None,
            "notify_times": res.notify_times if res else None,
            "pay_times": res.pay_times if res else None,
            "pay_url_times": res.pay_url_times if res else None,
            "perday_income":perday_income,
            "repetition_time": res.repetition_time if res else None,
            "large_limit_lower": large_limit_lower,
            "large_limit_upper": large_limit_upper,
            "small_limit_lower": small_limit_lower,
            "small_limit_upper": small_limit_upper
        })
        return make_response(result)
Exemple #9
0
 def get(self):
     mer_code = '155fe8ce7e4e42efa72d2e2b45809194'
     result = self.calculation_amount(mer_code)
     sxf = 0
     for res in result:
         sxf_g = decimal.Decimal(str(res['sxf_g']))
         sxf_q = decimal.Decimal(str(res['sxf']))
         am = sxf_g + sxf_q
         sxf += am
     sxf = float('%.2f' % keep_two_del(sxf))
     return sxf
Exemple #10
0
    def put(self,id):
        m_args = MerChantparserPut.parse_args(strict=True)
        m_args['id'] = id
        args = UpdataData(m_args)
        result = []
        for items in args:
            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                "id": items.id,
                "code": items.code,
                "username": items.username,
                "type": items.type,
                "parent_code": items.parent_code,
                "parent_name": items.parent_name,
                "rate": items.rate,
                "secret_key": items.secret_key,
                "amount": amount,
                "wrdraw_amount": wrdraw_amount,
                "level": items.level,
                "state": items.state,
                "mobilephone": items.mobilephone,
                "email": items.email,
                "name": items.name,
                "remark": items.remark,
                "default_level": items.default_level,
                "isShowRate": False,
                "levelname": items.levelname
            })

        return make_response(result)
Exemple #11
0
    def get(self):
        m_args = getwithdrawalparser.parse_args(strict=True)
        critern = set()
        if m_args['username'] is not None:
            critern.add(DfTradeRechargeDao.username == m_args['username'])
        if m_args['action_begin_time'] is not None:
            critern.add(
                DfTradeRechargeDao.action_time >= m_args['action_begin_time'])

        if m_args['action_end_time'] is not None:
            critern.add(
                DfTradeRechargeDao.action_time <= m_args['action_end_time'])

        if m_args['audit_begin_time'] is not None:
            critern.add(
                DfTradeRechargeDao.audit_time >= m_args['audit_begin_time'])

        if m_args['audit_end_time'] is not None:
            critern.add(
                DfTradeRechargeDao.audit_time <= m_args['audit_end_time'])

        if m_args['state'] is not None:
            critern.add(DfTradeRechargeDao.state == m_args['state'])

        args = DfGetCreditSer.get_data(self, critern, m_args['page'],
                                       m_args['page_size'])
        result = []
        for i in args.items:
            if i.amount is not None:
                amount = float('%.2f' % keep_two_del(i.amount))
            else:
                amount = 0

            result.append({
                'id': i.id,
                'order_no': i.order_no,
                'amount': amount,
                'real_amount': amount,
                'action_time': i.action_time,
                'audit_time': i.audit_time,
                'audit_name': i.audit_name,
                'state': i.state,
                'username': i.username,
                'remark': i.remark,
            })
        return make_response(result,
                             page=args.page,
                             pages=args.pages,
                             total=args.total)
Exemple #12
0
    def get(self):
        critern = set()
        if g.current_member:
            username = g.current_member.username
        else:
            return {'success': False, 'errorCode': 402, 'errorMsg': '请登录'}
        res = db.session.query(
            (MerchantDao.amount -
             MerchantDao.wrdraw_amount).label('kyamount')).filter(
                 MerchantDao.username == username).first()
        if res is not None:
            if res.kyamount is not None:
                res = float('%.2f' % keep_two_del(res.kyamount))
            else:
                res = 0
        else:
            res = 0

        return {'kyamount': res}
    def get(self):
        statisticalParsers = RequestParser(trim=True)
        statisticalParsers.add_argument('page', type=int, default=DEFAULT_PAGE)
        statisticalParsers.add_argument('page_size', type=int, default=DEFAULT_PAGE_SIZE)
        statisticalParsers.add_argument('user_name', type=str)
        statisticalParsers.add_argument('begin_time', type=int)
        statisticalParsers.add_argument('end_time', type=int)
        m_args = statisticalParsers.parse_args(strict=True)

        critern = set()
        if m_args['user_name'] is not None:
            critern.add(OnlinetradesDao.user_name == m_args['user_name'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])

        critern_w = set()
        # if m_args['order_no'] is not None:
        #     critern_w.add(WithdrawDao.order_no == m_args['order_no'])
        if m_args['user_name'] is not None:
            critern_w.add(WithdrawDao.user_name == m_args['user_name'])
        if m_args['begin_time'] is not None:
            critern_w.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern_w.add(WithdrawDao.action_time <= m_args['end_time'])

        if g.current_member:
            username = g.current_member.username
            res_merchant = db.session.query(MerchantDao).filter(MerchantDao.username==username).first()
            res_merchant_list = db.session.query(MerchantDao).filter(MerchantDao.parent_name==username).all()
            res_list = []
            for i in res_merchant_list:
                res_list.append(i.code)

            if res_merchant.type==2:
                res_total = db.session.query(
                    OnlinetradesDao.mer_code,
                    OnlinetradesDao.user_name,
                    func.sum(OnlinetradesDao.bank_amount).label('amount'),
                    func.sum(OnlinetradesDao.real_cost_agent).label('real_cost_agent')
                ).filter(*critern, OnlinetradesDao.state==2).group_by(OnlinetradesDao.mer_code, OnlinetradesDao.user_name).all()

                res_total_list = []
                for i in res_total:
                    if i.mer_code in res_list:
                        res_total_list.append(i)

                result = []
                for data in res_total_list:

                    result.append({
                        "user_name": data.user_name,
                        "total_amount": float(keep_two_del(data.amount)),  # 交易金额
                        "cost_agent": float(keep_two_del(data.real_cost_agent))  # 代理费
                    })
                return make_response(result)
            else:
                return {'success': False, 'errorMsg': '您不是代理'}
        else:
            return {
                'success': False,
                'errorCode': 402,
                'errorMsg': '请登录'
            }
    def queryDetail(self):
        try:
            self.__merchantDao = getDataByCode(self.__args_up['mer_code'])
            if not self.__merchantDao:
                self.success = False
                self.error_msg = '账户号错误'
                self.error_code = 8101
                return
            self.__tradedataDao = DfTradeDao().get_data_state1(
                self.__merchantDao.code, self.__args_up['org_order_no'])
            m_size = len(self.__tradedataDao)
            if m_size != 1:
                self.success = False
                self.error_msg = '订单号错误'
                self.error_code = 8102
                agentpayQuerylogger.info("订单号错误 : %s" %
                                         (self.__args_up['org_order_no']))
                return
            sign = self.__args_up.pop('sign')
            m_sign = self.credit_sign(self.__args_up,
                                      self.__merchantDao.secret_key)
            m_sign = self.get_sign(m_sign)
            if m_sign != sign:
                self.success = False
                self.error_msg = '签名不正确'
                self.error_code = 8103
                agentpayQuerylogger.info("签名不正确 .%s,%s" % (sign, m_sign))
                return
            audit_time = int(time.time())
            trade = self.__tradedataDao[0]
            m_result = {}
            m_result['mer_code'] = self.__args_up['mer_code']
            m_result['order_no'] = trade.order_no
            m_result['org_order_no'] = trade.org_order_no
            m_result['state'] = trade.state
            m_result['audit_time'] = trade.audit_time
            m_result['amount'] = str(keep_two_del(trade.amount))
            m_result['sxf'] = str(keep_two_del(trade.real_sxf))
            m_sign = self.credit_sign(m_result, self.__merchantDao.secret_key)
            m_sign = self.get_sign(m_sign)
            m_result['sign'] = m_sign
            return m_result
#             if trade.state == 1:
#                 self.____subdataDao = DfSubData().get_data()
#                 df_query_url =  self.____subdataDao.query_url
#                 df_query_skey =  self.____subdataDao.select_key
#                 df_quer_mcode =  self.____subdataDao.code
#                 agentpayQuerylogger.info("%s 订单号查询"%(trade.order_no))
#                 mdata = {}
#                 mdata['mchntCd'] = df_quer_mcode
#                 mdata['mchntPayforSsn'] = trade.order_no
#                 mstr = "mchntCd=%s&mchntPayforSsn=%s%s"%(df_quer_mcode,trade.order_no,df_query_skey)
#                 mdata['sign'] = self.get_sign(mstr)
#                 #代付交易查询
#                 agentpayQuerylogger.info("向下游发送查询请求")
#                 res_json = self.cash_post(mdata, df_query_url)
#                 res_sign = res_json.pop('sign')
#                 m_sign = self.credit_sign(res_json, df_query_skey)
#                 m_sign = self.get_sign(m_sign)
#                 if res_sign != m_sign:
#                     raise Exception('下游接口验签失败  :  res_sign = %s , m_sign = %s'%(res_sign,m_sign))
#                 #判断交易状态是否更新
#                 if int(res_json['paySt']) == trade.state or int(res_json['paySt'] == 0) :
#                     agentpayQuerylogger.error("%s订单状态没有改变,不需要更新"%(trade.order_no))
#                 else:
#                     agentpayQuerylogger.error("%s订单状态改变,进行更新"%(trade.order_no))
#                     self.insert_query_detail(res_json, trade, audit_time)
#                     self.update(res_json, trade, audit_time)
#             m_result = {}
#             m_result['mer_code'] = self.__args_up['mer_code']
#             m_result['order_no'] = trade.order_no
#             m_result['org_order_no'] = trade.org_order_no
#             m_result['state'] = trade.state
#             m_result['audit_time'] = trade.audit_time
#             m_result['amount'] = str(keep_two_del(trade.amount))
#             m_result['sxf'] = str(keep_two_del(trade.real_sxf))
#             m_sign = self.credit_sign(m_result, self.__merchantDao.secret_key)
#             m_sign = self.get_sign(m_sign)
#             m_result['sign'] = m_sign
#             return m_result
        except Exception as e:
            agentpayQuerylogger.exception(e)
            agentpayQuerylogger.error(format(e))
            self.success = False
            self.error_msg = '代付通道维护'
            self.error_code = 8199
            return
Exemple #15
0
    def post(self):
        m_args = MerChantparserPost.parse_args(strict=True)
        if m_args['username'] is None:
            return jsonify({
                'success': False,
                'errorCode': 403,
                'errorMsg': '用户名不能为空'
            })
        if m_args['level'] is None:
            return jsonify({
                'success': False,
                'errorCode': 403,
                'errorMsg': '会员等级不能为空'
            })
        mem = db.session.query(MerchantDao.username).filter(MerchantDao.username == m_args['username']).first()
        if mem is not None:
            return jsonify({
                'success': False,
                'errorCode': 403,
                'errorMsg': '该商户/代理已存在'
            })

        res = insertData(m_args)
        if res:
            if res['success'] is False:
                return {
                    'success': False,
                    'errorCode': 403,
                    'errorMsg': '该代理不存在/已关闭'
                }
        args = getDate(page=m_args['page'],per_page=m_args['page_size'])
        result = []
        for items in args.items:
            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                        "id": items.id,
                        "code":items.code,
                        "username":items.username,
                        "type":items.type,
                        "parent_code":items.parent_code,
                        "parent_name": items.parent_name,
                        "rate":items.rate,
                        "secret_key":items.secret_key,
                        "amount":amount,
                        "wrdraw_amount": wrdraw_amount,
                        "level":items.level,
                        "state":items.state,
                        "mobilephone":items.mobilephone,
                        "email":items.email,
                        "name":items.name,
                        "remark":items.remark,
                        "default_level":items.default_level,
                        "isShowRate": False,
                        "levelname": items.levelname
                    })

        return make_response(result,page=args.page, pages=args.pages, total=args.total)
Exemple #16
0
	def receive_withdrawal(self, m_args):
		try:
			m_args['amount'] = decimal.Decimal(m_args['amount'])
			if self.context_merchart is not None:
				mem = self.context_merchart
				if mem.type != 3:
					return {
						'success': False,
						'errorCode': 8002,
						'errorMsg': '商户编号错误'
					}
			else:
				return {
					'success': False,
					'error_code': 8002,
					'error_msg': '商户编号错误'
				}

			select_key = self.context_merchart.secret_key
			order_no = creat_order_no(8001, self.context_subdata.id)
			sxf = self.calculation_amount_sum(m_args['mer_code'], m_args['amount'])
			if mem.amount < m_args['amount'] + sxf:
				return {
					'success': False,
					'error_code': 8003,
					'error_msg': '余额不足'
				}
			state = 1
			m_str = ''
			args = {}
			bank_args = {}
			bank_args['order_no'] = order_no

			bank_args['org_order_no'] = m_args['org_order_no']
			bank_args['state'] = state
			sign = m_args.pop('sign')
			for k in sorted(m_args):
				args[k] = m_args[k]
				if m_args[k] is not None:
					m_str += '%s=%s&' % (k, m_args[k])
			m_str = m_str[:-1]
			m_str += select_key
			m_sign = self.get_sign(m_str)
			agentpaylogger.info('上游加密字符串:%s' % m_str)
			agentpaylogger.info('上游请求sign:%s' % sign)
			agentpaylogger.info('上游加密sign:%s' % m_sign)
			if m_sign == sign:
				m_args['order_no'] = order_no
				m_args['mem_amount'] = mem.amount
				m_args['mer_username'] = mem.username
				m_args['dongjie_amount'] = mem.dongjie_amount
				m_args['sxf'] = sxf
				in_service = self.insert_cash_reservice(m_args)
				data_args = {}
				data_args['mchntCd'] = self.context_subdata.code
				data_args['mchntPayforSsn'] = order_no
				data_args['cardName'] = m_args['name']
				data_args['cardNo'] = m_args['account_number']
				data_args['destAmount'] = float('%.2f' % keep_two_del(decimal.Decimal(m_args['amount']))) * 100
				data_args['bankCd'] = self.__bankcard
				if in_service is not None:
					return in_service
				data = {}
				data['order_no'] = order_no
				data['org_order_no'] = m_args['org_order_no']
				data['state'] = 1
				m_str = ''
				for k in sorted(data):
					if data[k] is not None:
						m_str += '%s=%s&' % (k, data[k])
				m_str = m_str[:-1]
				m_str += select_key
				m_sign_bank = self.get_sign(m_str)
				data['sign'] = m_sign_bank
				try:
					db.session.commit()
				except Exception as e:
					db.session.rollback()
					db.session.remove()
					agentpaylogger.error(e)
					agentpaylogger.exception(e)
					return {
						'success': False,
						'error_code': 8001,
						'error_msg': '代付失败'
					}
				return {
 					'success': True,
 					'data': data
 				}
# 				res = self.cash_withdrawal(data_args)
# 				if res is not None:
# 					if res['success'] == True:
# 						m_str_bank = ''
# 						for k in sorted(bank_args):
# 							if bank_args[k] is not None:
# 								m_str_bank += '%s=%s&' % (k, bank_args[k])
# 						m_str_bank = m_str_bank[:-1]
# 						m_str_bank += select_key
# 						m_sign_bank = self.get_sign(m_str_bank)
# 						bank_args['sign'] = m_sign_bank
# 						data = bank_args
# 						return {
# 							'success': True,
# 							'data': data
# 						}
# 					else:
# 						return {
# 							'success': False,
# 							'error_code': 8001,
# 							'error_msg': '代付失败'
# 						}
			else:
				return {
					'success': False,
					'error_code': 8004,
					'error_msg': '签名错误'
				}
		except Exception as e:
			agentpaylogger.exception(e)
			agentpaylogger.error(format(e))
			return {
				'success': False,
				'error_code': 8001,
				'error_msg': '代付失败'
			}
Exemple #17
0
    def get(self,id=None):
        m_args = MerChantparser.parse_args(strict=True)
        critern = set()
        critern.add(MerchantDao.type == 1)
        if id is not None:
            critern.add(MerchantDao.id == id)
        if m_args['mer_code'] is not None:
            critern.add(MerchantDao.code == m_args['mer_code'])
        if m_args['username'] is not None:
            critern.add(MerchantDao.username == m_args['username'])
        if m_args['begin_time'] is not None:
            critern.add(MerchantDao.actionTime >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(MerchantDao.actionTime <= m_args['end_time'])
        if m_args['begin_wrdraw_amount'] is not None:
            critern.add(MerchantDao.wrdraw_amount >= m_args['begin_wrdraw_amount'])
        if m_args['end_wrdraw_amount'] is not None:
            critern.add(MerchantDao.wrdraw_amount <= m_args['end_wrdraw_amount'])
        if m_args['parent_code'] is not None:
            critern.add(MerchantDao.parent_code == m_args['parent_code'])
        if m_args['parent_name'] is not None:
            critern.add(MerchantDao.parent_name == m_args['parent_name'])
        if m_args['state'] is not None:
            critern.add(MerchantDao.state == m_args['state'])
        if m_args['level'] is not None:
            critern.add(MerchantDao.level == m_args['level'])

        res = getDate(critern,m_args['page'],m_args['page_size'])
        result = []
        for items in res.items:
            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                "id": items.id,
                "code": items.code,
                "username": items.username,
                "type": items.type,
                "parent_code": items.parent_code,
                "parent_name": items.parent_name,
                "rate": items.rate,
                "secret_key": items.secret_key,
                "amount": amount,
                "wrdraw_amount": wrdraw_amount,
                "level": items.level,
                "state": items.state,
                "mobilephone": items.mobilephone,
                "email": items.email,
                "name": items.name,
                "remark": items.remark,
                "default_level": items.default_level,
                "isShowRate": False,
                "levelname":items.levelname
            })

        return make_response(result, page=res.page, pages=res.pages, total=res.total)
    def get(self):
        # m_args = agentsparserresportstotal.parse_args(strict=True)

        if g.current_member:
            username = g.current_member.username
        else:
            return {'success': False, 'errorCode': 402, 'errorMsg': '请登录'}

        res_mer = db.session.query(MerchantDao).filter(
            MerchantDao.username == username).first()
        if res_mer.type == 2:

            now = date.today()
            yesterday = now - timedelta(days=1)
            tom = now + timedelta(days=1)
            now_time = int(time.mktime(now.timetuple()))
            yesterday_time = int(time.mktime(yesterday.timetuple()))
            tom_time = int(time.mktime(tom.timetuple()))

            res_merchant_list = db.session.query(MerchantDao).filter(
                MerchantDao.parent_name == username).all()
            res_list = []
            for i in res_merchant_list:
                res_list.append(i.code)

            res_total = db.session.query(
                OnlinetradesDao.mer_code, OnlinetradesDao.user_name,
                func.sum(OnlinetradesDao.bank_amount).label('amount'),
                func.sum(OnlinetradesDao.real_cost_agent).label(
                    'real_cost_agent')).filter(
                        OnlinetradesDao.state == 2,
                        OnlinetradesDao.audit_time.between(
                            yesterday_time, now_time)).group_by(
                                OnlinetradesDao.mer_code,
                                OnlinetradesDao.user_name).all()

            res_total_list = []
            for i in res_total:
                if i.mer_code in res_list:
                    res_total_list.append(i)
            res_total_list_1 = tupinlist(res_total_list)

            res_total_n = db.session.query(
                OnlinetradesDao.mer_code, OnlinetradesDao.user_name,
                func.sum(OnlinetradesDao.bank_amount).label('amount'),
                func.sum(OnlinetradesDao.real_cost_agent).label(
                    'real_cost_agent')).filter(
                        OnlinetradesDao.state == 2,
                        OnlinetradesDao.audit_time.between(
                            now_time, tom_time)).group_by(
                                OnlinetradesDao.mer_code,
                                OnlinetradesDao.user_name).all()

            res_total_list_n = []
            for i in res_total_n:
                if i.mer_code in res_list:
                    res_total_list_n.append(i)
            res_total_list_2 = tupinlist(res_total_list_n)

            data_list = [Decimal(0), Decimal(0), Decimal(0), Decimal(0)]
            for i in res_total_list_1:
                data_list[0] += i[2]
                data_list[1] += i[3]

            for i in res_total_list_2:
                data_list[2] += i[2]
                data_list[3] += i[3]

            agent_amount = db.session.query(MerchantDao.amount).filter(
                MerchantDao.username == username).scalar()
            data_list.append(agent_amount)

            result = []
            result.append({
                "y_total_amount": float(keep_two_del(data_list[0])),  # 昨日交易金额
                "y_cost_agent": float(keep_two_del(data_list[1])),  # 昨日代理费
                "n_total_amount": float(keep_two_del(data_list[2])),  # 今日交易金额
                "n_cost_agent": float(keep_two_del(data_list[3])),  # 今日代理费
                "amount": float(keep_two_del(data_list[4]))
            })
            return make_response(result)

        else:
            return {'success': False, 'errorMsg': "您不是代理"}
Exemple #19
0
    def get(self, id=None):
        parser = RequestParser(trim=True)
        parser.add_argument('begin_audit_time', type=int)
        parser.add_argument('end_audit_time', type=int)

        parser.add_argument('order_no', type=str)
        parser.add_argument('state', type=int)
        parser.add_argument('page', type=int, default=DEFAULT_PAGE)
        parser.add_argument('page_size', type=int, default=DEFAULT_PAGE_SIZE)
        parser.add_argument('begin_time_au', type=int)
        parser.add_argument('end_time_au', type=int)
        args = parser.parse_args()
        critern = set()

        if args['state'] is not None:
            critern.add(BankTradeDao.state == args['state'])

        if args['begin_audit_time'] is not None:
            critern.add(BankTradeDao.action_time >= args['begin_audit_time'])

        if args['end_audit_time'] is not None:
            critern.add(BankTradeDao.action_time <= args['end_audit_time'])

        if args['order_no'] is not None:
            critern.add(BankTradeDao.order_no == args['order_no'])

        if args['begin_time_au'] is not None:
            critern.add(BankTradeDao.audit_time >= args['begin_time_au'])

        if args['end_time_au'] is not None:
            critern.add(BankTradeDao.audit_time <= args['end_time_au'])

        res = get_data(critern, args['page'], args['page_size'])
        result = []
        for item in res.items:
            if item.amount is not None:
                amount = float('%.2f' % keep_two_del(item.amount))
            else:
                amount = 0
            result.append({
                'id': item.id,
                'order_no': item.order_no,
                'amount': amount,
                'action_time': item.action_time,
                'pay_time': item.pay_time,
                'qr_code': item.qr_code,
                'state': item.state,
                'audit_time': item.audit_time,
            })
        query = db.session.query(
            func.sum(BankTradeDao.amount).label('sumamount')).filter(
                *critern).first()
        print(query)
        if query.sumamount is not None:
            total = float('%.2f' % query.sumamount)
        else:
            total = 0
        return make_response(result,
                             page=res.page,
                             pages=res.pages,
                             total=res.total,
                             count=total)
Exemple #20
0
    def get(self):
        m_args = withdrawParsers.parse_args(strict=True)
        critern = set()
        if 'mer_code' in m_args:
            if m_args['mer_code'] is not None:
                critern.add(MerchantDao.username == m_args['mer_code'])
        if 'username' in m_args:
            if m_args['username'] is not None:
                critern.add(WithdrawDao.mer_name == m_args['username'])
        if 'bank_id' in m_args:
            if m_args['bank_id'] is not None:
                critern.add(MerchantBank.bankNumber == m_args['bank_id'])
        if 'bank_account' in m_args:
            if m_args['bank_account'] is not None:
                critern.add(MerchantDao.parent_code == m_args['bank_account'])
        if 'order_no' in m_args:
            if m_args['order_no'] is not None:
                critern.add(WithdrawDao.order_no == m_args['order_no'])
        if 'amount_max' in m_args:
            if m_args['amount_max'] is not None:
                critern.add(WithdrawDao.amount <= m_args['amount_max'])
        if 'amount_min' in m_args:
            if m_args['amount_min'] is not None:
                critern.add(WithdrawDao.amount >= m_args['amount_min'])
        if 'state' in m_args:
            if m_args['state'] is not None:
                critern.add(WithdrawDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(WithdrawDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(WithdrawDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(WithdrawDao.audit_time <= m_args['end_time_au'])
        res = getOnlineData(critern,
                            page=m_args['page'],
                            per_page=m_args['page_size'])
        result = []
        for items in res.items:
            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' %
                                      keep_two_del(items.wrdraw_amount))
            else:
                wrdraw_amount = 0

            if items.paid_amount is not None:
                paid_amount = float('%.2f' % keep_two_del(items.paid_amount))
            else:
                paid_amount = 0
            if items.real_amount is not None:
                real_amount = float('%.2f' % keep_two_del(items.real_amount))
            else:
                real_amount = 0

            if items.cost_sx is not None:
                cost_sx = float('%.2f' % keep_two_del(items.cost_sx))
            else:
                cost_sx = 0

            result.append({
                "mer_code": items.mer_code,
                "username": items.username,
                "order_no": items.order_no,
                "bank_id": items.bank_id,
                "bank_name": items.bank_name,
                "amount": amount,
                "wrdraw_amount": wrdraw_amount,
                "paid_amount": paid_amount,
                "account": items.account,
                "name": items.name,
                "real_amount": real_amount,
                "action_time": items.action_time,
                "audit_time": items.audit_time,
                "cost_sx": cost_sx,
                "state": items.state,
                "remark": items.remark,
                "audit_name": items.audit_name,
                "mer_ip": items.mer_ip
            })
        return make_response(result,
                             page=res.page,
                             pages=res.pages,
                             total=res.total)
    def get(self):
        m_args = agentsparserresports.parse_args(strict=True)
        critern = set()
        critern_name = set()
        critern_wraw = set()
        critern_name.add(MerchantDao.type == 1)

        if g.current_member:
            username = g.current_member.username
            critern_name.add(MerchantDao.parent_name == username)
        else:
            return {'success': False, 'errorCode': 402, 'errorMsg': '请登录'}

        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['end_time'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['state'])

        res = AgentsResportsService()
        q = res.get_data_agents_resports(args=critern,
                                         page=m_args['page'],
                                         per_page=m_args['page_size'],
                                         critern_name=critern_name,
                                         critern_wraw=critern_wraw)

        result = []
        for i in q.items:
            if i.cost_agent is not None:
                cost_agent = float('%.2f' % keep_two_del(i.cost_agent))
            else:
                cost_agent = 0
            if i.cost_agent_completed is not None:
                cost_agent_completed = float(
                    '%.2f' % keep_two_del(i.cost_agent_completed))
            else:
                cost_agent_completed = 0
            if i.cost_agent_hang is not None:
                cost_agent_hang = float('%.2f' %
                                        keep_two_del(i.cost_agent_hang))
            else:
                cost_agent_hang = 0

            if i.wrdraw_amount_completed is not None:
                wrdraw_amount_completed = float(
                    '%.2f' % keep_two_del(i.wrdraw_amount_completed))
            else:
                wrdraw_amount_completed = 0
            if i.wrdraw_amount_hang is not None:
                wrdraw_amount_hang = float('%.2f' %
                                           keep_two_del(i.wrdraw_amount_hang))
            else:
                wrdraw_amount_hang = 0
            if i.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(i.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                'cost_agent': cost_agent,
                'cost_agent_completed': cost_agent_completed,
                'cost_agent_hang': cost_agent_hang,
                'wrdraw_amount_completed': wrdraw_amount_completed,
                'wrdraw_amount_hang': wrdraw_amount_hang,
                'wrdraw_amount': wrdraw_amount,
            })
        return make_response(result, page=q.page, pages=q.pages, total=q.total)
Exemple #22
0
    def get(self):
        statisticalParsers = RequestParser(trim=True)
        statisticalParsers.add_argument('state', type=int)
        statisticalParsers.add_argument('begin_time', type=int)
        statisticalParsers.add_argument('end_time', type=int)
        m_args = statisticalParsers.parse_args(strict=True)

        critern = set()
        critern_jiaoyi = set()
        critern_tx = set()
        critern_xinyong = set()
        critern_df = set()
        critern_sxf = set()
        if m_args['state'] is not None:
            critern_jiaoyi.add(OnlinetradesDao.state == m_args['state'])
            critern_tx.add(WithdrawDao.state == m_args['state'])
            critern_xinyong.add(DfTradeRechargeDao.state == m_args['state'])
            critern_df.add(DfTradeDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern_jiaoyi.add(
                OnlinetradesDao.action_time >= m_args['begin_time'])
            critern_tx.add(WithdrawDao.action_time >= m_args['begin_time'])
            critern_xinyong.add(
                DfTradeRechargeDao.action_time >= m_args['begin_time'])
            critern_df.add(DfTradeDao.action_time >= m_args['begin_time'])
            critern_sxf.add(DfTradeSxfDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern_jiaoyi.add(
                OnlinetradesDao.action_time <= m_args['end_time'])
            critern_tx.add(WithdrawDao.action_time <= m_args['end_time'])
            critern_xinyong.add(
                DfTradeRechargeDao.action_time <= m_args['end_time'])
            critern_df.add(DfTradeDao.action_time <= m_args['end_time'])
            critern_sxf.add(DfTradeSxfDao.action_time <= m_args['end_time'])

        agents_name = db.session.query(RefulationDao.agents).first()
        if agents_name is not None:
            res = db.session.query(DfAgentRate.mer_username).filter(
                DfAgentRate.agent_name == agents_name.agents).all()
            result = []
            for i in res:
                result.append(i[0])
            critern_xinyong.add(DfTradeRechargeDao.username.in_(result))
            critern_df.add(DfTradeDao.mer_username.in_(result))
            critern.add(MerchantDao.parent_name == agents_name.agents)
            critern_sxf.add(
                DfTradeSxfDao.agents_username == agents_name.agents)

        res_args = StaticSer().get_date(critern=critern,
                                        critern_jiaoyi=critern_jiaoyi,
                                        critern_tx=critern_tx,
                                        critern_xinyong=critern_xinyong,
                                        critern_df=critern_df,
                                        critern_sxf=critern_sxf)
        result = []
        for res in res_args:

            if res.xinyong_amount is not None:
                xinyong_amount = float('%.2f' %
                                       keep_two_del(res.xinyong_amount))
            else:
                xinyong_amount = 0

            if res.dfjiaoyi_amount is not None:
                dfjiaoyi_amount = float('%.2f' %
                                        keep_two_del(res.dfjiaoyi_amount))
            else:
                dfjiaoyi_amount = 0

            if res.wraw_amount is not None:
                wraw_amount = float('%.2f' % keep_two_del(res.wraw_amount))
            else:
                wraw_amount = 0

            if res.wrdraw_amount_sxf is not None:
                wrdraw_amount_sxf = float('%.2f' %
                                          keep_two_del(res.wrdraw_amount_sxf))
            else:
                wrdraw_amount_sxf = 0

            if res.jiaoyi_amount is not None:
                jiaoyi_amount = float('%.2f' % keep_two_del(res.jiaoyi_amount))
            else:
                jiaoyi_amount = 0

            if res.jiaoyi_amount_service is not None:
                jiaoyi_amount_service = float(
                    '%.2f' % keep_two_del(res.jiaoyi_amount_service))
            else:
                jiaoyi_amount_service = 0

            if res.jiaoyi_amount_agents is not None:
                jiaoyi_amount_agents = float(
                    '%.2f' % keep_two_del(res.jiaoyi_amount_agents))
            else:
                jiaoyi_amount_agents = 0

            if res.df_sxf is not None:
                df_sxf = float('%.2f' % keep_two_del(res.df_sxf))
            else:
                df_sxf = 0

            if res.sunyi is not None:
                sunyi = float('%.2f' % keep_two_del(res.sunyi))
            else:
                sunyi = 0

            result.append({
                'xinyong_num': res.xinyong_num,
                'xinyong_amount': xinyong_amount,
                'dfjiaoyi_num': res.dfjiaoyi_num,
                'dfjiaoyi_amount': dfjiaoyi_amount,
                'wraw_num': res.wraw_num,
                'wraw_amount': wraw_amount,
                'wrdraw_amount_sxf': wrdraw_amount_sxf,
                'jiaoyi_num': res.jiaoyi_num,
                'jiaoyi_amount': jiaoyi_amount,
                'jiaoyi_amount_service': jiaoyi_amount_service,
                'jiaoyi_amount_agents': jiaoyi_amount_agents,
                'df_sxf': df_sxf,
                'sunyi': sunyi,
            })

        return make_response(result)
Exemple #23
0
    def get(self):
        statisticalParsers = RequestParser(trim=True)
        statisticalParsers.add_argument('page', type=int, default=DEFAULT_PAGE)
        statisticalParsers.add_argument('page_size',
                                        type=int,
                                        default=DEFAULT_PAGE_SIZE)
        statisticalParsers.add_argument('qr_code', type=str)
        statisticalParsers.add_argument('name', type=str)
        statisticalParsers.add_argument('user_name', type=str)
        statisticalParsers.add_argument('state', type=int)
        statisticalParsers.add_argument('begin_time', type=int)
        statisticalParsers.add_argument('end_time', type=int)
        m_args = statisticalParsers.parse_args(strict=True)

        critern = set()
        if m_args['qr_code'] is not None:
            critern.add(OnlinetradesDao.qr_code == m_args['qr_code'])
        if m_args['name'] is not None:
            critern.add(OnlinetradesDao.drawee == m_args['name'])
        if m_args['user_name'] is not None:
            critern.add(OnlinetradesDao.user_name == m_args['user_name'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])

        critern_w = set()
        # if m_args['order_no'] is not None:
        #     critern_w.add(WithdrawDao.order_no == m_args['order_no'])
        if m_args['name'] is not None:
            critern_w.add(WithdrawDao.name == m_args['name'])
        if m_args['user_name'] is not None:
            critern_w.add(WithdrawDao.user_name == m_args['user_name'])
        if m_args['state'] is not None:
            critern_w.add(WithdrawDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern_w.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern_w.add(WithdrawDao.action_time <= m_args['end_time'])

        res_total = db.session.query(
            OnlinetradesDao.mer_code, OnlinetradesDao.user_name,
            func.sum(OnlinetradesDao.amount).label('amount'),
            func.sum(
                OnlinetradesDao.real_cost_service).label('real_cost_service'),
            func.sum(OnlinetradesDao.real_cost_agent).label('real_cost_agent'),
            func.count(OnlinetradesDao.id).label('total_count')).filter(
                *critern).group_by(OnlinetradesDao.mer_code,
                                   OnlinetradesDao.user_name).all()
        res_total_list = tupinlist(res_total)

        res_wq1 = db.session.query(
            OnlinetradesDao.mer_code,
            func.sum(OnlinetradesDao.amount).label('wq_amount'),
            func.count(OnlinetradesDao.id).label('wq_total_count')).filter(
                *critern, OnlinetradesDao.state == 1).group_by(
                    OnlinetradesDao.mer_code).all()
        res_wq1_list = tupinlist(res_wq1)

        res_wq2 = db.session.query(
            WithdrawDao.mer_code,
            func.sum(WithdrawDao.paid_amount).label('w_paid_amount')).filter(
                *critern_w,
                WithdrawDao.state == 1).group_by(WithdrawDao.mer_code).all()
        res_wq2_list = tupinlist(res_wq2)

        res_q1 = db.session.query(
            OnlinetradesDao.mer_code,
            func.sum(OnlinetradesDao.bank_amount).label('q_amount'),
            func.count(OnlinetradesDao.id).label('q_total_count')).filter(
                *critern, OnlinetradesDao.state == 2).group_by(
                    OnlinetradesDao.mer_code).all()
        res_q1_list = tupinlist(res_q1)

        res_q2 = db.session.query(
            WithdrawDao.mer_code,
            func.sum(WithdrawDao.paid_amount).label('q_paid_amount'),
            func.sum(WithdrawDao.wrdraw_amount).label('wrdraw_amount')).filter(
                *critern_w,
                WithdrawDao.state == 2).group_by(WithdrawDao.mer_code).all()
        res_q2_list = tupinlist(res_q2)

        data_1 = data_d1(res_total_list, res_wq1_list)
        data_2 = data_d2(data_1, res_wq2_list)
        data_3 = data_d1(data_2, res_q1_list)
        data_4 = data_d1(data_3, res_q2_list)

        result = []
        for data in data_4:
            if data[3]:
                data_1 = data[3]
            else:
                data_1 = Decimal(0)
            if data[4]:
                data_2 = data[4]
            else:
                data_2 = Decimal(0)
            if data[6]:
                data_3 = data[6]
            else:
                data_3 = Decimal(0)
            if data[9]:
                data_4 = data[9]
            else:
                data_4 = Decimal(0)
            if data[12]:
                data_5 = data[12]
            else:
                data_5 = Decimal(0)
            if data[8]:
                data_6 = data[8]
            else:
                data_6 = Decimal(0)
            if data[11]:
                data_7 = data[11]
            else:
                data_7 = Decimal(0)

            result.append({
                "user_name": data[1],
                "total_amount": float(keep_two_del(data_3 + data_4)),  # 交易金额
                "cost_service": float(keep_two_del(data_1)),  # 服务费
                "cost_agent": float(keep_two_del(data_2)),  # 代理费
                "total_count": data[5],  # 总计
                "wq_amount": float(keep_two_del(data_3)),  # 未确认
                "wq_total_count": data[7],  # 未完成数
                "w_paid_amount": float(keep_two_del(data_6)),  # 代付未完成
                "q_amount": float(keep_two_del(data_4)),  # 确认
                "q_total_count": data[10],  # 已完成数
                "q_paid_amount": float(keep_two_del(data_7)),  # 代付已完成
                "shouxu": float(keep_two_del(data_1 + data_5))
            })

        return make_response(result)
Exemple #24
0
    def get(self):
        m_args = agentsparserresportstotalguanli.parse_args(strict=True)
        del m_args['page']
        del m_args['page_size']
        critern = set()
        critern_name = set()
        critern_wraw = set()
        critern_name.add(MerchantDao.type == 1)
        if m_args['mer_username'] is not None:
            critern_name.add(MerchantDao.parent_name == m_args['mer_username'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['end_time'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['state'])

        res = AgentsResportsService()
        q = res.get_data_agents_resports_total(args=critern,
                                               critern_name=critern_name,
                                               critern_wraw=critern_wraw)

        result = []
        for i in q:
            if i.cost_agent_total is not None:
                cost_agent_total = float('%.2f' %
                                         keep_two_del(i.cost_agent_total))
            else:
                cost_agent_total = 0
            if i.cost_agent_completed_total is not None:
                cost_agent_completed_total = float(
                    '%.2f' % keep_two_del(i.cost_agent_completed_total))
            else:
                cost_agent_completed_total = 0
            if i.cost_agent_hang_total is not None:
                cost_agent_hang_total = float(
                    '%.2f' % keep_two_del(i.cost_agent_hang_total))
            else:
                cost_agent_hang_total = 0

            if i.wrdraw_amount_completed is not None:
                wrdraw_amount_completed = float(
                    '%.2f' % keep_two_del(i.wrdraw_amount_completed))
            else:
                wrdraw_amount_completed = 0
            if i.wrdraw_amount_hang is not None:
                wrdraw_amount_hang = float('%.2f' %
                                           keep_two_del(i.wrdraw_amount_hang))
            else:
                wrdraw_amount_hang = 0
            if i.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(i.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                'cost_agent_total': cost_agent_total,
                'cost_agent_completed_total': cost_agent_completed_total,
                'cost_agent_hang_total': cost_agent_hang_total,
                'wrdraw_amount_completed': wrdraw_amount_completed,
                'wrdraw_amount_hang': wrdraw_amount_hang,
                'wrdraw_amount': wrdraw_amount,
            })
        return make_response(result)
Exemple #25
0
    def get(self):
        m_args = withdrawParsers.parse_args(strict=True)
        critern = set()
        if 'mer_code' in m_args:
            if m_args['mer_code'] is not None:
                critern.add(MerchantDao.username == m_args['mer_code'])
        if 'username' in m_args:
            if m_args['username'] is not None:
                critern.add(WithdrawDao.mer_name == m_args['username'])
        if 'bank_id' in m_args:
            if m_args['bank_id'] is not None:
                critern.add(MerchantBank.bankNumber == m_args['bank_id'])
        if 'bank_account' in m_args:
            if m_args['bank_account'] is not None:
                critern.add(MerchantDao.parent_code == m_args['bank_account'])
        if 'order_no' in m_args:
            if m_args['order_no'] is not None:
                critern.add(WithdrawDao.order_no == m_args['order_no'])
        if 'amount_max' in m_args:
            if m_args['amount_max'] is not None:
                critern.add(WithdrawDao.amount <= m_args['amount_max'])
        if 'amount_min' in m_args:
            if m_args['amount_min'] is not None:
                critern.add(WithdrawDao.amount >= m_args['amount_min'])
        if 'state' in m_args:
            if m_args['state'] is not None:
                critern.add(WithdrawDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(WithdrawDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(WithdrawDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(WithdrawDao.audit_time <= m_args['end_time_au'])

        res = getwithdraw_total(critern)

        result = []
        for items in res:
            if items.amount_sum is not None:
                amount_sum = float('%.2f' % keep_two_del(items.amount_sum))
            else:
                amount_sum = 0
            if items.paid_amount is not None:
                paid_amount = float('%.2f' % keep_two_del(items.paid_amount))
            else:
                paid_amount = 0
            if items.withdraw_amount_sum is not None:
                withdraw_amount_sum = float(
                    '%.2f' % keep_two_del(items.withdraw_amount_sum))
            else:
                withdraw_amount_sum = 0

            result.append({
                "amount_sum": amount_sum,
                "paid_amount_sum": paid_amount,
                "withdraw_amount_sum": withdraw_amount_sum
            })

        return make_response(result)
Exemple #26
0
    def get(self):
        m_args = onlinetradesParsers.parse_args(strict=True)
        critern = set()
        critern.add(PayType.code == 900001)
        if m_args['mer_code'] is not None:
            critern.add(OnlinetradesDao.mer_code == m_args['mer_code'])
        if m_args['username'] is not None:
            critern.add(MerchantDao.username == m_args['username'])
        if m_args['agent_code'] is not None:
            critern.add(MerchantDao.parent_code == m_args['agent_code'])
        if m_args['order_no'] is not None:
            critern.add(OnlinetradesDao.order_no == m_args['order_no'])
        if m_args['org_order_no'] is not None:
            critern.add(OnlinetradesDao.org_order_no == m_args['org_order_no'])
        if m_args['amount_max'] is not None:
            critern.add(OnlinetradesDao.amount <= m_args['amount_max'])
        if m_args['amount_min'] is not None:
            critern.add(OnlinetradesDao.amount >= m_args['amount_min'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(OnlinetradesDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(OnlinetradesDao.audit_time <= m_args['end_time_au'])
        if m_args['pay_type_name'] is not None:
            critern.add(PayType.name == m_args['pay_type_name'])
        res = getOnlineData(critern,page=m_args['page'],per_page=m_args['page_size'])


        result = []
        for items in res.items:
            if items.real_cost_service is not None:
                real_cost_service = float('%.2f' % keep_two_del(items.real_cost_service))
            else:
                real_cost_service = 0
            if items.real_cost_agent is not None:
                real_cost_agent = float('%.2f' % keep_two_del(items.real_cost_agent))
            else:
                real_cost_agent = 0

            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0
            if items.real_amount is not None:
                real_amount = float('%.2f' % keep_two_del(items.real_amount))
            else:
                real_amount = 0

            if items.bank_amount is not None:
                bank_amount = float('%.2f' % keep_two_del(items.bank_amount))
            else:
                bank_amount = 0
            if items.cost_service is not None:
                cost_service = float('%.2f' % keep_two_del(items.cost_service))
            else:
                cost_service = 0

            if items.cost_agent is not None:
                cost_agent = float('%.2f' % keep_two_del(items.cost_agent))
            else:
                cost_agent = 0


            if items.cost_service_confirm is not None:
                cost_service_confirm = float('%.2f' % keep_two_del(items.cost_service_confirm))
            else:
                cost_service_confirm = 0

            if items.cost_agent_confirm is not None:
                cost_agent_confirm = float('%.2f' % keep_two_del(items.cost_agent_confirm))
            else:
                cost_agent_confirm = 0

            if items.amount_confirm is not None:
                amount_confirm = float('%.2f' % keep_two_del(items.amount_confirm))
            else:
                amount_confirm = 0


            if items.discount_amount is not None:
                discount_amount = float('%.2f' % keep_two_del(items.discount_amount))
            else:
                discount_amount = 0



            result.append({
                "order_no": items.order_no,
                "org_order_no": items.org_order_no,
                "bank_order_no": items.bank_order_no,
                "user_name": items.user_name,
                "agents_name": items.agents_name,
                "qr_code": items.qr_code,
                "amount": amount,
                "real_amount": real_amount,
                "bank_amount": bank_amount,
                "discount_amount": discount_amount,
                "action_time": items.action_time,
                "mer_code": items.mer_code,
                "pay_type": items.pay_type,
                "cost_service": cost_service,
                "cost_agent": cost_agent,
                "audit_time": items.audit_time,
                "state": items.state,
                "remark": items.remark,
                "bank_name": items.bank_name,
                "pay_type_name": items.pay_type_name,
                "amount_confirm": amount_confirm,
                "qr_code_confirm": items.qr_code_confirm,
                "audit_time_confirm": items.audit_time_confirm,
                "cost_service_confirm": cost_service_confirm,
                "cost_agent_confirm": cost_agent_confirm,
                "real_cost_service": real_cost_service,
                "real_cost_agent": real_cost_agent,
                "administrator_confirm": items.administrator_confirm,
                "mer_ip": items.mer_ip,
                "match_type":items.match_type
            })



        return make_response(result, page=res.page, pages=res.pages, total=res.total)
Exemple #27
0
    def get_all_data(self):
        current_app.logger.info('补发通知开始获取数据')
        q = db.session.query(
            OnlinetradesDao.mer_code,
            OnlinetradesDao.order_no,
            OnlinetradesDao.org_order_no,
            OnlinetradesDao.audit_time,
            OnlinetradesDao.amount,
            OnlinetradesDao.bank_amount,
            OnlinetradesDao.pay_type,
            OnlinetradesDao.state,
            OnlinetradesExpansion.mer_notify_url,
            MerchantDao.secret_key,
        ).filter(
            and_(
                OnlinetradesDao.order_no == self.order_no,
                OnlinetradesDao.org_order_no == self.org_order_no,
            ))
        q = q.outerjoin(
            OnlinetradesExpansion,
            and_(
                OnlinetradesExpansion.order_no == OnlinetradesDao.order_no,
                OnlinetradesExpansion.org_order_no ==
                OnlinetradesDao.org_order_no))
        q = q.outerjoin(Qrcode, OnlinetradesDao.qr_code == Qrcode.code)
        q = q.outerjoin(MerchantDao,
                        OnlinetradesDao.mer_code == MerchantDao.code)
        q = q.first()
        current_app.logger.info('补发通知查询数据集')
        if q is not None:
            if q.state == 1:
                return {
                    'success': False,
                    'errorCode': 410,
                    'errorMsg': '请先进行人工匹配在进行补发消息请求'
                }
            mer_code = q.mer_code
            if q.order_no is not None:
                order_no = q.order_no
            else:
                order_no = ''
            if q.audit_time:
                audit_time = q.audit_time
            else:
                audit_time = int(time.time())
            state = q.state
            payUrl = q.mer_notify_url
            org_order_no = q.org_order_no
            amount = keep_two_del(q.amount)
            real_amount = keep_two_del(q.bank_amount)
            pay_type = q.pay_type
            payUrl = q.mer_notify_url

            m_args = {}
            m_args['order_no'] = order_no
            m_args['mer_code'] = mer_code
            m_args['org_order_no'] = org_order_no
            m_args['amount'] = str(amount)
            m_args['real_amount'] = str(real_amount)
            m_args['pay_type'] = pay_type
            m_args['audit_time'] = audit_time
            m_args['state'] = state
            args = {}
            m_str = ''
            for k in sorted(m_args):
                args[k] = m_args[k]
                if m_args[k] is not None:
                    m_str += '%s=%s&' % (k, m_args[k])
            m_str = m_str[:-1]
            m_str += q.secret_key
            m_sign = self.get_sign(m_str)
            print('加密字符串:%s' % m_str)
            print('加密sign:%s' % m_sign)
            print('补发回调路由%s' % payUrl)
            current_app.logger.info('补发通知加密字符串%s' % m_str)
            current_app.logger.info('补发通知加密sign%s' % m_sign)
            m_args['sign'] = m_sign
            # 发送数据
            if payUrl is not None:
                url = payUrl + "?order_no=%s&org_order_no=%s&sign=%s&audit_time=%s&state=%s&amount=%s&real_amount=%s&pay_type=%s&mer_code=%s" % (
                    order_no, org_order_no, m_sign, audit_time, state, amount,
                    real_amount, pay_type, mer_code)
                print(url)
                headers = {'content-type': 'application/json'}
                response = requests.post(payUrl,
                                         data=json.dumps(m_args),
                                         headers=headers,
                                         timeout=30)
                print("返回")
                status_code = response.status_code
                m_res = response.text
                current_app.logger.info('获取回调信息%s' % m_res)
                if status_code < 400:
                    success = 1
                else:
                    success = 0
                return self.insert(args=args,
                                   status_code=status_code,
                                   m_res=m_res,
                                   order_no=order_no,
                                   success=success,
                                   mer_code=mer_code)
            else:
                return {
                    'success': False,
                    'errorCode': 404,
                    'errorMsg': '返回路径错误'
                }
        else:
            return {'success': False, 'errorCode': 403, 'errorMsg': '该订单不存在'}
    def get(self):
        m_args = onlinetradesParsers.parse_args(strict=True)
        critern = set()
        if g.current_member:
            username = g.current_member.username
            critern.add(DfTradeDao.mer_username == username)
        else:
            return {
                'success': False,
                'errorCode': 402,
                'errorMsg': '请登录'
            }
        # if m_args['username'] is not None:
        #     critern.add(DfTradeDao.mer_username == m_args['username'])
        if m_args['org_order_no'] is not None:
            critern.add(DfTradeDao.org_order_no == m_args['org_order_no'])
        if m_args['amount_max'] is not None:
            critern.add(DfTradeDao.amount <= m_args['amount_max'])
        if m_args['amount_min'] is not None:
            critern.add(DfTradeDao.amount >= m_args['amount_min'])
        if m_args['state'] is not None:
            critern.add(DfTradeDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(DfTradeDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(DfTradeDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(DfTradeDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(DfTradeDao.audit_time <= m_args['end_time_au'])


        res = getOnlineData(critern,page=m_args['page'],per_page=m_args['page_size'])
        result = []
        for items in res.items:


            if items.sxf is not None:
                sxf = float('%.2f' % keep_two_del(items.sxf))
            else:
                sxf = 0

            if items.amount is not None:
                amount = float('%.2f' % keep_two_del(items.amount))
            else:
                amount = 0

            print(items.org_order_no,type(items.org_order_no))
            result.append({
                "id": items.id,
                "order_no": items.order_no,
                "org_order_no": items.org_order_no,
                "mer_code": items.mer_code,
                "mer_username": items.mer_username,
                "amount": amount,
                "action_time": items.action_time,
                "audit_time": items.audit_time,
                "state": items.state,
                "account_name": items.account_name,
                "account_no": items.account_no,
                "bank_name": items.bank_name,
                "sxf": sxf,
            })

        return make_response(result, page=res.page, pages=res.pages, total=res.total)
Exemple #29
0
    def get(self):
        m_args = onlinetradesParsers.parse_args(strict=True)
        critern = set()
        critern.add(PayType.code == 900001)
        if m_args['mer_code'] is not None:
            critern.add(OnlinetradesDao.mer_code == m_args['mer_code'])
        if m_args['username'] is not None:
            critern.add(MerchantDao.username == m_args['username'])
        if m_args['agent_code'] is not None:
            critern.add(MerchantDao.parent_code == m_args['agent_code'])
        if m_args['org_order_no'] is not None:
            critern.add(OnlinetradesDao.org_order_no == m_args['org_order_no'])
        if m_args['amount_max'] is not None:
            critern.add(OnlinetradesDao.amount <= m_args['amount_max'])
        if m_args['amount_min'] is not None:
            critern.add(OnlinetradesDao.amount >= m_args['amount_min'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])
        if m_args['begin_time_au'] is not None:
            critern.add(OnlinetradesDao.audit_time >= m_args['begin_time_au'])
        if m_args['end_time_au'] is not None:
            critern.add(OnlinetradesDao.audit_time <= m_args['end_time_au'])
        if m_args['pay_type_name'] is not None:
            critern.add(PayType.name == m_args['pay_type_name'])
        res = getonline_total(critern)


        result = []

        for items in res:
            if items.amount_sum is not None:
                amount_sum = float('%.2f' % keep_two_del(items.amount_sum))
            else:
                amount_sum = 0
            if items.real_amount_sum is not None:
                real_amount_sum = float('%.2f' % keep_two_del(items.real_amount_sum))
            else:
                real_amount_sum = 0

            if items.rcs_sum is not None:
                rcs_sum = float('%.2f' % keep_two_del(items.rcs_sum))
            else:
                rcs_sum = 0
            if items.rca_sum is not None:
                rca_sum = float('%.2f' % keep_two_del(items.rca_sum))
            else:
                rca_sum = 0



            result.append({
                "amount_sum": amount_sum,
                "real_amount_sum": real_amount_sum,
                "rcs_sum": rcs_sum,
                "rca_sum": rca_sum

            })



        return make_response(result)
Exemple #30
0
    def get(self, mercode=None):
        m_args = agentsparserresportsguanli.parse_args(strict=True)
        critern = set()
        critern_wraw = set()
        critern_name = set()
        critern_name.add(MerchantDao.type == 1)

        if m_args['mer_username'] is not None:
            critern_name.add(MerchantDao.parent_name == m_args['mer_username'])
        if m_args['begin_time'] is not None:
            critern.add(OnlinetradesDao.action_time >= m_args['begin_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['begin_time'])
        if m_args['end_time'] is not None:
            critern.add(OnlinetradesDao.action_time <= m_args['end_time'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['end_time'])
        if m_args['state'] is not None:
            critern.add(OnlinetradesDao.state == m_args['state'])
            critern_wraw.add(WithdrawDao.action_time >= m_args['state'])

        res = AgentsResportsService()
        if mercode is None:
            q = res.get_data_agents_resports(args=critern,
                                             page=m_args['page'],
                                             per_page=m_args['page_size'],
                                             critern_name=critern_name,
                                             critern_wraw=critern_wraw)
        else:
            critern.add(MerchantDao.parent_name == m_args['state'])
            q = res.get_data_agents_resports_merchat(critern, m_args['page'],
                                                     m_args['page_size'])
        result = []
        for i in q.items:
            if i.cost_agent is not None:
                cost_agent = float('%.2f' % keep_two_del(i.cost_agent))
            else:
                cost_agent = 0
            if i.cost_agent_completed is not None:
                cost_agent_completed = float(
                    '%.2f' % keep_two_del(i.cost_agent_completed))
            else:
                cost_agent_completed = 0
            if i.cost_agent_hang is not None:
                cost_agent_hang = float('%.2f' %
                                        keep_two_del(i.cost_agent_hang))
            else:
                cost_agent_hang = 0

            if i.wrdraw_amount_completed is not None:
                wrdraw_amount_completed = float(
                    '%.2f' % keep_two_del(i.wrdraw_amount_completed))
            else:
                wrdraw_amount_completed = 0
            if i.wrdraw_amount_hang is not None:
                wrdraw_amount_hang = float('%.2f' %
                                           keep_two_del(i.wrdraw_amount_hang))
            else:
                wrdraw_amount_hang = 0
            if i.wrdraw_amount is not None:
                wrdraw_amount = float('%.2f' % keep_two_del(i.wrdraw_amount))
            else:
                wrdraw_amount = 0
            result.append({
                'parent_name': i.parent_name,
                'cost_agent': cost_agent,
                'cost_agent_completed': cost_agent_completed,
                'cost_agent_hang': cost_agent_hang,
                'wrdraw_amount_completed': wrdraw_amount_completed,
                'wrdraw_amount_hang': wrdraw_amount_hang,
                'wrdraw_amount': wrdraw_amount,
            })
        return make_response(result, page=q.page, pages=q.pages, total=q.total)