|
@@ -0,0 +1,75 @@
|
|
|
|
+from model.UserAuthUtils import super_auth,get_auth_channel
|
|
|
|
+from model.CommonUtils import getLimitSumData,get_dict_list
|
|
|
|
+from model.DataBaseUtils import CkUtils
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def channel_analysis_select(arg):
|
|
|
|
+ """公众号订单跟踪查询"""
|
|
|
|
+ ck = CkUtils()
|
|
|
|
+ start = arg.get("start")
|
|
|
|
+ end = arg.get("end")
|
|
|
|
+ st = arg.get("st")
|
|
|
|
+ et = arg.get("et")
|
|
|
|
+ channel = arg.get("channel")
|
|
|
|
+ user_id = arg.get('user_id')
|
|
|
|
+ page = arg.get("page")
|
|
|
|
+ page_size = arg.get("page_size")
|
|
|
|
+ order_by = arg.get("order_by", 'cost')
|
|
|
|
+ order = arg.get("order", 'desc')
|
|
|
|
+
|
|
|
|
+ if not (start and end and st and et):
|
|
|
|
+ return {}
|
|
|
|
+ if user_id in super_auth():
|
|
|
|
+ op = ''
|
|
|
|
+ else:
|
|
|
|
+ op = f' and channel in {tuple(get_auth_channel(user_id))}'
|
|
|
|
+
|
|
|
|
+ op1 = f" and channel in {tuple(channel.split(','))}" if channel else ''
|
|
|
|
+
|
|
|
|
+ op2 = f" order by {order_by} {order}" if order_by and order else ''
|
|
|
|
+
|
|
|
|
+ op3 = f" limit {(page - 1) * page_size},{page_size} " if (page and page_size) else ''
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ sql = f"""
|
|
|
|
+ select a.channel,cost,amount from
|
|
|
|
+ (select channel,round(sum(cost),2) cost from dw_daily_channel_cost
|
|
|
|
+ where dt>='{start}' and dt<='{end}' {op} {op1} group by channel) a
|
|
|
|
+ left join
|
|
|
|
+ (select channel,round(sum(amount),2) amount from `order` where date>='{st}' and date<='{et}' and
|
|
|
|
+ formatDateTime(reg_time,'%Y-%m-%d')>='{start}' and formatDateTime(reg_time,'%Y-%m-%d')<='{end}' {op} {op1}
|
|
|
|
+ group by channel) b
|
|
|
|
+ using (channel) {op2} {op3}"""
|
|
|
|
+ print(sql)
|
|
|
|
+ data = get_dict_list(['channel','cost','amount'],ck.getDataList(sql))
|
|
|
|
+ sum_sql = f"""select round(sum(cost),2) cost,round(sum(amount),2) amount from ({sql}) a"""
|
|
|
|
+ total_data = get_dict_list(['cost','amount'],ck.getDataList(sum_sql))
|
|
|
|
+ total_sql = f"""select count(1) from ({sql}) a"""
|
|
|
|
+ total = ck.getDataOne(total_sql)
|
|
|
|
+ # print(total_data,total)
|
|
|
|
+ return {"data":data,"total_data":total_data,"total":total}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def channel_analysis_select_daily(arg):
|
|
|
|
+ ck = CkUtils()
|
|
|
|
+ start = arg.get("start")
|
|
|
|
+ end = arg.get("end")
|
|
|
|
+ st = arg.get("st")
|
|
|
|
+ et = arg.get("et")
|
|
|
|
+ channel = arg.get("channel")
|
|
|
|
+ if not (start and end and st and et and channel):
|
|
|
|
+ return {}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ sql = f"""select formatDateTime(date,'%Y-%m-%d'),round(sum(amount),2) from `order` where formatDateTime(reg_time,'%Y-%m-%d')>='{start}' and formatDateTime(reg_time,'%Y-%m-%d')<='{end}'
|
|
|
|
+ and date>='{st}' and date<='{et}' and channel = '{channel}'
|
|
|
|
+ group by date order by date desc limit 10"""
|
|
|
|
+
|
|
|
|
+ data = get_dict_list(['dt','amount'],ck.getDataList(sql))
|
|
|
|
+ # print(data)
|
|
|
|
+ return {"data": data}
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ arg={"channel":"白雁阅读",'start':'2021-03-01','end':'2021-03-10','st':'2021-04-01','et':'2021-04-10'}
|
|
|
|
+ channel_analysis_select_daily(arg)
|