CouponMapper.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.caimei365.commodity.mapper.CouponMapper">
  6. <select id="findCouponClub" resultType="com.caimei365.commodity.model.vo.CouponVo">
  7. SELECT
  8. cc.`id` AS "couponId",
  9. cc.`couponAmount`,
  10. cc.`touchPrice`,
  11. if(cc.vipFlag = 1,cc.startDate,a.createDate) as startDate,
  12. if(cc.vipFlag = 1,cc.endDate,date_add(a.createDate,interval cc.usePeriod day)) as endDate,
  13. cc.`couponType`,
  14. cc.`userId`,
  15. cc.`shopId`,
  16. cc.`productType`,
  17. cc.moneyCouponPrice,
  18. cc.moneyCouponFlag,
  19. cc.moneyCouponType,
  20. cc.`categoryType`,
  21. cc.couponPayWay
  22. FROM
  23. cm_coupon_club a
  24. LEFT JOIN cm_coupon cc ON a.couponId = cc.id
  25. WHERE
  26. IF(cc.moneyCouponFlag=2,cc.delflag = 0,cc.id>0)
  27. AND a.delFlag = 0
  28. AND a.userId = #{userId}
  29. <if test="status == 1">
  30. AND a.status = 1
  31. AND if(cc.vipFlag = 1,
  32. NOW() BETWEEN cc.startDate AND cc.endDate,
  33. NOW() <![CDATA[ < ]]> date_add(a.createDate,interval cc.usePeriod DAY))
  34. </if>
  35. <if test="status == 2">
  36. AND a.status = 2
  37. </if>
  38. <if test="status == 3">
  39. AND a.status = 1
  40. AND if(cc.vipFlag = 1,
  41. NOW() > cc.endDate,
  42. NOW() <![CDATA[ > ]]> date_add(a.createDate,interval cc.usePeriod DAY))
  43. </if>
  44. AND cc.status != 2
  45. ORDER BY
  46. a.createDate DESC
  47. </select>
  48. <select id="findCouponById" resultType="com.caimei365.commodity.model.vo.ActivityCouponVo">
  49. SELECT id AS "couponId",
  50. NAME,
  51. pcBanner,
  52. appletsBanner,
  53. productType
  54. FROM cm_coupon
  55. WHERE productType = 2
  56. AND delFlag = 0
  57. AND couponType = 0
  58. AND NOW() BETWEEN startDate
  59. AND endDate
  60. AND status != 2
  61. AND id = #{couponId}
  62. </select>
  63. <select id="findCouponProduct" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
  64. SELECT
  65. p.productID AS productId,
  66. p.actStatus,
  67. p.name,
  68. p.aliasName,
  69. p.mainImage AS image,
  70. p.unit,
  71. p.productCode AS CODE,
  72. p.priceFlag,
  73. p.price,
  74. p.costPrice,
  75. p.costCheckFlag,
  76. p.shopID AS shopId,
  77. p.searchKey AS keyword,
  78. p.minBuyNumber AS minBuyNumber,
  79. p.maxBuyNumber AS maxBuyNumber,
  80. p.ladderPriceFlag,
  81. p.normalPrice,
  82. p.step,
  83. p.shopID AS shopId,
  84. p.taxPoint AS taxRate,
  85. p.includedTax,
  86. p.invoiceType,
  87. p.productCategory AS productCategory,
  88. p.validFlag,
  89. p.featuredFlag,
  90. p.commodityType,
  91. p.bigTypeID AS bigTypeId,
  92. p.smallTypeID AS smallTypeId,
  93. p.tinyTypeID AS tinyTypeId,
  94. p.productType
  95. FROM
  96. cm_coupon_product a
  97. LEFT JOIN product p ON a.productId = p.productID
  98. WHERE
  99. a.delFlag = 0
  100. AND a.couponId = #{couponId}
  101. <if test="source == 1">
  102. AND a.pcStatus = 1
  103. </if>
  104. <if test="source == 2">
  105. AND a.appletsStatus = 1
  106. </if>
  107. <choose>
  108. <when test="identity == 1">
  109. AND p.validFlag IN (2,3,9)
  110. </when>
  111. <when test="identity == 5">
  112. AND p.validFlag = 2
  113. </when>
  114. <when test="identity == 2">
  115. AND p.visibility IN (1,2,3) AND p.validFlag = 2
  116. </when>
  117. <when test="identity == 4">
  118. AND p.visibility IN (2,3) AND p.validFlag = 2
  119. </when>
  120. <otherwise>
  121. AND p.visibility = 3 AND p.validFlag = 2
  122. </otherwise>
  123. </choose>
  124. ORDER BY
  125. -a.sort DESC
  126. </select>
  127. <select id="findCouponList" resultType="com.caimei365.commodity.model.vo.CouponVo">
  128. SELECT
  129. `id` AS "couponId",
  130. `couponAmount`,
  131. `touchPrice`,
  132. <if test="userId == null || userId == 0">
  133. startDate,
  134. endDate,
  135. </if>
  136. <if test="userId != null and userId > 0">
  137. if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate,#{registerTime},startDate) as startDate,
  138. if(receiveFlag=1,endDate,date_add(if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate,#{registerTime},startDate),interval receivePeriod day)) as endDate,
  139. </if>
  140. moneyCouponPrice,
  141. moneyCouponFlag,
  142. moneyCouponType,
  143. `couponType`,
  144. `userId`,
  145. `shopId`,
  146. `productType`,
  147. `categoryType`,
  148. couponPayWay
  149. FROM
  150. cm_coupon
  151. WHERE
  152. delFlag = 0 AND vipFlag != 1
  153. AND status != 2
  154. AND couponsMode = 0
  155. <if test="userId == null or userId == 0">
  156. AND couponType != 2
  157. AND NOW() <![CDATA[ > ]]> startDate
  158. AND NOW() <![CDATA[ < ]]> if(receiveFlag = 1,endDate,date_add(startDate,interval receivePeriod day))
  159. </if>
  160. <if test="userId != null and userId > 0">
  161. AND id NOT IN(SELECT couponId FROM cm_coupon_club WHERE userId = #{userId})
  162. AND (couponType IN (0,1,3)
  163. OR (couponType = 2 AND userId = #{userId})
  164. OR (#{registerTime} <![CDATA[ >= ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate AND couponType = 4))
  165. and NOW() <![CDATA[ > ]]> startDate
  166. and NOW() <![CDATA[ < ]]> if(receiveFlag = 1,endDate,
  167. date_add(if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate,#{registerTime},startDate),interval receivePeriod day)
  168. )
  169. </if>
  170. ORDER BY
  171. createDate DESC
  172. </select>
  173. <select id="getCoupons" resultType="com.caimei365.commodity.model.vo.CouponVo">
  174. SELECT `id` AS "couponId",
  175. `couponAmount`,
  176. `touchPrice`,
  177. if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate,#{registerTime},startDate) as startDate,
  178. if(receiveFlag=1,endDate,date_add(if(#{registerTime} <![CDATA[ > ]]> startDate and #{registerTime} <![CDATA[ < ]]> endDate,#{registerTime},startDate),
  179. interval receivePeriod day)) as endDate,
  180. date_add(NOW(),interval usePeriod day ) as usePeriod,
  181. `endDate`,
  182. `couponType`,
  183. `userId`,
  184. `shopId`,
  185. `productType`,
  186. `categoryType`
  187. FROM cm_coupon
  188. WHERE delFlag = 0
  189. AND status != 2
  190. AND id = #{couponId}
  191. </select>
  192. <select id="findCouponRedemptionCode" resultType="com.caimei365.commodity.model.po.CouponRedemptionCodePo">
  193. SELECT `id`,
  194. `couponId`,
  195. `clubCouponId`,
  196. `redemptionCode`,
  197. `status`,
  198. `redemptionTime`,
  199. `addTime`
  200. FROM `cm_coupon_redemption_code`
  201. WHERE redemptionCode = #{redemptionCode}
  202. </select>
  203. <select id="findCouponClubByUserId" resultType="integer">
  204. SELECT `id`
  205. FROM `cm_coupon_club`
  206. WHERE userId = #{userId}
  207. AND couponId = #{couponId}
  208. </select>
  209. <insert id="insertCouponClub" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
  210. INSERT INTO `cm_coupon_club` (`userId`,
  211. `couponId`,
  212. `orderId`,
  213. `source`,
  214. `status`,
  215. `createDate`,
  216. `useDate`,
  217. `delFlag`)
  218. VALUES (#{userId},
  219. #{couponId},
  220. #{orderId},
  221. #{source},
  222. #{status},
  223. #{createDate},
  224. #{useDate},
  225. #{delFlag})
  226. </insert>
  227. <update id="updateRedemptionCode">
  228. UPDATE
  229. cm_coupon_redemption_code
  230. SET STATUS = 2,
  231. redemptionTime = NOW(),
  232. clubCouponId = #{clubCouponId}
  233. WHERE id = #{id}
  234. </update>
  235. <select id="findUserRegisterTime" resultType="date">
  236. SELECT registerTime
  237. FROM user
  238. WHERE userID = #{userId}
  239. </select>
  240. <select id="findVip" resultType="java.lang.Integer">
  241. select userId
  242. from cm_svip_user
  243. where userId = #{userId}
  244. AND delFlag = 0
  245. AND endtime > now()
  246. </select>
  247. <select id="findVipCoupon" resultType="java.lang.Integer">
  248. select couponId
  249. from cm_svip_coupon
  250. </select>
  251. <select id="findMoneyCoupons" resultType="com.caimei365.commodity.model.vo.CouponVo">
  252. SELECT
  253. cc.`id` AS "couponId",
  254. cc.`couponAmount`,
  255. cc.`touchPrice`,
  256. if(#{registerTime} <![CDATA[ > ]]> cc.startDate and #{registerTime} <![CDATA[ < ]]> cc.endDate,#{registerTime},cc.startDate) as startDate,
  257. if(receiveFlag=1,cc.endDate,date_add(if(#{registerTime} <![CDATA[ > ]]> cc.startDate and #{registerTime} <![CDATA[ < ]]> cc.endDate,#{registerTime},cc.startDate),interval receivePeriod day)) as endDate,
  258. cc.moneyCouponPrice,
  259. cc.moneyCouponFlag,
  260. cc.moneyCouponType,
  261. cc.`couponType`,
  262. cc.`userId`,
  263. cc.`shopId`,
  264. cc.`productType`,
  265. cc.`categoryType`,
  266. cc.couponPayWay,
  267. s.name as shopName
  268. FROM
  269. cm_coupon cc
  270. LEFT JOIN shop s ON cc.shopId = s.shopId
  271. WHERE
  272. cc.delFlag = 0 AND cc.vipFlag != 1
  273. AND cc.id != 49
  274. AND cc.status != 2
  275. AND cc.couponsMode = 0
  276. AND cc.moneyCouponFlag = 1
  277. AND (cc.couponType IN (0,1,3)
  278. OR (cc.couponType = 2 AND cc.userId = #{userId})
  279. OR (#{registerTime} <![CDATA[ >= ]]> cc.startDate and #{registerTime} <![CDATA[ < ]]> cc.endDate AND cc.couponType = 4))
  280. and NOW() <![CDATA[ > ]]> cc.startDate
  281. and NOW() <![CDATA[ < ]]> if(receiveFlag = 1,cc.endDate,
  282. date_add(if(#{registerTime} <![CDATA[ > ]]> cc.startDate and #{registerTime} <![CDATA[ < ]]> cc.endDate,#{registerTime},cc.startDate),interval receivePeriod day)
  283. )
  284. ORDER BY
  285. cc.createDate DESC
  286. </select>
  287. <select id="findCouponDetail" resultType="com.caimei365.commodity.model.vo.CouponVo">
  288. SELECT
  289. cc.`id` AS "couponId",
  290. cc.`couponAmount`,
  291. cc.`touchPrice`,
  292. cc.startDate,
  293. cc.endDate,
  294. cc.`couponType`,
  295. cc.`userId`,
  296. cc.`shopId`,
  297. cc.`productType`,
  298. cc.`categoryType`,
  299. cc.moneyCouponPrice,
  300. cc.moneyCouponFlag,
  301. s.name as shopName,
  302. cc.couponPayWay
  303. FROM
  304. cm_coupon cc
  305. LEFT JOIN shop s ON cc.shopId = s.shopId
  306. where id = #{couponId}
  307. </select>
  308. <select id="findUserPermission" resultType="java.lang.Integer">
  309. select userIdentity from user where userID = #{userId}
  310. </select>
  311. </mapper>