UserTicketOrderMapper.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.qs.mp.user.mapper.UserTicketOrderMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.qs.mp.user.domain.UserTicketOrder">
  6. <id column="order_id" property="orderId" />
  7. <result column="user_id" property="userId" />
  8. <result column="title" property="title" />
  9. <result column="box_id" property="boxId" />
  10. <result column="order_amt" property="orderAmt" />
  11. <result column="discount_amt" property="discountAmt" />
  12. <result column="pay_amt" property="payAmt" />
  13. <result column="ticket_num" property="ticketNum" />
  14. <result column="memo" property="memo" />
  15. <result column="resource" property="resource" />
  16. <result column="coupon_info" property="couponInfo" />
  17. <result column="share_info" property="shareInfo" />
  18. <result column="status" property="status" />
  19. <result column="comm_status" property="commStatus" />
  20. <result column="channel_id" property="channelId" />
  21. <result column="created_time" property="createdTime" />
  22. <result column="updated_time" property="updatedTime" />
  23. </resultMap>
  24. <!-- 通用查询结果列 -->
  25. <sql id="Base_Column_List">
  26. order_id, user_id, title, box_id, order_amt, discount_amt, pay_amt, ticket_num, memo, resource, coupon_info, share_info, status, comm_status, channel_id, created_time, updated_time
  27. </sql>
  28. <!-- 统计交易金额列表 -->
  29. <select id="selectIndexPayAmtList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  30. select
  31. DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
  32. SUM(t1.pay_amt) AS payAmt
  33. from `mp_user_ticket_order` t1
  34. ${ew.customSqlSegment}
  35. GROUP BY time
  36. </select>
  37. <!-- 统计交易用户数列表 -->
  38. <select id="selectIndexPayUserCntList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  39. select
  40. DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
  41. COUNT(DISTINCT t1.user_id) AS payUserCnt
  42. from `mp_user_ticket_order` t1
  43. ${ew.customSqlSegment}
  44. GROUP BY time
  45. </select>
  46. <!-- 统计交易实时数据列表 -->
  47. <select id="selectIndexDailyInfoList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  48. select
  49. DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
  50. SUM(t1.pay_amt) AS payAmt,
  51. SUM(IFNULL(t1.ticket_num,0)) AS ticketNum,
  52. COUNT(DISTINCT t1.user_id) AS payUserCnt
  53. from `mp_user_ticket_order` t1
  54. ${ew.customSqlSegment}
  55. GROUP BY time
  56. </select>
  57. <!-- 统计票组销售TOP10 -->
  58. <select id="selectIndexTicketBoxTop" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  59. select a.pay_amt as payAmt,b.title
  60. from (
  61. select
  62. t1.box_id,
  63. SUM(t1.pay_amt) AS pay_amt
  64. from `mp_user_ticket_order` t1
  65. ${ew.customSqlSegment}
  66. GROUP BY t1.box_id
  67. ORDER BY pay_amt DESC limit 10 ) a
  68. left join mp_ticket_box b on a.box_id = b.box_id
  69. ORDER BY payAmt DESC
  70. </select>
  71. <!-- 统计经销商交易额TOP10 -->
  72. <select id="selectIndexTicketSiteTop" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  73. select a.pay_amt as payAmt,b.`name`
  74. from (
  75. select
  76. t1.channel_id,
  77. SUM(t1.pay_amt) AS pay_amt
  78. from `mp_user_ticket_order` t1
  79. ${ew.customSqlSegment}
  80. GROUP BY t1.channel_id
  81. ORDER BY pay_amt DESC limit 10 ) a
  82. left join mp_channel b on a.channel_id = b.channel_id
  83. ORDER BY payAmt DESC
  84. </select>
  85. <!-- 查询子渠道全部的盲票销量 -->
  86. <select id="getChannelTotalTicketNumCnt" resultType="integer">
  87. select IFNULL(SUM(t1.ticket_num),0) as ticketNum
  88. from mp_user_ticket_order t1
  89. left join mp_channel t2 on t1.channel_id = t2.channel_id
  90. where (t2.channel_no like concat(#{channelNo},'.%') or t2.channel_no = #{channelNo})
  91. and t1.`status` = 1
  92. </select>
  93. <!-- 查询经销商的盲票销量 -->
  94. <select id="getSaleSiteTotalTicketNumCnt" resultType="integer">
  95. select IFNULL(SUM(t1.ticket_num),0) as ticketNum
  96. from mp_user_ticket_order t1
  97. where t1.`status` = 1 and t1.channel_id = #{channelId}
  98. </select>
  99. <!-- 查询经销商的线下、线上盲票销量 -->
  100. <select id="getTicketSaleCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
  101. select
  102. SUM( CASE WHEN (t2.type = 'online') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS onLineSaleCnt,
  103. SUM( CASE WHEN (t2.type = 'offline') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS offLineSaleCnt
  104. from mp_user_ticket_order t1
  105. left join mp_ticket_box t2 on t1.box_id = t2.box_id
  106. where t1.channel_id = #{channelId} and t1.`status` = 1
  107. </select>
  108. <!-- 查询经销商的线下、线上盲票销量 -->
  109. <select id="listTicketSaleCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
  110. select
  111. t1.channel_id,
  112. SUM( CASE WHEN (t2.type = 'online') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS onLineSaleCnt,
  113. SUM( CASE WHEN (t2.type = 'offline') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS offLineSaleCnt
  114. from mp_user_ticket_order t1
  115. left join mp_ticket_box t2 on t1.box_id = t2.box_id
  116. ${ew.customSqlSegment}
  117. GROUP BY t1.channel_id
  118. </select>
  119. <select id="listUserTicketOrder" resultType="com.qs.mp.admin.domain.vo.UserTicketOrderListVO">
  120. select t1.order_id,
  121. t1.created_time,
  122. t1.status,
  123. t1.title,
  124. t1.sale_price,
  125. t1.pay_type,
  126. t1.pay_amt,
  127. t1.discount_amt,
  128. t1.ticket_num,
  129. t2.nick_name,
  130. t2.phonenumber phone,
  131. t3.type boxType,
  132. t4.name channelName
  133. from mp_user_ticket_order t1
  134. left join sys_user t2 on t1.user_id = t2.user_id
  135. left join mp_ticket_box t3 on t1.box_id = t3.box_id
  136. left join mp_channel t4 on t1.channel_id = t4.channel_id
  137. ${ew.customSqlSegment}
  138. </select>
  139. <select id="selectUserTicketOrderDetail" resultType="com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO">
  140. select t1.order_id,
  141. t1.discount_amt,
  142. t1.status,
  143. t1.title ticketBoxTitle,
  144. t1.sale_comm_rate,
  145. t1.sale_price,
  146. t1.pay_amt,
  147. t1.pay_type,
  148. t1.created_time,
  149. t1.ticket_num,
  150. t2.nick_name,
  151. t2.phonenumber phone,
  152. t3.name channelName,
  153. t4.type ticketBoxType,
  154. t5.name as promoterName
  155. from mp_user_ticket_order t1
  156. left join sys_user t2 on t1.user_id = t2.user_id
  157. left join mp_channel t3 on t1.channel_id = t3.channel_id
  158. left join mp_ticket_box t4 on t1.box_id = t4.box_id
  159. left join mp_channel t5 on t1.promoter_id = t5.channel_id
  160. ${ew.customSqlSegment}
  161. </select>
  162. <select id="countUserTicketOrder" resultType="integer">
  163. select count(*)
  164. from mp_user_ticket_order t1
  165. left join sys_user t2 on t1.user_id = t2.user_id
  166. left join mp_ticket_box t3 on t1.box_id = t3.box_id
  167. ${ew.customSqlSegment}
  168. </select>
  169. <select id="selectIndexTicketBoxTopByTicketOrderAndChannelOrder" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  170. select SUM(a.pay_amt) as payAmt,
  171. b.title,
  172. a.box_id
  173. from (select t1.box_id,
  174. SUM(t1.pay_amt) AS pay_amt
  175. from `mp_user_ticket_order` t1
  176. where t1.created_time between #{param.startTime} and #{param.endTime}
  177. and t1.status > #{param.ticketOrderStatus}
  178. group by t1.box_id
  179. union
  180. select a2.box_id,
  181. sum(a1.pay_amt) as pay_amt
  182. from mp_channel_order a1
  183. left join mp_channel_order_item a2
  184. on a1.order_id = a2.order_id
  185. where a1.created_time between #{param.startTime} and #{param.endTime}
  186. and a1.status > #{param.channelOrderStatus}
  187. and a1.type > #{param.channelOrderType}
  188. group by a2.box_id) a
  189. left join mp_ticket_box b on a.box_id = b.box_id
  190. group by a.box_id, b.title
  191. ORDER BY payAmt DESC
  192. limit 10
  193. </select>
  194. <select id="selectIndexTicketSiteTopByTicketOrderAndChannelOrder" resultType="com.qs.mp.admin.domain.vo.IndexVO">
  195. select SUM(a.pay_amt) as payAmt, b.`name`
  196. from
  197. (select t1.channel_id,
  198. SUM(t1.pay_amt) AS pay_amt
  199. from mp_user_ticket_order t1
  200. where t1.created_time between #{param.startTime} and #{param.endTime}
  201. and t1.status > #{param.ticketOrderStatus}
  202. and t1.channel_id is not null
  203. GROUP BY t1.channel_id
  204. union
  205. select a1.channel_id,
  206. SUM(a1.pay_amt) as pay_amt
  207. from mp_channel_order a1
  208. where a1.created_time between #{param.startTime} and #{param.endTime}
  209. and a1.status > #{param.channelOrderStatus}
  210. and a1.type > #{param.channelOrderType}
  211. group by a1.channel_id) a
  212. left join mp_channel b on a.channel_id = b.channel_id
  213. group by a.channel_id,b.name
  214. order by payAmt desc
  215. limit 10;
  216. </select>
  217. <select id="getPromoterTicketSaleCnt" resultType="long">
  218. select IFNULL(SUM(t1.ticket_num), 0) as ticketNum
  219. from mp_user_ticket_order t1
  220. left join mp_channel t2 on t1.promoter_id = t2.channel_id
  221. where (t2.channel_no like concat(#{channelNo},'.%') or t2.channel_no = #{channelNo})
  222. AND t1.created_time > DATE_SUB(CURDATE(),INTERVAL #{days} DAY);
  223. </select>
  224. <select id="selectTicketBoxGrossProfitByTicketOrderAndChannelOrder"
  225. resultType="com.qs.mp.admin.domain.vo.TicketBoxGrossProfitVO">
  226. select SUM(a.pay_amt) as payAmt
  227. from (select SUM(t1.pay_amt) AS pay_amt
  228. from `mp_user_ticket_order` t1
  229. where t1.box_id = #{param.boxId}
  230. and t1.status > #{param.ticketOrderStatus}
  231. union all
  232. select sum(a1.pay_amt) as pay_amt
  233. from mp_channel_order a1
  234. left join mp_channel_order_item a2
  235. on a1.order_id = a2.order_id
  236. where a2.box_id = #{param.boxId}
  237. and a1.status > #{param.channelOrderStatus}
  238. and a1.type = #{param.channelOrderType}
  239. ) a
  240. </select>
  241. <select id="listPrizeCost" resultType="com.qs.mp.admin.domain.vo.TicketAwardsPrizeVO">
  242. select t1.*,t3.prize_type as type
  243. from mp_user_hit_prize t1
  244. left join mp_user_ticket_order t2 on t1.order_id = t2.order_id
  245. left join mp_ticket_awards_prize t3 on t3.prize_id = t2.prize_id
  246. left join mp_goods t4 on t3.ref_id = t4.goods_id
  247. ${ew.customSqlSegment}
  248. </select>
  249. <select id="listUserHitPrize" resultType="com.qs.mp.user.domain.vo.UserHitPrizeVO">
  250. select t1.*,t3.prize_type,t3.value,t2.box_id,t3.ref_id
  251. from mp_user_hit_prize t1
  252. left join mp_user_ticket_order t2 on t2.order_id = t1.order_id
  253. left join mp_ticket_awards_prize t3 on t3.prize_id = t1.prize_id
  254. ${ew.customSqlSegment}
  255. </select>
  256. <select id="selectTicketBoxGrossProfitByTicketOrderAndChannelOrderDaily"
  257. resultType="com.qs.mp.admin.domain.vo.IndexVO">
  258. select SUM(a.pay_amt) as payAmt,
  259. b.title,
  260. a.box_id
  261. from (select t1.box_id,
  262. SUM(t1.pay_amt) AS pay_amt
  263. from `mp_user_ticket_order` t1
  264. where t1.created_time between #{param.startTime} and #{param.endTime}
  265. and t1.status > #{param.ticketOrderStatus}
  266. group by t1.box_id
  267. union
  268. select a2.box_id,
  269. sum(a1.pay_amt) as pay_amt
  270. from mp_channel_order a1
  271. left join mp_channel_order_item a2
  272. on a1.order_id = a2.order_id
  273. where a1.created_time between #{param.startTime} and #{param.endTime}
  274. and a1.status > #{param.channelOrderStatus}
  275. and a1.type > #{param.channelOrderType}
  276. group by a2.box_id) a
  277. left join mp_ticket_box b on a.box_id = b.box_id
  278. group by a.box_id, b.title
  279. ORDER BY payAmt DESC
  280. </select>
  281. </mapper>