cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -336,8 +336,27 @@ Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); }// TODO: 2023/7/12 查询兑换记录 return ResultUtil.success(); } return ResultUtil.success(uicService.queryExchangeGoodsdetails(userIdFormRedis,useType,goodType)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 兑换记录详情 */ @ResponseBody @PostMapping("/api/useBenefit/redemptionDetails") @ApiOperation(value = "积分商城-兑换记录详情", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "记录id", name = "detailsId", required = true, dataType = "string"), }) public ResultUtil<PointDetailsVo> redemptionDetails(Integer detailsId){ try { return ResultUtil.success(uicService.queryRedemptionDetails(detailsId)); }catch (Exception e){ return ResultUtil.runErr(); } cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
@@ -5,6 +5,8 @@ import com.dsh.account.feignclient.activity.model.IntegralCommodity; import com.dsh.account.feignclient.activity.model.PointsMerchandise; import com.dsh.account.feignclient.activity.model.ProductDetailRequest; import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.ProductDetailsVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -28,4 +30,10 @@ @PostMapping("/base/pointMerchars/getGoodDetails") ProductDetailsVo getGoodDetailsWithId(@RequestBody ProductDetailRequest detailRequest); @PostMapping("/base/pointMerchars/getDetailsOfExchange") List<ExchangeDetailsResponse> getIntegralExchangeDetails(@RequestBody Integer appUserId); @PostMapping("/base/pointMerchars/getSpecificsOfGoods") public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId); } cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java
@@ -8,7 +8,7 @@ public class ExchangeDetailsResponse { @ApiModelProperty(value = "记录id") private Integer detailsId; private Long detailsId; @ApiModelProperty(value = "商品名称") private String goodName; cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java
New file @@ -0,0 +1,45 @@ package com.dsh.account.model.vo.userBenefitDetail; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class PointDetailsVo { @ApiModelProperty(value = "记录id") private Integer detailsId; @ApiModelProperty(value = "图片集") private List<String> pics; @ApiModelProperty(value = "商品名称") private String goodName; @ApiModelProperty(value = "适用状态(1已使用 2未使用)") private Integer useType; @ApiModelProperty(value = "有效期开始时间") private String startTime; @ApiModelProperty(value = "有效期结束时间") private String endTime; @ApiModelProperty(value = "下单时间") private String orderTime; @ApiModelProperty(value = "核销时间") private String writeOffTime; @ApiModelProperty(value = "核销门店") private String writeOffName; @ApiModelProperty(value = "适用范围(指定门店可用)") private String belongs; @ApiModelProperty(value = "兑换说明") private String contents; } cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java
@@ -3,7 +3,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.UserIntegralChanges; import com.dsh.account.model.SaveUserIntegralChangesVo; import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo; import java.util.List; /** * <p> @@ -24,4 +28,10 @@ * @throws Exception */ void saveUserIntegralChanges(SaveUserIntegralChangesVo vo) throws Exception; List<ExchangeDetailsResponse> queryExchangeGoodsdetails(Integer userIdFormRedis, Integer useType, Integer goodType); PointDetailsVo queryRedemptionDetails(Integer detailsId); } cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.UserIntegralChanges; import com.dsh.account.feignclient.activity.MerChandiseClient; import com.dsh.account.mapper.TAppUserMapper; import com.dsh.account.mapper.UserIntegralChangesMapper; import com.dsh.account.model.SaveUserIntegralChangesVo; import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse; import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo; import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.DateTimeHelper; import com.dsh.account.util.ToolUtil; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -34,6 +38,9 @@ @Resource private TAppUserMapper tauMapper; @Resource private MerChandiseClient mcClient; @Override public IntegralDetailsResponse queryUserPointsDetails(String yearMonth, Integer recordId, Integer userIdFormRedis) { @@ -116,4 +123,25 @@ userIntegralChanges.setInsertTime(new Date()); this.save(userIntegralChanges); } @Override public List<ExchangeDetailsResponse> queryExchangeGoodsdetails(Integer userIdFormRedis, Integer useType, Integer goodType) { List<ExchangeDetailsResponse> integralExchangeDetails = mcClient.getIntegralExchangeDetails(userIdFormRedis); if (ToolUtil.isNotEmpty(useType)){ integralExchangeDetails = integralExchangeDetails.stream() .filter(response -> Objects.equals(response.getUseStatus(), useType)) .collect(Collectors.toList()); } if (ToolUtil.isNotEmpty(goodType)){ integralExchangeDetails = integralExchangeDetails.stream() .filter(response -> Objects.equals(response.getGoodType(), goodType)) .collect(Collectors.toList()); } return integralExchangeDetails; } @Override public PointDetailsVo queryRedemptionDetails(Integer detailsId) { return mcClient.getSpecificsOfGoods(detailsId); } } cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -7,15 +7,14 @@ 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.IntegralCommodity; import com.dsh.activity.feignclient.model.ProductDetailRequest; import com.dsh.activity.feignclient.model.ProductDetailsVo; import com.dsh.activity.feignclient.model.*; import com.dsh.activity.feignclient.other.StoreClient; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; import com.dsh.activity.model.request.CommodityRequest; import com.dsh.activity.service.*; import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.StrUtils; 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; @@ -125,7 +124,18 @@ CoursePackage coursePackage = cpClient.queryCoursePackageById(detailRequest.getGoodId()); detailsVo.setGoodId(coursePackage.getId()); detailsVo.setPics(Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ","))); List<String> list1 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ",")); list1.add(coursePackage.getCoverDrawing()); 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>() @@ -168,8 +178,19 @@ case 3: detailsVo.setGoodId(merchandise.getId()); String[] strings = StrUtils.splitStr2StrArr(merchandise.getProductImages(), ","); detailsVo.setPics(Arrays.asList(strings)); List<String> list2 = Arrays.asList(StrUtils.splitStr2StrArr(merchandise.getProductImages(), ",")); list2.add(merchandise.getCover()); 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>() @@ -205,7 +226,18 @@ // 优惠券 Coupon coupon = iCouponService.getById(detailRequest.getGoodId()); detailsVo.setGoodId(coupon.getId()); detailsVo.setPics(Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ","))); List<String> list3 = Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ",")); 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; // 保持原顺序 } }); detailsVo.setGoodName(coupon.getName()); detailsVo.setBelongsScope(coupon.getUserPopulation()); int couponNums = uconService.count(new QueryWrapper<UserCoupon>() @@ -241,4 +273,125 @@ } @PostMapping("/base/pointMerchars/getDetailsOfExchange") public List<ExchangeDetailsResponse> getIntegralExchangeDetails(@RequestBody Integer appUserId){ 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.setRequiredType(merchandise.getIntegral()+"积分"); }else { detailsResponse.setRequiredType(merchandise.getIntegral()+"积分 ¥"+merchandise.getCash()); } detailsResponse.setStartTime(simpleDateFormat.format(merchandise.getStartTime())); detailsResponse.setEndTime(simpleDateFormat.format(merchandise.getEndTime())); detailsResponse.setUseStatus(pointsMerchandise.getStatus()); detailsResponse.setGoodType(merchandise.getType()); responses.add(detailsResponse); } } return responses; } @PostMapping("/base/pointMerchars/getSpecificsOfGoods") public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer 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()); detailsVo.setDetailsId(byId.getId()); switch (pmdsServiceById.getType()){ case 1: case 3: List<String> list2 = Arrays.asList(StrUtils.splitStr2StrArr(pmdsServiceById.getProductImages(), ",")); 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> list1 = Arrays.asList(StrUtils.splitStr2StrArr(coursePackage.getDetailDrawing(), ",")); list1.add(coursePackage.getCoverDrawing()); 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; // 保持原顺序 } }); break; case 4: Coupon coupon = iCouponService.getById(pmdsServiceById.getId()); List<String> list3 = Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ",")); 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()); detailsVo.setStartTime(simpleDateFormat.format(pmdsServiceById.getStartTime())); 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: PointsMerchandiseStore one = pmdstoService.getOne(new QueryWrapper<PointsMerchandiseStore>() .eq("pointsMerchandiseId",pmdsServiceById.getId() )); StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(one.getStoreId()); detailsVo.setBelongs(courseOfStore.getStoreName()+" "+courseOfStore.getStoreAddr()); break; default: break; } detailsVo.setContents(pmdsServiceById.getRedemptionInstructions()); } return detailsVo; } } cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java
@@ -35,7 +35,7 @@ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 类型(1=实体商品,2=课包商品,3=门票商品) * 类型(1=实体商品,2=课包商品,3=门票商品 4=优惠券) */ @TableField("type") private Integer type; cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
@@ -49,11 +49,21 @@ @TableField("verificationUserId") private Integer verificationUserId; /** * 核销门店id */ @TableField("verifiStoreId") private Integer verifiStoreId; /** * 核销时间 */ @TableField("verificationTime") private Date verificationTime; /** * 状态(1=待核销,2=已核销) */ @TableField("status") private Integer status; /** * 领取时间 */ @TableField("insertTime") cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java
@@ -2,9 +2,7 @@ import com.dsh.activity.entity.PointsMerchandise; import com.dsh.activity.feignclient.model.IntegralCommodity; import com.dsh.activity.feignclient.model.ProductDetailRequest; import com.dsh.activity.feignclient.model.ProductDetailsVo; import com.dsh.activity.feignclient.model.*; import com.dsh.activity.model.request.CommodityRequest; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -28,4 +26,12 @@ @PostMapping("/base/pointMerchars/getGoodDetails") ProductDetailsVo getGoodDetailsWithId(@RequestBody ProductDetailRequest detailRequest); @PostMapping("/base/pointMerchars/getDetailsOfExchange") List<ExchangeDetailsResponse> getIntegralExchangeDetails(@RequestBody Integer appUserId); @PostMapping("/base/pointMerchars/getSpecificsOfGoods") public PointDetailsVo getSpecificsOfGoods(@RequestBody Integer speMercharsId); } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
New file @@ -0,0 +1,31 @@ package com.dsh.activity.feignclient.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ExchangeDetailsResponse { @ApiModelProperty(value = "记录id") private Long detailsId; @ApiModelProperty(value = "商品名称") private String goodName; @ApiModelProperty(value = "支付类型(积分 / 积分+现金)") private String requiredType; @ApiModelProperty(value = "有效期开始时间") private String startTime; @ApiModelProperty(value = "有效期结束时间") private String endTime; @ApiModelProperty(value = "使用状态 (1已使用 2未使用)") private Integer useStatus; @ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券") private Integer goodType; } cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PointDetailsVo.java
New file @@ -0,0 +1,45 @@ package com.dsh.activity.feignclient.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class PointDetailsVo { @ApiModelProperty(value = "记录id") private Long detailsId; @ApiModelProperty(value = "图片集") private List<String> pics; @ApiModelProperty(value = "商品名称") private String goodName; @ApiModelProperty(value = "适用状态(1已使用 2未使用)") private Integer useType; @ApiModelProperty(value = "有效期开始时间") private String startTime; @ApiModelProperty(value = "有效期结束时间") private String endTime; @ApiModelProperty(value = "下单时间") private String orderTime; @ApiModelProperty(value = "核销时间") private String writeOffTime; @ApiModelProperty(value = "核销门店") private String writeOffName; @ApiModelProperty(value = "适用范围(指定门店可用)") private String belongs; @ApiModelProperty(value = "兑换说明") private String contents; }