diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/task/AccInfoTask.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/task/AccInfoTask.java new file mode 100644 index 0000000..939614f --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/task/AccInfoTask.java @@ -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 userList = userService.getUserList(); + Set idSet = userList.stream().map(SysUser::getUserId).collect(Collectors.toSet()); + + //查询账户资料表信息 + AccountInfo accountInfo = new AccountInfo(); + accountInfo.setDelFlag("0"); + List accInfoList = accInfoMapper.selectAccInfoList(accountInfo); + Set accIdSet = accInfoList.stream().map(AccountInfo::getUserId).collect(Collectors.toSet()); + + //钱包详情信息 + AccWalletInfo accWalletInfo = new AccWalletInfo(); + accWalletInfo.setDelFlag("0"); + List accWalletInfoList = accWalletInfoMapper.selectAccWalletInfoList(accWalletInfo); + Set accWalletSet = accWalletInfoList.stream().map(AccWalletInfo::getUserId).collect(Collectors.toSet()); + + if(idSet == null || idSet.size() ==0){ + logger.info("账户资料定时任务:无用户信息"); + return; + } + + // idSet中有而accIdSet中没有的元素 + List 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 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); + + + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/mapper/UserMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/mapper/UserMapper.java index c14b1a8..4974ab6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/mapper/UserMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/mapper/UserMapper.java @@ -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 getMoneyList(); List getKitchenUserInfo(AppDTO dto); + + List getUserList(); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/UserService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/UserService.java index db8af22..3072345 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/UserService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/UserService.java @@ -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 getUserList(); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/impl/UserServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/impl/UserServiceImpl.java index b262fa6..048bae0 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/impl/UserServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/android/service/impl/UserServiceImpl.java @@ -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 getUserList() { + return mapper.getUserList(); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml index d4e622b..9d8dd6d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/android/UserMapper.xml @@ -59,4 +59,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +