From 717eb13e7e3f35ac662ca913cf785ebb6909b5fb Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期五, 07 七月 2023 11:50:16 +0800
Subject: [PATCH] activity:使用福利-我的券包

---
 /dev/null                                                                                    |   43 --------
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java        |   32 ++++++
 cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml                         |   30 ++++++
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java            |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java   |   41 ++++++++
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java |  120 +++++++++++++++++++++++
 cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java          |    4 
 cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java          |    8 +
 cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java     |   16 +++
 9 files changed, 250 insertions(+), 47 deletions(-)

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 c52a588..f959ec7 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
@@ -2,7 +2,10 @@
 
 import com.dsh.activity.entity.Coupon;
 import com.dsh.activity.model.CouponListVo;
+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.ResultUtil;
 import com.dsh.activity.util.TokenUtil;
 import io.swagger.annotations.ApiImplicitParam;
@@ -26,6 +29,9 @@
 
     @Autowired
     private TokenUtil tokenUtil;
+
+    @Autowired
+    private UserCouponService ucService;
 
 
 
@@ -71,4 +77,30 @@
             return null;
         }
     }
+
+
+    /**
+     *  我的券包列表
+     * @param req
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/api/coupon/queryCouponPackage")
+    @ApiOperation(value = "我的券包列表", tags = {"APP-使用福利"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+    })
+    public ResultUtil<List<CouponPackageResp>> queryAppuserCouponList(@RequestBody CouponPackageReq req){
+        try {
+            Integer uid = tokenUtil.getUserIdFormRedis();
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            return ResultUtil.success(ucService.queryCouponPackagesList(uid, req));
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.success();
+        }
+    }
+
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java
deleted file mode 100644
index dced410..0000000
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.dsh.activity.entity;
-
-public class JSONConpon {
-
-    double conditionalAmount;
-
-    double deductionAmount;
-
-    String experienceName;
-
-    public JSONConpon(double conditionalAmount, double deductionAmount, String experienceName) {
-        this.conditionalAmount = conditionalAmount;
-        this.deductionAmount = deductionAmount;
-        this.experienceName = experienceName;
-    }
-
-    public JSONConpon() {
-    }
-
-    public double getConditionalAmount() {
-        return conditionalAmount;
-    }
-
-    public void setConditionalAmount(double conditionalAmount) {
-        this.conditionalAmount = conditionalAmount;
-    }
-
-    public double getDeductionAmount() {
-        return deductionAmount;
-    }
-
-    public void setDeductionAmount(double deductionAmount) {
-        this.deductionAmount = deductionAmount;
-    }
-
-    public String getExperienceName() {
-        return experienceName;
-    }
-
-    public void setExperienceName(String experienceName) {
-        this.experienceName = experienceName;
-    }
-}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
index 62546d5..68ed533 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsh.activity.entity.UserCoupon;
-import com.dsh.activity.model.CouponListVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -30,4 +29,6 @@
     List<Map<String, Object>> queryAvailableCouponList(@Param("uid") Integer uid, @Param("storeId") Integer storeId,
                                        @Param("provinceCode") String provinceCode, @Param("cityCode") String cityCode);
 
+    List<UserCoupon> queryCanuseConponIds(@Param("userId")Integer userId,@Param("couponIds")List<Integer> couponIds);
+
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
index edb6926..f2671df 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
@@ -1,5 +1,6 @@
 package com.dsh.activity.model;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 
@@ -9,14 +10,17 @@
     /**
      * 条件金额
      */
-    double conditionalAmount;
+    @ApiModelProperty("条件金额(例如 :满xx可用)")
+    String conditionalAmount;
     /**
      * 抵扣金额(代金券 取 该字段)
      */
-    double deductionAmount;
+    @ApiModelProperty("抵扣金额(代金券 取 该字段) 例如:¥ xxx")
+    String deductionAmount;
     /**
      * 体验券名称
      */
+    @ApiModelProperty("体验券名称 ")
     String experienceName;
 
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java
new file mode 100644
index 0000000..ce3246b
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.model.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CouponPackageReq {
+
+    @ApiModelProperty(value = "(1=满减券,2=代金券,3=体验券)")
+    Integer couponType;
+
+    @ApiModelProperty(value = "(1=未使用 2=已使用 3=已过期)")
+    Integer useStatus;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
new file mode 100644
index 0000000..a33a3fc
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
@@ -0,0 +1,41 @@
+package com.dsh.activity.model.response;
+
+
+import com.dsh.activity.model.ConponJsonRuleModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CouponPackageResp {
+
+    @ApiModelProperty("优惠券id")
+    private Integer id;
+
+    @ApiModelProperty("优惠券名称")
+    private String name;
+
+    @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券)")
+    private Integer type;
+
+    @ApiModelProperty("适用范围1全国通用 2指定城市可用 3指定门店可用")
+    private Integer useCondition;
+
+    @ApiModelProperty("适用范围名称")
+    private String available;
+
+    @ApiModelProperty("useCondition = 2,为地址字符串;useCondition = 3,为门店名称+地址字符串")
+    private String cityOrStore;
+
+    @ApiModelProperty("优惠券说明(使用说明)")
+    private String instructionsForUse;
+
+    @ApiModelProperty("金额条件封装")
+    private ConponJsonRuleModel ruleModel;
+
+    @ApiModelProperty("有效时间(2021-05-05)")
+    private String effectiveTime;
+
+    @ApiModelProperty("使用状态(1未使用 2已使用 3已过期)")
+    private Integer useStatus;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
index 2d73f97..784588f 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.activity.entity.UserCoupon;
 import com.dsh.activity.model.CouponListVo;
+import com.dsh.activity.model.request.CouponPackageReq;
+import com.dsh.activity.model.response.CouponPackageResp;
 
 import java.util.List;
 
@@ -24,4 +26,6 @@
      * @return
      */
     List<CouponListVo> queryAvailableCouponList(Integer uid, Integer coursePackageId, Double price, String lon, String lat) throws Exception;
+
+    List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req);
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
index c8441cd..b417c46 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -2,22 +2,33 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.Coupon;
 import com.dsh.activity.entity.UserCoupon;
+import com.dsh.activity.feignclient.account.AppUserClient;
+import com.dsh.activity.feignclient.account.StudentClient;
+import com.dsh.activity.feignclient.account.model.AppUser;
+import com.dsh.activity.feignclient.account.model.Student;
 import com.dsh.activity.feignclient.course.CoursePackageClient;
 import com.dsh.activity.feignclient.course.model.CoursePackage;
+import com.dsh.activity.mapper.CouponMapper;
 import com.dsh.activity.mapper.UserCouponMapper;
+import com.dsh.activity.model.ConponJsonRuleModel;
 import com.dsh.activity.model.CouponListVo;
+import com.dsh.activity.model.request.CouponPackageReq;
+import com.dsh.activity.model.response.CouponPackageResp;
 import com.dsh.activity.service.UserCouponService;
+import com.dsh.activity.util.DateUtil;
 import com.dsh.activity.util.GDMapGeocodingUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -35,6 +46,15 @@
 
     @Autowired
     private GDMapGeocodingUtil gdMapGeocodingUtil;
+
+    @Autowired
+    private AppUserClient appClient;
+
+    @Autowired
+    private StudentClient studentClient;
+
+    @Autowired
+    private CouponMapper couponMapper;
 
 
     /**
@@ -87,4 +107,102 @@
         }
         return listVos;
     }
+
+    @Override
+    public List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req) {
+        List<CouponPackageResp> respList = new ArrayList<>();
+        AppUser appUser = appClient.queryAppUser(uid);
+        if (null != appUser) {
+            List<Integer> userPopulation = new ArrayList<>();
+            userPopulation.add(1);//全部用户
+            if (1 == appUser.getIsVip()) {
+                userPopulation.add(2);//年度会员
+            }
+            List<Student> students = studentClient.queryStudentList(uid);
+            if (students.size() > 0) {
+                userPopulation.add(3);//已有学员用户
+            }
+            List<UserCoupon> userCoupons = this.baseMapper.queryCanuseConponIds(appUser.getId(),null);
+            if (userCoupons.size() > 0){
+                for (UserCoupon userCoupon : userCoupons) {
+                    Coupon coupon = couponMapper.selectById(userCoupon.getCouponId());
+                    CouponPackageResp packageResp = new CouponPackageResp();
+                    packageResp.setId(coupon.getId());
+                    packageResp.setName(coupon.getName());
+                    packageResp.setType(coupon.getType());
+                    packageResp.setUseCondition(coupon.getUseScope());
+                    switch (coupon.getUseScope()){
+                        case 1:
+                            packageResp.setAvailable("全国通用");
+                            break;
+                        case 2:
+                            packageResp.setAvailable("指定城市可用");
+                            packageResp.setCityOrStore("");
+                            break;
+                        case 3:
+                            packageResp.setAvailable("指定门店可用");
+                            packageResp.setCityOrStore("");
+                            break;
+                        default:
+                            break;
+                    }
+                    packageResp.setInstructionsForUse(coupon.getIllustrate());
+                    ConponJsonRuleModel ruleModel = new ConponJsonRuleModel();
+                    JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+                    switch (coupon.getType()) {
+                        case 1:
+//                            满减券
+                            Double num1 = jsonObject.getDouble("num1");
+                            Double num2 = jsonObject.getDouble("num2");
+                            ruleModel.setConditionalAmount("满"+num1+"可用");
+                            ruleModel.setDeductionAmount("¥ "+num2);
+                            ruleModel.setExperienceName("");
+                            break;
+                        case 2:
+//                            代金券
+                            Double jsonObjectDouble = jsonObject.getDouble("num1");
+                            ruleModel.setConditionalAmount("");
+                            ruleModel.setDeductionAmount("¥ "+jsonObjectDouble);
+                            ruleModel.setExperienceName("");
+                            break;
+                        case 3:
+//                            体验券
+                            ruleModel.setConditionalAmount("");
+                            ruleModel.setDeductionAmount("");
+                            ruleModel.setExperienceName(jsonObject.getString("num1"));
+                            break;
+                        default:
+                            break;
+                    }
+                    packageResp.setRuleModel(ruleModel);
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                    packageResp.setEffectiveTime(simpleDateFormat.format(coupon.getEndTime()));
+                    if (userCoupon.getStatus() == 1){
+                        if (DateUtil.getDate().before(coupon.getEndTime())){
+                            packageResp.setUseStatus(1);
+                        }else {
+                            packageResp.setUseStatus(3);
+                        }
+                    }
+                    if (userCoupon.getStatus() == 2){
+                        packageResp.setUseStatus(2);
+                    }
+                    respList.add(packageResp);
+                }
+                if (null != req.getCouponType()){
+                    respList = respList.stream()
+                            .filter(couponPackageResp -> couponPackageResp.getType().equals(req.getCouponType()))
+                            .collect(Collectors.toList());
+                }
+                if (null != req.getUseStatus()){
+                    respList = respList.stream()
+                            .filter(couponPackageResp -> couponPackageResp.getUseStatus().equals(req.getUseStatus()))
+                            .collect(Collectors.toList());
+                }
+            }
+
+        }
+        return respList;
+    }
+
 }
diff --git a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
index 4cd1ab4..9b98c7c 100644
--- a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
@@ -17,4 +17,34 @@
         b.useScope = 1 or (b.useScope = 2 and provinceCode = #{provinceCode} and cityCode = #{cityCode})
         or (b.useScope = 3 and b.id in (select couponId from t_coupon_store where storeId = #{storeId})))
     </select>
+    <select id="queryCanuseConponIds" resultType="com.dsh.activity.entity.UserCoupon">
+        SELECT *
+        FROM t_user_coupon
+        UNION ALL
+        SELECT *
+        FROM t_user_coupon1
+        UNION ALL
+        SELECT *
+        FROM t_user_coupon2
+        UNION ALL
+        SELECT *
+        FROM t_user_coupon3
+        UNION ALL
+        SELECT *
+        FROM t_user_coupon4
+        UNION ALL
+        SELECT *
+        FROM t_user_coupon5
+        WHERE 1=1
+        <if test="userId != null ">
+            and userId = #{userId}
+        </if>
+        <if test="couponIds.size > 0">
+            and couponId in
+        <foreach collection="couponIds" close=")" index="index" open="(" separator="," item="item">
+            #{item}
+        </foreach>
+        </if>
+        order by insertTime desc
+    </select>
 </mapper>

--
Gitblit v1.7.1