package com.dsh.activity.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.*; import com.dsh.activity.feignclient.course.CoursePackageClient; import com.dsh.activity.feignclient.course.CoursePackageConfigClient; import com.dsh.activity.feignclient.course.model.CoursePackage; import com.dsh.activity.feignclient.course.model.CoursePackagePaymentConfig; import com.dsh.activity.feignclient.model.*; import com.dsh.activity.feignclient.other.OperatorClient; import com.dsh.activity.feignclient.other.StoreClient; import com.dsh.activity.feignclient.other.model.Store; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; import com.dsh.activity.feignclient.other.model.TOperatorCity; import com.dsh.activity.model.CoachChangeStateVO; import com.dsh.activity.model.PointMerchandiseIncomeVo; import com.dsh.activity.model.PointMerchandiseVo; import com.dsh.activity.model.WriteOffDTO; import com.dsh.activity.model.QueryDataFee; import com.dsh.activity.model.request.*; import com.dsh.activity.model.response.GoodsInfoOneVo; import com.dsh.activity.model.response.StoreVos; import com.dsh.activity.service.*; import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.StrUtils; import com.dsh.activity.util.TokenUtil; import com.dsh.activity.util.ToolUtil; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.xml.crypto.Data; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @RestController @RequestMapping("") public class PointMercharsController { @Autowired private PointsMerchandiseService pmdsService; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @Autowired private UserPointsMerchandiseService upmseService; @Autowired private ICouponService iCouponService; @Autowired private CoursePackageClient cpClient; @Autowired private StoreClient stoClient; @Autowired private CoursePackageConfigClient cpcfigClient; @Autowired private PointsMerchandiseStoreService pmdstoService; @Autowired private UserCouponService uconService; @Autowired private CouponStoreService cstoreService; @Autowired private TokenUtil tokenUtil; @Resource private CouponCityService ccityService; @Resource private PointsMerchandiseCityService pmdsCityService; @Autowired private UserPointsMerchandiseService userPointsMerchandiseService; /** * 门票上下架 state=1 上架 state=2 下架 */ @RequestMapping("/base/pointMerchars/changeState") public void changeState(@RequestBody CoachChangeStateVO dto){ pmdsService.changeState(dto); } /** * 根据id查询 */ @RequestMapping("/base/pointMerchars/getById") @ResponseBody public PointsMerchandise getById(@RequestBody Integer id){ return pmdsService.getById(id); } /** * 门票核销 */ @RequestMapping("/base/course/changeState") @ResponseBody public Object changeState(@RequestBody CourseChangeStateDTO dto){ return userPointsMerchandiseService.changeState(dto); } @RequestMapping("/base/pointMerchars/writeOff") public Object writeOff(@RequestBody WriteOffDTO dto){ UserPointsMerchandise byId = userPointsMerchandiseService.getById(dto.getId()); byId.setStoreId(dto.getVerifiStoreId()); byId.setStatus(2); byId.setVerificationTime(new Date()); byId.setUserId(null); byId.setVerificationUserId(dto.getVerificationUserId()); return userPointsMerchandiseService.updateById(byId); } @Autowired private OperatorClient operatorClient; @Resource private CouponCityService cityService; @ResponseBody @PostMapping("/base/pointMerchars/ticketList") public List> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch){ List> result1 = pmdsService.ticketList(ofSearch); List> result = new ArrayList<>(); if(ofSearch.getObjType()==3){ for (Map map : result1) { List id = pmdstoService.list(new LambdaQueryWrapper().eq(PointsMerchandiseStore::getPointsMerchandiseId, map.get("id"))); List collect = id.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); if(collect.size()==0){ collect.add(-1); } if(collect.contains(ofSearch.getObjId())){ if(id.size()>1){ map.put("size",1); }else { map.put("size",0); } result.add(map); } } }else if(ofSearch.getObjType()==2){ for (Map map : result1) { // 拿到当前运营商下的门店的门票 List id = pmdstoService.list(new QueryWrapper().in("storeId",ofSearch.getStoreIds())); // 拿到积分商品id集合 List collect = id.stream().map(PointsMerchandiseStore::getPointsMerchandiseId).collect(Collectors.toList()); if(collect.size()==0){ collect.add(-1); } Integer temp =(Integer)map.get("id"); if (collect.contains(temp)){ if(id.size()>1){ map.put("size",1); }else { map.put("size",0); } result.add(map); } if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 1){ result.add(map); } if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 2){ // 获取到优惠券id 查询这个优惠券指定了哪些城市 Integer id1 = Integer.parseInt(String.valueOf(map.get("id"))); // 获取到运营商管理的省和市 List cityByOperatorId = operatorClient.getCityByOperatorId(ofSearch.getObjId()); // 拿到运营商市的code集合 List collect1 = cityByOperatorId.stream().filter(t -> t.getPid() != 0) .map(tOperatorCity -> Integer.toString(tOperatorCity.getCode())) .collect(Collectors.toList()); List couponId = cityService.list(new QueryWrapper().eq("couponId", id1)); // 先判断优惠券管理的市 运营商是否有 List collect3 = couponId.stream().map(CouponCity::getCityCode) .collect(Collectors.toList()); // 优惠券指定的省 List collect4 = couponId.stream().map(CouponCity::getCityCode) .collect(Collectors.toList()); if (!Collections.disjoint(collect3, collect4)){ result.add(map); }else{ // 如果没有交集 那么还需要判断运营商是否管理了整个省 } } if (Integer.parseInt(String.valueOf(map.get("useScope"))) == 3){ // 获取到优惠券id 查询这个优惠券指定了哪些门店 Integer id3 = Integer.parseInt(String.valueOf(map.get("id"))); // 当前运营商管理的门店ids List storeIds = ofSearch.getStoreIds(); // 优惠券指定的门店 List collect5 = cstoreService.list(new QueryWrapper().eq("couponId",id3) .in("storeId", storeIds)).stream().map(CouponStore::getStoreId) .collect(Collectors.toList()); // 判断两个集合是否相交 // 比较两个集合中是否有相同的元素;当两个集合中没有相同元素时返回true, // 当有相同元素时返回false。 if (!Collections.disjoint(collect5, storeIds)){ result.add(map); } } } } else { result=result1; } if (result.size() > 0){ for (Map stringObjectMap : result) { Integer o = (Integer) stringObjectMap.get("id"); String startTime = (String) stringObjectMap.get("startTime"); String endTime = (String) stringObjectMap.get("endTime"); stringObjectMap.put("timeValue",startTime + "至"+endTime); int count1 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o)); int count2 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o) .eq(UserPointsMerchandise::getStatus,2)); stringObjectMap.put("hasExchangeQty",count1); stringObjectMap.put("hasPickQty",count2); stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime)); } if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){ result = dealTimeData(result,ofSearch.getActiveStatus()); } } return result; } @ResponseBody @PostMapping("/base/pointMerchars/queryGoodsListSearch") public List> getIntegralGoodsListOfSearch(@RequestBody IntegralGoodsOfSearch ofSearch){ System.out.println(ofSearch); List> mapList = pmdsService.queryGoodsListOfSearch(ofSearch); if (mapList.size() > 0){ for (Map stringObjectMap : mapList) { Integer o = (Integer) stringObjectMap.get("id"); String startTime = (String) stringObjectMap.get("startTime"); String endTime = (String) stringObjectMap.get("endTime"); stringObjectMap.put("timeValue",startTime + "至"+endTime); int count1 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o) .eq(UserPointsMerchandise::getStatus,2)); int count2 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o) ); stringObjectMap.put("hasExchangeQty",count1); stringObjectMap.put("hasPickQty",count2); stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime)); } if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){ mapList = dealTimeData(mapList,ofSearch.getActiveStatus()); } } System.out.println("mapList->"+mapList); return mapList; } /** * 获取积分商票消费金额 */ @ResponseBody @RequestMapping("/base/pointMerchars/getAmount") public List getAmount(){ return userPointsMerchandiseService.getAmount(); } @ResponseBody @PostMapping("/base/pointMerchars/convertGoods") public List getConvertibleGoods(@RequestBody Location location) throws Exception { List commodity = new ArrayList<>(); Map geocode = gdMapGeocodingUtil.geocode(location.getLon(), location.getLat()); String provinceCode = geocode.get("provinceCode"); String cityCode = geocode.get("cityCode"); List cityCode1 = pmdsCityService.list(new QueryWrapper().eq("cityCode", cityCode)); List cIds = new ArrayList<>(); for (PointsMerchandiseCity pointsMerchandiseCity : cityCode1) { cIds.add(pointsMerchandiseCity.getPointsMerchandiseId()); } if (cIds.size()>0) { List merchandises = pmdsService.list(new QueryWrapper() .eq("state", 1) .eq("shelves", 1).in("id", cIds) .gt("endTime", new Date())); if (merchandises.size() > 0){ for (PointsMerchandise merchandise : merchandises) { IntegralCommodity integralCommodity = new IntegralCommodity(); integralCommodity.setCommodityId(merchandise.getId()); integralCommodity.setCommodityImg(merchandise.getCover()); integralCommodity.setCommodityName(merchandise.getName()); integralCommodity.setCommodityPrice(merchandise.getPrice()); integralCommodity.setGoodsType(merchandise.getType()); commodity.add(integralCommodity); } } } System.out.println(commodity); return commodity; } @Resource private CoursePackageClient coursePackageClient; @Autowired private PointsMerchandiseService pointsMerchandiseService; @ResponseBody @PostMapping("/base/pointMerchars/getCommoditys") public PointMerchandiseVo getVicinityGoods(@RequestBody CommodityRequest request){ // if (request.getShopId()!=null){ // List coursePackages = coursePackageClient.queryByStoreId(request.getShopId()); // List coursIds = new ArrayList<>(); // for (CoursePackage coursePackage : coursePackages) { // coursIds.add(coursePackage.getId()); // } // List points = pointsMerchandiseService.list(new QueryWrapper().eq("state",1).eq("shelves",1).in("coursePackageId", coursIds)); // PointMerchandiseVo pointMerchandiseVo = new PointMerchandiseVo(); // pointMerchandiseVo.setMerchandises(points); // return pointMerchandiseVo; // // } PointMerchandiseVo pointMerchandiseVo = new PointMerchandiseVo(); List list = new ArrayList<>(); String provinceCode = ""; String cityCode = ""; if (ToolUtil.isEmpty(request.getLon()) && ToolUtil.isEmpty(request.getLat())){ return pointMerchandiseVo; } try { Map geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat()); provinceCode = geocode.get("provinceCode"); cityCode = geocode.get("cityCode"); }catch (Exception e){ e.printStackTrace(); } list = pmdsService.list(new QueryWrapper() .eq("state", 1) .eq("shelves",1).le("startTime",new Date()).ge("endTime",new Date())); if (list.size() > 0 ){ Iterator iterator = list.iterator(); while (iterator.hasNext()) { PointsMerchandise merchandise = iterator.next(); if (merchandise.getUseScope() == 2 && (!cityCode.equals(merchandise.getCityCode()) || !provinceCode.equals(merchandise.getProvinceCode()))) { iterator.remove(); // 移除符合条件的商品 } } pointMerchandiseVo.setMerchandises(list); } return pointMerchandiseVo; } @PostMapping("/base/pointMerchars/getRedeemedNums") public int getRedeemedQuantity(@RequestBody Integer goodId){ return upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",goodId)); } @PostMapping("/base/pointMerchars/getGoodDetailsWithIdOne") public ProductDetailsVo getGoodDetailsWithIdOne(@RequestBody Integer id){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); ProductDetailsVo detailsVo = new ProductDetailsVo(); PointsMerchandise merchandise = pmdsService.getById(id); detailsVo.setCardType(merchandise.getCardType()); switch (merchandise.getType()){ case 2: // 课包 CoursePackage coursePackage = cpClient.queryCoursePackageById(merchandise.getCoursePackageId()); detailsVo.setGoodId(coursePackage.getId()); List list1 = new ArrayList<>(); list1.add(coursePackage.getCoverDrawing()); list1.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ","))); detailsVo.setPics(list1); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coursePackage.getCoverDrawing())) { return -1; // s1排在前面 } else if (s2.equals(coursePackage.getCoverDrawing())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setGoodName(coursePackage.getName()); detailsVo.setBelongsScope(merchandise.getUserPopulation()); int coursePackageNums = upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); detailsVo.setRedeemedNum(coursePackageNums); detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - coursePackageNums, 0)); detailsVo.setPerLimit(merchandise.getPickUpQuantity()); if (merchandise.getRedemptionMethod() == 1){ detailsVo.setExchangeType(1); detailsVo.setIntegral(merchandise.getIntegral()); }else { detailsVo.setExchangeType(2); detailsVo.setIntegral(merchandise.getIntegral()); detailsVo.setCash(merchandise.getCash()); } detailsVo.setCost(merchandise.getPrice()); if (merchandise.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (merchandise.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用"); }else { detailsVo.setExchangeAddrType(3); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(pointsMerchandiseStore.getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } List courseConfigList = cpcfigClient.getCourseConfigList(coursePackage.getId()); for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())){ detailsVo.setCourseHours(coursePackagePaymentConfig.getClassHours()); break; } } detailsVo.setStartTime(format.format(merchandise.getStartTime())); detailsVo.setEndTime(format.format(merchandise.getEndTime())); detailsVo.setContents(merchandise.getRedemptionInstructions()); detailsVo.setGoodType(merchandise.getType()); break; case 1: case 3: detailsVo.setGoodId(merchandise.getId()); List list2 = new ArrayList<>(); String cover = merchandise.getCover(); list2.addAll(Arrays.asList(StrUtils.splitStr2StrArr(merchandise.getProductImages(), ","))); detailsVo.setPics(list2); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(merchandise.getCover())) { return -1; // s1排在前面 } else if (s2.equals(merchandise.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setPics(list2); detailsVo.setGoodName(merchandise.getName()); detailsVo.setBelongsScope(merchandise.getUserPopulation()); int count = upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); detailsVo.setRedeemedNum(count); detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - count, 0)); detailsVo.setPerLimit(merchandise.getPickUpQuantity()); detailsVo.setExchangeType(merchandise.getRedemptionMethod()); if (merchandise.getRedemptionMethod() == 1){ detailsVo.setIntegral(merchandise.getIntegral()); }else { detailsVo.setIntegral(merchandise.getIntegral()); detailsVo.setCash(merchandise.getCash()); } detailsVo.setCost(merchandise.getPrice()); if (merchandise.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (merchandise.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用"); }else { detailsVo.setExchangeAddrType(3); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(pointsMerchandiseStore.getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } detailsVo.setStartTime(format.format(merchandise.getStartTime())); detailsVo.setEndTime(format.format(merchandise.getEndTime())); detailsVo.setContents(merchandise.getRedemptionInstructions()); detailsVo.setGoodType(merchandise.getType()); break; case 4: // 优惠券 Coupon coupon = iCouponService.getById(id); detailsVo.setGoodId(coupon.getId()); List list3 = new ArrayList<>(); list3.add(ToolUtil.isEmpty(coupon.getCover()) ? "" : coupon.getCover()); if (ToolUtil.isNotEmpty(coupon.getProductImages())){ list3.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ","))); } detailsVo.setPics(list3); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coupon.getCover())) { return -1; // s1排在前面 } else if (s2.equals(coupon.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setGoodName(coupon.getName()); detailsVo.setBelongsScope(coupon.getUserPopulation()); int couponNums = upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); detailsVo.setRedeemedNum(couponNums); detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - couponNums, 0)); detailsVo.setPerLimit(coupon.getPickUpQuantity()); detailsVo.setExchangeType(coupon.getRedemptionMethod()); if (coupon.getRedemptionMethod() == 1){ detailsVo.setIntegral(coupon.getIntegral().intValue()); }else { detailsVo.setIntegral(coupon.getIntegral().intValue()); detailsVo.setCash(coupon.getCash()); } if (coupon.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (coupon.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); List list = ccityService.list(new LambdaQueryWrapper() .eq(CouponCity::getCouponId, coupon.getId())); if (list.size() > 0){ detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用"); } }else { detailsVo.setExchangeAddrType(3); List list = cstoreService.list(new QueryWrapper() .eq("couponId",coupon.getId() )); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(list.get(0).getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } detailsVo.setStartTime(format.format(coupon.getStartTime())); detailsVo.setEndTime(format.format(coupon.getEndTime())); detailsVo.setContents(coupon.getIllustrate()); detailsVo.setGoodType(4); break; default: break; } return detailsVo; } @Autowired private UserCouponService userCouponService; @PostMapping("/base/pointMerchars/getGoodDetails") public ProductDetailsVo getGoodDetailsWithId(@RequestBody ProductDetailRequest detailRequest){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); ProductDetailsVo detailsVo = new ProductDetailsVo(); PointsMerchandise merchandise = pmdsService.getById(detailRequest.getGoodId()); if (merchandise!=null) { detailsVo.setCardType(merchandise.getCardType()); } switch (detailRequest.getGoodsType()){ case 2: // 课包 CoursePackage coursePackage = cpClient.queryCoursePackageById(merchandise.getCoursePackageId()); // detailsVo.setGoodId(coursePackage.getId()); detailsVo.setGoodId(merchandise.getId()); // List list1 = new ArrayList<>(); // list1.add(coursePackage.getCoverDrawing()); // list1.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ","))); String productImages = merchandise.getProductImages(); String[] list1 = productImages.split(","); detailsVo.setPics(Arrays.asList(list1)); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coursePackage.getCoverDrawing())) { return -1; // s1排在前面 } else if (s2.equals(coursePackage.getCoverDrawing())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setGoodName(coursePackage.getName()); detailsVo.setBelongsScope(merchandise.getUserPopulation()); int coursePackageNums = upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); detailsVo.setRedeemedNum(coursePackageNums); detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - coursePackageNums, 0)); detailsVo.setPerLimit(merchandise.getPickUpQuantity()); if (merchandise.getRedemptionMethod() == 1){ detailsVo.setExchangeType(1); detailsVo.setIntegral(merchandise.getIntegral()); }else { detailsVo.setExchangeType(2); detailsVo.setIntegral(merchandise.getIntegral()); detailsVo.setCash(merchandise.getCash()); } detailsVo.setCost(merchandise.getPrice()); if (merchandise.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (merchandise.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用"); }else { detailsVo.setExchangeAddrType(3); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(pointsMerchandiseStore.getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } List courseConfigList = cpcfigClient.getCourseConfigList(coursePackage.getId()); for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) { if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())){ detailsVo.setCourseHours(coursePackagePaymentConfig.getClassHours()); break; } } detailsVo.setStartTime(format.format(merchandise.getStartTime())); detailsVo.setEndTime(format.format(merchandise.getEndTime())); detailsVo.setContents(merchandise.getRedemptionInstructions()); detailsVo.setGoodType(merchandise.getType()); break; case 1: case 3: detailsVo.setGoodId(merchandise.getId()); List list2 = new ArrayList<>(); String cover = merchandise.getCover(); list2.addAll(Arrays.asList(StrUtils.splitStr2StrArr(merchandise.getProductImages(), ","))); detailsVo.setPics(list2); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(merchandise.getCover())) { return -1; // s1排在前面 } else if (s2.equals(merchandise.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setPics(list2); detailsVo.setGoodName(merchandise.getName()); detailsVo.setBelongsScope(merchandise.getUserPopulation()); int count = upmseService.count(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); detailsVo.setRedeemedNum(count); detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - count, 0)); detailsVo.setPerLimit(merchandise.getPickUpQuantity()); detailsVo.setExchangeType(merchandise.getRedemptionMethod()); if (merchandise.getRedemptionMethod() == 1){ detailsVo.setIntegral(merchandise.getIntegral()); }else { detailsVo.setIntegral(merchandise.getIntegral()); detailsVo.setCash(merchandise.getCash()); } detailsVo.setCost(merchandise.getPrice()); if (merchandise.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (merchandise.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); detailsVo.setBelongs(merchandise.getProvince()+"|"+merchandise.getCity() + "用户可用"); }else { detailsVo.setExchangeAddrType(3); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",merchandise.getId() )); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(pointsMerchandiseStore.getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } detailsVo.setStartTime(format.format(merchandise.getStartTime())); detailsVo.setEndTime(format.format(merchandise.getEndTime())); detailsVo.setContents(merchandise.getRedemptionInstructions()); detailsVo.setGoodType(merchandise.getType()); break; case 4: // 优惠券 Coupon coupon = iCouponService.getById(detailRequest.getGoodId()); detailsVo.setGoodId(coupon.getId()); List list3 = new ArrayList<>(); list3.add(ToolUtil.isEmpty(coupon.getCover()) ? "" : coupon.getCover()); if (ToolUtil.isNotEmpty(coupon.getProductImages())){ list3.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ","))); } detailsVo.setPics(list3); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coupon.getCover())) { return -1; // s1排在前面 } else if (s2.equals(coupon.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setGoodName(coupon.getName()); detailsVo.setBelongsScope(coupon.getUserPopulation()); // int couponNums = upmseService.count(new QueryWrapper() // .eq("pointsMerchandiseId",merchandise.getId() )); int couponCounts = userCouponService.count(new QueryWrapper().eq("couponId", coupon.getId())); // detailsVo.setRedeemedNum(coupon.getPickUpQuantity()); detailsVo.setRedeemedNum(couponCounts); detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - couponCounts, 0)); detailsVo.setPerLimit(coupon.getPickUpQuantity()); detailsVo.setExchangeType(coupon.getRedemptionMethod()); if (coupon.getRedemptionMethod() == 1){ detailsVo.setIntegral(coupon.getIntegral().intValue()); }else { detailsVo.setIntegral(coupon.getIntegral().intValue()); detailsVo.setCash(coupon.getCash()); } if (coupon.getUseScope() == 1){ detailsVo.setExchangeAddrType(1); detailsVo.setBelongs("全国通用"); }else if (coupon.getUseScope() == 2){ detailsVo.setExchangeAddrType(2); List list = ccityService.list(new LambdaQueryWrapper() .eq(CouponCity::getCouponId, coupon.getId())); if (list.size() > 0){ detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用"); } }else { detailsVo.setExchangeAddrType(3); List list = cstoreService.list(new QueryWrapper() .eq("couponId",coupon.getId() )); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(list.get(0).getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); } detailsVo.setStartTime(format.format(coupon.getStartTime())); detailsVo.setEndTime(format.format(coupon.getEndTime())); detailsVo.setContents(coupon.getIllustrate()); detailsVo.setGoodType(4); break; default: break; } return detailsVo; } @Autowired private ICouponService couponService; @ResponseBody @PostMapping("/base/pointMerchars/getDetailsOfExchange") public ExchangeDetailsVo getIntegralExchangeDetails(@RequestBody Integer appUserId){ ExchangeDetailsVo detailsVo = new ExchangeDetailsVo(); List responses = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); List pointsMerchandises = upmseService.list(new QueryWrapper() .eq("userId",appUserId ).eq("payStatus",2)); List list1 = couponService.list(); List ids = new ArrayList<>(); for (Coupon coupon : list1) { if (coupon.getDistributionMethod()==1) { ids.add(coupon.getId()); } } List userCoupons = new ArrayList<>(); if (ids.size()>0) { userCoupons = userCouponService.list(new QueryWrapper().eq("userId", appUserId).in("couponId", ids)); } if (pointsMerchandises.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : pointsMerchandises) { PointsMerchandise merchandise = pmdsService.getById(pointsMerchandise.getPointsMerchandiseId()); if (merchandise==null){ continue; } ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse(); detailsResponse.setDetailsId(pointsMerchandise.getId()); detailsResponse.setGoodName(merchandise.getName()); if (merchandise.getRedemptionMethod() == 1){ detailsResponse.setExchangeType(1); detailsResponse.setIntegral(merchandise.getIntegral()); }else if (merchandise.getRedemptionMethod() == 2){ detailsResponse.setExchangeType(2); detailsResponse.setIntegral(merchandise.getIntegral()); detailsResponse.setCash(merchandise.getCash()); }else if (merchandise.getRedemptionMethod() == 3){ detailsResponse.setExchangeType(3); detailsResponse.setCash(merchandise.getCash()); } detailsResponse.setStartTime(simpleDateFormat.format(merchandise.getStartTime())); detailsResponse.setEndTime(simpleDateFormat.format(merchandise.getEndTime())); detailsResponse.setUseStatus(pointsMerchandise.getStatus() == 1 ? 2 : 1); detailsResponse.setGoodType(merchandise.getType()); if(merchandise.getType()==3){ detailsResponse.setCardType(merchandise.getCardType()); List sids = new ArrayList<>(); detailsResponse.setUserId(appUserId); if(merchandise.getUseScope()==1){ sids.add(0); detailsResponse.setSid(sids); detailsResponse.setRid(new ArrayList<>()); }else if(merchandise.getUseScope()==2){ // 指定城市 List list = pmdsCityService.list(new LambdaQueryWrapper().eq(PointsMerchandiseCity::getPointsMerchandiseId, merchandise.getId())); List collect = list.stream().map(PointsMerchandiseCity::getCityCode).collect(Collectors.toList()); if(collect.size()==0){ collect.add("-1"); } List storeIds = stoClient.queryStoreIdByCityCode(collect); detailsResponse.setSid(storeIds); if(storeIds.size()>0){ // 获取rid List rid= stoClient.querySiteIdById(storeIds); detailsResponse.setRid(rid); } }else if(merchandise.getUseScope()==3){ // 指定门店 List list = pmdstoService.list(new LambdaQueryWrapper().eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId())); List collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); detailsResponse.setSid(collect); if(collect.size()>0){ // 获取rid List rid= stoClient.querySiteIdById(collect); detailsResponse.setRid(rid); } } if (merchandise.getCardType()==1){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(pointsMerchandise.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); Date end = calendar.getTime(); String startDate = dateFormat.format(pointsMerchandise.getInsertTime()); String endDate = dateFormat.format(end); detailsResponse.setStartTime(startDate); detailsResponse.setEndTime(startDate); Date now = new Date(); Calendar cal1 = Calendar.getInstance(); cal1.setTime(pointsMerchandise.getInsertTime()); Calendar cal2 = Calendar.getInstance(); cal2.setTime(now); // Compare the year, month, and day of the two Calendar instances boolean isSameDate = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH); // Print the result if (isSameDate) { } else { System.out.println("The two dates do not have the same date."); detailsResponse.setUseStatus(3); } } else if (merchandise.getCardType()==2) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(pointsMerchandise.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 31); Date end = calendar.getTime(); String startDate = dateFormat.format(pointsMerchandise.getInsertTime()); String endDate = dateFormat.format(end); detailsResponse.setStartTime(startDate); detailsResponse.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsResponse.setUseStatus(3); } } else if (merchandise.getCardType()==3) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(pointsMerchandise.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 93); Date end = calendar.getTime(); String startDate = dateFormat.format(pointsMerchandise.getInsertTime()); String endDate = dateFormat.format(end); detailsResponse.setStartTime(startDate); detailsResponse.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsResponse.setUseStatus(3); } } else if (merchandise.getCardType()==4) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(pointsMerchandise.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 372); Date end = calendar.getTime(); String startDate = dateFormat.format(pointsMerchandise.getInsertTime()); String endDate = dateFormat.format(end); detailsResponse.setStartTime(startDate); detailsResponse.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsResponse.setUseStatus(3); } } } responses.add(detailsResponse); } detailsVo.setDetailsResponses(responses); } if (userCoupons.size()>0){ for (UserCoupon userCoupon : userCoupons) { Coupon c = couponService.getById(userCoupon.getCouponId()); if (c==null|| c.getRedemptionMethod()==null){ continue; } ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse(); detailsResponse.setDetailsId(Long.valueOf(c.getId())); detailsResponse.setGoodName(c.getName()); if (c.getRedemptionMethod() == 1){ detailsResponse.setExchangeType(1); detailsResponse.setIntegral(c.getIntegral().intValue()); }else { detailsResponse.setExchangeType(2); detailsResponse.setIntegral(c.getIntegral().intValue()); detailsResponse.setCash(c.getCash()); } detailsResponse.setStartTime(simpleDateFormat.format(c.getStartTime())); detailsResponse.setEndTime(simpleDateFormat.format(c.getEndTime())); detailsResponse.setUseStatus(userCoupon.getStatus() == 1 ? 2 : 1); detailsResponse.setGoodType(4); responses.add(detailsResponse); } Comparator comparator = Comparator.comparing(ExchangeDetailsResponse::getStartTime).reversed(); Collections.sort(responses, comparator); detailsVo.setDetailsResponses(responses); } return detailsVo; } @ResponseBody @PostMapping("/base/pointMerchars/getSpecificsOfGoods") public PointDetailsVo getSpecificsOfGoods(@RequestBody Long speMercharsId){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); PointDetailsVo detailsVo = new PointDetailsVo(); UserPointsMerchandise byId = upmseService.getById(speMercharsId); if (ToolUtil.isNotEmpty(byId)){ PointsMerchandise pmdsServiceById = pmdsService.getById(byId.getPointsMerchandiseId()); // 2.0 detailsVo.setCardType(pmdsServiceById.getCardType()); detailsVo.setExchangeAddrType(pmdsServiceById.getUseScope()); detailsVo.setExchangeType(pmdsServiceById.getRedemptionMethod()); detailsVo.setGoodType(pmdsServiceById.getType()); if (pmdsServiceById.getRedemptionMethod() == 1){ detailsVo.setIntegral(pmdsServiceById.getIntegral()); }else { detailsVo.setCash(pmdsServiceById.getCash()); detailsVo.setIntegral(pmdsServiceById.getIntegral()); } detailsVo.setDetailsId(byId.getId()); switch (pmdsServiceById.getType()){ case 1: case 3: List list10 = Arrays.asList(StrUtils.splitStr2StrArr(pmdsServiceById.getProductImages(), ",")); ArrayList list2 = new ArrayList<>(list10); list2.add(pmdsServiceById.getCover()); detailsVo.setPics(list2); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(pmdsServiceById.getCover())) { return -1; // s1排在前面 } else if (s2.equals(pmdsServiceById.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); if (pmdsServiceById.getCardType()==1){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(byId.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 1); Date end = calendar.getTime(); String startDate = dateFormat.format(byId.getInsertTime()); String endDate = dateFormat.format(end); detailsVo.setStartTime(startDate); detailsVo.setEndTime(startDate); Date now = new Date(); Calendar cal1 = Calendar.getInstance(); cal1.setTime(pmdsServiceById.getInsertTime()); Calendar cal2 = Calendar.getInstance(); cal2.setTime(now); // Compare the year, month, and day of the two Calendar instances boolean isSameDate = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH); // Print the result if (isSameDate) { } else { System.out.println("The two dates do not have the same date."); detailsVo.setUseType(3); } } else if (pmdsServiceById.getCardType()==2) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(byId.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 31); Date end = calendar.getTime(); String startDate = dateFormat.format(byId.getInsertTime()); String endDate = dateFormat.format(end); detailsVo.setStartTime(startDate); detailsVo.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsVo.setUseType(3); } } else if (pmdsServiceById.getCardType()==3) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(byId.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 93); Date end = calendar.getTime(); String startDate = dateFormat.format(byId.getInsertTime()); String endDate = dateFormat.format(end); detailsVo.setStartTime(startDate); detailsVo.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsVo.setUseType(3); } } else if (pmdsServiceById.getCardType()==4) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(byId.getInsertTime()); calendar.add(Calendar.DAY_OF_MONTH, 372); Date end = calendar.getTime(); String startDate = dateFormat.format(byId.getInsertTime()); String endDate = dateFormat.format(end); detailsVo.setStartTime(startDate); detailsVo.setEndTime(endDate); Date now = new Date(); if (now.after(end)){ detailsVo.setUseType(3); } } break; case 2: CoursePackage coursePackage = cpClient.queryCoursePackageById(pmdsServiceById.getCoursePackageId()); List list11 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ",")); ArrayList list1 = new ArrayList<>(list11); list1.add(coursePackage.getCoverDrawing()); detailsVo.setPics(list1); CoursePackagePaymentConfig coursePackagePaymentConfig = cpClient.queryConfigCoursePackData(pmdsServiceById.getCoursePackageConfigId()); detailsVo.setClassHours(coursePackagePaymentConfig.getClassHours()); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coursePackage.getCoverDrawing())) { return -1; // s1排在前面 } else if (s2.equals(coursePackage.getCoverDrawing())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); break; case 4: Coupon coupon = iCouponService.getById(pmdsServiceById.getId()); List list13 = Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ",")); ArrayList list3 = new ArrayList<>(list13); list3.add(coupon.getCover()); detailsVo.setPics(list3); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coupon.getCover())) { return -1; // s1排在前面 } else if (s2.equals(coupon.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); break; default: break; } detailsVo.setGoodName(pmdsServiceById.getName()); // 2.0 if (detailsVo.getStartTime()==null) { detailsVo.setStartTime(simpleDateFormat.format(byId.getInsertTime())); detailsVo.setEndTime(simpleDateFormat.format(pmdsServiceById.getEndTime())); detailsVo.setOrderTime(simpleDateFormat.format(byId.getInsertTime())); } if (byId.getStatus() == 1){ detailsVo.setUseType(2); }else { detailsVo.setUseType(1); detailsVo.setWriteOffTime(simpleDateFormat.format(byId.getVerificationTime())); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(byId.getVerifiStoreId()); detailsVo.setWriteOffName(courseOfStore.getStoreName()); } switch (pmdsServiceById.getUseScope()){ case 1: detailsVo.setBelongs("全国通用"); break; case 2: detailsVo.setBelongs(pmdsServiceById.getProvince()+pmdsServiceById.getCity()); break; case 3: // StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(byId.getStoreId()); // detailsVo.setBelongs(courseOfStore.getStoreName()+" "+courseOfStore.getStoreAddr()); // detailsVo.setBelongs("---------------"); break; default: break; } detailsVo.setContents(pmdsServiceById.getRedemptionInstructions()); }else { Coupon coupon = iCouponService.getById(speMercharsId); detailsVo.setDetailsId(Long.valueOf(coupon.getId())); List list3 = new ArrayList<>(); list3.add(ToolUtil.isEmpty(coupon.getCover()) ? "" : coupon.getCover()); if (ToolUtil.isNotEmpty(coupon.getProductImages())){ list3.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ","))); } detailsVo.setPics(list3); Collections.sort(detailsVo.getPics(), (s1, s2) -> { if (s1.equals(coupon.getCover())) { return -1; // s1排在前面 } else if (s2.equals(coupon.getCover())) { return 1; // s2排在前面 } else { return 0; // 保持原顺序 } }); detailsVo.setGoodName(coupon.getName()); // detailsVo.setBelongsScope(coupon.getUserPopulation()); // int couponNums = upmseService.count(new QueryWrapper() // .eq("pointsMerchandiseId",merchandise.getId() )); int couponCounts = userCouponService.count(new QueryWrapper().eq("couponId", coupon.getId())); // detailsVo.setRedeemedNum(coupon.getPickUpQuantity()); // detailsVo.setRedeemedNum(couponCounts); // detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - couponCounts, 0)); // detailsVo.setPerLimit(coupon.getPickUpQuantity()); detailsVo.setExchangeType(coupon.getRedemptionMethod()); if (coupon.getRedemptionMethod() == 1){ detailsVo.setIntegral(coupon.getIntegral().intValue()); }else { detailsVo.setIntegral(coupon.getIntegral().intValue()); detailsVo.setCash(coupon.getCash()); } // if (coupon.getUseScope() == 1){ // detailsVo.setExchangeAddrType(1); // detailsVo.setBelongs("全国通用"); // }else if (coupon.getUseScope() == 2){ // detailsVo.setExchangeAddrType(2); // List list = ccityService.list(new LambdaQueryWrapper() // .eq(CouponCity::getCouponId, coupon.getId())); // if (list.size() > 0){ // detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用"); // } // }else { // detailsVo.setExchangeAddrType(3); // List list = cstoreService.list(new QueryWrapper() // .eq("couponId",coupon.getId() )); // StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(list.get(0).getStoreId()); // detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); // } // detailsVo.setStartTime(format.format(coupon.getStartTime())); // detailsVo.setEndTime(format.format(coupon.getEndTime())); detailsVo.setContents(coupon.getIllustrate()); detailsVo.setGoodType(4); } return detailsVo; } @PostMapping("/base/pointMerchars/selectPointsMerchandiseById") public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId){ return pmdsService.getById(speMercharsId); } @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase") public Long saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ merchandise.setInsertTime(new Date()); upmseService.save(merchandise); return merchandise.getId(); } @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ merchandise.setUserId(null); merchandise.setPointsMerchandiseId(null); upmseService.updateById(merchandise); } @ResponseBody @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode") public List queryUserPointMerchaseByCode(@RequestBody String code){ return upmseService.list(new QueryWrapper() .eq("code",code)); } @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise") public List queryPointMerStoreIds(@RequestBody Integer pointMerId){ List storeIds = new ArrayList<>(); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",pointMerId)); if (list.size() > 0){ storeIds = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); } if(storeIds.size()==0){ storeIds.add(-1); } return storeIds; } /** * 获取用户已兑换商品的数量 * @param goodResp * @return 数量 */ @ResponseBody @PostMapping("/base/pointMerchars/queryUserHasGoodsNums") public int queryUserHasGoodsNums(@RequestBody AppUserGoodResp goodResp){ int count = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getUserId,goodResp.getAppUserId()) .eq(UserPointsMerchandise::getPointsMerchandiseId,goodResp.getGoodId())); System.out.println(count); return count; } @ResponseBody @PostMapping("/base/pointMerchars/queryUserHasGoodsNums1") public int queryUserHasGoodsNums1(@RequestBody AppUserGoodResp goodResp){ int count = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId,goodResp.getGoodId())); System.out.println(count); return count; } /** * 变更兑换商品的的状态 * @param code * @return 数量 */ @ResponseBody @PostMapping("/base/pointMerchars/deletePaymentRecord") public void deletePaymentRecord(@RequestBody String code){ List list = upmseService.list(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getCode,code)); if (list.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : list) { pointsMerchandise.setState(2); upmseService.updateById(pointsMerchandise); } } } //拿到积分商品现金的消费记录 @ResponseBody @PostMapping("/base/pointMerchars/getConsumeDetails") public List getConsumeDetails(@RequestBody BillingDataRequestVo requestVo){ return upmseService.getConsumeDetails(requestVo); } public int dealTimeStatus(String startTime, String endTime){ LocalDate now = LocalDate.now(); LocalDate start = LocalDate.parse(startTime); LocalDate end = LocalDate.parse(endTime); if (now.isBefore(start)) { return 1; // 未开始 } else if (now.isAfter(end)) { return 3; // 已结束 } else { return 2; // 已开始 } } /** * * @param mapLists * @param timeType 1=未开始 2=已开始 3=已结束 * @return */ public List> dealTimeData(List> mapLists,Integer timeType){ Date currentDate = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); switch (timeType){ case 1: return mapLists.stream() .filter(event -> { try { return simpleDateFormat.parse((String) event.get("startTime")).after(currentDate); } catch (ParseException e) { throw new RuntimeException(e); } }) .collect(Collectors.toList()); case 2: return mapLists.stream() .filter(event -> { try { return simpleDateFormat.parse((String) event.get("startTime")).before(currentDate) && simpleDateFormat.parse((String) event.get("endTime")).after(currentDate); } catch (ParseException e) { throw new RuntimeException(e); } }) .collect(Collectors.toList()); case 3: return mapLists.stream() .filter(event -> { try { return simpleDateFormat.parse((String) event.get("endTime")).before(currentDate); } catch (ParseException e) { throw new RuntimeException(e); } }) .collect(Collectors.toList()); default: break; } return null; } @PostMapping("/base/pointMerchars/queryPointMerchaseDetailOfId") public PointMercharsVo queryPointMerchaseDetailOfId(@RequestBody Integer pointMercharsId){ PointMercharsVo vo = new PointMercharsVo(); PointsMerchandise byId = pmdsService.getById(pointMercharsId); if (ToolUtil.isNotEmpty(byId)){ vo.setName(byId.getName()); vo.setCover(byId.getCover()); vo.setPics(byId.getProductImages()); vo.setQuantityIssued(byId.getQuantityIssued()); vo.setPickUpQuantity(byId.getPickUpQuantity()); vo.setSort(byId.getSort()); vo.setContent(byId.getRedemptionInstructions()); } int count = userPointsMerchandiseService.count(new LambdaQueryWrapper().eq(UserPointsMerchandise::getPointsMerchandiseId, pointMercharsId)); vo.setNum(count); return vo; } @PostMapping("/base/pointMerchars/updateGoodsGroudingStatus") boolean updateGoodsGroudingStatus(@RequestBody Map map){ Integer id = map.get("id"); Integer type = map.get("type"); System.out.println(id); System.out.println(type); try { PointsMerchandise byId = pmdsService.getById(id); byId.setShelves(type); pmdsService.updateById(byId); return true; }catch (Exception e){ return false; } } @ResponseBody @PostMapping("/base/pointMerchars/queryUserPayedGoodsList") public List> queryUserPayedGoodsList(@RequestBody PointMercharsPayedVo pointMercharsPayedVo){ System.out.println(pointMercharsPayedVo); List> mapList = new ArrayList<>(); LambdaQueryWrapper userPointsMerchandiseLambdaQueryWrapper = new LambdaQueryWrapper<>(); userPointsMerchandiseLambdaQueryWrapper.eq(UserPointsMerchandise::getPointsMerchandiseId,pointMercharsPayedVo.getId()); if (ToolUtil.isNotEmpty(pointMercharsPayedVo.getStatus())){ userPointsMerchandiseLambdaQueryWrapper.eq(UserPointsMerchandise::getStatus,pointMercharsPayedVo.getStatus()); } List list = upmseService.list(userPointsMerchandiseLambdaQueryWrapper); System.out.println(list); if (list.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : list) { Map map = new HashMap<>(); map.put("id",pointsMerchandise.getId()); map.put("userId",pointsMerchandise.getUserId()); map.put("status", pointsMerchandise.getStatus()); mapList.add(map); } } System.out.println(mapList); return mapList; } @PostMapping("/base/pointMerchars/queryPointMerchaseById") public PointsMerchandise queryPointMerchaseById(@RequestBody Integer id){ PointsMerchandise byId = pmdsService.getById(id); int count1 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, byId.getId()) .eq(UserPointsMerchandise::getStatus,2)); int count2 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, byId.getId()) ); byId.setPickUpQuantity3(count2); byId.setPickUpQuantity4(count1); return byId; } @PostMapping("/base/pointMerchars/getshopName") public Integer getshopName(@RequestBody Integer id){ List list = pmdstoService.list(new LambdaQueryWrapper().eq(PointsMerchandiseStore::getPointsMerchandiseId, id)); PointsMerchandiseStore pointsMerchandiseStore = list.get(0); Integer storeId = pointsMerchandiseStore.getStoreId(); return storeId; } @PostMapping("/base/pointMerchars/queryDetailsOfGoods") public GoodsInfoOneVo queryDetailsOfGoods(@RequestBody Integer id){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); GoodsInfoOneVo infoOneVo = new GoodsInfoOneVo(); PointsMerchandise byId = pmdsService.getById(id); if (ToolUtil.isNotEmpty(byId)){ infoOneVo.setName(byId.getName()); infoOneVo.setCover(byId.getCover()); infoOneVo.setPics(byId.getProductImages()); infoOneVo.setPrice(byId.getPrice()); infoOneVo.setExchangeMethod(byId.getRedemptionMethod()); switch (byId.getRedemptionMethod()){ case 1: infoOneVo.setIntegral(byId.getIntegral()); break; case 2: infoOneVo.setIntegral(byId.getIntegral()); infoOneVo.setCash(byId.getCash()); break; case 3: infoOneVo.setCash(byId.getCash()); break; default: break; } switch (byId.getUserPopulation()){ case 1: infoOneVo.setUserPopulation("全部用户"); break; case 2: infoOneVo.setUserPopulation("年度会员"); break; case 3: infoOneVo.setUserPopulation("已有学员用户"); break; default: break; } infoOneVo.setQuantityIssued(byId.getQuantityIssued()); List list = upmseService.list(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId,byId.getId())); infoOneVo.setUseScope(byId.getUseScope()); switch (byId.getUseScope()){ case 1: infoOneVo.setExchangeArea("全国通用"); break; case 2: infoOneVo.setExchangeArea("指定城市"); break; case 3: infoOneVo.setExchangeArea("指定门店"); break; default: break; } infoOneVo.setHasPicked(list.size()); infoOneVo.setPickUpQuantity(byId.getPickUpQuantity()); infoOneVo.setValidTime(simpleDateFormat.format(byId.getStartTime())+"至"+ simpleDateFormat.format(byId.getEndTime())); infoOneVo.setRedemptionInstructions(byId.getRedemptionInstructions()); infoOneVo.setSort(byId.getSort()); } return infoOneVo; } @ResponseBody @PostMapping("/base/pointMerchars/getProvinces") public List getProvinces(@RequestBody Integer id){ List storeVos = new ArrayList<>(); List list = pmdsCityService.list(new LambdaQueryWrapper() .eq(PointsMerchandiseCity::getPointsMerchandiseId,id)); if (list.size() > 0 ){ for (PointsMerchandiseCity pointsMerchandiseCity : list) { StoreVos storeVos1 = new StoreVos(); storeVos1.setNum1(pointsMerchandiseCity.getProvince()); storeVos1.setNum2(pointsMerchandiseCity.getCity()); storeVos.add(storeVos1); } } return storeVos; } @ResponseBody @PostMapping("/base/pointMerchars/getStoreList") public List getStoreList(@RequestBody Integer id){ List storeVos = new ArrayList<>(); List list = pmdstoService.list(new QueryWrapper() .eq("pointsMerchandiseId",id)); if (list.size() > 0 ){ List collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); List stores = stoClient.queryStoreByIds(collect); if (stores.size() > 0 ){ for (Store store : stores) { StoreVos storeVos1 = new StoreVos(); storeVos1.setNum1(store.getProvince() +"省"+ store.getCity() +"市"); if(store.getOperatorId()==0){ storeVos1.setNum2("平台"); }else { storeVos1.setNum2(store.getOName()); } storeVos1.setNum3(store.getName()); storeVos1.setNum4(store.getIds()); storeVos.add(storeVos1); } } } return storeVos; } @ResponseBody @PostMapping("/base/pointMerchars/updateGoodsDetail") public boolean updateGoodsDetail(@RequestBody Map map){ try { Integer pointMerchandiseId = (Integer) map.get("pointMerchandiseId"); PointsMerchandise byId1 = pmdsService.getById(pointMerchandiseId); if(Integer.valueOf(map.get("type").toString())!=1){ byId1.setStatus(2); } Integer quantityIssued = (Integer) map.get("quantityIssued"); Integer pickUpQuantity = (Integer) map.get("pickUpQuantity"); String redemptionInstructions = (String) map.get("redemptionInstructions"); String cover = (String) map.get("cover"); String productImages = (String) map.get("productImages"); Integer sort = (Integer) map.get("sort"); byId1.setQuantityIssued(quantityIssued); byId1.setPickUpQuantity(pickUpQuantity); byId1.setRedemptionInstructions(redemptionInstructions); if (ToolUtil.isNotEmpty(cover)){ byId1.setCover(cover); } if (ToolUtil.isNotEmpty(productImages)){ byId1.setProductImages(productImages); } byId1.setSort(sort); pmdsService.updateById(byId1); return true; }catch (Exception e){ return false; } } @PostMapping("/base/pointMerchars/add") public Integer add(@RequestBody PointsMerchandise pointsMerchandise){ Integer storeId = pointsMerchandise.getShelves(); pointsMerchandise.setShelves(1); boolean save = pmdsService.save(pointsMerchandise); if(save && ToolUtil.isNotEmpty(storeId) && pointsMerchandise.getType()==2){ PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore(); pointsMerchandiseStore.setPointsMerchandiseId(pointsMerchandise.getId()); pointsMerchandiseStore.setStoreId(storeId); save = pmdstoService.save(pointsMerchandiseStore); } if(save && pointsMerchandise.getType()==2 && ToolUtil.isNotEmpty(pointsMerchandise.getProvinceCode())){ pmdsService.saveCity(pointsMerchandise.getId(),pointsMerchandise.getProvince(),pointsMerchandise.getProvinceCode(),pointsMerchandise.getCity(),pointsMerchandise.getCityCode()); } if(save){ return pointsMerchandise.getId(); } return null; } @PostMapping("/base/pointMerchars/addOther") public Boolean addOther(@RequestBody String pam){ Boolean save =false; String[] split = pam.split("_"); for (String s : split[1].split(",")) { PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore(); pointsMerchandiseStore.setPointsMerchandiseId(Integer.valueOf(split[0])); pointsMerchandiseStore.setStoreId(Integer.valueOf(s)); save = pmdstoService.save(pointsMerchandiseStore); } return save; } @PostMapping("/base/pointMerchars/addCitys") public Boolean addCitys(@RequestBody ArrayList> objects){ try { for (Map object : objects) { pmdsService.saveCity(Integer.valueOf(object.get("id")),object.get("pName"),object.get("pCode"),object.get("cName"),object.get("cCode")); } return true; }catch (Exception e){ e.printStackTrace(); return false; } } @ResponseBody @PostMapping("/base/pointMerchars/writeOffGoodsStatus") public boolean writeOffGoodsStatus(@RequestBody Map map){ try { String o = (String) map.get("goodsId"); Integer managerId = (Integer) map.get("managerId"); UserPointsMerchandise byId = upmseService.getOne(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getId,Long.parseLong(o) )); if (byId.getStatus() == 2){ return false; } byId.setStatus(2); byId.setVerificationUserId(managerId); byId.setVerificationTime(new Date()); upmseService.update(byId,new LambdaQueryWrapper() .eq(UserPointsMerchandise::getUserId,byId.getUserId()) .eq(UserPointsMerchandise::getId,byId.getId())); System.out.println(byId); return true; }catch (Exception e){ return false; } } @ResponseBody @PostMapping("/base/pointMerchars/getIntegralGoodsListOfSearchAudit") public List> getIntegralGoodsListOfSearchAudit(@RequestBody IntegralGoodsOfSearch ofSearch){ System.out.println(ofSearch); List> mapList = pmdsService.queryGoodsListOfSearchAudit(ofSearch); if (mapList.size() > 0){ for (Map stringObjectMap : mapList) { Integer o = (Integer) stringObjectMap.get("id"); String startTime = (String) stringObjectMap.get("startTime"); String endTime = (String) stringObjectMap.get("endTime"); stringObjectMap.put("timeValue",startTime + "至"+endTime); int count1 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o)); int count2 = upmseService.count(new LambdaQueryWrapper() .eq(UserPointsMerchandise::getPointsMerchandiseId, o) .eq(UserPointsMerchandise::getStatus,2)); stringObjectMap.put("hasExchangeQty",count1); stringObjectMap.put("hasPickQty",count2); stringObjectMap.put("activeStatus",dealTimeStatus(startTime,endTime)); } if (ToolUtil.isNotEmpty(ofSearch.getActiveStatus())){ mapList = dealTimeData(mapList,ofSearch.getActiveStatus()); } } System.out.println("mapList->"+mapList); return mapList; } @PostMapping("/base/pointMerchars/updateType") @ResponseBody public Object updateType(@RequestBody String s){ String[] split = s.split("_"); PointsMerchandise byId = pmdsService.getById(split[0]); byId.setStatus(Integer.valueOf(split[1])); if(Integer.valueOf(split[1])==3){ byId.setRemark(split[2]); } return pmdsService.updateById(byId); } @PostMapping("/base/pointMerchars/queryFee") @ResponseBody public HashMap queryFee(@RequestBody QueryDataFee queryDataFee){ HashMap map = new HashMap<>(); String data = queryDataFee.getData(); List ids = queryDataFee.getIds(); if(ids.size()==0){ ids.add(-1); } List list1 = pmdsService.list(new LambdaQueryWrapper().eq(PointsMerchandise::getRedemptionMethod, 3)); LambdaQueryWrapper vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); if(ToolUtil.isNotEmpty(data)){ String stime = data.split(" - ")[0]+" 00:00:00"; String etime = data.split(" - ")[1]+" 23:59:59"; vipPaymentLambdaQueryWrapper.between(UserPointsMerchandise::getInsertTime,stime,etime); } vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getUserId,ids); List collect = list1.stream().map(PointsMerchandise::getId).collect(Collectors.toList()); if(collect.size()==0){ collect.add(-1); } vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getPointsMerchandiseId,collect); vipPaymentLambdaQueryWrapper.eq(UserPointsMerchandise::getPayStatus,2); ArrayList objects = new ArrayList<>(); List list = upmseService.list(vipPaymentLambdaQueryWrapper); double a =0; double d =0; double m =0; double j =0; double y =0; for (UserPointsMerchandise userPointsMerchandise : list) { for (PointsMerchandise pointsMerchandise : list1) { if(pointsMerchandise.getId()==userPointsMerchandise.getPointsMerchandiseId()){ a += pointsMerchandise.getCash().doubleValue(); } if(pointsMerchandise.getType()==3){ if(pointsMerchandise.getCardType()==1){ d += pointsMerchandise.getCash().doubleValue(); } if(pointsMerchandise.getCardType()==2){ m += pointsMerchandise.getCash().doubleValue(); } if(pointsMerchandise.getCardType()==3){ j += pointsMerchandise.getCash().doubleValue(); } if(pointsMerchandise.getCardType()==4){ y += pointsMerchandise.getCash().doubleValue(); } } } } map.put("all",a); map.put("day",d); map.put("month",m); map.put("quarter",j); map.put("year",y); return map; } }