puhanshu
2021-12-23 40ff51856a11151ab3f0154a1ae3530e00dafff7
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,6 +196,9 @@
        // 当前时间
        Date nowDate = new Date();
        Integer isVolunteer = integralUserDTO.getIsVolunteer();
        if (!type.equals(8)) {
        // 查询随手拍增加积分数量
        ComActIntegralRuleDO integralRuleDO =
            comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda()
@@ -212,6 +217,7 @@
            }
        }
        amount = integralRuleDO.getAmount();
        }
        switch (type) {
            case 1:
@@ -254,27 +260,32 @@
                }
                break;
            case 4:
                if (nonNull(isVolunteer) && isVolunteer.equals(1)) {
                identityType = 3;
                remark.append("参与志愿者活动奖励积分");
                ComActActivityDO actActivityZYZDO = comActActivityService.getById(serviceId);
                if (actActivityZYZDO != null) {
                    remark.append("【");
                    remark.append(actActivityZYZDO.getActivityName());
                    remark.append("】");
                } 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("】");
                    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){
                    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);
        // 增加积分账户交易记录