package com.panzhihua.service_dangjian.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.partybuilding.NewFightIntegral; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.building.IntegratingTaskVO; import com.panzhihua.common.model.vos.community.building.NewFightConvenientMerchantVO; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_dangjian.dao.ComActIntegralUsersMapper; import com.panzhihua.service_dangjian.entity.ComActIntegralUser; import com.panzhihua.service_dangjian.entity.ComActIntegralUserTrade; import com.panzhihua.service_dangjian.entity.IntegratingTask; import com.panzhihua.service_dangjian.entity.NewFightConvenientMerchant; import com.panzhihua.service_dangjian.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; @Slf4j @Service public class ComActIntegralUsersServiceImpl extends ServiceImpl implements ComActIntegralUsersService { @Resource private ComActIntegralUsersService integralUsersService; @Resource private ComActIntegralUserTradeDaoService tradeDaoService; @Resource private ComActIntegralUserChangeDAOService changeDAOService; @Resource private NewFightIntegratingTaskService taskService; @Resource private NewFightConvenientMerchantService merchantService; @Override public R upIntegral(NewFightIntegral item) { // 需要给用户增加的积分数量 Integer amount = 0; // 查询用户积分账户 ComActIntegralUser integralUserDO = integralUsersService.getOne(new QueryWrapper().lambda() .eq(ComActIntegralUser::getUserId, item.getUserId()) .eq(ComActIntegralUser::getCommunityId, item.getCommunityId())); if (integralUserDO == null) { integralUserDO = new ComActIntegralUser(); integralUserDO.setCommunityId(Long.valueOf(item.getCommunityId())); integralUserDO.setUserId(Long.valueOf(item.getUserId())); integralUserDO.setCreateAt(new Date()); integralUserDO.setStatus(ComActIntegralUser.status.yes); integralUserDO.setIntegralSum(0); integralUserDO.setIntegralAvailableSum(0); integralUserDO.setIntegralFrozenSum(0); integralUserDO.setIntegralParty(0); integralUserDO.setIntegralAvailableParty(0); integralUserDO.setIntegralFrozenParty(0); integralUserDO.setIntegralVolunteer(0); integralUserDO.setIntegralAvailableVolunteer(0); integralUserDO.setIntegralFrozenVolunteer(0); integralUserDO.setIntegralResident(0); integralUserDO.setIntegralAvailableResident(0); integralUserDO.setIntegralFrozenResident(0); integralUsersService.save(integralUserDO); } if (integralUserDO.getStatus().equals(ComActIntegralUser.status.no)) { log.error("用户钱包已被禁用,记录积分失败,用户id:" + item.getUserId()); return R.fail("用户钱包已被禁用,记录积分失败,用户id:" + item.getUserId()); } Long integralId = integralUserDO.getId(); // 记录变动前钱包金额 Integer integralSum = integralUserDO.getIntegralSum(); Integer integralAvailableSum = integralUserDO.getIntegralAvailableSum(); Integer integralFrozenSum = integralUserDO.getIntegralFrozenSum(); Integer integralParty = integralUserDO.getIntegralParty(); Integer integralAvailableParty = integralUserDO.getIntegralAvailableParty(); Integer integralFrozenParty = integralUserDO.getIntegralFrozenParty(); Integer integralVolunteer = integralUserDO.getIntegralVolunteer(); Integer integralAvailableVolunteer = integralUserDO.getIntegralAvailableVolunteer(); Integer integralFrozenVolunteer = integralUserDO.getIntegralFrozenVolunteer(); Integer integralResident = integralUserDO.getIntegralResident(); Integer integralAvailableResident = integralUserDO.getIntegralAvailableResident(); Integer integralFrozenResident = integralUserDO.getIntegralFrozenResident(); //业务类型 9商城积分兑换 10商家线下积分兑换 11花城登录 12 查看问题清单 " // "13查看需求清单 14 查看报道服务活动 15查看微心愿 16 查看随手拍 17 每日签到 18 上传“随手拍”或“微心愿 switch (item.getType()) { case "9": //商城积分兑换 //积分总数加减 break; case "10": //商家线下积分兑换 增加 //商家积分增加 NewFightConvenientMerchant merchant=merchantService.selectMerchantById(item.getMerchantId()); int allMoney=0; if(!StringUtils.isEmpty(merchant.getBusinessCredit())) { allMoney=Integer.valueOf(merchant.getBusinessCredit()); } if (item.getAddOrReduce() == ComActIntegralUserTrade.changeType.add) { allMoney=allMoney+Integer.valueOf(item.getIntegralNum()); } else { //商家积分减少 allMoney=allMoney-Integer.valueOf(item.getIntegralNum()); } NewFightConvenientMerchantVO merchantVO=new NewFightConvenientMerchantVO(); merchantVO.setId(merchant.getId()); merchantVO.setBusinessCredit(allMoney+""); merchantService.editData(merchantVO); break; case "11": //花城登录 item.setRemark("花城登录"); IntegratingTask task=taskService.getDetails(item.getUserId(), item.getCommunityId(),item.getType()); if(task!=null && StringUtils.equals("2",task.getIsDraw()) ) { return R.ok(); } item.setAddOrReduce(1); item.setIntegralNum("2"); IntegratingTaskVO taskVO=new IntegratingTaskVO(); taskVO.setIsDraw("2"); taskVO.setId(item.getTaskId()); taskService.editData(taskVO); break; case "12": // 查看问题清单 item.setRemark("查看问题清单"); item.setAddOrReduce(1); item.setIntegralNum("1"); IntegratingTaskVO taskVO2=new IntegratingTaskVO(); taskVO2.setIsDraw("2"); taskVO2.setId(item.getTaskId()); taskService.editData(taskVO2); break; case "13": //13查看需求清单 item.setRemark("查看需求清单"); item.setAddOrReduce(1); item.setIntegralNum("1"); IntegratingTaskVO taskVO13=new IntegratingTaskVO(); taskVO13.setIsDraw("2"); taskVO13.setId(item.getTaskId()); taskService.editData(taskVO13); break; case "14": //查看报道服务活动 item.setRemark("查看需求清单"); item.setAddOrReduce(1); item.setIntegralNum("1"); IntegratingTaskVO taskVO14=new IntegratingTaskVO(); taskVO14.setIsDraw("2"); taskVO14.setId(item.getTaskId()); taskService.editData(taskVO14); break; case "15": //15查看微心愿 item.setRemark("查看微心愿"); item.setAddOrReduce(1); item.setIntegralNum("1"); IntegratingTaskVO taskVO15=new IntegratingTaskVO(); taskVO15.setIsDraw("2"); taskVO15.setId(item.getTaskId()); taskService.editData(taskVO15); break; case "16": //查看随手拍 item.setRemark("查看随手拍"); item.setAddOrReduce(1); item.setIntegralNum("1"); IntegratingTaskVO taskVO16=new IntegratingTaskVO(); taskVO16.setIsDraw("2"); taskVO16.setId(item.getTaskId()); taskService.editData(taskVO16); break; case "17": //每日签到 // IntegratingTask task2=taskService.getDetails(item.getUserId(), // item.getCommunityId(),item.getType()); // if(task2!=null && StringUtils.equals("2",task2.getIsDraw()) ) // { // return R.ok(); // } item.setRemark("每日签到"); item.setAddOrReduce(1); // IntegratingTaskVO taskVO2=new IntegratingTaskVO(); // taskVO2.setIsDraw("2"); // taskVO2.setId(item.getTaskId()); // taskService.editData(taskVO2); break; case "18": //上传“随手拍”或“微心愿 item.setRemark("上传“随手拍”或“微心愿"); item.setAddOrReduce(1); item.setIntegralNum("2"); break; } // 根据不同身份,计算钱包金额 // if (identityType.equals(ComActIntegralUserTrade.identityType.jm)) { // 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)) { // 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)) { // int integralVolunteerNow = addIntegral(integralVolunteer + amount); // if (amount < 0) { // reduceAmount = integralVolunteer - integralVolunteerNow; // } // integralUserDO.setIntegralVolunteer(integralVolunteerNow); // integralUserDO.setIntegralAvailableVolunteer(addIntegral(integralUserDO.getIntegralAvailableVolunteer() + amount)); // } //获取积分 if(!StringUtils.isEmpty(item.getIntegralNum())) { amount=Integer.valueOf(item.getIntegralNum()); } //积分总数加减 if (item.getAddOrReduce() == ComActIntegralUserTrade.changeType.add) { int integralResidentNow = addIntegral(integralResident + amount); integralUserDO.setIntegralResident(integralResidentNow); integralUserDO.setIntegralAvailableResident(addIntegral(integralUserDO.getIntegralAvailableResident() + amount)); } else { int integralResidentNow = addIntegral(integralResident - amount); integralUserDO.setIntegralResident(integralResidentNow); integralUserDO.setIntegralAvailableResident(addIntegral(integralUserDO.getIntegralAvailableResident() - amount)); } //积分总数加减 if (item.getAddOrReduce() == ComActIntegralUserTrade.changeType.reduce) { // integralUserDO.setIntegralSum(addIntegral(integralSum - amount)); integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum - amount)); } else { integralUserDO.setIntegralSum(addIntegral(integralSum + amount)); integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum + amount)); } integralUserDO.setUpdateAt(new Date()); // 更新钱包 integralUsersService.updateById(integralUserDO); // 增加积分账户交易记录 Long tradeId = tradeDaoService.addIntegralTradeRecord(Long.valueOf(item.getUserId()), integralId, Long.valueOf(item.getCommunityId()), Long.valueOf(item.getServiceId()), Integer.valueOf(item.getType()), Integer.valueOf(item.getIntegralNum()), item.getAddOrReduce(), item.getRemark(), Integer.valueOf(item.getIdentityType()), 2L); // 增加积分账户变更记录 changeDAOService.addIntegralUserChangeRecord(Long.valueOf(item.getUserId()), integralId, Long.valueOf(item.getCommunityId()), integralSum, integralUserDO.getIntegralSum(), integralAvailableSum, integralUserDO.getIntegralAvailableSum(), integralFrozenSum, integralUserDO.getIntegralFrozenSum(), integralParty, integralUserDO.getIntegralParty(), integralAvailableParty, integralUserDO.getIntegralAvailableParty(), integralFrozenParty, integralUserDO.getIntegralFrozenParty(), integralVolunteer, integralUserDO.getIntegralVolunteer(), integralAvailableVolunteer, integralUserDO.getIntegralAvailableVolunteer(), integralFrozenVolunteer, integralUserDO.getIntegralFrozenVolunteer(), integralResident, integralUserDO.getIntegralResident(), integralAvailableResident, integralUserDO.getIntegralAvailableResident(), integralFrozenResident, integralUserDO.getIntegralFrozenResident(), tradeId); return R.ok(); } private int addIntegral(int integral) { return integral > 0 ? integral : 0; } }