From 75206d4e4ecd2a7789a21362b85906463d3f2c3d Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期一, 27 十二月 2021 10:08:13 +0800 Subject: [PATCH] Merge branch 'master' into hemenkou_dev --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java | 146 +++++++++++++++++++++++++++++++++++------------- 1 files changed, 106 insertions(+), 40 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 afb6738..5eab07b 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 @@ -4,6 +4,7 @@ import javax.annotation.Resource; +import com.panzhihua.service_community.dao.ComBpActivityDAO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,6 +28,8 @@ import com.panzhihua.service_community.service.*; import lombok.extern.slf4j.Slf4j; + +import static java.util.Objects.nonNull; /** * @auther lyq @@ -56,6 +59,8 @@ private ComActDiscussOptionService comActDiscussOptionService; @Resource private ComActActivityService comActActivityService; + @Resource + private ComBpActivityDAO comBpActivityDAO; /** * 查询用户某个时间段交易数量 @@ -170,7 +175,7 @@ @Override @Transactional(rollbackFor = Exception.class) public R addIntegralTradeAdmin(AddComActIntegralUserDTO integralUserDTO) { - // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷) + // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参加居民活动 5.参加志愿者活动 6.参与党员活动 7.参与调查问卷 8.取消活动) Integer type = integralUserDTO.getIntegralType(); // 业务id Long serviceId = integralUserDTO.getServiceId(); @@ -187,24 +192,30 @@ // 当前时间 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; + + 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: @@ -247,27 +258,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: // 查询调查问卷 @@ -296,6 +312,32 @@ remark.append("【"); remark.append(questnaireDO.getTitle()); remark.append("】"); + break; + case 8: + changeType = ComActIntegralUserTradeDO.changeType.reduce; + 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 { +// ComPbActivityDO comPbActivityDO = comBpActivityDAO.selectById(serviceId); +// if(comPbActivityDO!=null){ +// amount=comPbActivityDO.getRewardIntegral(); +// identityType=2; +// } +// } break; default: break; @@ -344,25 +386,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(), @@ -376,6 +438,10 @@ return R.ok(); } + private int addIntegral(int integral) { + return integral > 0 ? integral : 0; + } + /** * 根据类型、用户id、社区id构建查询请求参数 * -- Gitblit v1.7.1