From 3c884ccd7b51edf3b36840bf99de5edaa41a38a7 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期三, 12 十月 2022 19:05:28 +0800 Subject: [PATCH] 三说会堂事件流程处理 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java | 153 +++++++++++++++++++++++++++----------------------- 1 files changed, 83 insertions(+), 70 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 7f588c4..eb4131b 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 @@ -84,7 +86,8 @@ * @param serviceId * 交易业务id * @param serviceType - * 交易业务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷) + * 交易业务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.社区活动-居民身份参与 " + + * "5.社区活动-党员身份参与 6.社区活动-志愿者身份参与 7.参与调查问卷 8.取消活动 9.参与单位党员活动) * @param amount * 交易积分数量 * @param changeType @@ -173,7 +176,8 @@ @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.取消活动 9.参与单位党员活动) Integer type = integralUserDTO.getIntegralType(); // 业务id Long serviceId = integralUserDTO.getServiceId(); @@ -190,24 +194,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 changeType = ComActIntegralUserTradeDO.changeType.add; + + if (!type.equals(8) && !type.equals(4) && !type.equals(5) && !type.equals(6) && !type.equals(9)) { + // 查询随手拍增加积分数量 + 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: @@ -249,29 +257,6 @@ } } break; - case 4: - identityType = 3; - remark.append("参与志愿者活动奖励积分"); - ComActActivityDO actActivityZYZDO = comActActivityService.getById(serviceId); - if (actActivityZYZDO != null) { - remark.append("【"); - remark.append(actActivityZYZDO.getActivityName()); - remark.append("】"); - } - break; - case 5: - remark.append("参与社区活动奖励积分"); - ComActActivityDO actActivityDO = comActActivityService.getById(serviceId); - if (actActivityDO != null) { - remark.append("【"); - remark.append(actActivityDO.getActivityName()); - remark.append("】"); - } - break; - case 6: - identityType = 2; - remark.append("参与党员活动奖励积分"); - break; case 7: // 查询调查问卷 ComActQuestnaireDO questnaireDO = comActQuestnaireDAO.selectById(serviceId); @@ -301,25 +286,19 @@ 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; - } - } - } -// else { -// ComPbActivityDO comPbActivityDO = comBpActivityDAO.selectById(serviceId); -// if(comPbActivityDO!=null){ -// amount=comPbActivityDO.getRewardIntegral(); -// identityType=2; -// } -// } + changeType = ComActIntegralUserTradeDO.changeType.reduce; + amount = -integralUserDTO.getIntegral(); + remark.append(integralUserDTO.getRemark()); + identityType = integralUserDTO.getSignIdentity(); + break; + case 4: + case 5: + case 6: + case 9: + identityType = integralUserDTO.getSignIdentity(); + remark.append(integralUserDTO.getRemark()); + amount = integralUserDTO.getIntegral(); + break; default: break; } @@ -367,25 +346,45 @@ Integer integralAvailableResident = integralUserDO.getIntegralAvailableResident(); Integer integralFrozenResident = integralUserDO.getIntegralFrozenResident(); - integralUserDO.setIntegralSum(integralUserDO.getIntegralSum() + amount); - integralUserDO.setIntegralAvailableSum(integralUserDO.getIntegralAvailableSum() + amount); - integralUserDO.setUpdateAt(nowDate); // 根据不同身份,计算钱包金额 + int reduceAmount = 0; if (identityType.equals(ComActIntegralUserTradeDO.identityType.jm)) { - integralUserDO.setIntegralResident(integralUserDO.getIntegralResident() + amount); - integralUserDO.setIntegralAvailableResident(integralUserDO.getIntegralAvailableResident() + 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(integralUserDO.getIntegralParty() + amount); - integralUserDO.setIntegralAvailableParty(integralUserDO.getIntegralAvailableParty() + 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(integralUserDO.getIntegralVolunteer() + amount); - integralUserDO.setIntegralAvailableVolunteer(integralUserDO.getIntegralAvailableVolunteer() + amount); + int integralVolunteerNow = addIntegral(integralVolunteer + amount); + if (amount < 0) { + reduceAmount = integralVolunteer - integralVolunteerNow; + } + integralUserDO.setIntegralVolunteer(integralVolunteerNow); + integralUserDO.setIntegralAvailableVolunteer(addIntegral(integralUserDO.getIntegralAvailableVolunteer() + amount)); } + if (changeType == ComActIntegralUserTradeDO.changeType.reduce) { + amount = reduceAmount; + 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); // 增加积分账户交易记录 Long tradeId = this.addIntegralTradeRecord(userId, integralId, communityId, serviceId, type, amount, - ComActIntegralUserTradeDO.changeType.add, remark.toString(), identityType, 2L); + changeType, remark.toString(), identityType, 2L); // 增加积分账户变更记录 comActIntegralUserChangeService.addIntegralUserChangeRecord(userId, integralId, communityId, integralSum, integralUserDO.getIntegralSum(), integralAvailableSum, integralUserDO.getIntegralAvailableSum(), @@ -400,6 +399,20 @@ } /** + * 获取积分详情 + * @param id + * @return + */ + @Override + public R getUserIntegralDetail(Long id) { + return R.ok(this.baseMapper.getUserIntegralDetail(id)); + } + + private int addIntegral(int integral) { + return integral > 0 ? integral : 0; + } + + /** * 根据类型、用户id、社区id构建查询请求参数 * * @param type -- Gitblit v1.7.1