From 9e01ddb449dba96e681af4bdb6257e3c7c0cfe51 Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期二, 11 七月 2023 15:42:54 +0800 Subject: [PATCH] 积分商城的列表查询 --- cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 3 cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java | 10 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java | 8 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 52 ++++ cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java | 22 + cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java | 128 +++++++++ cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 48 +++ cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java | 8 cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java | 119 +++++++++ cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java | 108 ++++++++ cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java | 16 + cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 147 ++++++++++ cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java | 9 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java | 11 cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java | 18 + cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 7 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java | 10 17 files changed, 708 insertions(+), 16 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java index 73175a8..daa800b 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java @@ -247,8 +247,7 @@ if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } - // TODO: 2023/7/10 积分商品列表查询 - return ResultUtil.success(); + return ResultUtil.success(tauService.queryAppUserIntegral(request,userIdFormRedis)); }catch (Exception e){ return ResultUtil.runErr(); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java index bdcab0b..7d045a8 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java @@ -1,9 +1,12 @@ package com.dsh.account.feignclient.activity; +import com.dsh.account.feignclient.activity.model.CommodityRequest; import com.dsh.account.feignclient.activity.model.IntegralCommodity; +import com.dsh.account.feignclient.activity.model.PointsMerchandise; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -14,4 +17,10 @@ public List<IntegralCommodity> getConvertibleGoods(); + @PostMapping("/base/pointMerchars/getCommoditys") + public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request); + + @PostMapping("/base/pointMerchars/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer goodId); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java index f336961..ec8eae1 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java @@ -1,8 +1,11 @@ package com.dsh.account.feignclient.activity; +import com.dsh.account.feignclient.activity.model.CommodityRequest; +import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -14,4 +17,12 @@ @PostMapping("/base/userConpon/getStuOfConpons") public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId); + + @PostMapping("/base/coupon/getAllCoupons") + public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request); + + + @PostMapping("/base/coupon/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer id); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java new file mode 100644 index 0000000..f7f8958 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/CommodityRequest.java @@ -0,0 +1,16 @@ +package com.dsh.account.feignclient.activity.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class CommodityRequest { + + @ApiModelProperty(value = "经度") + private String lon; + + @ApiModelProperty(value = "纬度") + private String lat; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java new file mode 100644 index 0000000..69d9377 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/PointsMerchandise.java @@ -0,0 +1,108 @@ +package com.dsh.account.feignclient.activity.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class PointsMerchandise { + + /** + * 主键 + */ + private Integer id; + /** + * 类型(1=实体商品,2=课包商品,3=门票商品) + */ + private Integer type; + /** + * 商品名称 + */ + private String name; + /** + * 课包id + */ + private Integer coursePackageId; + /** + * 原价 + */ + private BigDecimal price; + /** + * 兑换方式(1=积分,2=现金+积分) + */ + private Integer redemptionMethod; + /** + * 所需现金 + */ + private BigDecimal cash; + /** + * 所属积分 + */ + private BigDecimal integral; + /** + * 商品封面 + */ + private String cover; + /** + * 商品图片 + */ + private String productImages; + /** + * 用户人群(1=全部用户,2=年度会员,3=已有学员用户) + */ + private Integer userPopulation; + /** + * 发放数量 + */ + private Integer quantityIssued; + /** + * 限领数量 + */ + private Integer pickUpQuantity; + /** + * 开始时间 + */ + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + /** + * 使用范围(1=全国,2=指定城市,3=指定门店) + */ + private Integer useScope; + /** + * 省 + */ + private String province; + /** + * 省编号 + */ + private String provinceCode; + /** + * 市 + */ + private String city; + /** + * 市编号 + */ + private String cityCode; + /** + * 兑换说明 + */ + private String redemptionInstructions; + /** + * 排序 + */ + private Integer sort; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java new file mode 100644 index 0000000..c788428 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePackageClient.java @@ -0,0 +1,22 @@ +package com.dsh.account.feignclient.course; + +import com.dsh.account.feignclient.course.model.CoursePackage; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * @author zhibing.pu + * @date 2023/7/5 9:55 + */ +@FeignClient("mb-cloud-course") +public interface CoursePackageClient { + + + /** + * 根据id获取课包 + * @param id + * @return + */ + @PostMapping("/coursePackage/queryCoursePackageById") + CoursePackage queryCoursePackageById(Integer id); +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java new file mode 100644 index 0000000..4f54cd2 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CoursePackage.java @@ -0,0 +1,128 @@ +package com.dsh.account.feignclient.course.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * @author zhibing.pu + * @date 2023/7/5 9:56 + */ +@Data +public class CoursePackage { + private Integer id; + /** + * 省 + */ + private String province; + /** + * 省编号 + */ + private String provinceCode; + /** + * 市 + */ + private String city; + /** + * 市编号 + */ + private String cityCode; + /** + * 门店id + */ + private Integer storeId; + /** + * 课包类型id + */ + private Integer coursePackageTypeId; + /** + * 课包名称 + */ + private String name; + /** + * 上课场地id + */ + private Integer siteId; + /** + * 教练id + */ + private Integer coachId; + /** + * 最多预约人数 + */ + private Integer maxSubscribeNumber; + /** + * 上课开始时间 + */ + private String classStartTime; + /** + * 上课结束时段 + */ + private String classEndTime; + /** + * 上课周,多个分号分隔 + */ + private String classWeeks; + /** + * 封面图 + */ + private String coverDrawing; + /** + * 详情图 + */ + private String detailDrawing; + /** + * 介绍图 + */ + private String introduceDrawing; + /** + * 排序 + */ + private Integer sort; + /** + * 支付方式(1=现金,2=玩湃币) + */ + private Integer payType; + /** + * 有效天数 + */ + private Integer validDays; + /** + * 课后练习课程id + */ + private Integer courseId; + /** + * 课后练习视频介绍 + */ + private String introduce; + /** + * 完成课后练习获取积分 + */ + private Integer integral; + /** + * 课程状态(1=未开始,2=进行中,3=已结束,4=已取消) + */ + private Integer status; + /** + * 审核状态(1=待审核,2=已同意,3=已拒绝) + */ + private Integer auditStatus; + /** + * 审核人id + */ + private Integer auditUserId; + /** + * 审核备注 + */ + private String authRemark; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date insertTime; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java new file mode 100644 index 0000000..81fecae --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/dto/Coupon.java @@ -0,0 +1,119 @@ +package com.dsh.account.model.dto; + + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class Coupon { + /** + * 主键 + */ + private Integer id; + /** + * 优惠券名称 + */ + private String name; + /** + * 优惠券类型(1=满减券,2=代金券,3=体验券) + */ + private Integer type; + /** + * 优惠券规则JSON + */ + private String content; + /** + * 优惠券说明 + */ + private String illustrate; + /** + * 发放方式(1=积分购买,2=注册赠送,3=自动发券) + */ + private Integer distributionMethod; + /** + * 兑换方式(1=积分,2=积分+现金) + */ + private Integer redemptionMethod; + /** + * 所需现金 + */ + private BigDecimal cash; + /** + * 所属积分 + */ + private BigDecimal integral; + /** + * 用户人群(1=全部用户,2=年度会员,3=已有学员用户) + */ + private Integer userPopulation; + /** + * 发放数量 + */ + private Integer quantityIssued; + /** + * 限领数量 + */ + private Integer pickUpQuantity; + /** + * 开始时间 + */ + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + /** + * 使用范围(1=全国,2=指定城市,3=指定门店) + */ + private Integer useScope; + /** + * 省 + */ + private String province; + /** + * 省编号 + */ + private String provinceCode; + /** + * 市 + */ + private String city; + /** + * 市编号 + */ + private String cityCode; + /** + * 审核状态(1=待审核,2=已通过,3=已拒绝) + */ + private Integer auditStatus; + /** + * 审核人id + */ + private Integer auditUserId; + /** + * 审核备注 + */ + private String auditRemark; + /** + * 状态(1=未开始,2=已开始,3=已结束,4=已取消) + */ + private Integer status; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + /** + * 封面图 + */ + private String cover; + /** + * 图片 + */ + private String productImages; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java index 287f537..68cc3f3 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointMallDetailsResponse.java @@ -35,18 +35,24 @@ @ApiModelProperty(value = "商品名称") private String goodName; + @ApiModelProperty(value = "1积分 2现金+积分") + private Integer condition; + @ApiModelProperty(value = "金额") private BigDecimal amount; @ApiModelProperty(value = "积分") private Integer integral; - @ApiModelProperty(value = "适用范围: 1 仅限会员 2仅限学员 3全部用户") + @ApiModelProperty(value = "适用范围: 1全部用户 2仅限会员 3仅限学员") private Integer belongsType; @ApiModelProperty(value = "商品类型: 1实物 2课包 3门票 4优惠券") private Integer goodsType; + @ApiModelProperty(value = "已兑换数量") + private Integer nums; + } } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java index 5b897dc..c746669 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java @@ -7,9 +7,7 @@ import com.dsh.account.model.LoginSMSCodeVo; import com.dsh.account.model.LoginWeChatVo; import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; -import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; -import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; -import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo; +import com.dsh.account.model.vo.userBenefitDetail.*; import com.dsh.account.util.ResultUtil; import java.util.List; @@ -119,4 +117,7 @@ void cancellation(Integer appUserId); List<RechargeCentVo> getSysRechargeConfig(Integer appUserId); + + PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index 4e6c0fb..474ce21 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -9,8 +9,13 @@ import com.dsh.account.entity.VipPayment; import com.dsh.account.enums.RechargeRecordEnum; import com.dsh.account.feignclient.activity.MerChandiseClient; +import com.dsh.account.feignclient.activity.UserConponClient; +import com.dsh.account.feignclient.activity.model.CommodityRequest; +import com.dsh.account.feignclient.activity.model.PointsMerchandise; +import com.dsh.account.feignclient.course.CoursePackageClient; import com.dsh.account.feignclient.course.CoursePaymentClient; import com.dsh.account.feignclient.course.model.CourseOfStoreVo; +import com.dsh.account.feignclient.course.model.CoursePackage; import com.dsh.account.feignclient.course.model.QueryStoreList; import com.dsh.account.feignclient.course.model.StuCourseResp; import com.dsh.account.feignclient.other.ImgConfigClient; @@ -26,14 +31,13 @@ import com.dsh.account.model.JoinPlayPaiVo; import com.dsh.account.model.LoginSMSCodeVo; import com.dsh.account.model.LoginWeChatVo; +import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.vo.classDetails.CourseVenue; import com.dsh.account.model.vo.classDetails.ExerciseVideo; import com.dsh.account.model.vo.classDetails.RegisteredCourse; import com.dsh.account.model.vo.classDetails.WeekedCourse; import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; -import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; -import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; -import com.dsh.account.model.vo.userBenefitDetail.RechargeCentVo; +import com.dsh.account.model.vo.userBenefitDetail.*; import com.dsh.account.service.TAppUserService; import com.dsh.account.util.*; import com.dsh.account.util.akeylogin.Md5Util; @@ -44,10 +48,7 @@ import javax.annotation.Resource; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -100,6 +101,12 @@ @Resource private RechargeConfigClient reconMapper; + + @Resource + private UserConponClient ucponClient; + + @Resource + private CoursePackageClient cpageClient; @Override public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) { @@ -557,4 +564,130 @@ return centVos; } + @Override + public PointMallDetailsResponse queryAppUserIntegral(MallRequest request, Integer userIdFormRedis) { + PointMallDetailsResponse detailsResponse = new PointMallDetailsResponse(); + List<PointMallDetailsResponse.Goods> goods = new ArrayList<>(); + + TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis); + detailsResponse.setName(tAppUser.getName()); + detailsResponse.setIntegral(tAppUser.getIntegral()); + detailsResponse.setHeadImg(tAppUser.getHeadImg()); + + CommodityRequest commodityRequest = new CommodityRequest(); + commodityRequest.setLon(request.getLon()); + commodityRequest.setLat(request.getLat()); + List<PointsMerchandise> vicinityGoods = mcClient.getVicinityGoods(commodityRequest); + if (vicinityGoods.size() > 0) { + for (PointsMerchandise vicinityGood : vicinityGoods) { + PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods(); + switch (vicinityGood.getType()) { + case 1: + commodity.setGoodId(vicinityGood.getId()); + commodity.setGoodName(vicinityGood.getName()); + commodity.setGoodImg(vicinityGood.getCover()); + commodity.setCondition(vicinityGood.getRedemptionMethod()); + if (vicinityGood.getRedemptionMethod() == 1) { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + } else { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + commodity.setAmount(vicinityGood.getCash()); + } + commodity.setBelongsType(vicinityGood.getUserPopulation()); + commodity.setGoodsType(1); + commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId())); + break; + case 2: + commodity.setGoodId(vicinityGood.getCoursePackageId()); + CoursePackage coursePackage = cpageClient.queryCoursePackageById(vicinityGood.getCoursePackageId()); + commodity.setGoodImg(coursePackage.getCoverDrawing()); + commodity.setGoodName(coursePackage.getName()); + commodity.setCondition(vicinityGood.getRedemptionMethod()); + if (vicinityGood.getRedemptionMethod() == 1) { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + } else { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + commodity.setAmount(vicinityGood.getCash()); + } + commodity.setBelongsType(vicinityGood.getUserPopulation()); + commodity.setGoodsType(2); + commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId())); + break; + case 3: + commodity.setGoodId(vicinityGood.getId()); + commodity.setGoodName(vicinityGood.getName()); + commodity.setGoodImg(vicinityGood.getCover()); + commodity.setCondition(vicinityGood.getRedemptionMethod()); + if (vicinityGood.getRedemptionMethod() == 1) { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + } else { + commodity.setIntegral(vicinityGood.getIntegral().intValue()); + commodity.setAmount(vicinityGood.getCash()); + } + commodity.setBelongsType(vicinityGood.getUserPopulation()); + commodity.setGoodsType(3); + commodity.setNums(mcClient.getRedeemedQuantity(vicinityGood.getId())); + break; + default: + break; + } + goods.add(commodity); + } + } + List<Coupon> allCoupons = ucponClient.getAllCoupons(commodityRequest); + if (allCoupons.size() > 0) { + for (Coupon allCoupon : allCoupons) { + PointMallDetailsResponse.Goods commodity = new PointMallDetailsResponse.Goods(); + commodity.setGoodId(allCoupon.getId()); + commodity.setGoodName(allCoupon.getName()); + commodity.setCondition(allCoupon.getRedemptionMethod()); + commodity.setGoodImg(allCoupon.getCover()); + if (allCoupon.getRedemptionMethod() == 1) { + commodity.setIntegral(allCoupon.getIntegral().intValue()); + } else { + commodity.setIntegral(allCoupon.getIntegral().intValue()); + commodity.setAmount(allCoupon.getCash()); + } + commodity.setBelongsType(allCoupon.getUserPopulation()); + commodity.setGoodsType(4); + commodity.setNums(ucponClient.getRedeemedQuantity(allCoupon.getId())); + goods.add(commodity); + } + } + if (StringUtils.hasText(request.getSearch())){ + goods = goods.stream() + .filter(merchandise -> merchandise.getGoodName().contains(request.getSearch())) + .collect(Collectors.toList()); + } + if (null != request.getRank()){ + switch (request.getRank()){ + case 1: + goods = goods.stream() + .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral).reversed()) + .collect(Collectors.toList()); + break; + case 2: + goods = goods.stream() + .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getIntegral)) + .collect(Collectors.toList()); + break; + case 3: + goods = goods.stream() + .sorted(Comparator.comparing(PointMallDetailsResponse.Goods::getNums).reversed()) + .collect(Collectors.toList()); + break; + default: + break; + } + + } + if (null != request.getGoodsType()){ + goods = goods.stream() + .filter(merchandise -> merchandise.getGoodsType().equals(request.getGoodsType())) + .collect(Collectors.toList()); + } + detailsResponse.setGoods(goods); + return detailsResponse; + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java index c1fceaf..a3feebf 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java @@ -1,11 +1,15 @@ package com.dsh.activity.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.Coupon; +import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.model.CouponListVo; +import com.dsh.activity.model.request.CommodityRequest; import com.dsh.activity.model.request.CouponPackageReq; import com.dsh.activity.model.response.CouponPackageResp; import com.dsh.activity.service.ICouponService; import com.dsh.activity.service.UserCouponService; +import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.ResultUtil; import com.dsh.activity.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; @@ -14,7 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Objects; /** * @author zhibing.pu @@ -32,6 +39,9 @@ @Autowired private UserCouponService ucService; + + @Autowired + private GDMapGeocodingUtil gdMapGeocodingUtil; @@ -103,4 +113,46 @@ } } + + @PostMapping("/base/coupon/getAllCoupons") + public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request){ + String provinceCode = ""; + String cityCode = ""; + try { + Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat()); + provinceCode = geocode.get("provinceCode"); + cityCode = geocode.get("cityCode"); + }catch (Exception e){ + e.printStackTrace(); + } + try { + Integer userAppId = tokenUtil.getUserIdFormRedis(); + List<UserCoupon> list = ucService.list(new QueryWrapper<UserCoupon>() + .eq("userId",userAppId )); + List<Coupon> couponList = couponService.list(new QueryWrapper<Coupon>() + .eq("auditStatus",2) + .eq("state",1) + .eq("status",2)); + if (couponList.size() > 0 ){ + Iterator<Coupon> iterator = couponList.iterator(); + while (iterator.hasNext()) { + Coupon merchandise = iterator.next(); + if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) { + iterator.remove(); // 移除符合条件的商品 + } + } + } + return couponList; + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + @PostMapping("/base/coupon/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer id){ + return ucService.count(new QueryWrapper<UserCoupon>() + .eq("couponId",id)); + } + } 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 9e61d1e..e326ec9 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 @@ -3,16 +3,19 @@ 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.util.GDMapGeocodingUtil; 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 java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @RestController @RequestMapping("") @@ -21,6 +24,12 @@ @Autowired private PointsMerchandiseService pmdsService; + + @Autowired + private GDMapGeocodingUtil gdMapGeocodingUtil; + + @Autowired + private UserPointsMerchandiseService upmseService; @@ -43,4 +52,37 @@ return commodity; } + + @PostMapping("/base/pointMerchars/getCommoditys") + public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request){ + String provinceCode = ""; + String cityCode = ""; + 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<PointsMerchandise> list = pmdsService.list(new QueryWrapper<PointsMerchandise>() + .eq("state", 1)); + if (list.size() > 0 ){ + Iterator<PointsMerchandise> iterator = list.iterator(); + while (iterator.hasNext()) { + PointsMerchandise merchandise = iterator.next(); + if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) { + iterator.remove(); // 移除符合条件的商品 + } + } + } + return list; + } + + @PostMapping("/base/pointMerchars/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer goodId){ + return upmseService.count(new QueryWrapper<UserPointsMerchandise>() + .eq("pointsMerchandiseId",goodId)); + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java index fe57f32..02e3e18 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java @@ -158,6 +158,16 @@ @TableField("insertTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; + /** + * 封面图 + */ + @TableField("cover") + private String cover; + /** + * 图片 + */ + @TableField("productImages") + private String productImages; @Override diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java index 41d7f40..fe612bd 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/MerChandiseClient.java @@ -1,9 +1,12 @@ package com.dsh.activity.feignclient; +import com.dsh.activity.entity.PointsMerchandise; import com.dsh.activity.feignclient.model.IntegralCommodity; +import com.dsh.activity.model.request.CommodityRequest; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -13,5 +16,10 @@ @PostMapping("/base/pointMerchars/convertGoods") public List<IntegralCommodity> getConvertibleGoods(); + @PostMapping("/base/pointMerchars/getCommoditys") + public List<PointsMerchandise> getVicinityGoods(@RequestBody CommodityRequest request); + + @PostMapping("/base/pointMerchars/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer goodId); } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java index c13d4af..496b9c8 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java @@ -1,8 +1,11 @@ package com.dsh.activity.feignclient; +import com.dsh.activity.entity.Coupon; import com.dsh.activity.feignclient.model.CouponStuAvailableVo; +import com.dsh.activity.model.request.CommodityRequest; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -14,4 +17,11 @@ @PostMapping("/base/userConpon/getStuOfConpons") public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId); + @PostMapping("/base/coupon/getAllCoupons") + public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request); + + + @PostMapping("/base/coupon/getRedeemedNums") + public int getRedeemedQuantity(@RequestBody Integer id); + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java new file mode 100644 index 0000000..e98eb6d --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CommodityRequest.java @@ -0,0 +1,18 @@ +package com.dsh.activity.model.request; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommodityRequest { + + @ApiModelProperty(value = "经度") + private String lon; + + @ApiModelProperty(value = "纬度") + private String lat; + + + +} -- Gitblit v1.7.1