Authored by tanling

增加方法数量和使用数量

... ... @@ -24,6 +24,7 @@ import com.yoho.ufo.service.IBusinessExportService;
import com.yoho.ufo.service.impl.BatchService;
import com.yoho.ufo.service.impl.UserHelper;
import com.yoho.ufo.service.model.ApiResponse;
import com.yoho.ufo.util.CollectionUtil;
import com.yohobuy.ufo.coupon.req.CouponQueryReq;
import com.yohobuy.ufo.coupon.req.CouponSaveUpdateReq;
import com.yohobuy.ufo.coupon.req.CouponSendReq;
... ... @@ -31,7 +32,9 @@ import com.yohobuy.ufo.coupon.req.UserCouponQueryReq;
import com.yohobuy.ufo.model.common.PageResponseBO;
import com.yohobuy.ufo.model.order.constants.SkupType;
import com.yohobuy.ufo.model.promotion.constant.CouponTypeEnum;
import com.yohobuy.ufo.model.promotion.constant.UserCouponsStatusEnum;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
... ... @@ -133,11 +136,46 @@ public class CouponServiceImpl implements ICouponService,IBusinessExportService{
return new ApiResponse.ApiResponseBuilder().data(jsonObject).build();
}
List<Coupon> coupons = couponMapper.selectByCondition(req);
// 获取 该券的用户领取|使用记录
Map<Integer, List<UserCoupon>> userCouponMap = null;
if (CollectionUtils.isNotEmpty(coupons)){
List<Integer> couponIdList = coupons.stream().map(Coupon::getId).collect(Collectors.toList());
userCouponMap = getUserCouponMap(couponIdList);
}
List<CouponQueryResp> couponQueryResps = initCouponQueryResps(coupons,req.getCurTime());
// 设置 已经领取数量|已经使用记录
if (MapUtils.isNotEmpty(userCouponMap)){
Map<Integer, List<UserCoupon>> finalUserCouponMap = userCouponMap;
couponQueryResps = couponQueryResps.stream().map(x-> {
List<UserCoupon> userCouponList = finalUserCouponMap.get(x.getId());
if (CollectionUtils.isEmpty(userCouponList)) {
return x;
}
x.setSendNum(userCouponList.size());
x.setUseNum(userCouponList.stream().filter(y->y.getStatus()== UserCouponsStatusEnum.USED.getCode()).count());
return x;
}).collect(Collectors.toList());
}
jsonObject.put("coupons",couponQueryResps);
return new ApiResponse.ApiResponseBuilder().data(jsonObject).build();
}
private Map<Integer, List<UserCoupon>> getUserCouponMap(List<Integer> couponIdList) {
List<UserCoupon> userCouponList = userCouponMapper.selectByCouponIds(couponIdList);
if (CollectionUtils.isEmpty(userCouponList)){
return null;
}
Map<Integer, List<UserCoupon>> userCouponMap = userCouponList.stream().collect(Collectors.groupingBy(UserCoupon::getCouponId));
return userCouponMap;
}
@Override
public ApiResponse saveOrUpdateCoupon(CouponSaveUpdateReq req) {
LOGGER.info("enter saveOrUpdateCoupon,param is {}",req);
... ...
... ... @@ -12,5 +12,8 @@ import java.util.List;
public interface UserCouponMapper {
List<UserCoupon> selectByCondition(@Param("param") UserCouponQueryReq param);
List<UserCoupon> selectByCouponIds(@Param("couponIds") List<Integer> couponIds);
int selectTotalByCondition(@Param("param") UserCouponQueryReq param);
}
... ...
... ... @@ -39,6 +39,16 @@ public class CouponQueryResp {
)
private String status;
private Integer statusValue;
/**
* 发放数量
*/
private long sendNum;
/**
* 使用数量
*/
private long useNum;
public CouponQueryResp(Integer id, String name, Integer couponNum, String useTime, String remark, String status, Integer statusValue,String token) {
this.id = id;
this.name = name;
... ...
... ... @@ -19,6 +19,20 @@
<sql id="Base_Column_List">
id,uid,coupon_id,coupon_type,coupon_code,status,order_code,use_time,start_time,end_time,create_time,coupon_token
</sql>
<select id="selectByCouponIds" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_coupon
where
AND coupon_id IN
<foreach collection="couponIds" item="couponId" open="(" separator="," close=")">
#{couponId,jdbcType=INTEGER}
</foreach>
</select>
<select id="selectByCondition" resultType="com.yoho.ufo.model.coupon.UserCoupon">
select <include refid="Base_Column_List"/> from user_coupon
inner join (
... ...