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}
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}
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}
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
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 }
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()
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}
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}}
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')
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 }
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}
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}