java8 stream记录
直接上代码
forEach() 方法,for循环
stream().filter().collect(Collectors.toList()) 过滤出符合条件的元素,转为对应list
stream().map(WechatUser::getUin).collect(Collectors.toList()) 取uin转为list
user -> Math.abs(Period.between(localDate, user.getLastLoginTime().toLocalDate()).getDays()) > 89) 、 WechatUser::getUin匿名表达式,函数式编程
/** * 删除已过期90天的用户信息 * 删除依据:所有订单失效后,用户的所有在线微信强制下线,风控模块的历史信息保留15天、90天内管理员用户未续费,未登录系统,将清理该账户; * 定时任务 * //TODO 执行`更新到期时间定时任务 - updateCompanyLimitWxAndEndDate()` 后执行 * @return */ @Transactional public Result expDeleteUserData(){ //查询过期公司用户 List<Company> companies = companyMapper.expDateGt90DaysCompany(); List<User> companyUsers = new ArrayList<>(); companies.forEach(company -> companyUsers.add(userMapper.selectCompanyUserByCompanyId(company.getCompanyId()))); //管理员登录时间过滤,添加公司下所有用户 LocalDate localDate = LocalDate.now(); List<Integer> userIds = new ArrayList<>(); List<User> users = companyUsers.stream().filter(user -> Math.abs(Period.between(localDate, user.getLastLoginTime().toLocalDate()).getDays()) > 89).collect(Collectors.toList()); users.forEach(user -> userIds.addAll(userMapper.selectUserIdsByCompanyId(user.getCompanyId()))); //批量软删除用户 userMapper.updateDeletedByIds(userIds); return new Result().success(); }
/** * 清除已过期15天的用户风控数据 * 删除依据:所有订单失效后,用户的所有在线微信强制下线,风控模块的历史信息保留15天、90天内管理员用户未续费,未登录系统,将清理该账户; * 定时任务 * //TODO 执行`更新到期时间定时任务 - updateCompanyLimitWxAndEndDate()` 后执行 * @return */ @Transactional public Result expDeleteWxHistoryData(){ //查询过期15天的公司用户 List<Company> companies = companyMapper.expDateGt15DaysCompany(); List<User> companyUsers = new ArrayList<>(); companies.forEach(company -> companyUsers.add(userMapper.selectCompanyUserByCompanyId(company.getCompanyId()))); LocalDate localDate = LocalDate.now(); //所有过期用户 ArrayList<Integer> userIds = new ArrayList<>(); companyUsers.forEach(user -> userIds.addAll(userMapper.selectUserIdsByCompanyId(user.getCompanyId()))); //TODO 此处执行清除风控数据 //获取所有用户下的微信 List<WechatUser> wechatUsers = wechatUserMapper.getWeChatUserAccountByUserIds(userIds); List<Integer> uins = wechatUsers.stream().map(WechatUser::getUin).collect(Collectors.toList()); //删除风控数据 //wechatMessageMapper.deleteByUins(uins); return new Result().success(); }
posted on 2019-09-17 15:15 GhostSugar 阅读(259) 评论(0) 编辑 收藏 举报