You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

694 lines
34 KiB

7 months ago
7 months ago
7 months ago
7 months ago
5 months ago
5 months ago
5 months ago
5 months ago
3 months ago
3 months ago
3 months ago
5 days ago
5 days ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
7 months ago
  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.example.demo.mapper.cash.CashCollectionMapper">
  4. <insert id="add" parameterType="com.example.demo.domain.entity.CashRecord"
  5. useGeneratedKeys="true" keyProperty="id">
  6. insert into
  7. cash_record_collection(order_type,jwcode,name,market,activity,performance_market,
  8. order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold,
  9. payment_currency,payment_amount,received_market,
  10. pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time,
  11. voucher,remark,wallet_id)
  12. values(#{orderType},#{jwcode},#{name},#{market},#{activity},#{performanceMarket},
  13. #{orderCode},#{bankCode},#{goodsName},#{goodNum},#{numUnit},#{permanentGold},#{freeGold},#{paymentCurrency},
  14. #{paymentAmount},#{receivedMarket},#{payType},#{payTime},
  15. #{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark},#{walletId})
  16. </insert>
  17. <!-- <insert id="syncToCashRecord">
  18. insert into cash_record(order_type,jwcode,name,market,activity,
  19. order_code,goods_name,good_num,permanent_gold,free_gold,
  20. payment_currency,payment_amount,received_market,
  21. pay_type,pay_time,status,submitter_id,
  22. voucher,remark)
  23. values(1,#{jwcode},#{name},#{market},#{activity},
  24. #{order_code},#{goods_name},#{good_num},#{permanent}
  25. )
  26. </insert>-->
  27. <!--更新订单状态-->
  28. <update id="updateStatus">
  29. update cash_record_collection
  30. set status=#{status}
  31. where order_code=#{orderCode}
  32. </update>
  33. <!--更新订单-->
  34. <update id="updateByOrderCode">
  35. UPDATE cash_record_collection
  36. <set>
  37. jwcode = #{cashRecordCollection.jwcode},
  38. name = #{cashRecordCollection.name},
  39. market = #{cashRecordCollection.market},
  40. activity = #{cashRecordCollection.activity},
  41. goods_name = #{cashRecordCollection.goodsName},
  42. good_num = #{cashRecordCollection.goodNum},
  43. num_unit = #{cashRecordCollection.numUnit},
  44. permanent_gold = #{cashRecordCollection.permanentGold},
  45. free_gold = #{cashRecordCollection.freeGold},
  46. payment_currency = #{cashRecordCollection.paymentCurrency},
  47. payment_amount = #{cashRecordCollection.paymentAmount},
  48. received_market = #{cashRecordCollection.receivedMarket},
  49. pay_type = #{cashRecordCollection.payType},
  50. pay_time = #{cashRecordCollection.payTime},
  51. voucher = #{cashRecordCollection.voucher},
  52. remark = #{cashRecordCollection.remark},
  53. status = 0,
  54. wallet_id = #{cashRecordCollection.walletId},
  55. </set>
  56. WHERE order_code = #{cashRecordCollection.orderCode}
  57. AND status = 5
  58. </update>
  59. <!--补全手续费等字段-->
  60. <update id="complete">
  61. UPDATE cash_record_collection
  62. <set>
  63. handling_charge = #{cashRecordCollection.handlingCharge},
  64. received_currency = #{cashRecordCollection.receivedCurrency},
  65. <if test="cashRecordCollection.receivedAmount != 0">
  66. received_amount = #{cashRecordCollection.receivedAmount},
  67. </if>
  68. received_time = #{cashRecordCollection.receivedTime},
  69. payment_currency = #{cashRecordCollection.paymentCurrency},
  70. <if test="cashRecordCollection.paymentAmount != 0">
  71. payment_amount = #{cashRecordCollection.paymentAmount},
  72. </if>
  73. payment_currency_orig = #{cashRecordCollection.paymentCurrencyOrig},
  74. <if test="cashRecordCollection.paymentAmountOrig != 0">
  75. payment_amount_orig = #{cashRecordCollection.paymentAmountOrig},
  76. </if>
  77. <!-- 只有 这些字段全部非空才更新状态 -->
  78. status = CASE
  79. WHEN
  80. handling_charge IS NOT NULL
  81. AND received_currency IS NOT NULL AND received_currency != ''
  82. AND received_amount IS NOT NULL
  83. AND received_time IS NOT NULL
  84. AND payment_currency IS NOT NULL AND payment_currency != ''
  85. AND payment_amount IS NOT NULL
  86. THEN 4
  87. ELSE status
  88. END
  89. </set>
  90. WHERE order_code = #{cashRecordCollection.orderCode}
  91. AND status IN (1, 3)
  92. </update>
  93. <!--提交手续费时修改金币订单-->
  94. <update id="updateGoldOrder">
  95. UPDATE user_gold_record
  96. <set>
  97. rate_id=#{cashRecordCollection.paymentCurrency},
  98. <if test="cashRecordCollection.paymentAmount != 0">
  99. money = #{cashRecordCollection.paymentAmount}
  100. </if>
  101. </set>
  102. WHERE order_code = #{cashRecordCollection.orderCode}
  103. </update>
  104. <!--设置gOrder订单为已同步-->
  105. <update id="markSynced">
  106. update g_order
  107. set is_synced = 1
  108. where id = #{orderId}
  109. </update>
  110. <!-- 检查用户是否存在 -->
  111. <select id="checkUserExists" resultType="int">
  112. SELECT COUNT(*)
  113. FROM user
  114. WHERE jwcode = #{jwcode}
  115. </select>
  116. <!--根据jwcode获取所属地区-->
  117. <select id="getMarketByJwcode" resultType="java.lang.String">
  118. select market from user where jwcode=#{jwcode}
  119. </select>
  120. <!--根据订单号获取订单id、状态、钱包id、永久金币数量、精网号和备注-->
  121. <select id="selectByOrderCode" resultType="com.example.demo.domain.entity.CashRecord">
  122. select id ,status, wallet_id, permanent_gold, jwcode, remark
  123. from cash_record_collection
  124. where order_code=#{orderCode}
  125. </select>
  126. <!--多条件查询收款订单列表-->
  127. <select id="selectCollection1" resultType="com.example.demo.domain.vo.cash.CashCollection">
  128. select cr.order_type, cr.id,cr.jwcode,cr.name,cr.market,
  129. m1.name as marketName, ra.id as activityId,
  130. ra.activity_name as activity,cr.order_code,cr.bank_code,
  131. cr.goods_name,cr.good_num,
  132. cr.num_unit,
  133. cr.wallet_id,
  134. cr.permanent_gold/100 as permanentGold,cr.free_gold/100 as freeGold,cr.payment_amount/100 as paymentAmount,
  135. r1.rate_name as paymentCurrency,
  136. r2.rate_name as receivedCurrency,
  137. m2.name as receivedMarket,
  138. cr.received_amount/100 as receivedAmount,cr.handling_charge/100 as handlingCharge,
  139. cr.pay_type,cr.pay_time,cr.received_time,
  140. cr.status,cr.submitter_id,cr.submitter_market,cr.voucher,cr.remark,cr.reject_reason,
  141. cr.audit_id,cr.create_time,cr.update_time,cr.audit_time,
  142. a1.admin_name as submitterName,
  143. a2.admin_name as auditName
  144. from cash_record_collection cr
  145. left join admin a1 on cr.submitter_id = a1.id
  146. left join admin a2 on cr.audit_id = a2.id
  147. left join market m1 on m1.id = cr.market
  148. left join market m2 on m2.id = cr.received_market
  149. left join rate r1 on r1.id = cr.payment_currency
  150. left join rate r2 on r2.id = cr.received_currency
  151. left join recharge_activity ra on ra.id = cr.activity
  152. <where>
  153. 1 = 1
  154. <if test="cashCollection.market != null and cashCollection.market != ''">
  155. AND cr.market = #{cashCollection.market}
  156. </if>
  157. <if test="cashCollection.jwcode != null and cashCollection.jwcode!=''">
  158. AND cr.jwcode = #{cashCollection.jwcode}
  159. </if>
  160. <if test="cashCollection.name!=null and cashCollection.name !=''">
  161. AND cr.name like concat('%',#{cashCollection.name},'%')
  162. </if>
  163. <if test="cashCollection.submitterId!=null and cashCollection.submitterId !=''">
  164. AND cr.submitter_id = #{cashCollection.submitterId}
  165. </if>
  166. <!-- 其他原有条件不变 -->
  167. <choose>
  168. <when test="cashCollection.status != null and (cashCollection.status == 46||cashCollection.status == 13)">
  169. <if test="cashCollection.receivedMarket != null and cashCollection.receivedMarket != ''">
  170. AND (cr.received_market = #{cashCollection.receivedMarket}
  171. <if test="cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
  172. OR cr.submitter_market = #{cashCollection.submitterMarket}
  173. </if>
  174. )
  175. </if>
  176. <if test="(cashCollection.receivedMarket == null or cashCollection.receivedMarket == '')
  177. and cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
  178. AND cr.submitter_market = #{cashCollection.submitterMarket}
  179. </if>
  180. </when>
  181. <!-- 非 status=46 保持原逻辑:同时满足 -->
  182. <otherwise>
  183. <if test="cashCollection.receivedMarket != null and cashCollection.receivedMarket != ''">
  184. AND cr.received_market = #{cashCollection.receivedMarket}
  185. </if>
  186. <if test="cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
  187. AND cr.submitter_market = #{cashCollection.submitterMarket}
  188. </if>
  189. </otherwise>
  190. </choose>
  191. <if test="cashCollection.activity!=null and cashCollection.activity!=''">
  192. AND cr.activity =#{cashCollection.activity}
  193. </if>
  194. <if test="cashCollection.paymentCurrency!=null and cashCollection.paymentCurrency!=''">
  195. AND cr.payment_currency like concat('%',#{cashCollection.paymentCurrency},'%')
  196. </if>
  197. <if test="cashCollection.goodsName!=null and cashCollection.goodsName!=''">
  198. AND cr.goods_name like concat('%',#{cashCollection.goodsName},'%')
  199. </if>
  200. <if test="cashCollection.payType!=null and cashCollection.payType!=''">
  201. AND cr.pay_type = #{cashCollection.payType}
  202. </if>
  203. <if test="cashCollection.status != null">
  204. AND cr.status IN
  205. <foreach collection="cashCollection.status.toString().toCharArray()" item="digit" open="(" separator="," close=")">
  206. #{digit}
  207. </foreach>
  208. </if>
  209. <if test="cashCollection.startTime!=null and cashCollection.endTime!=null">
  210. AND cr.pay_time between #{cashCollection.startTime} and #{cashCollection.endTime}
  211. </if>
  212. and cr.order_type=1
  213. </where>
  214. <choose>
  215. <when test="cashCollection.sortField != null and cashCollection.sortField.length > 0 or cashCollection.sortOrder != null and cashCollection.sortOrder.length > 0">
  216. ORDER BY ${cashCollection.sortField} ${cashCollection.sortOrder}
  217. </when>
  218. <otherwise>
  219. ORDER BY pay_time DESC
  220. </otherwise>
  221. </choose>
  222. </select>
  223. <select id="selectAuditByOrderCode" resultType="com.example.demo.domain.entity.CashRecord">
  224. select crc.id,jwcode,name,market,ra.activity_name as activity,
  225. order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold,
  226. r1.rate_name as payment_currency,r2.rate_name as received_currency,payment_amount,pay_type,pay_time,crc.status,submitter_id,
  227. voucher,remark,version,received_market
  228. from cash_record_collection crc
  229. left join recharge_activity ra on ra.id = crc.activity
  230. left join rate r1 on r1.id = crc.payment_currency
  231. left join rate r2 on r2.id = crc.received_currency
  232. where order_code=#{orderCode}
  233. </select>
  234. <!--根据精网号获取姓名-->
  235. <select id="getNameByJwcode" resultType="java.lang.String">
  236. select name from user where jwcode=#{jwcode}
  237. </select>
  238. <select id="getMarketNameByJwcode" resultType="java.lang.String">
  239. select m.name from user u left join market m on u.market=m.id
  240. where u.jwcode=#{jwcode}</select>
  241. <select id="getActivityList" resultType="com.example.demo.domain.entity.RechargeActivity">
  242. select ra.id,ra.activity_name,ra.business_belong,m.name as area,ra.status
  243. from recharge_activity ra
  244. left join market m on m.id=ra.area
  245. where ra.flag=1 and ra.status=1 and #{now} between start_time and end_time
  246. </select>
  247. <!--查找未同步的订单-->
  248. <select id="getUnSync" resultType="com.example.demo.domain.entity.GOrder">
  249. select id,jwcode,order_no,type,price,count,pay_style,state,
  250. success_time,ios_environment,ios_transaction_id,ios_receipt_data,firstdata_ipgTransactionId,
  251. add_time,is_synced
  252. from g_order
  253. where is_synced=0 and state=1 and pay_style in(3,5,6,7,9,10,15)
  254. and success_time>=1767196800
  255. limit #{size}
  256. </select>
  257. <select id="selectById" resultType="com.example.demo.domain.vo.cash.CashCollection">
  258. select cr.id,cr.jwcode,cr.name,cr.market,
  259. cr.order_code,cr.bank_code,cr.goods_name,cr.good_num,cr.num_unit,cr.permanent_gold,cr.free_gold,
  260. cr.payment_currency,cr.payment_amount,cr.received_currency,cr.received_amount,cr.handling_charge,
  261. cr.pay_type,cr.received_market,cr.pay_time,cr.received_time,cr.audit_id,cr.status,cr.submitter_id,
  262. cr.submitter_market,cr.voucher,cr.remark,cr.audit_time,a1.admin_name as submitterName,
  263. a2.admin_name as auditName,ra.activity_name as activity
  264. from cash_record_collection cr
  265. left join admin a1 on cr.submitter_id = a1.id
  266. left join admin a2 on cr.audit_id = a2.id
  267. left join recharge_activity ra on ra.id = cr.activity
  268. where cr.id=#{id}
  269. </select>
  270. <!--根据id查询收款订单-->
  271. <select id="selectBatchIds" resultType="com.example.demo.domain.vo.cash.CashCollection">
  272. select
  273. cr.id, cr.jwcode, cr.name, cr.market,
  274. cr.order_code, cr.bank_code, cr.goods_name, cr.good_num, cr.num_unit, cr.permanent_gold, cr.free_gold,
  275. cr.payment_amount, cr.received_amount, cr.handling_charge,
  276. cr.pay_type, cr.received_market, cr.pay_time, cr.received_time, cr.audit_id, cr.status, cr.submitter_id,
  277. cr.submitter_market, cr.voucher, cr.remark, cr.audit_time,
  278. a1.admin_name as submitterName,
  279. a2.admin_name as auditName,
  280. ra.activity_name as activity,
  281. r1.rate_name as paymentCurrency,
  282. r2.rate_name as receivedCurrency
  283. from cash_record_collection cr
  284. left join admin a1 on cr.submitter_id = a1.id
  285. left join admin a2 on cr.audit_id = a2.id
  286. left join recharge_activity ra on ra.id = cr.activity
  287. left join rate r1 on r1.id = cr.payment_currency
  288. left join rate r2 on r2.id = cr.received_currency
  289. where 1 = 0
  290. <if test="relatedIds != null and relatedIds.size() > 0">
  291. OR cr.id IN
  292. <foreach collection="relatedIds" item="id" open="(" separator="," close=")">
  293. #{id}
  294. </foreach>
  295. </if>
  296. </select>
  297. <select id="selectByGoldCoinOrderCode" resultType="com.example.demo.domain.vo.cash.CashCollection">
  298. select * from cash_record_collection where order_no=#{orderNo}
  299. </select>
  300. <!--根据glodcoin订单号更新收款订单-->
  301. <update id="updateByGoldCoinOrderCode">
  302. update cash_record_collection
  303. <set>
  304. received_time=#{time},
  305. payment_currency=#{currency},
  306. received_currency=#{currency},
  307. payment_amount=#{order_amount},
  308. received_amount=#{net_amount},
  309. handling_charge=#{charge},
  310. order_no_status=0
  311. </set>
  312. where order_code=#{merchant_reference}
  313. </update>
  314. <update id="updateOrderWithVersion">
  315. UPDATE cash_record_collection
  316. SET status = #{status},
  317. audit_id = #{auditId},
  318. version = version + 1
  319. WHERE order_code = #{orderCode}
  320. AND status = 0
  321. AND version = #{version}
  322. </update>
  323. <select id="performanceSelect" resultType="com.example.demo.domain.vo.cash.PerformanceVO" parameterType="com.example.demo.domain.DTO.PerformanceDTO">
  324. <!-- 原始收款记录 -->
  325. select cr.pay_time,cr.order_code,m2.name as receivedMarketName,m1.name as performanceMarketName,cr.name,cr.jwcode,cr.goods_name,cr.remark,cr.good_num,cr.pay_type,r2.rate_name as receivedCurrency,cr.payment_amount/100 as payment_amount,IFNULL(cr.handling_charge/100, 0) as handling_charge,cr.received_amount/100 as received_amount
  326. from cash_record_collection cr
  327. left join market m1 on m1.id = cr.performance_market
  328. left join market m2 on m2.id = cr.received_market
  329. left join rate r2 on r2.id = cr.received_currency
  330. where (cr.status = 4 or cr.status = 100 or cr.status = 6 ) and cr.is_performance = 1
  331. <!-- adminMarket筛选:如果adminMarket列表不为空且不包含研发部或总部,则筛选market表中的name等于adminMarket列表中的内容 -->
  332. <if test="adminMarket != null and adminMarket.size() > 0">
  333. <choose>
  334. <when test="adminMarket.contains('9'.toString()) or adminMarket.contains('9999'.toString())">
  335. <!-- 如果包含研发部或总部,则不筛选 -->
  336. </when>
  337. <otherwise>
  338. AND cr.performance_market IN
  339. <foreach collection="adminMarket" item="item" open="(" separator="," close=")">
  340. #{item}
  341. </foreach>
  342. </otherwise>
  343. </choose>
  344. </if>
  345. <!-- customerMarket筛选:如果customerMarket列表不为空,则筛选cash_record_collection表中的market等于customerMarket列表中的内容 -->
  346. <if test="customerMarket != null and customerMarket.size() > 0">
  347. AND cr.performance_market IN
  348. <foreach collection="customerMarket" item="item" open="(" separator="," close=")">
  349. #{item}
  350. </foreach>
  351. </if>
  352. <!-- jwcode筛选:如果jwcode不为空,则筛选cash_record_collection表中的jwcode等于jwcode -->
  353. <if test="jwcode != null and jwcode != ''">
  354. AND cr.jwcode = #{jwcode}
  355. </if>
  356. <!-- 时间范围筛选:如果startTime和endTime不为空,则筛选cash_record_collection表中的pay_time在startTime和endTime之间 -->
  357. <if test="startTime != null and endTime != null">
  358. AND cr.pay_time BETWEEN #{startTime} AND #{endTime}
  359. </if>
  360. <!-- 当cr.status = 6时,添加退款记录 -->
  361. UNION ALL
  362. select crr.refund_time as pay_time,crr.order_code,m2.name as receivedMarketName,m1.name as performanceMarketName,crr.name,crr.jwcode,cr.goods_name,crr.refund_reason as remark,cr.good_num,cr.pay_type,r3.rate_name as receivedCurrency,(-crr.refund_amount/100) as payment_amount,0 as handling_charge,(-crr.refund_amount/100) as received_amount
  363. from cash_record_refund crr
  364. left join cash_record_collection cr on cr.id = crr.related_id
  365. left join market m1 on m1.id = cr.performance_market
  366. left join market m2 on m2.id = cr.received_market
  367. left join rate r3 on r3.id = crr.refund_currency
  368. where cr.status = 6 and cr.is_performance = 1
  369. <!-- adminMarket筛选:如果adminMarket列表不为空且不包含研发部或总部,则筛选market表中的name等于adminMarket列表中的内容 -->
  370. <if test="adminMarket != null and adminMarket.size() > 0">
  371. <choose>
  372. <when test="adminMarket.contains('9'.toString()) or adminMarket.contains('9999'.toString())">
  373. <!-- 如果包含研发部或总部,则不筛选 -->
  374. </when>
  375. <otherwise>
  376. AND cr.performance_market IN
  377. <foreach collection="adminMarket" item="item" open="(" separator="," close=")">
  378. #{item}
  379. </foreach>
  380. </otherwise>
  381. </choose>
  382. </if>
  383. <!-- customerMarket筛选:如果customerMarket列表不为空,则筛选cash_record_collection表中的market等于customerMarket列表中的内容 -->
  384. <if test="customerMarket != null and customerMarket.size() > 0">
  385. AND cr.performance_market IN
  386. <foreach collection="customerMarket" item="item" open="(" separator="," close=")">
  387. #{item}
  388. </foreach>
  389. </if>
  390. <!-- jwcode筛选:如果jwcode不为空,则筛选cash_record_collection表中的jwcode等于jwcode -->
  391. <if test="jwcode != null and jwcode != ''">
  392. AND cr.jwcode = #{jwcode}
  393. </if>
  394. <!-- 时间范围筛选:如果startTime和endTime不为空,则筛选cash_record_collection表中的pay_time在startTime和endTime之间 -->
  395. <if test="startTime != null and endTime != null">
  396. AND cr.pay_time BETWEEN #{startTime} AND #{endTime}
  397. </if>
  398. ORDER BY pay_time DESC
  399. </select>
  400. <select id="selectByBankCode" resultType="com.example.demo.domain.vo.cash.CashCollection">
  401. select * from cash_record_collection where bank_code=#{bankCode}
  402. </select>
  403. <select id="selectFirstdataList" resultType="java.lang.String">
  404. select bank_code from cash_record_collection where bank_code is not null and payload='FirstData' and order_no_status=1
  405. </select>
  406. <select id="selectStripeList" resultType="java.lang.String">
  407. select order_code from cash_record_collection where payload='Stripe' and order_no_status=1
  408. </select>
  409. <select id="selectStripe2List" resultType="java.lang.String">
  410. select order_code from cash_record_collection where payload='Stripe2' and order_no_status=1
  411. </select>
  412. <select id="selectPaymentList" resultType="java.lang.String">
  413. select order_code from cash_record_collection where payload='PaymentAsia' and order_no_status=1
  414. </select>
  415. <select id="selectIpayList" resultType="com.example.demo.domain.vo.cash.CashCollection">
  416. select order_code,permanent_gold from cash_record_collection where payload='Ipay88' and order_no_status=1
  417. </select>
  418. <!--根据订单号获取商品名称-->
  419. <select id="selectGoodsNameByCode" resultType="java.lang.String">
  420. select goods_name from cash_record_collection where order_code=#{orderCode}
  421. </select>
  422. <!-- 根据 jwcode 和 walletId 查询用户钱包 -->
  423. <select id="selectUserWallet" resultType="com.example.demo.domain.entity.UserRegionWallet">
  424. SELECT id, jwcode, wallet_id, current_permanent_gold, create_time, update_time
  425. FROM user_region_wallet
  426. WHERE jwcode = #{jwcode} AND wallet_id = #{walletId}
  427. </select>
  428. <!-- 增加用户钱包永久金币 -->
  429. <update id="addUserWalletPermanentGold">
  430. UPDATE user_region_wallet
  431. SET current_permanent_gold = current_permanent_gold + #{amount},
  432. update_time = NOW()
  433. WHERE jwcode = #{jwcode} AND wallet_id = #{walletId}
  434. </update>
  435. <!-- 如果钱包记录不存在则插入 -->
  436. <insert id="insertUserWallet" parameterType="com.example.demo.domain.entity.UserRegionWallet">
  437. INSERT INTO user_region_wallet (jwcode, wallet_id, current_permanent_gold, create_time, update_time)
  438. VALUES (#{jwcode}, #{walletId}, #{currentPermanentGold}, NOW(), NOW())
  439. ON DUPLICATE KEY UPDATE
  440. current_permanent_gold = current_permanent_gold + VALUES(current_permanent_gold),
  441. update_time = NOW()
  442. </insert>
  443. <!-- 插入用户钱包明细记录 -->
  444. <insert id="insertUserWalletRecord" parameterType="com.example.demo.domain.entity.UserWalletRecord">
  445. INSERT INTO user_wallet_record (jwcode, wallet_id, type, transaction_currency, amount, order_code, description, status, create_time)
  446. VALUES (#{jwcode}, #{walletId}, #{type}, #{transactionCurrency}, #{amount}, #{orderCode}, #{description}, #{status}, NOW())
  447. </insert>
  448. <!--新增流水——其他收入-->
  449. <insert id="addExFund" >
  450. insert into cash_record_collection
  451. (jwcode,name,market,activity,order_code,goods_name,good_num,pay_type,payment_currency,
  452. payment_amount,status,order_type,received_market,received_amount,received_currency,
  453. performance_market,remark,handling_charge,pay_time,submitter_id,submitter_market,is_performance)
  454. values(#{addFundsDTO.jwcode},#{addFundsDTO.name},#{addFundsDTO.market},
  455. #{addFundsDTO.activity},#{addFundsDTO.orderCode},#{addFundsDTO.goodsName},
  456. #{addFundsDTO.goodNum},#{addFundsDTO.payType},#{addFundsDTO.paymentCurrency},
  457. #{addFundsDTO.paymentAmount},#{addFundsDTO.status},#{addFundsDTO.orderType},
  458. #{addFundsDTO.receivedMarket},#{addFundsDTO.receivedAmount},#{addFundsDTO.receivedCurrency},
  459. #{addFundsDTO.performanceMarket},#{addFundsDTO.remark},#{addFundsDTO.handlingCharge},#{addFundsDTO.payTime},
  460. #{addFundsDTO.submitterId},#{addFundsDTO.submitterMarket},#{addFundsDTO.isPerformance})
  461. </insert>
  462. <insert id="addIpay88Fee">
  463. insert into cash_record_collection
  464. (order_type,jwcode,name,market,activity,order_code,goods_name,pay_type,payment_currency,handling_charge,remark,payment_amount,
  465. received_market,performance_market,submitter_id,submitter_market,pay_time,status)
  466. values(#{orderType},#{jwcode},#{name},#{market},#{activity},#{orderCode},
  467. #{goodsName},#{payType},#{paymentCurrency},#{handlingCharge},#{remark},
  468. #{paymentAmount},#{receivedMarket},#{performanceMarket},#{submitterId},
  469. #{submitterMarket},now(),#{status}
  470. )
  471. </insert>
  472. <!-- 根据精网号和钱包 ID 查询用户钱包明细列表 -->
  473. <select id="selectWalletRecordsByJwcodeAndWalletId" resultType="com.example.demo.domain.vo.cash.UserWalletRecordVO">
  474. SELECT
  475. uwr.id,
  476. uwr.jwcode,
  477. u.name as userName,
  478. u.market,
  479. m.name as marketName,
  480. uwr.wallet_id,
  481. w.wallet_name as walletName,
  482. uwr.type,
  483. uwr.transaction_currency,
  484. uwr.amount/100 as amount,
  485. uwr.order_code as orderCode,
  486. uwr.description,
  487. uwr.status,
  488. uwr.create_time as createTime
  489. FROM user_wallet_record uwr
  490. LEFT JOIN user u ON uwr.jwcode = u.jwcode
  491. LEFT JOIN market m ON u.market = m.id
  492. LEFT JOIN wallet w ON uwr.wallet_id = w.id
  493. <where>
  494. <if test="jwcode != null">
  495. AND uwr.jwcode = #{jwcode}
  496. </if>
  497. <if test="walletId != null">
  498. AND uwr.wallet_id = #{walletId}
  499. </if>
  500. <if test="market != null and market != ''">
  501. AND u.market = #{market}
  502. </if>
  503. </where>
  504. ORDER BY uwr.create_time DESC
  505. </select>
  506. <!-- 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区) -->
  507. <resultMap id="UserWalletVOResultMap" type="com.example.demo.domain.vo.cash.UserWalletVO">
  508. <id property="jwcode" column="jwcode"/>
  509. <result property="userName" column="userName"/>
  510. <result property="market" column="market"/>
  511. <result property="marketName" column="marketName"/>
  512. <collection property="walletList" ofType="com.example.demo.domain.vo.cash.WalletItem">
  513. <id property="walletId" column="walletId"/>
  514. <result property="walletName" column="walletName"/>
  515. <result property="currentPermanentGold" column="currentPermanentGold"/>
  516. </collection>
  517. </resultMap>
  518. <!-- 查询符合条件的精网号列表(用于分页,每个精网号算一条记录) -->
  519. <select id="selectDistinctJwcodes" resultType="java.lang.Integer">
  520. SELECT DISTINCT u.jwcode
  521. FROM user u
  522. LEFT JOIN market m ON u.market = m.id
  523. LEFT JOIN user_region_wallet wr ON u.jwcode = wr.jwcode
  524. <where>
  525. <if test="jwcode != null">
  526. AND u.jwcode = #{jwcode}
  527. </if>
  528. <if test="market != null and market != ''">
  529. AND u.market = #{market}
  530. </if>
  531. AND wr.wallet_id IS NOT NULL
  532. </where>
  533. <choose>
  534. <when test="sortField != null and sortField != '' and sortOrder != null and sortOrder != '' and sortWalletId != null">
  535. ORDER BY (
  536. SELECT COALESCE(wr2.current_permanent_gold, 0)
  537. FROM user_region_wallet wr2
  538. WHERE wr2.jwcode = u.jwcode AND wr2.wallet_id = #{sortWalletId}
  539. ) ${sortOrder}, u.jwcode
  540. </when>
  541. <otherwise>
  542. ORDER BY u.jwcode
  543. </otherwise>
  544. </choose>
  545. </select>
  546. <!-- 根据精网号列表查询用户的所有钱包信息 -->
  547. <select id="selectUserWalletsByJwcodes" resultMap="UserWalletVOResultMap">
  548. SELECT
  549. u.jwcode,
  550. u.name as userName,
  551. u.market,
  552. m.name as marketName,
  553. wr.wallet_id as walletId,
  554. w.wallet_name as walletName,
  555. COALESCE(wr.current_permanent_gold, 0)/100 as currentPermanentGold
  556. FROM user u
  557. LEFT JOIN market m ON u.market = m.id
  558. LEFT JOIN user_region_wallet wr ON u.jwcode = wr.jwcode
  559. LEFT JOIN wallet w ON wr.wallet_id = w.id
  560. <where>
  561. u.jwcode IN
  562. <foreach collection="jwcodeList" item="jwcode" open="(" separator="," close=")">
  563. #{jwcode}
  564. </foreach>
  565. <if test="market != null and market != ''">
  566. AND u.market = #{market}
  567. </if>
  568. AND wr.wallet_id IS NOT NULL
  569. </where>
  570. <choose>
  571. <when test="sortField != null and sortField != '' and sortOrder != null and sortOrder != '' and sortWalletId != null">
  572. ORDER BY (
  573. SELECT COALESCE(wr2.current_permanent_gold, 0)
  574. FROM user_region_wallet wr2
  575. WHERE wr2.jwcode = u.jwcode AND wr2.wallet_id = #{sortWalletId}
  576. ) ${sortOrder}, u.jwcode, wr.wallet_id
  577. </when>
  578. <otherwise>
  579. ORDER BY u.jwcode, wr.wallet_id
  580. </otherwise>
  581. </choose>
  582. </select>
  583. <!--根据OrderCode订单号更新收款订单-->
  584. <update id="updateByGoldCoinOrderCodeByPayment">
  585. update cash_record_collection
  586. SET
  587. received_time=#{time},
  588. payment_currency='2',
  589. received_currency='2',
  590. payment_amount=#{order_amount},
  591. received_amount=#{net_amount},
  592. handling_charge=#{charge},
  593. status=4,
  594. order_no_status=0
  595. where order_code=#{merchant_reference}
  596. </update>
  597. <!--根据OrderCode订单号更新收款订单-->
  598. <update id="updateByGoldCoinOrderCodeByStripe">
  599. update cash_record_collection
  600. SET
  601. received_time=#{availableOn},
  602. payment_currency='2',
  603. received_currency='2',
  604. payment_amount=#{amount},
  605. received_amount=#{net},
  606. handling_charge=#{fee},
  607. status=4,
  608. order_no_status=0
  609. where order_code=#{orderNo}
  610. </update>
  611. <!--根据OrderCode订单号更新收款订单-->
  612. <update id="updateByGoldCoinOrderCodeByStripe2">
  613. update cash_record_collection
  614. SET
  615. received_time=#{availableOn},
  616. payment_currency='3',
  617. received_currency='3',
  618. payment_amount=#{amount},
  619. received_amount=#{net},
  620. handling_charge=#{fee},
  621. status=4,
  622. order_no_status=0
  623. where order_code=#{orderNo}
  624. </update>
  625. <update id="updateByGoldCoinOrderCodeByFirstdata">
  626. update cash_record_collection
  627. SET
  628. payment_currency='3',
  629. received_currency='3',
  630. payment_amount=#{amount},
  631. received_amount=#{net},
  632. handling_charge=#{fee},
  633. status=4,
  634. order_no_status=0
  635. where order_code=#{orderId}
  636. </update>
  637. <update id="updateByGoldCoinOrderCodeByIpay88">
  638. update cash_record_collection
  639. SET
  640. payment_currency='4',
  641. received_currency='4',
  642. payment_amount=#{amount},
  643. received_amount=#{net},
  644. handling_charge=#{fee},
  645. status=4,
  646. order_no_status=0
  647. where order_code=#{orderNo}
  648. </update>
  649. <update id="updateMessageFlagByTypeIdAndType">
  650. UPDATE message
  651. SET flag = #{flag}
  652. WHERE type_id = #{typeId} AND type = #{type}
  653. </update>
  654. <insert id="adjust" parameterType="com.example.demo.domain.entity.CashRecord"
  655. useGeneratedKeys="true" keyProperty="id">
  656. insert into
  657. cash_record_collection(order_type,jwcode,name,market,activity,performance_market,
  658. order_code,goods_name,permanent_gold,free_gold,
  659. pay_type,pay_time,status,submitter_id,submitter_market,
  660. voucher,remark,received_currency,payment_amount,received_amount,received_market,is_performance)
  661. values(1,90039082,"HomilyLink",24032,125,#{performanceMarket},
  662. #{orderCode},"业绩",0,0,"调整",#{payTime},
  663. 100,#{submitterId},#{submitterMarket},1,#{remark},3,0,#{receivedAmount},#{receivedMarket},1)
  664. </insert>
  665. </mapper>