| | |
| | | package com.dsh.activity.controller; |
| | | import java.util.Date; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | |
| | | 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; |
| | | import com.dsh.activity.feignclient.other.model.CityDataAndProvinceDataVo; |
| | | import com.dsh.activity.feignclient.other.model.Store; |
| | | import com.dsh.activity.feignclient.other.model.StoreInfoDto; |
| | | import com.dsh.activity.feignclient.other.model.TOperatorCity; |
| | | import com.dsh.activity.model.CouponListVo; |
| | | import com.dsh.activity.model.CouponRecordQuery; |
| | |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.models.auth.In; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | private StoreClient stoClient; |
| | | |
| | | |
| | | |
| | | @Resource |
| | | private RegionClient regionClient; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private AppUserClient appUserClient; |
| | | @Autowired |
| | | private StudentClient studentClient; |
| | | |
| | | /** |
| | | * 查询注册赠送优惠券 判断当前优惠券限领数量 |
| | |
| | | @ResponseBody |
| | | @PostMapping("/coupon/queryCouponByUser/{userId}") |
| | | public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId){ |
| | | List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2).eq("userPopulation",2) |
| | | List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2) |
| | | .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2) |
| | | .eq("state", 1)); |
| | | |
| | |
| | | try { |
| | | Coupon coupon = couponService.getById(id); |
| | | return coupon; |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private UserCouponService userCouponService; |
| | | @ResponseBody |
| | | @PostMapping("/coupon/queryCouponByUid") |
| | | public List<Coupon> queryCouponByUid(@RequestBody Integer uid){ |
| | | try { |
| | | LocalDateTime currentTime = LocalDateTime.now(); |
| | | LocalDateTime oneMinuteAgo = currentTime.minusSeconds(20); |
| | | |
| | | 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()); |
| | | } |
| | | |
| | | if (ids.size()>0){ |
| | | List<Coupon> userId = couponService.list(new QueryWrapper<Coupon>().in("id",ids)); |
| | | return userId; |
| | | |
| | | } |
| | | |
| | | return null; |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | |
| | | Integer publisherType = (Integer) stringObjectMap.get("publisherType"); |
| | | if (publisherType!=null) { |
| | | if (publisherType == 1) { |
| | | Integer cityManagerId = (Integer) stringObjectMap.get("cityManagerId"); |
| | | TCityManager byId = citClient.getById(cityManagerId); |
| | | stringObjectMap.put("province", byId.getProvince()); |
| | | |
| | | stringObjectMap.put("city", byId.getCity()); |
| | | } |
| | | } |
| | | } |
| | |
| | | couponInfo.put("id",coupon.getId()); |
| | | couponInfo.put("auditStatus",coupon.getAuditStatus()); |
| | | couponInfo.put("publisherType",coupon.getPublisherType()); |
| | | if (coupon.getPublisherType() == 1){ |
| | | TCityManager byId = citClient.getById(coupon.getCityManagerId()); |
| | | couponInfo.put("province",byId.getProvince()); |
| | | couponInfo.put("city",byId.getCity()); |
| | | } |
| | | |
| | | couponInfo.put("name",coupon.getName()); |
| | | couponInfo.put("type",coupon.getType()); |
| | | JSONObject jsonObject = JSON.parseObject(coupon.getContent()); |
| | |
| | | List<CouponStore> list = couStoreService.list(new LambdaQueryWrapper<CouponStore>() |
| | | .eq(CouponStore::getCouponId,coupon.getId())); |
| | | if (list.size() > 0){ |
| | | // 获取门店ids |
| | | List<Integer> collect = list.stream().map(CouponStore::getStoreId).collect(Collectors.toList()); |
| | | List<Store> storeList = stoClient.queryStoreByIds(collect); |
| | | if (storeList.size() > 0){ |
| | | for (Store store : storeList) { |
| | | TStoreStaff list1 = stoStaClient.baseInfo(store.getStoreStaffId()); |
| | | |
| | | StoreInfoDto storeInfo = stoClient.getStoreInfo(store.getStoreStaffId()); |
| | | HashMap<String, Object> stringObjectHashMap = new HashMap<>(); |
| | | stringObjectHashMap.put("procity",store.getProvince()+store.getCity()); |
| | | stringObjectHashMap.put("storeAccount",list1.getName()+"+"+list1.getPhone()); |
| | | stringObjectHashMap.put("storeAccount",storeInfo.getInfo()); |
| | | stringObjectHashMap.put("storeName",store.getName()); |
| | | maps.add(stringObjectHashMap); |
| | | } |
| | |
| | | coupon.setIllustrate(dataVo.getIllustrate()); |
| | | coupon.setDistributionMethod(dataVo.getDistributionMethod()); |
| | | coupon.setRedemptionMethod(dataVo.getExchangeMethod()); |
| | | switch (dataVo.getExchangeMethod()){ |
| | | case 1: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | break; |
| | | case 2: |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | break; |
| | | case 3: |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | | default: |
| | | break; |
| | | if (dataVo.getExchangeMethod()!=null){ |
| | | switch (dataVo.getExchangeMethod()){ |
| | | case 1: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | break; |
| | | |
| | | case 3: |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | coupon.setQuantityIssued(dataVo.getQuantityIssued()); |
| | | coupon.setPickUpQuantity(dataVo.getPickUpQuantity()); |
| | | coupon.setUseScope(dataVo.getCompany()); |
| | |
| | | } |
| | | if (dataVo.getUserType() == 1){ |
| | | coupon.setPublisherType(2); |
| | | coupon.setAuditStatus(2); |
| | | coupon.setCityManagerId(dataVo.getCityManagerId()); |
| | | } |
| | | if (dataVo.getUserType() == 2){ |
| | | coupon.setPublisherType(1); |
| | | coupon.setCityManagerId(dataVo.getCityManagerId()); |
| | | } |
| | | if(dataVo.getObjType()!=1){ |
| | | coupon.setAuditStatus(1); |
| | | } |
| | | if (dataVo.getUserType()==1){ |
| | | if (dataVo.getUserType() == 3){ |
| | | coupon.setPublisherType(3); |
| | | coupon.setAuditStatus(2); |
| | | }else{ |
| | | coupon.setAuditStatus(1); |
| | | } |
| | | if(dataVo.getObjType()!=1){ |
| | | coupon.setAuditStatus(1); |
| | | coupon.setCityManagerId(dataVo.getCityManagerId()); |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |