From 631a5aa09e0147ca81fffcb1434e57b1cd1ba6f6 Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期三, 09 八月 2023 09:34:53 +0800
Subject: [PATCH] app端口:积分变动记录增加变动类型字段,代码同步更新;积分兑换操作的数量校验功能完善

---
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/AppUserGoodResp.java  |   21 ++++++++++
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java            |   26 ++++--------
 cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java |    1 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java      |    4 ++
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java        |   26 ++++++++++--
 cloud-server-activity/src/main/java/com/dsh/activity/model/request/AppUserGoodResp.java             |   21 ++++++++++
 6 files changed, 77 insertions(+), 22 deletions(-)

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 1b3d580..89f7713 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
@@ -49,4 +49,8 @@
 
     @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode")
     public List<UserPointsMerchandise> queryUserPointMerchaseByCode(@RequestBody String code);
+
+
+    @PostMapping("/base/pointMerchars/queryUserHasGoodsNums")
+    int queryUserHasGoodsNums(@RequestBody AppUserGoodResp goodResp);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/AppUserGoodResp.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/AppUserGoodResp.java
new file mode 100644
index 0000000..8bf7be0
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/AppUserGoodResp.java
@@ -0,0 +1,21 @@
+package com.dsh.account.feignclient.activity.model;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppUserGoodResp {
+    /**
+     * 用户id
+     */
+    Integer appUserId;
+    /**
+     * 商品id
+     */
+    Integer goodId;
+
+}
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 ff27ba9..98b8e2f 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
@@ -868,29 +868,20 @@
         if (ToolUtil.isEmpty(tAppUser)){
             return ResultUtil.error("用户不存在");
         }
-//        todo 积分商品明细 查询是否超出限领数量
-        switch (exchangeType.getGoodsType()){
-            case 1:
-
-                break;
-            case 2:
-
-                break;
-            case 3:
-
-                break;
-            case 4:
-
-                break;
-            default:
-                break;
-        }
         int goodsNums = 0;
         if (ToolUtil.isEmpty(exchangeType.getNums())){
             goodsNums = 1;
         }else {
             goodsNums = exchangeType.getNums();
         }
+        AppUserGoodResp goodResp = new AppUserGoodResp();
+        goodResp.setAppUserId(userIdFormRedis);
+        goodResp.setGoodId(merchandise.getId());
+        int count = mcClient.queryUserHasGoodsNums(goodResp);
+        if (ToolUtil.isNotEmpty(count) && count >= merchandise.getPickUpQuantity()){
+            return ResultUtil.error("超过限领数量");
+        }
+
         for (int i = 0; i < goodsNums; i++) {
 //            新增积分商品兑换记录
             UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise();
@@ -1133,6 +1124,7 @@
             appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points);
             userIntegralChanges.setNewIntegral(appUser.getIntegral());
             userIntegralChanges.setInsertTime(new Date());
+            userIntegralChanges.setCategory(2);
             uicMapper.insert(userIntegralChanges);
 
             this.baseMapper.updateById(appUser);
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
index e4fa974..753b6a0 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
@@ -121,6 +121,7 @@
         appUser.setIntegral(appUser.getIntegral() + vo.getIntegral());
         userIntegralChanges.setNewIntegral(appUser.getIntegral());
         userIntegralChanges.setInsertTime(new Date());
+        userIntegralChanges.setCategory(1);
         this.save(userIntegralChanges);
     }
 
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 857f6f4..0c446a5 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
@@ -12,6 +12,7 @@
 import com.dsh.activity.feignclient.other.StoreClient;
 import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
 import com.dsh.activity.model.PointMerchandiseVo;
+import com.dsh.activity.model.request.AppUserGoodResp;
 import com.dsh.activity.model.request.CommodityRequest;
 import com.dsh.activity.service.*;
 import com.dsh.activity.util.GDMapGeocodingUtil;
@@ -160,7 +161,7 @@
                 int coursePackageNums = upmseService.count(new QueryWrapper<UserPointsMerchandise>()
                         .eq("pointsMerchandiseId",merchandise.getId() ));
                 detailsVo.setRedeemedNum(coursePackageNums);
-                detailsVo.setResidueNum(merchandise.getQuantityIssued() - coursePackageNums);
+                detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - coursePackageNums, 0));
                 detailsVo.setPerLimit(merchandise.getPickUpQuantity());
                 if (merchandise.getRedemptionMethod() == 1){
                     detailsVo.setExchangeType(1);
@@ -224,7 +225,7 @@
                 int count = upmseService.count(new QueryWrapper<UserPointsMerchandise>()
                         .eq("pointsMerchandiseId",merchandise.getId() ));
                 detailsVo.setRedeemedNum(count);
-                detailsVo.setResidueNum(merchandise.getQuantityIssued()-count);
+                detailsVo.setResidueNum(Math.max(merchandise.getQuantityIssued() - count, 0));
                 detailsVo.setPerLimit(merchandise.getPickUpQuantity());
                 detailsVo.setExchangeType(merchandise.getRedemptionMethod());
                 if (merchandise.getRedemptionMethod() == 1){
@@ -276,10 +277,10 @@
                 });
                 detailsVo.setGoodName(coupon.getName());
                 detailsVo.setBelongsScope(coupon.getUserPopulation());
-                int couponNums = uconService.count(new QueryWrapper<UserCoupon>()
-                        .eq("couponId",coupon.getId() ));
+                int couponNums = upmseService.count(new QueryWrapper<UserPointsMerchandise>()
+                        .eq("pointsMerchandiseId",merchandise.getId() ));
                 detailsVo.setRedeemedNum(couponNums);
-                detailsVo.setResidueNum(coupon.getQuantityIssued()-couponNums);
+                detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - couponNums, 0));
                 detailsVo.setPerLimit(coupon.getPickUpQuantity());
                 detailsVo.setExchangeType(coupon.getRedemptionMethod());
                 if (coupon.getRedemptionMethod() == 1){
@@ -489,4 +490,19 @@
         return storeIds;
     }
 
+    /**
+     * 获取用户已兑换商品的数量
+     * @param goodResp
+     * @return 数量
+     */
+    @ResponseBody
+    @PostMapping("/base/pointMerchars/queryUserHasGoodsNums")
+    public int queryUserHasGoodsNums(@RequestBody AppUserGoodResp goodResp){
+        int count = upmseService.count(new LambdaQueryWrapper<UserPointsMerchandise>()
+                .eq(UserPointsMerchandise::getUserId,goodResp.getGoodId())
+                .eq(UserPointsMerchandise::getPointsMerchandiseId,goodResp.getGoodId()));
+        System.out.println(count);
+        return count;
+    }
+
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/AppUserGoodResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/AppUserGoodResp.java
new file mode 100644
index 0000000..e584e8a
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/AppUserGoodResp.java
@@ -0,0 +1,21 @@
+package com.dsh.activity.model.request;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppUserGoodResp {
+    /**
+     * 用户id
+     */
+    Integer appUserId;
+    /**
+     * 商品id
+     */
+    Integer goodId;
+
+}

--
Gitblit v1.7.1