package com.peanut.modules.job.task; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.modules.common.entity.JfTransactionDetails; import com.peanut.modules.common.entity.MyUserEntity; import com.peanut.modules.common.entity.UserContribution; import com.peanut.modules.common.entity.UserContributionExchange; import com.peanut.modules.common.service.JfTransactionDetailsService; import com.peanut.modules.common.service.MyUserService; import com.peanut.modules.common.service.UserContributionExchangeService; import com.peanut.modules.common.service.UserContributionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.List; @Component("userContributionTask") public class UserContributionTask implements ITask{ @Autowired private UserContributionService userContributionService; @Autowired private UserContributionExchangeService userContributionExchangeService; @Autowired private MyUserService userService; @Autowired private JfTransactionDetailsService jfTransactionDetailsService; @Override public void run(String params) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); wrapper.select(UserContribution::getUserId); wrapper.select("SUM(score) as score "); wrapper.eq(UserContribution::getConversionFlag,"0"); wrapper.groupBy(UserContribution::getUserId); List list = userContributionService.list(wrapper); for (UserContribution userContribution:list){ UserContributionExchange exchange = userContributionExchangeService.getOne( new LambdaQueryWrapper() .eq(UserContributionExchange::getUserId,userContribution.getUserId())); if (exchange!=null) { userContribution.setScore(userContribution.getScore().add(exchange.getSurplus())); }else { exchange = new UserContributionExchange(); exchange.setUserId(userContribution.getUserId()); } int zhengshu = userContribution.getScore().intValue(); if(zhengshu>1){ MyUserEntity user = userService.getById(userContribution.getUserId()); if (user != null) { user.setJf(user.getJf().add(new BigDecimal(100*zhengshu))); userService.updateById(user); JfTransactionDetails jfDetail = new JfTransactionDetails(); jfDetail.setUserId(user.getId()); jfDetail.setActType(0); jfDetail.setChangeAmount(new BigDecimal(100*zhengshu)); jfDetail.setUserBalance(user.getJf()); jfDetail.setRemark("湖粉兑换"); jfTransactionDetailsService.save(jfDetail); } } BigDecimal xiaoshu = userContribution.getScore().remainder(BigDecimal.ONE); exchange.setSurplus(xiaoshu); userContributionExchangeService.saveOrUpdate(exchange); userContributionService.update(new LambdaUpdateWrapper() .eq(UserContribution::getConversionFlag,0) .set(UserContribution::getConversionFlag,1)); } } }