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