77 lines
9.0 KiB
XML
77 lines
9.0 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
<mapper namespace="com.peanut.modules.common.dao.UserCourseBuyDao">
|
|
|
|
<select id="getUserCourseBuyInfo" resultType="map">
|
|
select w.name,w.tel,w.ctitle,w.cctitle,if(w.startTime is null,'',w.startTime) startTime,if(w.endTime is null,'',w.endTime) endTime,w.totalDays
|
|
,w.type,w.payType,w.payTime,w.orderSn,w.zfbOrder,w.days,w.fee,w.remark,w.dayAmount,w.alreadyDay,w.currentDay
|
|
,ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2) alreadyTanxiao
|
|
,ROUND(if(alreadyDay+currentDay>=totalDays,fee-ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2),currentDay*dayAmount),2) currentTanxiao
|
|
,ROUND(fee-(if(alreadyDay=days,fee,alreadyDay*dayAmount))-ROUND(if(alreadyDay+currentDay>=totalDays,fee-ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2),currentDay*dayAmount),2),2) surplusTanxiao
|
|
from (
|
|
select q.*
|
|
,IF(days-alreadyDay=0,0,IF(beginDay=0,IF(startTime is NULL,0,IF(days-alreadyDay>=monthDays,if(DATE_FORMAT(startTime,'%Y-%m')=SUBSTR(#{date},1,7),DATEDIFF(#{date},startTime)+1,if(DATE_FORMAT(startTime,'%Y-%m')>SUBSTR(#{date},1,7),0,monthDays)),if(DATE_FORMAT(startTime, '%Y-%m')=SUBSTR(#{date},1,7),if(DATEDIFF(#{date},startTime)+1>days,days,DATEDIFF(#{date},startTime)+1),if(DATE_FORMAT(startTime, '%Y-%m') < SUBSTR(#{date},1,7),days-alreadyDay,0)))),IF(beginDay-alreadyTotalDay>monthDays,0,monthDays-(beginDay-alreadyTotalDay-1)))) currentDay
|
|
from (
|
|
select s.*
|
|
,IF(alreadyTotalDay>beginDay,IF(beginDay=0,IF(alreadyTotalDay < days,alreadyTotalDay,days),alreadyTotalDay-beginDay+1),0) alreadyDay
|
|
,SUBSTR(#{date},9) monthDays
|
|
from (
|
|
select t.*
|
|
,IF(startTime is NULL,0,ROUND(fee/days,2)) dayAmount
|
|
,IF(startTime is NULL,0,IF(DATE_FORMAT(startTime,'%Y-%m')>=SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(endTime,'%Y-%m') < SUBSTR(#{date},1,7),days,DATEDIFF(CONCAT(SUBSTR(#{date},1,7),'-01'),startTime)))) alreadyTotalDay
|
|
from (
|
|
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,c.title ctitle,cc.title cctitle,
|
|
ucb.days totalDays,ucb.start_time startTime,ucb.end_time endTime,
|
|
ucbl.type,ucbl.pay_type payType,ucbl.pay_time payTime,ucbl.order_sn orderSn,pzo.trade_no zfbOrder,
|
|
ucbl.begin_day beginDay,ucbl.days days,ucbl.fee,ucbl.remark
|
|
from user_course_buy_log ucbl
|
|
left join user_course_buy ucb on ucb.id = ucbl.user_course_buy_id
|
|
left join user u on u.id = ucb.user_id
|
|
left join course c on c.id = ucb.course_id
|
|
left join course_catalogue cc on cc.id = ucb.catalogue_id
|
|
left join pay_zfb_order pzo on pzo.relevanceOid = ucbl.order_sn and pzo.trade_no is not null
|
|
where ucbl.del_flag = 0 and DATE_FORMAT(ucbl.pay_time,'%Y-%m-%d') <= #{date}
|
|
and u.id not in (select id from user where tel in ('18812616272','13110039505','18526084267','12222222222','13333333333','14444444444','15555555555','16666666666','17777777777','18888888888','1774455','15533','165965','164964','54321','111','13662001490','15505153873','18834844847','17602219785','19999999999','12299','166933','16855','17602634511','16161616161','17171717171','112112112','21212121211','222222','666666','123123','789789','96','25252525','3434343434','123789','124789','789789','163963','5656','19966','1664455','15151515151','256366','986986','18834844846','18834844849','15611027864','18047689535','18834844848','456456456'))
|
|
order by ucb.id
|
|
) t) s) q) w
|
|
</select>
|
|
|
|
<select id="getUserCourseBuyInfoTotal" resultType="map">
|
|
select ROUND(SUM(fee),2) fee,ROUND(SUM(alreadyTanxiao),2) alreadyTanxiao,ROUND(SUM(currentTanxiao),2) currentTanxiao,ROUND(SUM(surplusTanxiao),2) surplusTanxiao
|
|
from (
|
|
select w.name,w.tel,w.ctitle,w.cctitle,if(w.startTime is null,'',w.startTime) startTime,if(w.endTime is null,'',w.endTime) endTime,w.totalDays
|
|
,w.type,w.payType,w.payTime,w.orderSn,w.zfbOrder,w.days,w.fee,w.remark,w.dayAmount,w.alreadyDay,w.currentDay
|
|
,ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2) alreadyTanxiao
|
|
,ROUND(if(alreadyDay+currentDay>=totalDays,fee-ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2),currentDay*dayAmount),2) currentTanxiao
|
|
,ROUND(fee-(if(alreadyDay=days,fee,alreadyDay*dayAmount))-ROUND(if(alreadyDay+currentDay>=totalDays,fee-ROUND(if(alreadyDay=days,fee,alreadyDay*dayAmount),2),currentDay*dayAmount),2),2) surplusTanxiao
|
|
from (
|
|
select q.*
|
|
,IF(days-alreadyDay=0,0,IF(beginDay=0,IF(startTime is NULL,0,IF(days-alreadyDay>=monthDays,if(DATE_FORMAT(startTime,'%Y-%m')=SUBSTR(#{date},1,7),DATEDIFF(#{date},startTime)+1,if(DATE_FORMAT(startTime,'%Y-%m')>SUBSTR(#{date},1,7),0,monthDays)),if(DATE_FORMAT(startTime, '%Y-%m')=SUBSTR(#{date},1,7),if(DATEDIFF(#{date},startTime)+1>days,days,DATEDIFF(#{date},startTime)+1),if(DATE_FORMAT(startTime, '%Y-%m') < SUBSTR(#{date},1,7),days-alreadyDay,0)))),IF(beginDay-alreadyTotalDay>monthDays,0,monthDays-(beginDay-alreadyTotalDay-1)))) currentDay
|
|
from (
|
|
select s.*
|
|
,IF(alreadyTotalDay>beginDay,IF(beginDay=0,IF(alreadyTotalDay < days,alreadyTotalDay,days),alreadyTotalDay-beginDay+1),0) alreadyDay
|
|
,SUBSTR(#{date},9) monthDays
|
|
from (
|
|
select t.*
|
|
,IF(startTime is NULL,0,ROUND(fee/days,2)) dayAmount
|
|
,IF(startTime is NULL,0,IF(DATE_FORMAT(startTime,'%Y-%m')>=SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(endTime,'%Y-%m') < SUBSTR(#{date},1,7),days,DATEDIFF(CONCAT(SUBSTR(#{date},1,7),'-01'),startTime)))) alreadyTotalDay
|
|
from (
|
|
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,c.title ctitle,cc.title cctitle,
|
|
ucb.days totalDays,ucb.start_time startTime,ucb.end_time endTime,
|
|
ucbl.type,ucbl.pay_type payType,ucbl.pay_time payTime,ucbl.order_sn orderSn,pzo.trade_no zfbOrder,
|
|
ucbl.begin_day beginDay,ucbl.days days,ucbl.fee,ucbl.remark
|
|
from user_course_buy_log ucbl
|
|
left join user_course_buy ucb on ucb.id = ucbl.user_course_buy_id
|
|
left join user u on u.id = ucb.user_id
|
|
left join course c on c.id = ucb.course_id
|
|
left join course_catalogue cc on cc.id = ucb.catalogue_id
|
|
left join pay_zfb_order pzo on pzo.relevanceOid = ucbl.order_sn and pzo.trade_no is not null
|
|
where ucbl.del_flag = 0 and DATE_FORMAT(ucbl.pay_time,'%Y-%m-%d') <= #{date}
|
|
and u.id not in (select id from user where tel in ('18812616272','13110039505','18526084267','12222222222','13333333333','14444444444','15555555555','16666666666','17777777777','18888888888','1774455','15533','165965','164964','54321','111','13662001490','15505153873','18834844847','17602219785','19999999999','12299','166933','16855','17602634511','16161616161','17171717171','112112112','21212121211','222222','666666','123123','789789','96','25252525','3434343434','123789','124789','789789','163963','5656','19966','1664455','15151515151','256366','986986','18834844846','18834844849','15611027864','18047689535','18834844848','456456456'))
|
|
order by ucb.id
|
|
) t) s) q) w
|
|
) e
|
|
</select>
|
|
|
|
</mapper> |