| | |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import static java.util.Objects.nonNull; |
| | | |
| | | /** |
| | | * @auther lyq |
| | | * @create 2021-07-28 16:03:18 |
| | |
| | | @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(); |
| | |
| | | // 当前时间 |
| | | 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: |
| | |
| | | } |
| | | 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: |
| | | // 查询调查问卷 |
| | |
| | | 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 { |
| | |
| | | // } |
| | | // } |
| | | 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; |
| | | } |
| | |
| | | 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); |
| | | // 增加积分账户交易记录 |