puzhibing
2023-11-25 94f34a5cf9ab374afbaefd566bc0a3dc8a4616dd
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -20,6 +20,8 @@
import com.dsh.activity.model.request.IntegralGoodsOfSearch;
import com.dsh.activity.service.ICouponService;
import com.dsh.activity.service.UserCouponService;
import com.dsh.activity.util.RedisUtil;
import com.dsh.activity.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -30,6 +32,7 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
@@ -44,14 +47,18 @@
    @Resource
    private StudentClient studentClient;
    @Autowired
    private UserCouponService userCouponService;
    @Autowired
    private ICouponService couponService;
    @Autowired
    private RedisUtil redisUtil;
    /**
     * 获取购买会员支付成功页面的优惠券
@@ -61,51 +68,19 @@
     */
    @Override
    public List<CouponListVo> queryCouponList(Integer uid, Integer distributionMethod) throws Exception {
        AppUser appUser = appUserClient.queryAppUser(uid);
        String value = redisUtil.getValue("VIP_P_" + uid);
        if(ToolUtil.isEmpty(value)){
            Thread.sleep(5000);
            value = redisUtil.getValue("VIP_P_" + uid);
        }
        List<CouponListVo> listVos = new ArrayList<>();
        if (null != appUser) {
//            List<Integer> userPopulation = new ArrayList<>();
//            userPopulation.add(1);//全部用户
//            if (1 == appUser.getIsVip()) {
//                userPopulation.add(2);//年度会员
//            }
//            List<TStudent> students = studentClient.queryStudentList(uid);
//            if (students.size() > 0) {
//                userPopulation.add(3);//已有学员用户
//            }
//            List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", distributionMethod)
//                    .in("userPopulation", userPopulation)
//                    .eq("auditStatus", 2).eq("status", 2).eq("state", 1)
//                    .last(" and now() between startTime and endTime order by insertTime desc"));
//            List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2).eq("userPopulation",2)
//                    .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2)
//                    .eq("state", 1));
        if(ToolUtil.isEmpty(value)){
            List<Long> longs = JSON.parseArray(value, Long.class);
            List<UserCoupon> list = userCouponService.getBaseMapper().selectBatchIds(longs);
            List<Integer> collect = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList());
            List<Coupon> coupons = couponService.getBaseMapper().selectBatchIds(collect);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            LocalDateTime currentTime = LocalDateTime.now();
            LocalDateTime oneMinuteAgo = currentTime.minusSeconds(6000);
            List<UserCoupon> list = userCouponService.list(new QueryWrapper<UserCoupon>().eq("userId", uid).ge("insertTime", oneMinuteAgo));
            List<Integer> ids = new ArrayList<>();
            for (UserCoupon userCoupon : list) {
                ids.add(userCoupon.getCouponId());
            }
            List<Coupon> userId = new ArrayList<>();
            if (ids.size()>0) {
                userId = couponService.list(new QueryWrapper<Coupon>().in("id", ids));
            }
            for (Coupon coupon : userId) {
            for (Coupon coupon : coupons) {
                if (coupon.getDistributionMethod()!=2){
                    continue;
                }