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.StoreClient; import com.dsh.activity.feignclient.other.model.Store; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; 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 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 Object changeState(@RequestBody CoachChangeStateVO dto){ return pmdsService.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); } @ResponseBody @PostMapping("/base/pointMerchars/ticketList") public List> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch){ List> result = pmdsService.ticketList(ofSearch); 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)); 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; } /** * 获取积分商票消费金额 */ @ResponseBody @RequestMapping("/base/pointMerchars/getAmount") public List getAmount(){ return userPointsMerchandiseService.getAmount(); } @ResponseBody @PostMapping("/base/pointMerchars/convertGoods") public List getConvertibleGoods(){ List commodity = new ArrayList<>(); List merchandises = pmdsService.list(new QueryWrapper() .eq("state",1) .eq("shelves",1) .gt("endTime",new Date())); if (merchandises.size() > 0){ for (PointsMerchandise merchandise : merchandises) { IntegralCommodity integralCommodity = new IntegralCommodity(); integralCommodity.setCommodityId(merchandise.getId()); integralCommodity.setCommodityImg(merchandise.getProductImages()); integralCommodity.setCommodityName(merchandise.getName()); integralCommodity.setCommodityPrice(merchandise.getPrice()); integralCommodity.setGoodsType(merchandise.getType()); commodity.add(integralCommodity); } } System.out.println(commodity); return commodity; } @ResponseBody @PostMapping("/base/pointMerchars/getCommoditys") public PointMerchandiseVo getVicinityGoods(@RequestBody CommodityRequest request){ 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)); if (list.size() > 0 ){ Iterator iterator = list.iterator(); while (iterator.hasNext()) { PointsMerchandise merchandise = iterator.next(); if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) { 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/getGoodDetails") public ProductDetailsVo getGoodDetailsWithId(@RequestBody ProductDetailRequest detailRequest){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); ProductDetailsVo detailsVo = new ProductDetailsVo(); PointsMerchandise merchandise = pmdsService.getById(detailRequest.getGoodId()); detailsVo.setCardType(merchandise.getCardType()); switch (detailRequest.getGoodsType()){ 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.add(cover); 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() )); 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; } @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 )); if (pointsMerchandises.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : pointsMerchandises) { PointsMerchandise merchandise = pmdsService.getById(pointsMerchandise.getPointsMerchandiseId()); ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse(); detailsResponse.setDetailsId(pointsMerchandise.getId()); detailsResponse.setGoodName(merchandise.getName()); if (merchandise.getRedemptionMethod() == 1){ detailsResponse.setExchangeType(1); detailsResponse.setIntegral(merchandise.getIntegral()); }else { detailsResponse.setExchangeType(2); detailsResponse.setIntegral(merchandise.getIntegral()); 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()); responses.add(detailsResponse); } 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.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; // 保持原顺序 } }); 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 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()); break; default: break; } detailsVo.setContents(pmdsServiceById.getRedemptionInstructions()); } return detailsVo; } @PostMapping("/base/pointMerchars/selectPointsMerchandiseById") public PointsMerchandise selectPointsMerchandiseById(@RequestBody Integer speMercharsId){ return pmdsService.getById(speMercharsId); } @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase") public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ merchandise.setInsertTime(new Date()); upmseService.save(merchandise); } @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ upmseService.updateById(merchandise); } @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.getGoodId()) .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); } } } 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()); } 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){ return pmdsService.getById(id); } @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() +"市"); storeVos1.setNum2(store.getName()); 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); 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(2); 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; } }