From edf83149d0f26fb99eb6548d9e68bcc81a8cc893 Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期五, 13 十月 2023 17:03:37 +0800 Subject: [PATCH] 10.13bug2 --- cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 1045 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,029 insertions(+), 16 deletions(-) diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java index e326ec9..5909e6d 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java @@ -1,21 +1,41 @@ 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.PointsMerchandise; -import com.dsh.activity.entity.UserPointsMerchandise; -import com.dsh.activity.feignclient.model.IntegralCommodity; -import com.dsh.activity.model.request.CommodityRequest; -import com.dsh.activity.service.PointsMerchandiseService; -import com.dsh.activity.service.UserPointsMerchandiseService; +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.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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("") @@ -31,32 +51,159 @@ @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<Map<String,Object>> ticketList(@RequestBody IntegralGoodsOfSearch ofSearch){ + List<Map<String, Object>> result = pmdsService.ticketList(ofSearch); + if (result.size() > 0){ + for (Map<String, Object> 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<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getPointsMerchandiseId, o)); + int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<Map<String,Object>> getIntegralGoodsListOfSearch(@RequestBody IntegralGoodsOfSearch ofSearch){ + System.out.println(ofSearch); + List<Map<String, Object>> mapList = pmdsService.queryGoodsListOfSearch(ofSearch); + if (mapList.size() > 0){ + for (Map<String, Object> 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<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getPointsMerchandiseId, o)); + int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<PointMerchandiseIncomeVo> getAmount(){ + return userPointsMerchandiseService.getAmount(); + } + + + @ResponseBody @PostMapping("/base/pointMerchars/convertGoods") public List<IntegralCommodity> getConvertibleGoods(){ List<IntegralCommodity> commodity = new ArrayList<>(); List<PointsMerchandise> merchandises = pmdsService.list(new QueryWrapper<PointsMerchandise>() .eq("state",1) - .lt("endTime",new Date())); + .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()); + String[] split = merchandise.getProductImages().split(","); + integralCommodity.setCommodityImg(split[0]); 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 List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request){ + public PointMerchandiseVo getVicinityGoods(@RequestBody CommodityRequest request){ + PointMerchandiseVo pointMerchandiseVo = new PointMerchandiseVo(); + List<PointsMerchandise> list = new ArrayList<>(); String provinceCode = ""; String cityCode = ""; + if (ToolUtil.isEmpty(request.getLon()) && ToolUtil.isEmpty(request.getLat())){ + return pointMerchandiseVo; + } try { Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat()); provinceCode = geocode.get("provinceCode"); @@ -65,8 +212,9 @@ e.printStackTrace(); } - List<PointsMerchandise> list = pmdsService.list(new QueryWrapper<PointsMerchandise>() - .eq("state", 1)); + list = pmdsService.list(new QueryWrapper<PointsMerchandise>() + .eq("state", 1) + .eq("shelves",1)); if (list.size() > 0 ){ Iterator<PointsMerchandise> iterator = list.iterator(); while (iterator.hasNext()) { @@ -75,8 +223,9 @@ iterator.remove(); // 移除符合条件的商品 } } + pointMerchandiseVo.setMerchandises(list); } - return list; + return pointMerchandiseVo; } @PostMapping("/base/pointMerchars/getRedeemedNums") @@ -85,4 +234,868 @@ .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<String> 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<UserPointsMerchandise>() + .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<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() + .eq("pointsMerchandiseId",merchandise.getId() )); + PointsMerchandiseStore pointsMerchandiseStore = list.get(0); + StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(pointsMerchandiseStore.getStoreId()); + detailsVo.setBelongs(courseOfStore.getStoreName()+"可用"); + } + List<CoursePackagePaymentConfig> 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<String> 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<UserPointsMerchandise>() + .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<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() + .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<String> 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<UserPointsMerchandise>() + .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<CouponCity> list = ccityService.list(new LambdaQueryWrapper<CouponCity>() + .eq(CouponCity::getCouponId, coupon.getId())); + if (list.size() > 0){ + detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用"); + } + }else { + detailsVo.setExchangeAddrType(3); + List<CouponStore> list = cstoreService.list(new QueryWrapper<CouponStore>() + .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<ExchangeDetailsResponse> responses = new ArrayList<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + List<UserPointsMerchandise> pointsMerchandises = upmseService.list(new QueryWrapper<UserPointsMerchandise>() + .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<String> list10 = Arrays.asList(StrUtils.splitStr2StrArr(pmdsServiceById.getProductImages(), ",")); + ArrayList<String> 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<String> list11 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ",")); + ArrayList<String> 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<String> list13 = Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ",")); + ArrayList<String> 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<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code){ + return upmseService.list(new QueryWrapper<UserPointsMerchandise>() + .eq("code",code)); + } + + + @PostMapping("/base/pointMerchars/queryStoreIdsOfMerchandise") + public List<Integer> queryPointMerStoreIds(@RequestBody Integer pointMerId){ + List<Integer> storeIds = new ArrayList<>(); + List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() + .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<UserPointsMerchandise>() + .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<UserPointsMerchandise> list = upmseService.list(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<Map<String, Object>> dealTimeData(List<Map<String, Object>> 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<String,Integer> 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<Map<String, Object>> queryUserPayedGoodsList(@RequestBody PointMercharsPayedVo pointMercharsPayedVo){ + System.out.println(pointMercharsPayedVo); + List<Map<String, Object>> mapList = new ArrayList<>(); + LambdaQueryWrapper<UserPointsMerchandise> userPointsMerchandiseLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userPointsMerchandiseLambdaQueryWrapper.eq(UserPointsMerchandise::getPointsMerchandiseId,pointMercharsPayedVo.getId()); + if (ToolUtil.isNotEmpty(pointMercharsPayedVo.getStatus())){ + userPointsMerchandiseLambdaQueryWrapper.eq(UserPointsMerchandise::getStatus,pointMercharsPayedVo.getStatus()); + } + List<UserPointsMerchandise> list = upmseService.list(userPointsMerchandiseLambdaQueryWrapper); + System.out.println(list); + if (list.size() > 0 ){ + for (UserPointsMerchandise pointsMerchandise : list) { + Map<String, Object> 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<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>().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<UserPointsMerchandise> list = upmseService.list(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<StoreVos> getProvinces(@RequestBody Integer id){ + List<StoreVos> storeVos = new ArrayList<>(); + List<PointsMerchandiseCity> list = pmdsCityService.list(new LambdaQueryWrapper<PointsMerchandiseCity>() + .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<StoreVos> getStoreList(@RequestBody Integer id){ + List<StoreVos> storeVos = new ArrayList<>(); + List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() + .eq("pointsMerchandiseId",id)); + if (list.size() > 0 ){ + List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); + List<Store> 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<String, Object> 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<Map<String, String>> objects){ + try { + for (Map<String, String> 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<String, Object> map){ + try { + String o = (String) map.get("goodsId"); + Integer managerId = (Integer) map.get("managerId"); + UserPointsMerchandise byId = upmseService.getOne(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<UserPointsMerchandise>() + .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<Map<String,Object>> getIntegralGoodsListOfSearchAudit(@RequestBody IntegralGoodsOfSearch ofSearch){ + System.out.println(ofSearch); + List<Map<String, Object>> mapList = pmdsService.queryGoodsListOfSearchAudit(ofSearch); + if (mapList.size() > 0){ + for (Map<String, Object> 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<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getPointsMerchandiseId, o)); + int count2 = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>() + .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<String, Object> queryFee(@RequestBody QueryDataFee queryDataFee){ + HashMap<String, Object> map = new HashMap<>(); + String data = queryDataFee.getData(); + List<Integer> ids = queryDataFee.getIds(); + if(ids.size()==0){ + ids.add(-1); + } + List<PointsMerchandise> list1 = pmdsService.list(new LambdaQueryWrapper<PointsMerchandise>().eq(PointsMerchandise::getRedemptionMethod, 3)); + LambdaQueryWrapper<UserPointsMerchandise> 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<Integer> 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<Integer> objects = new ArrayList<>(); + List<UserPointsMerchandise> 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; + + + } + } -- Gitblit v1.7.1