Showing
6 changed files
with
62 additions
and
169 deletions
@@ -17,6 +17,7 @@ import com.yoho.ufo.exception.PlatformException; | @@ -17,6 +17,7 @@ import com.yoho.ufo.exception.PlatformException; | ||
17 | import com.yoho.ufo.model.coupon.Coupon; | 17 | import com.yoho.ufo.model.coupon.Coupon; |
18 | import com.yoho.ufo.model.coupon.CouponProductLimit; | 18 | import com.yoho.ufo.model.coupon.CouponProductLimit; |
19 | import com.yoho.ufo.model.coupon.UserCoupon; | 19 | import com.yoho.ufo.model.coupon.UserCoupon; |
20 | +import com.yoho.ufo.model.coupon.UserCouponNum; | ||
20 | import com.yoho.ufo.model.coupon.resp.CouponQueryResp; | 21 | import com.yoho.ufo.model.coupon.resp.CouponQueryResp; |
21 | import com.yoho.ufo.model.coupon.resp.UidCouponQueryResp; | 22 | import com.yoho.ufo.model.coupon.resp.UidCouponQueryResp; |
22 | import com.yoho.ufo.model.coupon.resp.UserCouponQueryResp; | 23 | import com.yoho.ufo.model.coupon.resp.UserCouponQueryResp; |
@@ -46,6 +47,7 @@ import org.springframework.web.multipart.MultipartFile; | @@ -46,6 +47,7 @@ import org.springframework.web.multipart.MultipartFile; | ||
46 | import javax.annotation.Resource; | 47 | import javax.annotation.Resource; |
47 | import javax.servlet.http.HttpServletRequest; | 48 | import javax.servlet.http.HttpServletRequest; |
48 | import java.util.*; | 49 | import java.util.*; |
50 | +import java.util.function.Function; | ||
49 | import java.util.stream.Collectors; | 51 | import java.util.stream.Collectors; |
50 | 52 | ||
51 | /** | 53 | /** |
@@ -137,45 +139,40 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{ | @@ -137,45 +139,40 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{ | ||
137 | } | 139 | } |
138 | List<Coupon> coupons = couponMapper.selectByCondition(req); | 140 | List<Coupon> coupons = couponMapper.selectByCondition(req); |
139 | 141 | ||
140 | - // 获取 该券的用户领取|使用记录 | ||
141 | - Map<Integer, List<UserCoupon>> userCouponMap = null; | 142 | + // 只获取使用记录 |
143 | + Map<Integer, UserCouponNum> sendNumMap = null; | ||
144 | + Map<Integer, UserCouponNum> useNumMap = null; | ||
142 | if (CollectionUtils.isNotEmpty(coupons)){ | 145 | if (CollectionUtils.isNotEmpty(coupons)){ |
143 | List<Integer> couponIdList = coupons.stream().map(Coupon::getId).collect(Collectors.toList()); | 146 | List<Integer> couponIdList = coupons.stream().map(Coupon::getId).collect(Collectors.toList()); |
144 | - userCouponMap = getUserCouponMap(couponIdList); | 147 | + List<UserCouponNum> sendNumList = userCouponMapper.selectByCouponIds(couponIdList); |
148 | + sendNumMap = sendNumList.stream().collect(Collectors.toMap(UserCouponNum::getCouponId, Function.identity(), (k1,k2)->k2)); | ||
149 | + List<UserCouponNum> useNumList = userCouponMapper.selectByCouponIdsAndStatus(couponIdList); | ||
150 | + useNumMap = useNumList.stream().collect(Collectors.toMap(UserCouponNum::getCouponId, Function.identity(), (k1,k2)->k2)); | ||
145 | } | 151 | } |
146 | 152 | ||
147 | List<CouponQueryResp> couponQueryResps = initCouponQueryResps(coupons,req.getCurTime()); | 153 | List<CouponQueryResp> couponQueryResps = initCouponQueryResps(coupons,req.getCurTime()); |
148 | 154 | ||
149 | - // 设置 已经领取数量|已经使用记录 | ||
150 | - if (MapUtils.isNotEmpty(userCouponMap)){ | ||
151 | - Map<Integer, List<UserCoupon>> finalUserCouponMap = userCouponMap; | 155 | + if (MapUtils.isEmpty(sendNumMap) && MapUtils.isEmpty(useNumMap)) { |
156 | + Map<Integer, UserCouponNum> finalSendNumMap = sendNumMap; | ||
157 | + Map<Integer, UserCouponNum> finalUseNumMap = useNumMap; | ||
158 | + couponQueryResps = couponQueryResps.stream().map(x->{ | ||
152 | 159 | ||
153 | - couponQueryResps = couponQueryResps.stream().map(x-> { | ||
154 | - List<UserCoupon> userCouponList = finalUserCouponMap.get(x.getId()); | ||
155 | - if (CollectionUtils.isEmpty(userCouponList)) { | ||
156 | - return x; | 160 | + if (MapUtils.isNotEmpty(finalSendNumMap)){ |
161 | + x.setSendNum(finalSendNumMap.get(x.getId()) == null ? 0 :finalSendNumMap.get(x.getId()).getCnt()); | ||
157 | } | 162 | } |
158 | - x.setSendNum(userCouponList.size()); | ||
159 | - x.setUseNum(userCouponList.stream().filter(y->y.getStatus()== UserCouponsStatusEnum.USED.getCode()).count()); | 163 | + |
164 | + if (MapUtils.isNotEmpty(finalUseNumMap)){ | ||
165 | + x.setUseNum(finalUseNumMap.get(x.getId()) == null ? 0 : finalUseNumMap.get(x.getId()).getCnt()); | ||
166 | + } | ||
167 | + | ||
160 | return x; | 168 | return x; |
161 | }).collect(Collectors.toList()); | 169 | }).collect(Collectors.toList()); |
162 | } | 170 | } |
163 | 171 | ||
164 | - | ||
165 | - | ||
166 | jsonObject.put("coupons",couponQueryResps); | 172 | jsonObject.put("coupons",couponQueryResps); |
167 | return new ApiResponse.ApiResponseBuilder().data(jsonObject).build(); | 173 | return new ApiResponse.ApiResponseBuilder().data(jsonObject).build(); |
168 | } | 174 | } |
169 | 175 | ||
170 | - private Map<Integer, List<UserCoupon>> getUserCouponMap(List<Integer> couponIdList) { | ||
171 | - List<UserCoupon> userCouponList = userCouponMapper.selectByCouponIds(couponIdList); | ||
172 | - if (CollectionUtils.isEmpty(userCouponList)){ | ||
173 | - return null; | ||
174 | - } | ||
175 | - Map<Integer, List<UserCoupon>> userCouponMap = userCouponList.stream().collect(Collectors.groupingBy(UserCoupon::getCouponId)); | ||
176 | - return userCouponMap; | ||
177 | - } | ||
178 | - | ||
179 | @Override | 176 | @Override |
180 | public ApiResponse saveOrUpdateCoupon(CouponSaveUpdateReq req) { | 177 | public ApiResponse saveOrUpdateCoupon(CouponSaveUpdateReq req) { |
181 | LOGGER.info("enter saveOrUpdateCoupon,param is {}",req); | 178 | LOGGER.info("enter saveOrUpdateCoupon,param is {}",req); |
@@ -522,6 +519,7 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{ | @@ -522,6 +519,7 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{ | ||
522 | com.yoho.ufo.util.DateUtil.int2DateStr(coupon.getEndTime(),"yyyy-MM-dd HH:mm:ss"); | 519 | com.yoho.ufo.util.DateUtil.int2DateStr(coupon.getEndTime(),"yyyy-MM-dd HH:mm:ss"); |
523 | CouponQueryResp resp = new CouponQueryResp(coupon.getId(),coupon.getCouponName(),coupon.getCouponNum(), | 520 | CouponQueryResp resp = new CouponQueryResp(coupon.getId(),coupon.getCouponName(),coupon.getCouponNum(), |
524 | useTime,coupon.getRemark(), getStatusDesc(coupon,curTime),coupon.getStatus(),coupon.getCouponToken()); | 521 | useTime,coupon.getRemark(), getStatusDesc(coupon,curTime),coupon.getStatus(),coupon.getCouponToken()); |
522 | + resp.setSendNum(coupon.getSendNum()); | ||
525 | resps.add(resp); | 523 | resps.add(resp); |
526 | } | 524 | } |
527 | return resps; | 525 | return resps; |
1 | package com.yoho.ufo.dal; | 1 | package com.yoho.ufo.dal; |
2 | 2 | ||
3 | import com.yoho.ufo.model.coupon.UserCoupon; | 3 | import com.yoho.ufo.model.coupon.UserCoupon; |
4 | +import com.yoho.ufo.model.coupon.UserCouponNum; | ||
4 | import com.yohobuy.ufo.coupon.req.UserCouponQueryReq; | 5 | import com.yohobuy.ufo.coupon.req.UserCouponQueryReq; |
5 | import org.apache.ibatis.annotations.Param; | 6 | import org.apache.ibatis.annotations.Param; |
6 | 7 | ||
@@ -13,7 +14,10 @@ public interface UserCouponMapper { | @@ -13,7 +14,10 @@ public interface UserCouponMapper { | ||
13 | List<UserCoupon> selectByCondition(@Param("param") UserCouponQueryReq param); | 14 | List<UserCoupon> selectByCondition(@Param("param") UserCouponQueryReq param); |
14 | 15 | ||
15 | 16 | ||
16 | - List<UserCoupon> selectByCouponIds(@Param("couponIds") List<Integer> couponIds); | 17 | + List<UserCouponNum> selectByCouponIds(@Param("couponIds") List<Integer> couponIds); |
18 | + | ||
19 | + | ||
20 | + List<UserCouponNum> selectByCouponIdsAndStatus(@Param("couponIds") List<Integer> couponIds); | ||
17 | 21 | ||
18 | int selectTotalByCondition(@Param("param") UserCouponQueryReq param); | 22 | int selectTotalByCondition(@Param("param") UserCouponQueryReq param); |
19 | } | 23 | } |
1 | package com.yoho.ufo.model.coupon; | 1 | package com.yoho.ufo.model.coupon; |
2 | 2 | ||
3 | +import lombok.Data; | ||
4 | + | ||
3 | import java.io.Serializable; | 5 | import java.io.Serializable; |
4 | 6 | ||
5 | /** | 7 | /** |
6 | * Created by shengguo.cai on 2018/11/20. | 8 | * Created by shengguo.cai on 2018/11/20. |
7 | */ | 9 | */ |
10 | +@Data | ||
8 | public class Coupon implements Serializable { | 11 | public class Coupon implements Serializable { |
9 | 12 | ||
10 | private Integer id; | 13 | private Integer id; |
@@ -25,6 +28,10 @@ public class Coupon implements Serializable { | @@ -25,6 +28,10 @@ public class Coupon implements Serializable { | ||
25 | private Integer createTime; | 28 | private Integer createTime; |
26 | private Integer pid; | 29 | private Integer pid; |
27 | private String remark; | 30 | private String remark; |
31 | + /** | ||
32 | + * 禁止商品类型 | ||
33 | + */ | ||
34 | + private String skupForbidType; | ||
28 | /**商品限制条件-特定商品*/ | 35 | /**商品限制条件-特定商品*/ |
29 | public static final int PRODUCTLIMITTYPE_SPECIALPRODUCT = 1; | 36 | public static final int PRODUCTLIMITTYPE_SPECIALPRODUCT = 1; |
30 | /**商品限制条件-无限制*/ | 37 | /**商品限制条件-无限制*/ |
@@ -70,147 +77,5 @@ public class Coupon implements Serializable { | @@ -70,147 +77,5 @@ public class Coupon implements Serializable { | ||
70 | } | 77 | } |
71 | } | 78 | } |
72 | 79 | ||
73 | - public Integer getId() { | ||
74 | - return id; | ||
75 | - } | ||
76 | - | ||
77 | - public void setId(Integer id) { | ||
78 | - this.id = id; | ||
79 | - } | ||
80 | - | ||
81 | - public String getCouponToken() { | ||
82 | - return couponToken; | ||
83 | - } | ||
84 | - | ||
85 | - public void setCouponToken(String couponToken) { | ||
86 | - this.couponToken = couponToken; | ||
87 | - } | ||
88 | 80 | ||
89 | - public String getCouponName() { | ||
90 | - return couponName; | ||
91 | - } | ||
92 | - | ||
93 | - public void setCouponName(String couponName) { | ||
94 | - this.couponName = couponName; | ||
95 | - } | ||
96 | - | ||
97 | - public Float getCouponAmount() { | ||
98 | - return couponAmount; | ||
99 | - } | ||
100 | - | ||
101 | - public void setCouponAmount(Float couponAmount) { | ||
102 | - this.couponAmount = couponAmount; | ||
103 | - } | ||
104 | - | ||
105 | - public Integer getCouponType() { | ||
106 | - return couponType; | ||
107 | - } | ||
108 | - | ||
109 | - public void setCouponType(Integer couponType) { | ||
110 | - this.couponType = couponType; | ||
111 | - } | ||
112 | - | ||
113 | - public Integer getCouponNum() { | ||
114 | - return couponNum; | ||
115 | - } | ||
116 | - | ||
117 | - public void setCouponNum(Integer couponNum) { | ||
118 | - this.couponNum = couponNum; | ||
119 | - } | ||
120 | - | ||
121 | - public Integer getUseNum() { | ||
122 | - return useNum; | ||
123 | - } | ||
124 | - | ||
125 | - public void setUseNum(Integer useNum) { | ||
126 | - this.useNum = useNum; | ||
127 | - } | ||
128 | - | ||
129 | - public Integer getSendNum() { | ||
130 | - return sendNum; | ||
131 | - } | ||
132 | - | ||
133 | - public void setSendNum(Integer sendNum) { | ||
134 | - this.sendNum = sendNum; | ||
135 | - } | ||
136 | - | ||
137 | - public Integer getUseLimitType() { | ||
138 | - return useLimitType; | ||
139 | - } | ||
140 | - | ||
141 | - public void setUseLimitType(Integer useLimitType) { | ||
142 | - this.useLimitType = useLimitType; | ||
143 | - } | ||
144 | - | ||
145 | - public Integer getUseLimitValue() { | ||
146 | - return useLimitValue; | ||
147 | - } | ||
148 | - | ||
149 | - public void setUseLimitValue(Integer useLimitValue) { | ||
150 | - this.useLimitValue = useLimitValue; | ||
151 | - } | ||
152 | - | ||
153 | - public Integer getProductLimitType() { | ||
154 | - return productLimitType; | ||
155 | - } | ||
156 | - | ||
157 | - public void setProductLimitType(Integer productLimitType) { | ||
158 | - this.productLimitType = productLimitType; | ||
159 | - } | ||
160 | - | ||
161 | - public String getProductLimitValue() { | ||
162 | - return productLimitValue; | ||
163 | - } | ||
164 | - | ||
165 | - public void setProductLimitValue(String productLimitValue) { | ||
166 | - this.productLimitValue = productLimitValue; | ||
167 | - } | ||
168 | - | ||
169 | - public Integer getStartTime() { | ||
170 | - return startTime; | ||
171 | - } | ||
172 | - | ||
173 | - public void setStartTime(Integer startTime) { | ||
174 | - this.startTime = startTime; | ||
175 | - } | ||
176 | - | ||
177 | - public Integer getEndTime() { | ||
178 | - return endTime; | ||
179 | - } | ||
180 | - | ||
181 | - public void setEndTime(Integer endTime) { | ||
182 | - this.endTime = endTime; | ||
183 | - } | ||
184 | - | ||
185 | - public Integer getStatus() { | ||
186 | - return status; | ||
187 | - } | ||
188 | - | ||
189 | - public void setStatus(Integer status) { | ||
190 | - this.status = status; | ||
191 | - } | ||
192 | - | ||
193 | - public Integer getCreateTime() { | ||
194 | - return createTime; | ||
195 | - } | ||
196 | - | ||
197 | - public void setCreateTime(Integer createTime) { | ||
198 | - this.createTime = createTime; | ||
199 | - } | ||
200 | - | ||
201 | - public Integer getPid() { | ||
202 | - return pid; | ||
203 | - } | ||
204 | - | ||
205 | - public void setPid(Integer pid) { | ||
206 | - this.pid = pid; | ||
207 | - } | ||
208 | - | ||
209 | - public String getRemark() { | ||
210 | - return remark; | ||
211 | - } | ||
212 | - | ||
213 | - public void setRemark(String remark) { | ||
214 | - this.remark = remark; | ||
215 | - } | ||
216 | } | 81 | } |
@@ -20,12 +20,13 @@ | @@ -20,12 +20,13 @@ | ||
20 | <result column="create_time" property="createTime" jdbcType="INTEGER" /> | 20 | <result column="create_time" property="createTime" jdbcType="INTEGER" /> |
21 | <result column="pid" property="pid" jdbcType="INTEGER" /> | 21 | <result column="pid" property="pid" jdbcType="INTEGER" /> |
22 | <result column="remark" property="remark" jdbcType="VARCHAR" /> | 22 | <result column="remark" property="remark" jdbcType="VARCHAR" /> |
23 | + <result column="skup_forbid_type" property="skupForbidType" jdbcType="VARCHAR" /> | ||
23 | </resultMap> | 24 | </resultMap> |
24 | 25 | ||
25 | <sql id="Base_Column_List"> | 26 | <sql id="Base_Column_List"> |
26 | id,coupon_token,coupon_name,coupon_amount,coupon_type,coupon_num,use_num,send_num, | 27 | id,coupon_token,coupon_name,coupon_amount,coupon_type,coupon_num,use_num,send_num, |
27 | use_limit_type,use_limit_value,product_limit_type,product_limit_value,start_time, | 28 | use_limit_type,use_limit_value,product_limit_type,product_limit_value,start_time, |
28 | - end_time,status,create_time,pid,remark | 29 | + end_time,status,create_time,pid,remark,skup_forbid_type |
29 | </sql> | 30 | </sql> |
30 | <insert id="insertOrUpdate" useGeneratedKeys="true" keyProperty="param.id"> | 31 | <insert id="insertOrUpdate" useGeneratedKeys="true" keyProperty="param.id"> |
31 | insert into coupon(id,coupon_token,coupon_name,coupon_amount,coupon_type,coupon_num,use_num,send_num, | 32 | insert into coupon(id,coupon_token,coupon_name,coupon_amount,coupon_type,coupon_num,use_num,send_num, |
@@ -21,15 +21,30 @@ | @@ -21,15 +21,30 @@ | ||
21 | </sql> | 21 | </sql> |
22 | 22 | ||
23 | 23 | ||
24 | - <select id="selectByCouponIds" resultMap="BaseResultMap"> | 24 | + <select id="selectByCouponIds" resultType="com.yoho.ufo.model.coupon.UserCouponNum"> |
25 | select | 25 | select |
26 | - <include refid="Base_Column_List"/> | 26 | + count(uid) cnt, coupon_id |
27 | from user_coupon | 27 | from user_coupon |
28 | where | 28 | where |
29 | coupon_id IN | 29 | coupon_id IN |
30 | <foreach collection="couponIds" item="couponId" open="(" separator="," close=")"> | 30 | <foreach collection="couponIds" item="couponId" open="(" separator="," close=")"> |
31 | #{couponId,jdbcType=INTEGER} | 31 | #{couponId,jdbcType=INTEGER} |
32 | </foreach> | 32 | </foreach> |
33 | + group by coupon_id | ||
34 | + </select> | ||
35 | + | ||
36 | + | ||
37 | + <select id="selectByCouponIdsAndStatus" resultType="com.yoho.ufo.model.coupon.UserCouponNum"> | ||
38 | + select | ||
39 | + count(uid) cnt, coupon_id | ||
40 | + from user_coupon | ||
41 | + where | ||
42 | + status=1 and | ||
43 | + coupon_id IN | ||
44 | + <foreach collection="couponIds" item="couponId" open="(" separator="," close=")"> | ||
45 | + #{couponId,jdbcType=INTEGER} | ||
46 | + </foreach> | ||
47 | + group by coupon_id | ||
33 | </select> | 48 | </select> |
34 | 49 | ||
35 | 50 |
-
Please register or login to post a comment