执行钱包缺失添加任务

This commit is contained in:
liux 2025-11-19 10:16:47 +08:00
parent 71efdfb07c
commit c7ac9932cc
5 changed files with 127 additions and 0 deletions

View File

@ -0,0 +1,106 @@
package com.bonus.canteen.core.account.task;
import com.bonus.canteen.core.account.domain.AccWalletInfo;
import com.bonus.canteen.core.account.domain.AccountInfo;
import com.bonus.canteen.core.account.mapper.AccInfoMapper;
import com.bonus.canteen.core.account.mapper.AccWalletInfoMapper;
import com.bonus.canteen.core.account.service.IAccInfoService;
import com.bonus.canteen.core.android.service.UserService;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.system.api.domain.SysUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Component
public class AccInfoTask {
private static final Logger logger = LoggerFactory.getLogger(AccInfoTask.class);
@Resource
private UserService userService;
@Resource
private AccInfoMapper accInfoMapper;
@Resource
private AccWalletInfoMapper accWalletInfoMapper;
//@XxlJob("cookRecipeHandler")
// @Scheduled(fixedDelay = 60*1000*60*24) // 每天时执行一次
@SysLog(title = "每日自动匹配钱包", businessType = OperaType.INSERT, logType = 1,module = "钱包任务->每日自动匹配钱包")
public void accInfoHandler() {
//查询人员列表
List<SysUser> userList = userService.getUserList();
Set<Long> idSet = userList.stream().map(SysUser::getUserId).collect(Collectors.toSet());
//查询账户资料表信息
AccountInfo accountInfo = new AccountInfo();
accountInfo.setDelFlag("0");
List<AccountInfo> accInfoList = accInfoMapper.selectAccInfoList(accountInfo);
Set<Long> accIdSet = accInfoList.stream().map(AccountInfo::getUserId).collect(Collectors.toSet());
//钱包详情信息
AccWalletInfo accWalletInfo = new AccWalletInfo();
accWalletInfo.setDelFlag("0");
List<AccWalletInfo> accWalletInfoList = accWalletInfoMapper.selectAccWalletInfoList(accWalletInfo);
Set<Long> accWalletSet = accWalletInfoList.stream().map(AccWalletInfo::getUserId).collect(Collectors.toSet());
if(idSet == null || idSet.size() ==0){
logger.info("账户资料定时任务:无用户信息");
return;
}
// idSet中有而accIdSet中没有的元素
List<Long> difference1 = idSet.stream()
.filter(id -> !accIdSet.contains(id))
.collect(Collectors.toList());
//新增
if(difference1 !=null && difference1.size() >0){
for(Long userId : difference1){
//新增账户资料
AccountInfo newAccInfo = new AccountInfo();
newAccInfo.setUserId(userId);
newAccInfo.setAccountStatus(0);
accInfoMapper.insertAccInfo(newAccInfo);
//新增钱包详情信息
AccWalletInfo newAccWalletInfo = new AccWalletInfo();
newAccWalletInfo.setUserId(userId);
newAccWalletInfo.setAccountId(newAccInfo.getAccountId());
newAccWalletInfo.setCreateBy("admin");
newAccWalletInfo.setCreateTime(new java.util.Date());
for(int i=1;i<3;i++){
newAccWalletInfo.setWalletType(i);
accWalletInfoMapper.insertAccWalletInfo(newAccWalletInfo);
}
}
}
// accIdSet中有而idSet中没有的元素
List<Long> difference2 = accIdSet.stream()
.filter(accId -> !idSet.contains(accId))
.collect(Collectors.toList());
if(difference2 !=null && difference2.size() >0){
for(Long userId : difference2){
//删除账户资料
accInfoMapper.deleteAccInfoByUserId(userId);
//删除钱包详情信息
accWalletInfoMapper.deleteAccWalletInfoByUserId(userId);
}
}
System.err.println("idList中有而accIdList中没有: " + difference1);
System.err.println("accIdList中有而idList中没有: " + difference2);
}
}

View File

@ -2,6 +2,7 @@ package com.bonus.canteen.core.android.mapper;
import com.bonus.canteen.core.android.dto.AppDTO;
import com.bonus.canteen.core.android.vo.UserInfoVo;
import com.bonus.system.api.domain.SysUser;
import java.util.List;
@ -24,4 +25,6 @@ public interface UserMapper {
List<UserInfoVo> getMoneyList();
List<UserInfoVo> getKitchenUserInfo(AppDTO dto);
List<SysUser> getUserList();
}

View File

@ -2,6 +2,9 @@ package com.bonus.canteen.core.android.service;
import com.bonus.canteen.core.android.dto.AppDTO;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.domain.SysUser;
import java.util.List;
/**
* @author 19814
@ -16,4 +19,6 @@ public interface UserService {
AjaxResult getUserInfo(AppDTO dto);
AjaxResult getKitchenUserInfo(AppDTO dto);
List<SysUser> getUserList();
}

View File

@ -6,6 +6,7 @@ import com.bonus.canteen.core.android.service.UserService;
import com.bonus.canteen.core.android.vo.UserInfoVo;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.houqin.utils.SM4EncryptUtils;
import com.bonus.system.api.domain.SysUser;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -55,4 +56,8 @@ public class UserServiceImpl implements UserService {
return AjaxResult.success(list);
}
@Override
public List<SysUser> getUserList() {
return mapper.getUserList();
}
}

View File

@ -59,4 +59,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</where>
</select>
<select id="getUserList" resultType="com.bonus.system.api.domain.SysUser">
select user_id as userId,
user_code as userCode,
user_name as userName,
nick_name as nickName
from sys_user where del_flag = 0 and `status` = 0
</select>
</mapper>