44323
2023-11-08 dfe52245f20a8177a0db0bc2841909fb3eab0f13
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -1,4 +1,5 @@
package com.dsh.activity.controller;
import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@@ -12,10 +13,13 @@
import com.dsh.activity.feignclient.account.AppUserClient;
import com.dsh.activity.feignclient.account.CityClient;
import com.dsh.activity.feignclient.account.StoreStaffClient;
import com.dsh.activity.feignclient.account.StudentClient;
import com.dsh.activity.feignclient.account.model.AppUserByNameAndPhoneDTO;
import com.dsh.activity.feignclient.account.model.TCityManager;
import com.dsh.activity.feignclient.account.model.TStoreStaff;
import com.dsh.activity.feignclient.model.CouponExamineListSearch;
import com.dsh.activity.feignclient.model.CouponListOfSearch;
import com.dsh.activity.feignclient.model.TAppUser;
import com.dsh.activity.feignclient.other.OperatorClient;
import com.dsh.activity.feignclient.other.RegionClient;
import com.dsh.activity.feignclient.other.StoreClient;
@@ -93,6 +97,8 @@
    @Autowired
    private AppUserClient appUserClient;
    @Autowired
    private StudentClient studentClient;
    /**
     * 查询注册赠送优惠券 判断当前优惠券限领数量
@@ -630,18 +636,69 @@
            }
            boolean save = couponService.save(coupon);
            AppUserByNameAndPhoneDTO dto = new AppUserByNameAndPhoneDTO();
            List<TAppUser> tAppUsers = appUserClient.queryAppUserList(dto);
            // 发放数量
            Integer quantityIssued = dataVo.getQuantityIssued();
            // 限领数量
            Integer pickUpQuantity = dataVo.getPickUpQuantity();
            // 赠送用户数量
            int count = quantityIssued / pickUpQuantity;
            // 自动发券
            if (dataVo.getDistributionMethod() == 3){
                // 判断用户人群 再判断限领数量
                switch (dataVo.getUserGroup()){
                    case 1:
                        // 给全部用户发券
                        // 全部用户ids
                        List<Integer> collect = tAppUsers.stream()
                                .map(TAppUser::getId).collect(Collectors.toList());
                        for (int i = 0; i < count; i++) {
                                for (int j = 0; j < pickUpQuantity; j++) {
                                    UserCoupon u1 = new UserCoupon();
                                    u1.setCouponId(coupon.getId());
                                    u1.setUserId(collect.get(i));
                                    u1.setStatus(1);
                                    u1.setVerificationUserId(null);
                                    u1.setVerificationTime(null);
                                    u1.setInsertTime(new Date());
                                    ucService.save(u1);
                                }
                        }
                        break;
                    case 2:
                        // 给年度会员发券 获取年度会员ids
                        List<Integer> collect1 = tAppUsers.stream().filter(t -> t.getVipEndTime().after(new Date()))
                                .map(TAppUser::getId)
                                .collect(Collectors.toList());
                        for (int i = 0; i < count; i++) {
                            for (int j = 0; j < pickUpQuantity; j++) {
                                UserCoupon u1 = new UserCoupon();
                                u1.setCouponId(coupon.getId());
                                u1.setUserId(collect1.get(i));
                                u1.setStatus(1);
                                u1.setVerificationUserId(null);
                                u1.setVerificationTime(null);
                                u1.setInsertTime(new Date());
                                ucService.save(u1);
                            }
                        }
                        break;
                    case 3:
                        // 给已有学员用户发券 获取已有学员的用户ids
                        List<Integer> collect2 = studentClient.getHasStudentUser();
                        for (int i = 0; i < count; i++) {
                            for (int j = 0; j < pickUpQuantity; j++) {
                                UserCoupon u1 = new UserCoupon();
                                u1.setCouponId(coupon.getId());
                                u1.setUserId(collect2.get(i));
                                u1.setStatus(1);
                                u1.setVerificationUserId(null);
                                u1.setVerificationTime(null);
                                u1.setInsertTime(new Date());
                                ucService.save(u1);
                            }
                        }
                        break;
                }
            }