BankTransactionDetailsMapper.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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.yc.ship.module.trade.dal.mysql.report.BankTransactionDetailsMapper">
  4. <!-- 公共查询条件片段 -->
  5. <sql id="queryConditions">
  6. <if test="vo.transactionTimeStart != null">
  7. AND t.transactionTime &gt;= #{vo.transactionTimeStart}
  8. </if>
  9. <if test="vo.transactionTimeEnd != null">
  10. AND t.transactionTime &lt;= #{vo.transactionTimeEnd}
  11. </if>
  12. <if test="vo.boardDate != null">
  13. AND t.boardingTime = #{vo.boardDate}
  14. </if>
  15. <if test="vo.orderNo != null and vo.orderNo != ''">
  16. AND t.orderNo LIKE CONCAT('%', #{vo.orderNo}, '%')
  17. </if>
  18. <if test="vo.customerName != null and vo.customerName != ''">
  19. AND t.travelAgencyName LIKE CONCAT('%', #{vo.customerName}, '%')
  20. </if>
  21. <if test="vo.paymentMethod != null">
  22. AND t.paymentMethod = #{vo.paymentMethod}
  23. </if>
  24. <if test="vo.transactionType != null">
  25. AND t.transactionType = #{vo.transactionType}
  26. </if>
  27. </sql>
  28. <!-- 分页查询银行流水交易明细 -->
  29. <select id="selectBankTransactionDetailsPage"
  30. resultType="com.yc.ship.module.trade.controller.admin.report.vo.BankTransactionDetailsRespVO">
  31. SELECT * FROM (
  32. <!-- 1. 订单支付记录 -->
  33. SELECT
  34. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  35. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  36. IFNULL(o1.order_no,o2.order_no) AS orderNo,
  37. IFNULL(o1.source_name,o2.source_name) AS travelAgencyName,
  38. pay.payment_type AS paymentMethod,
  39. 1 AS transactionType,
  40. pay.pay_amount AS amount,
  41. IFNULL(pay.payment_no, '') AS bankSerialNo
  42. FROM trade_order_pay pay
  43. LEFT JOIN trade_order o1 ON pay.order_id = o1.id AND o1.deleted = 0
  44. LEFT JOIN trade_order o2 ON o1.id IS NULL AND pay.pos_no = o2.order_no AND o2.deleted = 0
  45. LEFT JOIN product_voyage voy ON IFNULL(o1.voyage_id, o2.voyage_id) = voy.id AND voy.deleted = 0
  46. WHERE pay.deleted = 0
  47. AND pay.pay_status = 1
  48. AND pay.payment_type in (1,2,3,4,5,6,9,10)
  49. /* --- and o.order_status in (3,6,7,8,9,10,12,13,15)
  50. -- AND pay.refund_amount = 0*/
  51. UNION ALL
  52. <!-- 2. 订单退款记录 -->
  53. SELECT
  54. DATE_FORMAT(pay.update_time, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  55. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  56. o.order_no AS orderNo,
  57. o.source_name AS travelAgencyName,
  58. pay.payment_type AS paymentMethod,
  59. 2 AS transactionType,
  60. -IFNULL(pay.refund_amount, 0) AS amount,
  61. IFNULL(pay.payment_no, '') AS bankSerialNo
  62. FROM trade_order_pay pay
  63. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  64. LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
  65. WHERE pay.deleted = 0
  66. AND pay.pay_status = 1
  67. AND pay.refund_amount IS NOT NULL
  68. AND pay.refund_amount &gt; 0
  69. UNION ALL
  70. <!-- 3. 充值记录(分销商在线充值) -->
  71. /* SELECT
  72. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  73. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  74. pay.bill_no AS orderNo,
  75. IFNULL(dsrs.name, '') AS travelAgencyName,
  76. pay.payment_type AS paymentMethod,
  77. 3 AS transactionType,
  78. pay.pay_amount AS amount,
  79. IFNULL(pay.payment_no, '') AS bankSerialNo
  80. FROM trade_order_pay pay
  81. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  82. LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
  83. LEFT JOIN ota_distributor_recharge dsr ON pay.order_id = dsr.id AND dsr.deleted = 0 AND dsr.status = 1
  84. LEFT JOIN ota_distributor dsrs ON dsr.distributor_id = dsrs.id AND dsrs.deleted = 0
  85. WHERE pay.deleted = 0
  86. AND pay.pay_status = 1
  87. AND pay.sell_method = 101
  88. UNION ALL*/
  89. <!-- 4. 后台充值记录 -->
  90. SELECT
  91. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  92. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  93. pay.bill_no AS orderNo,
  94. IFNULL(d.name, '') AS travelAgencyName,
  95. pay.payment_type AS paymentMethod,
  96. 3 AS transactionType,
  97. pay.pay_amount AS amount,
  98. '' AS bankSerialNo
  99. FROM ota_distributor_recharge r
  100. INNER JOIN ota_distributor d ON r.distributor_id = d.id AND d.deleted = 0
  101. INNER JOIN ota_trade_log tl ON r.recharge_log_id = tl.id AND tl.deleted = 0 AND tl.trade_type = 1
  102. left join trade_order_pay pay on pay.order_id = tl.order_id
  103. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  104. LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
  105. WHERE r.deleted = 0
  106. AND r.status = 1
  107. UNION ALL
  108. <!-- 5. 账单还款记录 -->
  109. SELECT
  110. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  111. '' AS boardingTime,
  112. pay.bill_no AS orderNo,
  113. IFNULL(o1.source_name, o2.source_name) AS travelAgencyName,
  114. pay.payment_type AS paymentMethod,
  115. 4 AS transactionType,
  116. pay.pay_amount AS amount,
  117. IFNULL(pay.payment_no, '') AS bankSerialNo
  118. FROM trade_order_pay pay
  119. LEFT JOIN trade_order o1 ON pay.order_id = o1.id AND o1.deleted = 0
  120. LEFT JOIN trade_order o2 ON o1.id IS NULL AND pay.pos_no = o2.order_no AND o2.deleted = 0
  121. LEFT JOIN ota_bill_order obo ON obo.order_id = IFNULL(o1.id, o2.id)
  122. INNER JOIN ota_bill bill ON bill.id = obo.bill_id AND bill.deleted = 0
  123. WHERE pay.deleted = 0
  124. AND pay.pay_status = 1
  125. AND bill.bill_status in (1,2)
  126. ) t
  127. WHERE 1 = 1
  128. <include refid="queryConditions"/>
  129. ORDER BY t.transactionTime DESC
  130. </select>
  131. <!-- 导出查询(与分页查询一致,不分页) -->
  132. <select id="selectBankTransactionDetailsExportList"
  133. resultType="com.yc.ship.module.trade.controller.admin.report.vo.BankTransactionDetailsRespVO">
  134. SELECT * FROM (
  135. <!-- 1. 订单支付记录 -->
  136. SELECT
  137. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  138. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  139. IFNULL(o1.order_no,o2.order_no) AS orderNo,
  140. IFNULL(o1.source_name,o2.source_name) AS travelAgencyName,
  141. pay.payment_type AS paymentMethod,
  142. 1 AS transactionType,
  143. pay.pay_amount AS amount,
  144. IFNULL(pay.payment_no, '') AS bankSerialNo
  145. FROM trade_order_pay pay
  146. LEFT JOIN trade_order o1 ON pay.order_id = o1.id AND o1.deleted = 0
  147. LEFT JOIN trade_order o2 ON o1.id IS NULL AND pay.pos_no = o2.order_no AND o2.deleted = 0
  148. LEFT JOIN product_voyage voy ON IFNULL(o1.voyage_id, o2.voyage_id) = voy.id AND voy.deleted = 0
  149. WHERE pay.deleted = 0
  150. AND pay.pay_status = 1
  151. AND pay.payment_type in (1,2,3,4,5,6,9,10)
  152. /* -- and o.order_status in (3,6,7,8,9,10,12,13,15)
  153. -- AND pay.refund_amount = 0*/
  154. UNION ALL
  155. <!-- 2. 订单退款记录 -->
  156. SELECT
  157. DATE_FORMAT(pay.update_time, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  158. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  159. o.order_no AS orderNo,
  160. o.source_name AS travelAgencyName,
  161. pay.payment_type AS paymentMethod,
  162. 2 AS transactionType,
  163. -IFNULL(pay.refund_amount, 0) AS amount,
  164. IFNULL(pay.payment_no, '') AS bankSerialNo
  165. FROM trade_order_pay pay
  166. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  167. LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
  168. WHERE pay.deleted = 0
  169. AND pay.pay_status = 1
  170. AND pay.refund_amount IS NOT NULL
  171. AND pay.refund_amount &gt; 0
  172. UNION ALL
  173. <!-- 3. 充值记录(分销商在线充值) -->
  174. SELECT
  175. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  176. DATE_FORMAT(voy.start_time, '%Y-%m-%d') AS boardingTime,
  177. pay.bill_no AS orderNo,
  178. IFNULL(d.name, '') AS travelAgencyName,
  179. pay.payment_type AS paymentMethod,
  180. 3 AS transactionType,
  181. pay.pay_amount AS amount,
  182. '' AS bankSerialNo
  183. FROM ota_distributor_recharge r
  184. INNER JOIN ota_distributor d ON r.distributor_id = d.id AND d.deleted = 0
  185. INNER JOIN ota_trade_log tl ON r.recharge_log_id = tl.id AND tl.deleted = 0 AND tl.trade_type = 1
  186. left join trade_order_pay pay on pay.order_id = tl.order_id
  187. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  188. LEFT JOIN product_voyage voy ON o.voyage_id = voy.id AND voy.deleted = 0
  189. WHERE r.deleted = 0
  190. AND r.status = 1
  191. UNION ALL
  192. <!-- 5. 账单还款记录 -->
  193. SELECT
  194. DATE_FORMAT(pay.payment_date, '%Y-%m-%d %H:%i:%s') AS transactionTime,
  195. '' AS boardingTime,
  196. pay.bill_no AS orderNo,
  197. o.source_name AS travelAgencyName,
  198. pay.payment_type AS paymentMethod,
  199. 4 AS transactionType,
  200. pay.pay_amount AS amount,
  201. IFNULL(pay.payment_no, '') AS bankSerialNo
  202. FROM trade_order_pay pay
  203. LEFT JOIN trade_order o ON pay.order_id = o.id AND o.deleted = 0
  204. LEFT JOIN ota_bill_order obo ON obo.order_id = o.id
  205. INNER JOIN ota_bill bill ON bill.id = obo.bill_id AND bill.deleted = 0
  206. WHERE pay.deleted = 0
  207. AND pay.pay_status = 1
  208. AND bill.bill_status in (1,2)
  209. ) t
  210. WHERE 1 = 1
  211. <include refid="queryConditions"/>
  212. ORDER BY t.transactionTime DESC
  213. </select>
  214. </mapper>