报表相关 增加退款后,报表中需要体现
This commit is contained in:
@@ -9,19 +9,239 @@
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type,
|
||||
select uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from user_vip_log uvl
|
||||
from user_vip_log uvl LEFT JOIN buy_order a ON a.order_sn=uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = uvl.order_sn and pzo.trade_no is not null
|
||||
where u.del_flag = 0 and uvl.del_flag = 0 and uv.del_flag = 0
|
||||
where u.del_flag = 0 and (uvl.del_flag = 0 or (uvl.del_flag = -1 and a.order_status=6))
|
||||
AND (uv.del_flag = 0 OR (uv.del_flag = -1 AND a.order_status=6))
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') <= SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1 and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00'))))
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getLastMonthRefundFee" resultType="java.math.BigDecimal">
|
||||
select IFNULL(SUM(t.refundFee),0) fee
|
||||
from (
|
||||
select a.order_id,MAX(bor.fee) refundFee
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') < SUBSTR(#{date},1,7)
|
||||
and (u.id not in (select id from user where tester_flag = 1)
|
||||
or (u.id in (select id from user where tester_flag = 1)
|
||||
and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
group by a.order_id
|
||||
) t
|
||||
</select>
|
||||
<select id="getNextNMonthRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') > SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getCurrMonthOtherRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') != SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getLastMonthRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') =
|
||||
DATE_FORMAT(DATE_SUB(CONCAT(SUBSTR(#{date},1,7),'-01'), INTERVAL 1 MONTH), '%Y-%m')
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getCurrMonthOtherRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') != SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getLastLMonthRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') != SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getMonthRefund" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select IFNULL(bor.wx_refund_no ,bor.refund_no) as refund_no,uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
bor.fee refundFee,DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and u.del_flag = 0
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
<select id="getAllUserVipLogInfo" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select uvl.id uvlId,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,a.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') <= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
|
||||
from buy_order a
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn and (uvl.del_flag = 0 or a.order_status = '6')
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id and (uv.del_flag = 0 or a.order_status = '6')
|
||||
left join user u on u.id = uvl.user_id and u.del_flag = 0
|
||||
left join pay_zfb_order pzo on pzo.relevanceOid = a.order_sn and pzo.trade_no is not null
|
||||
where a.order_type = 'vip' and a.order_status in (1,2,3,4,6)
|
||||
and a.del_flag = 0
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') <= SUBSTR(#{date},1,7)
|
||||
and
|
||||
(u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
order by uvl.end_time asc
|
||||
) t order by currentDays desc
|
||||
</select>
|
||||
@@ -35,7 +255,7 @@
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (
|
||||
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type,
|
||||
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
@@ -50,12 +270,56 @@
|
||||
) s
|
||||
</select>
|
||||
|
||||
<select id="getUserVipRefundLogInfo" resultType="map">
|
||||
select uvl.id uvlId, a.order_sn orderSn, bor.fee refundFee, DATE_FORMAT(bor.create_time,'%Y-%m-%d %H:%i:%s') refundTime
|
||||
from buy_order a
|
||||
inner join buy_order_refund bor on bor.order_id = a.order_id
|
||||
inner join user_vip_log uvl on a.order_sn = uvl.order_sn
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
where a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and a.del_flag = 0
|
||||
and DATE_FORMAT(bor.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and (u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
</select>
|
||||
<select id="getUserVipSameMonthRefundFeeTotal" resultType="java.math.BigDecimal">
|
||||
select IFNULL(SUM(uvl.fee),0)
|
||||
from user_vip_log uvl
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join buy_order a on a.order_sn = uvl.order_sn
|
||||
left join buy_order_refund c on c.order_id = a.order_id
|
||||
where u.del_flag = 0
|
||||
and a.del_flag = 0
|
||||
and a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and (u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
</select>
|
||||
|
||||
<select id="getUserVipRefundFeeTotal" resultType="java.math.BigDecimal">
|
||||
select IFNULL(SUM(c.fee),0)
|
||||
from user_vip_log uvl
|
||||
left join user_vip uv on uv.id = uvl.user_vip_id
|
||||
left join user u on u.id = uvl.user_id
|
||||
left join buy_order a on a.order_sn = uvl.order_sn
|
||||
left join buy_order_refund c on c.order_id = a.order_id
|
||||
where u.del_flag = 0
|
||||
and a.del_flag = 0
|
||||
and a.order_status = '6'
|
||||
and a.order_type = 'vip'
|
||||
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') <= SUBSTR(#{date},1,7)
|
||||
and DATE_FORMAT(c.create_time, '%Y-%m') = SUBSTR(#{date},1,7)
|
||||
and (u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1) and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))
|
||||
</select>
|
||||
|
||||
<select id="getUserVipRefundInfo" resultType="map">
|
||||
select t.*,
|
||||
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
|
||||
dayAmount*currentDays currentTanxiao,
|
||||
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
|
||||
from (select uvl.*,c.create_time refund_time,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel, IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type,
|
||||
from (select uvl.*,c.create_time refund_time,u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel, IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学',IF(uv.type=10,'妇幼生殖学','中西汇通学')))))) type,
|
||||
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,pzo.trade_no zfbOrder,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
|
||||
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') < SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
|
||||
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') < SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
|
||||
|
||||
Reference in New Issue
Block a user