Esempio n. 1
0
    def getSendList(self, request, *args, **kwargs):

        query = WeiboSendList.objects.filter(userid=request.user.userid)

        if request.query_params_format.get("userid", None):
            query = query.filter(userid=request.query_params_format['userid'])

        if request.query_params_format.get("uid", None):
            query = query.filter(uid=request.query_params_format['uid'])


        if request.query_params_format.get("groupid", None):
            query = query.filter(groupid=request.query_params_format['groupid'])

        if request.query_params_format.get("setid", None):
            query = query.filter(setid=request.query_params_format['setid'])

        if request.query_params_format.get("status", None):
            query = query.filter(status=request.query_params_format['status'])

        if request.query_params_format.get("startdate") and request.query_params_format.get("enddate"):
            query = query.filter(
                createtime__lte=send_toTimestamp(request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(request.query_params_format.get("startdate")))

        return {"data": WeiboSendListModelSerializer(query, many=True).data}
Esempio n. 2
0
    def getWeiboUser(self, request, *args, **kwargs):

        query = WeiboUser.objects.filter(userid=request.user.userid)

        if request.query_params_format.get("username", None):
            query = query.filter(username=request.query_params_format['username'])

        if request.query_params_format.get("uid", None):
            query = query.filter(uid=request.query_params_format['uid'])

        if request.query_params_format.get("session_status", None):
            query = query.filter(session_status=request.query_params_format['session_status'])

        if request.query_params_format.get("type", None):
            query = query.filter(type=request.query_params_format['type'])

        if request.query_params_format.get("status", None):
            query = query.filter(status=request.query_params_format['status'])

        if request.query_params_format.get("startdate") and request.query_params_format.get("enddate"):
            query = query.filter(
                createtime__lte=send_toTimestamp(request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(request.query_params_format.get("startdate")))

        return {"data": WeiboUserModelSerializer(query, many=True).data}
Esempio n. 3
0
    def appHomeData(self, request):

        res = {
            "rate": 0.0,
            "totorder": 0,
            "sorder": 0,
            "amount": 0.0,
            "totamount": 0.0
        }
        print(request.query_params_format)
        start_datetime = send_toTimestamp(
            request.query_params_format.get("startdate") + ' 00:00:01')
        end_datetime = send_toTimestamp(
            request.query_params_format.get("enddate") + ' 23:59:59')

        if self.request.user.rolecode in ["1000", "1001", "1005", "1006"]:
            pass
        else:
            raise PubErrorCustom("权限不足!")

        obj = Order.objects.filter(createtime__lte=end_datetime,
                                   createtime__gte=start_datetime)

        if obj.exists:
            for item in obj:
                res['totamount'] += float(item.amount)
                res['totorder'] += 1
                if item.status == '0':
                    res['amount'] += float(item.amount)
                    res['sorder'] += 1
        res['rate'] = round(res['sorder'] * 100.0 /
                            res['totorder'], 2) if res['totorder'] else 0.0
        return {"data": res}
Esempio n. 4
0
def tjjr(user,amount,ordercode,sysparm):

    t=timezone.now()
    d5 = send_toTimestamp(t - timedelta(days=5))
    #代理
    agent_list=[1,2]
    for item in agent_list:
        try:
            agent=Agent.objects.get(mobile1=user.mobile,level=item)
            try:
                user1=Users.objects.get(mobile=agent.mobile)
            except Users.DoesNotExist:
                raise PubErrorCustom("推广奖对应用户不存在!")
            order = Order.objects.filter(userid=user1.userid, trantype=0, status=2, confirmtime__gte=d5,
                                         confirmtime__lt=send_toTimestamp(t),umark=0)
            if order.exists():
                maxamount=max(get_order_amounts(order))
                if amount > maxamount:
                    amount = maxamount

                if item==1:
                    #直推是否有5人间推是否有15人
                    if Agent.objects.filter(mobile=user1.mobile,level=1).count()>=5 and Agent.objects.filter(mobile=user1.mobile,level=2).count()>=15:
                        spread=amount * sysparm.amount9 / 100
                    else:
                        spread=amount * sysparm.amount7 / 100
                elif item==2:
                    #直推是否有5人间推是否有15人
                    if Agent.objects.filter(mobile=user1.mobile,level=1).count()>=5 and Agent.objects.filter(mobile=user1.mobile,level=2).count()>=15:
                        spread=amount * sysparm.amount10 / 100
                    else:
                        spread=amount * sysparm.amount8 / 100

                if item == 1:
                    trantype=13
                elif item == 2:
                    trantype=14
                Tranlist.objects.create(
                    trantype=trantype,
                    userid=user1.userid,
                    username=user1.username,
                    bal=user1.spread,
                    amount=spread,
                    ordercode=ordercode
                )

                user1.spread += spread
                user1.save()
        except Agent.DoesNotExist:
            pass
Esempio n. 5
0
    def cashoutlist1_query(self, request, *args, **kwargs):

        QuerySet = CashoutList.objects.all()

        if request.query_params_format.get(
                "startdate") and request.query_params_format.get("enddate"):
            QuerySet = QuerySet.filter(
                createtime__lte=send_toTimestamp(
                    request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(
                    request.query_params_format.get("startdate")))

        if self.request.query_params_format.get("ordercode"):
            userid = int(
                self.request.query_params_format.get("ordercode")[2:10])
            ordercode = self.request.query_params_format.get("ordercode")[10:]

            QuerySet = QuerySet.filter(downordercode=ordercode, userid=userid)

        if self.request.query_params_format.get("no"):
            QuerySet = QuerySet.filter(
                downordercode=self.request.query_params_format.get("no"))

        if self.request.query_params_format.get("userid"):
            QuerySet = QuerySet.filter(
                userid=self.request.query_params_format.get("userid"))

        if self.request.user.rolecode in ["1000", "1001", "1005", "1006"]:
            pass
        elif self.request.user.rolecode == '2001':
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        else:
            raise PubErrorCustom("用户类型有误!")

        return {
            "data":
            CashoutListModelSerializer(
                QuerySet.filter(status__in=["1", "2"]).order_by('-updtime'),
                many=True).data
        }
Esempio n. 6
0
def task2():
    print("7天无打款推荐奖清空处理start...")
    t = timezone.now()
    d7 = send_toTimestamp(t - timedelta(days=7))

    users = Users.objects.filter()

    if users.exists():
        for item in users:

            if item.spread == 0 and item.spreadstop == 0:
                continue
            if Order.objects.filter(
                    userid=item.userid,
                    trantype=0,
                    status=2,
                    confirmtime__gte=d7,
                    confirmtime__lt=send_toTimestamp(t)).count() == 0:

                with transaction.atomic():
                    Tranlist.objects.create(trantype=26,
                                            tranname='超过7天未打款清空推荐奖',
                                            userid=item.userid,
                                            username=item.username,
                                            bal=item.spread,
                                            amount=item.spread * -1)

                    Tranlist.objects.create(trantype=27,
                                            tranname='超过7天未打款清空推荐奖(冻结)',
                                            userid=item.userid,
                                            username=item.username,
                                            bal=item.spreadstop,
                                            amount=item.spreadstop * -1)
                    item.spread = 0
                    item.spreadstop = 0
                    item.save()
Esempio n. 7
0
    def order_query(self, request, *args, **kwargs):

        QuerySet = Order.objects.all()

        if request.query_params_format.get("ordercode"):
            QuerySet = QuerySet.filter(
                ordercode=request.query_params_format.get("ordercode"))

        if request.query_params_format.get("tbdforder"):
            QuerySet = QuerySet.filter(
                tbdforder=request.query_params_format.get("tbdforder"))

        if request.query_params_format.get("no"):
            QuerySet = QuerySet.filter(
                down_ordercode=request.query_params_format.get("no"))

        if request.query_params_format.get("passid"):
            QuerySet = QuerySet.filter(
                paypass=request.query_params_format.get("passid"))

        if request.query_params_format.get("userid"):
            QuerySet = QuerySet.filter(
                userid=request.query_params_format.get("userid"))

        if request.query_params_format.get(
                "startdate") and request.query_params_format.get("enddate"):
            QuerySet = QuerySet.filter(
                createtime__lte=send_toTimestamp(
                    request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(
                    request.query_params_format.get("startdate")))

        if request.query_params_format.get("status"):
            QuerySet = QuerySet.filter(
                status=request.query_params_format.get("status"))

        if request.query_params_format.get("down_status"):
            QuerySet = QuerySet.filter(
                down_status=request.query_params_format.get("down_status"))

        if request.user.rolecode in ["1000", "1001"]:
            pass
        elif request.user.rolecode == "2001":
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(
                userid_to=self.request.user.userid)
            if not userlink.exists():
                QuerySet = Order.objects.filter(userid=0)
            else:
                QuerySet = QuerySet.filter(
                    userid__in=[item.userid for item in userlink])
        else:
            raise PubErrorCustom("用户类型有误!")

        res = QuerySet.order_by('-createtime')
        headers = {
            'Total': res.count(),
        }

        page = int(request.query_params_format.get('page'))
        page_size = int(request.query_params_format.get('page_size'))
        page_start = page_size * page - page_size
        page_end = page_size * page
        data = OrderModelSerializer(res[page_start:page_end], many=True).data

        # if request.query_params_format.get("startdate") and request.query_params_format.get("enddate"):
        #     start = request.query_params_format.get("startdate")
        #     end = request.query_params_format.get("enddate")
        # else:
        #     start, end = get_today_start_end_time()
        # today_amount = 0.0
        # tot_amount = 0.0
        # today_order_tot_count = 0
        # today_order_ok_count = 0
        # tot_order_tot_count = 0
        # tot_order_ok_count = 0
        #
        # for item in data:
        #
        #     tot_order_tot_count += 1
        #
        #     if item['status'] == '0':
        #         tot_amount += float(item['confirm_amount'])
        #         tot_order_ok_count += 1
        #         if start <= item['createtime'] <=end:
        #             today_amount += float(item['confirm_amount'])
        #             today_order_ok_count += 1
        #
        #     if start <= item['createtime'] <= end:
        #         today_order_tot_count += 1
        #

        # res = RedisOrderCount().redis_dict_get(request.user.userid)
        # print("res:",res)
        res = None
        r_data = {
            "data":
            data,
            "today_amount":
            round(res['today_amount'], 2)
            if res and 'today_amount' in res else 0.0,
            "tot_amount":
            round(res['tot_amount'], 2)
            if res and 'tot_amount' in res else 0.0,
            "today_order_tot_count":
            round(res['today_order_tot_count'], 2)
            if res and 'today_order_tot_count' in res else 0,
            "today_order_ok_count":
            round(res['today_order_ok_count'], 2)
            if res and 'today_order_ok_count' in res else 0,
            "tot_order_tot_count":
            round(res['tot_order_tot_count'], 2)
            if res and 'tot_order_tot_count' in res else 0,
            "tot_order_ok_count":
            round(res['tot_order_ok_count'], 2)
            if res and 'tot_order_ok_count' in res else 0
        }
        return {"data": r_data, "header": headers}
Esempio n. 8
0
    def ordercount(self, request, *args, **kwargs):

        data = {
            "amount_tot": 0.0,
            "amount": 0.0,
            "order_tot": 0,
            "order": 0,
            "rate_tot": 0.0,
            "rate": 0.0
        }

        start_datetime = send_toTimestamp(
            datetime.datetime.now().strftime('%Y-%m-%d') + ' 00:00:01')
        end_datetime = send_toTimestamp(
            datetime.datetime.now().strftime('%Y-%m-%d') + ' 23:59:59')

        #流水统计,订单比数统计,成功率
        QuerySet = Order.objects.all()

        if self.request.user.rolecode in ["1000", "1001"]:
            pass
        elif self.request.user.rolecode == '2001':
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(
                userid_to=self.request.user.userid)
            if not userlink.exists():
                QuerySet = Order.objects.filter(userid=0)
            else:
                QuerySet = QuerySet.filter(
                    userid__in=[item.userid for item in userlink])
        else:
            raise PubErrorCustom("用户类型有误!")

        is_all = 0.0
        is_ok = 0.0

        is_all_today = 0.0
        is_ok_today = 0.0

        for item in QuerySet:

            is_all += 1

            if start_datetime <= item.createtime <= end_datetime:
                is_all_today += 1

            if item.status == '0':
                is_ok += 1
                data['amount_tot'] += float(item.confirm_amount)
                data['order_tot'] += 1

                if start_datetime <= item.createtime <= end_datetime:
                    data['amount'] += float(item.confirm_amount)
                    data['order'] += 1
                    is_ok_today += 1

        data['rate_tot'] = round(is_ok / is_all * 100.0, 3) if is_all else 0
        data['rate'] = round(is_ok_today / is_all_today *
                             100.0, 3) if is_all_today else 0

        data1 = [
            {
                "title": '当天商户流水',
                "subtitle": '实时',
                "count": '¥{}'.format(round(data["amount"], 2)),
                "allcount": '¥{}'.format(round(data["amount_tot"], 2)),
                "text": '总流水',
                "color": 'rgb(27, 201, 142)',
                "key": '商'
            },
            {
                "title": '当天订单数',
                "subtitle": '实时',
                "count": '{}'.format(data["order"]),
                "allcount": '{}'.format(data["order_tot"]),
                "text": '总订单比数',
                "color": 'rgb(230, 71, 88)',
                "key": '订'
            },
            {
                "title": '当天订单成功率',
                "subtitle": '实时',
                "count": '{}%'.format(data["rate"]),
                "allcount": '{}%'.format(data["rate_tot"]),
                "text": '总成功率',
                "color": 'rgb(178, 159, 255)',
                "key": '成'
            },
        ]

        ut = UtilTime()

        item_count = 7

        data2 = []
        data3 = []

        day = ut.today.replace(days=-7)
        while item_count:
            day = ut.replace(arrow_v=day, days=1)

            day_string = ut.arrow_to_string(arrow_s=day,
                                            format_v="YYYY-MM-DD")[0:10]

            amount = 0.0
            for item in QuerySet.filter(
                    createtime__lte=ut.string_to_arrow(day_string +
                                                       ' 23:59:59').timestamp,
                    createtime__gte=ut.string_to_arrow(day_string +
                                                       ' 00:00:01').timestamp,
                    status='0'):
                amount += float(item.confirm_amount)

            data2.append(day_string.replace('-', '')[4:])
            data3.append(amount)
            item_count -= 1

        data4 = {'value': data3, 'key': data2, 'top': ['订单金额']}

        return {"data": {"data1": data1, "data4": data4}}
Esempio n. 9
0
def get_today_start_end_timestamp():
    return send_toTimestamp(datetime.datetime.now().strftime('%Y-%m-%d' ) +' 00:00:01'), \
                send_toTimestamp(datetime.datetime.now().strftime('%Y-%m-%d') + ' 23:59:59')
Esempio n. 10
0
    def ballist_query(self, request, *args, **kwargs):

        query = BalList.objects.all()

        if self.request.query_params_format.get("memo"):
            query = query.filter(
                memo__contains=self.request.query_params_format.get("memo"))

        if request.query_params_format.get(
                "startdate") and request.query_params_format.get("enddate"):
            query = query.filter(
                createtime__lte=send_toTimestamp(
                    request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(
                    request.query_params_format.get("startdate")))

        if self.request.query_params_format.get("ordercode"):

            query = query.filter(
                ordercode=self.request.query_params_format.get("ordercode"))

        if request.user.rolecode in ["1000", "1001"]:
            if self.request.query_params_format.get("userid"):
                query = query.filter(
                    userid=self.request.query_params_format.get("userid"))

        elif request.user.rolecode == "2001":
            query = query.filter(userid=request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(
                userid_to=self.request.user.userid)
            if not userlink.exists():
                query = query.filter(userid=0)
            else:
                userids = [item.userid for item in userlink]
                if self.request.query_params_format.get("userid"):
                    if self.request.query_params_format.get(
                            "userid") in userids:
                        query = query.filter(userid=self.request.
                                             query_params_format.get("userid"))
                    else:
                        query = query.filter(userid=self.request.user.userid)
                else:
                    query_list_agent = [item.userid for item in userlink]
                    query_list_agent.append(self.request.user.userid)

                    query = query.filter(userid__in=query_list_agent)
        else:
            raise PubErrorCustom("用户类型有误!")

        res = query.order_by('-createtime', '-id')
        headers = {
            'Total': res.count(),
        }

        page = int(request.query_params_format.get('page'))
        page_size = int(request.query_params_format.get('page_size'))
        page_start = page_size * page - page_size
        page_end = page_size * page

        # print(page,page_size,page_start,page_end)

        return {
            "data": BallistSerializer(res[page_start:page_end],
                                      many=True).data,
            "header": headers
        }
Esempio n. 11
0
    def cashoutlist_df_query(self, request, *args, **kwargs):

        QuerySet = CashoutList.objects.filter(paypassid__gt=0)

        if self.request.query_params_format.get("bank_card_number"):
            QuerySet = QuerySet.filter(
                bank_card_number__contains=self.request.query_params_format.
                get("bank_card_number"))

        if self.request.query_params_format.get("bank_name"):
            QuerySet = QuerySet.filter(bank_name__contains=self.request.
                                       query_params_format.get("bank_name"))

        if self.request.query_params_format.get("open_name"):
            QuerySet = QuerySet.filter(open_name__contains=self.request.
                                       query_params_format.get("open_name"))

        if self.request.query_params_format.get("amount"):
            QuerySet = QuerySet.filter(
                amount=self.request.query_params_format.get("amount"))

        if self.request.query_params_format.get("userid"):
            QuerySet = QuerySet.filter(
                userid=self.request.query_params_format.get("userid"))

        if self.request.query_params_format.get("memo"):
            QuerySet = QuerySet.filter(
                memo__contains=self.request.query_params_format.get("memo"))

        if request.query_params_format.get(
                "startdate") and request.query_params_format.get("enddate"):
            QuerySet = QuerySet.filter(
                createtime__lte=send_toTimestamp(
                    request.query_params_format.get("enddate")),
                createtime__gte=send_toTimestamp(
                    request.query_params_format.get("startdate")))

        if self.request.query_params_format.get("ordercode"):
            userid = int(
                self.request.query_params_format.get("ordercode")[2:10])
            ordercode = self.request.query_params_format.get("ordercode")[10:]

            QuerySet = QuerySet.filter(downordercode=ordercode, userid=userid)

        if self.request.query_params_format.get("no"):
            QuerySet = QuerySet.filter(
                downordercode=self.request.query_params_format.get("no"))

        if self.request.query_params_format.get("df_status"):
            QuerySet = QuerySet.filter(
                df_status=self.request.query_params_format.get("df_status"))

        if self.request.user.rolecode in ["1000", "1001", "1005", "1006"]:
            pass
        elif self.request.user.rolecode == '2001':
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        else:
            raise PubErrorCustom("用户类型有误!")

        if self.request.query_params_format.get("sort"):
            if self.request.query_params_format.get("sort") == '0':
                QuerySet = QuerySet.filter().order_by('-createtime')
            elif self.request.query_params_format.get("sort") == '1':
                QuerySet = QuerySet.filter().order_by('createtime')
        else:
            QuerySet = QuerySet.filter().order_by('-createtime')

        return {"data": CashoutListModelSerializer(QuerySet, many=True).data}
Esempio n. 12
0
    def gethomedata(self, request, *args, **kwargs):

        r_data = {
            "czamount": 0.0,  # 充值金额
            "cznumber": 0,  # 充值数量
            "czamountok": 0.0,  # 充值金额
            "cznumberok": 0,  # 充值数量
            "czrate": '0.0%',  # 成功率
            "countlirun": 0.0,  # 统计利润
            "czlirun": 0.0,  # 实际利润
            "rolecode": self.request.user.rolecode
        }

        ut = UtilTime()

        start = request.query_params_format.get("start", None)
        end = request.query_params_format.get("end", None)

        start = send_toTimestamp(datetime.datetime.now().strftime('%Y-%m-%d') + ' 00:00:01') if not start else \
            ut.string_to_timestamp(start)

        end = send_toTimestamp(datetime.datetime.now().strftime('%Y-%m-%d') + ' 23:59:59') if not end else \
            ut.string_to_timestamp(end)

        query = Order.objects.filter(createtime__lte=end,
                                     createtime__gte=start)

        if self.request.user.rolecode in [
                "1000", "1002", "1001", "1005", "1006"
        ]:
            if self.request.user.rolecode == '1002':
                r_data['czlirun'] = round(Users.objects.get(userid=1).bal, 2)
            else:
                r_data['czlirun'] = round(request.user.bal, 2)
        elif self.request.user.rolecode == '2001':
            r_data['czlirun'] = round(
                Users.objects.get(userid=self.request.user.userid).bal, 2)
            query = query.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(
                userid_to=self.request.user.userid)
            if not userlink.exists():
                query = Order.objects.filter(userid=0)
            else:
                links = [item.userid for item in userlink]
                query = query.filter(userid__in=links)
                r_data['czlirun'] = round(
                    Users.objects.get(userid=self.request.user.userid).bal, 2)
        else:
            raise PubErrorCustom("用户类型有误!")

        for rowItem in query:

            r_data['czamount'] += float(rowItem.amount)
            r_data['cznumber'] += 1

            if rowItem.status == '0':
                r_data['czamountok'] += float(rowItem.confirm_amount)
                r_data['cznumberok'] += 1
                if request.user.rolecode == "3001":
                    r_data['countlirun'] += float(rowItem.agentfee)
                elif request.user.rolecode[0] == '1':
                    r_data['countlirun'] += float(rowItem.myfee)

        r_data['czamountok'] = round(r_data['czamountok'], 2)
        r_data['countlirun'] = round(r_data['countlirun'], 2)
        r_data['czamount'] = round(r_data['czamount'], 2)
        r_data['czrate'] = "{}".format(
            round(r_data['cznumberok'] * 100.0 /
                  r_data['cznumber'], 2) if r_data['cznumber'] > 0 else 0)

        return {"data": r_data}