| 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<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) | 
|                 .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.getCover()); | 
|                 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<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"); | 
|             cityCode = geocode.get("cityCode"); | 
|         }catch (Exception e){ | 
|             e.printStackTrace(); | 
|         } | 
|   | 
|         list = pmdsService.list(new QueryWrapper<PointsMerchandise>() | 
|                 .eq("state", 1) | 
|                 .eq("shelves",1).le("startTime",new Date()).ge("endTime",new Date())); | 
|         if (list.size() > 0 ){ | 
|             Iterator<PointsMerchandise> 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<UserPointsMerchandise>() | 
|                 .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.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()); | 
|                 if(merchandise.getType()==3){ | 
|                     detailsResponse.setCardType(merchandise.getCardType()); | 
|                     List<Integer> sids = new ArrayList<>(); | 
|                     detailsResponse.setUserId(appUserId); | 
|                     if(merchandise.getUseScope()==1){ | 
|                         sids.add(0); | 
|                         detailsResponse.setSid(sids); | 
|                     }else if(merchandise.getUseScope()==2){ | 
|                         // 指定城市 | 
|                         List<PointsMerchandiseCity> list = pmdsCityService.list(new LambdaQueryWrapper<PointsMerchandiseCity>().eq(PointsMerchandiseCity::getPointsMerchandiseId, merchandise.getId())); | 
|                         List<String> collect = list.stream().map(PointsMerchandiseCity::getCityCode).collect(Collectors.toList()); | 
|                         if(collect.size()==0){ | 
|                             collect.add("-1"); | 
|                         } | 
|                         List<Integer> storeIds = stoClient.queryStoreIdByCityCode(collect); | 
|                         detailsResponse.setSid(storeIds); | 
|   | 
|                     }else if(merchandise.getUseScope()==3){ | 
|                         // 指定门店 | 
|                         List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>().eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId())); | 
|                         List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); | 
|                         detailsResponse.setSid(collect); | 
|   | 
|   | 
|                     } | 
|                 } | 
|                 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()); | 
|         } | 
|         int count = userPointsMerchandiseService.count(new LambdaQueryWrapper<UserPointsMerchandise>().eq(UserPointsMerchandise::getPointsMerchandiseId, pointMercharsId)); | 
|         vo.setNum(count); | 
|         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() +"市"); | 
|                     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<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; | 
|   | 
|   | 
|     } | 
|   | 
| } |