From 40ff51856a11151ab3f0154a1ae3530e00dafff7 Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期四, 23 十二月 2021 13:52:31 +0800
Subject: [PATCH] 修改活动bug

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java |  137 ++++++++++++++++++++++++++-------------------
 1 files changed, 79 insertions(+), 58 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
index 2609a25..e35bdb4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
@@ -29,6 +29,8 @@
 
 import lombok.extern.slf4j.Slf4j;
 
+import static java.util.Objects.nonNull;
+
 /**
  * @auther lyq
  * @create 2021-07-28 16:03:18
@@ -177,7 +179,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R addIntegralTradeAdmin(AddComActIntegralUserDTO integralUserDTO) {
-        // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷 8.活动签到 9.取消活动)
+        // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参加居民活动 5.参加志愿者活动 6.参与党员活动 7.参与调查问卷 8.取消活动)
         Integer type = integralUserDTO.getIntegralType();
         // 业务id
         Long serviceId = integralUserDTO.getServiceId();
@@ -194,24 +196,28 @@
         // 当前时间
         Date nowDate = new Date();
 
-        // 查询随手拍增加积分数量
-        ComActIntegralRuleDO integralRuleDO =
-            comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda()
-                .eq(ComActIntegralRuleDO::getIntegralType, type).eq(ComActIntegralRuleDO::getCommunityId, communityId));
-        if (integralRuleDO == null) {
-            log.error("未查询到该社区积分规则,社区id:" + communityId);
-            return R.fail("未查询到该社区积分规则,社区id:" + communityId);
-        }
-        // 判断规则是否有次数限制
-        if (integralRuleDO.getIsRestrict().equals(ComActIntegralRuleDO.isRestrict.yes)) {
-            Integer count = this.baseMapper.getIntegralCount(
-                getIntegralCountDTO(integralRuleDO.getType(), userId, communityId, integralRuleDO.getIntegralType()));
-            if (count >= integralRuleDO.getCount()) {
-                log.error("该用户参加任务次数已达上限");
-                return R.fail("该用户参加任务次数已达上限");
+        Integer isVolunteer = integralUserDTO.getIsVolunteer();
+
+        if (!type.equals(8)) {
+            // 查询随手拍增加积分数量
+            ComActIntegralRuleDO integralRuleDO =
+                    comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda()
+                            .eq(ComActIntegralRuleDO::getIntegralType, type).eq(ComActIntegralRuleDO::getCommunityId, communityId));
+            if (integralRuleDO == null) {
+                log.error("未查询到该社区积分规则,社区id:" + communityId);
+                return R.fail("未查询到该社区积分规则,社区id:" + communityId);
             }
+            // 判断规则是否有次数限制
+            if (integralRuleDO.getIsRestrict().equals(ComActIntegralRuleDO.isRestrict.yes)) {
+                Integer count = this.baseMapper.getIntegralCount(
+                        getIntegralCountDTO(integralRuleDO.getType(), userId, communityId, integralRuleDO.getIntegralType()));
+                if (count >= integralRuleDO.getCount()) {
+                    log.error("该用户参加任务次数已达上限");
+                    return R.fail("该用户参加任务次数已达上限");
+                }
+            }
+            amount = integralRuleDO.getAmount();
         }
-        amount = integralRuleDO.getAmount();
 
         switch (type) {
             case 1:
@@ -254,27 +260,32 @@
                 }
                 break;
             case 4:
-                identityType = 3;
-                remark.append("参与志愿者活动奖励积分");
-                ComActActivityDO actActivityZYZDO = comActActivityService.getById(serviceId);
-                if (actActivityZYZDO != null) {
-                    remark.append("【");
-                    remark.append(actActivityZYZDO.getActivityName());
-                    remark.append("】");
+                if (nonNull(isVolunteer) && isVolunteer.equals(1)) {
+                    identityType = 3;
+                } else {
+                    identityType = 1;
+                }
+                remark.append("成功参加居民活动奖励积分");
+                ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
+                if(actActivityDO1 != null) {
+                    amount = actActivityDO1.getRewardIntegral();
                 }
                 break;
             case 5:
-                remark.append("参与社区活动奖励积分");
+                if (nonNull(isVolunteer) && isVolunteer.equals(0)) {
+                    identityType = 1;
+                } else {
+                    identityType = 3;
+                }
+                remark.append("成功参加志愿者活动奖励积分");
                 ComActActivityDO actActivityDO = comActActivityService.getById(serviceId);
-                if (actActivityDO != null) {
-                    remark.append("【");
-                    remark.append(actActivityDO.getActivityName());
-                    remark.append("】");
+                if(actActivityDO != null) {
+                    amount = actActivityDO.getRewardIntegral();
                 }
                 break;
             case 6:
                 identityType = 2;
-                remark.append("参与党员活动奖励积分");
+                remark.append("参与党员活动");
                 break;
             case 7:
                 // 查询调查问卷
@@ -305,16 +316,20 @@
                 remark.append("】");
                 break;
             case 8:
-                remark.append("成功参加活动奖励积分");
-                if(integralUserDTO.getActivityType()==1){
-                    ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
-                    if(actActivityDO1!=null){
-                        amount=actActivityDO1.getRewardIntegral();
-                        if(actActivityDO1.getVolunteerMax()!=0){
-                            identityType=3;
-                        }else {
-                            identityType=1;
+                if (integralUserDTO.getActivityType() == 1) {
+                    ComActActivityDO actActivityDO2 = comActActivityService.getById(serviceId);
+                    if (actActivityDO2 != null) {
+                        amount = -actActivityDO2.getCancelDeduct();
+                        if (actActivityDO2.getVolunteerMax() != 0) {
+                            remark.append("取消志愿者活动扣除积分");
+                        } else {
+                            remark.append("取消居民活动扣除积分");
                         }
+                    }
+                    if (nonNull(isVolunteer) && isVolunteer.equals(1)) {
+                        identityType = 3;
+                    } else {
+                        identityType = 1;
                     }
                 }
 //                else {
@@ -325,19 +340,6 @@
 //                    }
 //                }
                 break;
-            case 9:
-                remark.append("取消活动扣除积分");
-                if (integralUserDTO.getActivityType() == 1) {
-                    ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
-                    if (actActivityDO1 != null) {
-                        amount = -actActivityDO1.getCancelDeduct();
-                        if (actActivityDO1.getVolunteerMax() != 0) {
-                            identityType = 3;
-                        } else {
-                            identityType = 1;
-                        }
-                    }
-                }
             default:
                 break;
         }
@@ -385,20 +387,39 @@
         Integer integralAvailableResident = integralUserDO.getIntegralAvailableResident();
         Integer integralFrozenResident = integralUserDO.getIntegralFrozenResident();
 
-        integralUserDO.setIntegralSum(addIntegral(integralUserDO.getIntegralSum() + amount));
-        integralUserDO.setIntegralAvailableSum(addIntegral(integralUserDO.getIntegralAvailableSum() + amount));
-        integralUserDO.setUpdateAt(nowDate);
         // 根据不同身份,计算钱包金额
+        int reduceAmount = 0;
         if (identityType.equals(ComActIntegralUserTradeDO.identityType.jm)) {
-            integralUserDO.setIntegralResident(addIntegral(integralUserDO.getIntegralResident() + amount));
+            int integralResidentNow = addIntegral(integralResident + amount);
+            if (amount < 0) {
+                reduceAmount = integralResident - integralResidentNow;
+            }
+            integralUserDO.setIntegralResident(integralResidentNow);
             integralUserDO.setIntegralAvailableResident(addIntegral(integralUserDO.getIntegralAvailableResident() + amount));
         } else if (identityType.equals(ComActIntegralUserTradeDO.identityType.dy)) {
-            integralUserDO.setIntegralParty(addIntegral(integralUserDO.getIntegralParty() + amount));
+            int integralPartyNow = addIntegral(integralParty + amount);
+            if (amount < 0) {
+                reduceAmount = integralParty - integralPartyNow;
+            }
+            integralUserDO.setIntegralParty(integralPartyNow);
             integralUserDO.setIntegralAvailableParty(addIntegral(integralUserDO.getIntegralAvailableParty() + amount));
         } else if (identityType.equals(ComActIntegralUserTradeDO.identityType.zyz)) {
-            integralUserDO.setIntegralVolunteer(addIntegral(integralUserDO.getIntegralVolunteer() + amount));
+            int integralVolunteerNow = addIntegral(integralVolunteer + amount);
+            if (amount < 0) {
+                reduceAmount = integralVolunteer - integralVolunteerNow;
+            }
+            integralUserDO.setIntegralVolunteer(integralVolunteerNow);
             integralUserDO.setIntegralAvailableVolunteer(addIntegral(integralUserDO.getIntegralAvailableVolunteer() + amount));
         }
+        if (reduceAmount > 0) {
+            integralUserDO.setIntegralSum(addIntegral(integralSum + reduceAmount));
+            integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum + reduceAmount));
+        } else {
+            integralUserDO.setIntegralSum(addIntegral(integralSum + amount));
+            integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum + amount));
+        }
+        integralUserDO.setUpdateAt(nowDate);
+
         // 更新钱包
         comActIntegralUserService.updateById(integralUserDO);
         // 增加积分账户交易记录

--
Gitblit v1.7.1