CouponInfoMapper.xml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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.yonge.cooleshow.biz.dal.mapper.CouponInfoMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.CouponInfo">
  6. <id column="id_" property="id" />
  7. <result column="name_" property="name" />
  8. <result column="serial_num_" property="serialNum" />
  9. <result column="describe_" property="describe" />
  10. <result column="client_type_" property="clientType" />
  11. <result column="category_" property="category" />
  12. <result column="use_limit_" property="useLimit" />
  13. <result column="discount_price_" property="discountPrice" />
  14. <result column="coupon_type_" property="couponType" />
  15. <result column="valid_day_" property="validDay" />
  16. <result column="start_time_" property="startTime" />
  17. <result column="end_time_" property="endTime" />
  18. <result column="inventory_" property="inventory" />
  19. <result column="quantity_limit_" property="quantityLimit" />
  20. <result column="status_" property="status" />
  21. <result column="updated_by_" property="updatedBy" />
  22. <result column="update_time_" property="updateTime" />
  23. <result column="created_by_" property="createdBy" />
  24. <result column="created_time_" property="createdTime" />
  25. </resultMap>
  26. <!-- 通用查询结果列 -->
  27. <sql id="Base_Column_List">
  28. id_, name_, serial_num_, describe_, client_type_, category_, use_limit_, discount_price_, coupon_type_, valid_day_, start_time_, end_time_, inventory_, quantity_limit_, status_, updated_by_, update_time_, created_by_, created_time_
  29. </sql>
  30. <!--优惠券分页查询-->
  31. <select id="selectCouponPageInfo" resultType="com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper">
  32. SELECT t1.id_, t1.name_, t1.client_type_, t1.category_, t1.coupon_type_, t1.inventory_, t1.status_, t1.updated_by_, t1.update_time_, t1.created_time_, t1.valid_type_, t1.end_time_ FROM coupon_info t1
  33. <where>
  34. <if test="record.couponId != null">
  35. AND t1.id_ = #{record.couponId}
  36. </if>
  37. <if test="record.name != null">
  38. AND t1.name_ LIKE '%${record.name}%'
  39. </if>
  40. <if test="record.clientType != null">
  41. AND t1.client_type_ = #{record.clientType}
  42. </if>
  43. <if test="record.couponType != null">
  44. AND t1.coupon_type_ = #{record.couponType}
  45. </if>
  46. <if test="record.category != null">
  47. AND t1.category_ = #{record.category}
  48. </if>
  49. <if test="record.status != null">
  50. AND t1.status_ = #{record.status}
  51. </if>
  52. <if test="record.timestamp != null">
  53. AND (#{record.timestamp} &lt;= t1.end_time_ <if test="record.validType != null"> OR t1.valid_type_ = #{record.validType}</if>)
  54. </if>
  55. </where>
  56. ORDER BY t1.id_ DESC
  57. </select>
  58. <!--优惠券发放统计-->
  59. <select id="selectCouponIssueStatInfo" resultType="com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper">
  60. SELECT t1.coupon_id_ AS id, COUNT(DISTINCT t1.id_) AS total FROM coupon_issue t1
  61. <where>
  62. <if test="couponIds != null">
  63. AND t1.coupon_id_ IN (<foreach collection="couponIds" separator="," item="item">#{item}</foreach>)
  64. </if>
  65. <if test="record.useState != null">
  66. AND t1.use_state_ = #{record.useState}
  67. </if>
  68. <if test="record.timestamp != null">
  69. AND (t1.start_time_ &lt;= #{record.timestamp} AND #{record.timestamp} &lt;= t1.end_time_)
  70. </if>
  71. <if test="record.excludeUseState != null">
  72. AND t1.use_state_ NOT IN (<foreach collection="record.excludeUseState" separator="," item="item">#{item}</foreach>)
  73. </if>
  74. </where>
  75. GROUP BY t1.coupon_id_
  76. </select>
  77. <!--优惠券分页查询-->
  78. <!--优惠券库存调整信息-->
  79. <resultMap id="CouponInventoryPageInfoResultMap" type="com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponInventoryWrapper">
  80. <id column="id_" property="id" />
  81. <result column="user_id_" property="userId" />
  82. <result column="coupon_id_" property="couponId" />
  83. <result column="data_type_" property="dataType" />
  84. <result column="number_" property="number" />
  85. <result column="remark_" property="remark" />
  86. <result column="created_time_" property="createdTime" />
  87. <result column="username_" property="username" />
  88. <result column="real_name_" property="realName" />
  89. </resultMap>
  90. <select id="selectCouponInventoryPageInfo" resultMap="CouponInventoryPageInfoResultMap">
  91. SELECT t1.id_, t1.user_id_, t1.coupon_id_, t1.data_type_, t1.number_, t1.remark_, t1.created_time_, t2.username_, t2.real_name_
  92. FROM coupon_inventory t1 JOIN sys_user t2 ON t1.user_id_ = t2.id_
  93. <where>
  94. <if test="record.couponId != null">
  95. AND t1.coupon_id_ = #{record.couponId}
  96. </if>
  97. <if test="record.dataType != null">
  98. AND t1.data_type_ = #{record.dataType}
  99. </if>
  100. <if test="record.userId != null">
  101. AND t1.user_id_ = #{record.userId}
  102. </if>
  103. <if test="record.keyword != null">
  104. AND (t2.username_ LIKE '%${record.keyword}%' OR t2.real_name_ LIKE '%${record.keyword}%')
  105. </if>
  106. <if test="record.startTime != null and record.endTime != null">
  107. AND (#{record.startTime} &lt;= UNIX_TIMESTAMP(t1.created_time_) AND UNIX_TIMESTAMP(t1.created_time_) &lt;= #{record.endTime})
  108. </if>
  109. </where>
  110. <if test="record.groupByUser != null">GROUP BY t1.user_id_</if> ORDER BY t1.id_ DESC
  111. </select>
  112. <!--优惠券库存调整信息-->
  113. <!--活动优惠券统计-->
  114. <select id="selectActivityCouponStatInfo"
  115. resultType="com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper">
  116. SELECT t1.coupon_id_ AS id, COUNT(DISTINCT t1.id_) AS total FROM activity_reward t1
  117. <where>
  118. <if test="couponIds != null">
  119. AND t1.coupon_id_ IN (<foreach collection="couponIds" separator="," item="item">#{item}</foreach>)
  120. </if>
  121. </where>
  122. GROUP BY t1.coupon_id_
  123. </select>
  124. <!--用户订单优惠券信息-->
  125. <resultMap id="UserOrderCouponInfoResultMap" type="com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper$CouponInfo">
  126. <id column="id_" property="id" />
  127. <result column="name_" property="name" />
  128. <result column="use_limit_" property="useLimit" />
  129. <result column="discount_price_" property="discountPrice" />
  130. <result column="issue_id" property="issueId" />
  131. <result column="category_" property="category" />
  132. </resultMap>
  133. <select id="selectUserOrderCouponInfo" resultMap="UserOrderCouponInfoResultMap">
  134. SELECT t1.id_, t1.name_, t1.use_limit_, t1.discount_price_, t2.id_ AS issue_id,t1.category_
  135. FROM coupon_info t1 JOIN coupon_issue t2 ON t1.id_ = t2.coupon_id_
  136. <where>
  137. <if test="userId != null">
  138. AND t2.user_id_ = #{userId}
  139. </if>
  140. <if test="record.issueIds != null">
  141. AND t2.id_ IN (<foreach collection="record.issueIds" separator="," item="item">#{item}</foreach>)
  142. </if>
  143. <if test="record.clientType != null">
  144. AND t2.client_type_ = #{record.clientType}
  145. </if>
  146. <if test="record.useState != null">
  147. AND t2.use_state_ = #{record.useState}
  148. </if>
  149. <if test="record.timestamp != null">
  150. AND (t2.start_time_ &lt;= #{record.timestamp} AND #{record.timestamp} &lt;= t2.end_time_)
  151. </if>
  152. <if test="record.orderNo != null">
  153. AND t2.order_no_ = #{record.orderNo}
  154. </if>
  155. <if test="record.couponTypes != null">
  156. AND t1.category_ IN (<foreach collection="record.couponTypes" separator="," item="item">#{item}</foreach>)
  157. </if>
  158. </where>
  159. </select>
  160. <!--用户订单优惠券信息-->
  161. <update id="updateStock">
  162. update coupon_info set inventory_ = inventory_
  163. <choose>
  164. <when test="inOrOut.code == 'IN'">
  165. + #{size}
  166. </when>
  167. <when test="inOrOut.code == 'OUT'">
  168. - #{size}
  169. </when>
  170. </choose>
  171. <where>
  172. <if test="inOrOut.code == 'OUT'">
  173. and inventory_ - #{size} &gt;= 0
  174. </if>
  175. and id_ = #{couponId}
  176. </where>
  177. </update>
  178. </mapper>