From 7ef4892f9f24f941aca37e6b3991b808a0aca619 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期五, 08 九月 2023 11:16:35 +0800 Subject: [PATCH] 优化 --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 450 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 401 insertions(+), 49 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java index 60beaa5..b2daa9f 100644 --- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java @@ -1,25 +1,36 @@ package com.ycl.service.user.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.druid.sql.PagerUtils; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.bo.AdminUserDetails; import com.ycl.dto.UmsAdminParam; +import com.ycl.dto.user.UmsUserDto1; import com.ycl.dto.UpdateAdminPasswordParam; +import com.ycl.entity.depart.UmsDepart; import com.ycl.entity.user.*; +import com.ycl.exception.ApiException; import com.ycl.exception.Asserts; -import com.ycl.mapper.user.UmsAdminLoginLogMapper; -import com.ycl.mapper.user.UmsAdminMapper; -import com.ycl.mapper.user.UmsResourceMapper; -import com.ycl.mapper.user.UmsRoleMapper; +import com.ycl.mapper.user.*; +import com.ycl.service.depart.UmsDepartService; +import com.ycl.service.redis.RedisService; import com.ycl.service.user.UmsAdminCacheService; import com.ycl.service.user.UmsAdminRoleRelationService; import com.ycl.service.user.UmsAdminService; import com.ycl.utils.JwtTokenUtil; import com.ycl.utils.SpringUtil; +import com.ycl.utils.common.LiveTimeMillisecond; +import com.ycl.utils.common.MacUtils; +import com.ycl.utils.redis.RedisKey; +import com.ycl.vo.user.UserVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -31,15 +42,18 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; +import java.util.function.Consumer; +import java.util.stream.Collectors; /** * 鍚庡彴绠$悊鍛樼鐞哠ervice瀹炵幇绫� @@ -60,13 +74,26 @@ private UmsRoleMapper umsRoleMapper; @Resource private UmsResourceMapper umsResourceMapper; + @Resource + private UmsDepartService departService; + @Resource + private RedisService redisService; + @Resource + private UmsDepartManageMapper umsDepartManageMapper; + @Resource + UmsRoleMenuRelationMapper umsRoleMenuRelationMapper; + @Resource + AdminMenuRelationMapper adminMenuRelationMapper; + @Resource + UmsMenuMapper umsMenuMapper; @Override public UmsAdmin getAdminByUsername(String username) { - UmsAdmin admin = getCacheService().getAdmin(username); - if(admin!=null) return admin; + // UmsAdmin admin = getCacheService().getAdmin(username); + // if (admin != null) return admin; + UmsAdmin admin = null; QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); - wrapper.lambda().eq(UmsAdmin::getUsername,username); + wrapper.lambda().eq(UmsAdmin::getUsername, username); List<UmsAdmin> adminList = list(wrapper); if (adminList != null && adminList.size() > 0) { admin = adminList.get(0); @@ -77,23 +104,154 @@ } @Override + @Transactional(rollbackFor = Exception.class) public UmsAdmin register(UmsAdminParam umsAdminParam) { UmsAdmin umsAdmin = new UmsAdmin(); BeanUtils.copyProperties(umsAdminParam, umsAdmin); umsAdmin.setCreateTime(new Date()); umsAdmin.setStatus(1); +// umsAdmin.setMacAddress(MacUtils.getMac()); //鏌ヨ鏄惁鏈夌浉鍚岀敤鎴峰悕鐨勭敤鎴� QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); - wrapper.lambda().eq(UmsAdmin::getUsername,umsAdmin.getUsername()); + wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername()); + if (umsAdmin.getId() != null) { + wrapper.lambda().ne(UmsAdmin::getId, umsAdmin.getId()); + } List<UmsAdmin> umsAdminList = list(wrapper); if (umsAdminList.size() > 0) { return null; } //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣� String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); + + if (umsAdmin.getId() == null && !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { + Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸"); + } + if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) { + Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�"); + } + umsAdmin.setPassword(encodePassword); + if (umsAdminParam.getDays() != null) { + Date date = new Date(); + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + // 鎶婃棩鏈熷線鍚庡鍔犱竴澶�,鏁存暟 寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔� + calendar.add(Calendar.DATE, umsAdminParam.getDays()); + // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉 + date = calendar.getTime(); + umsAdmin.setExpirationDate(date); + } else { + umsAdmin.setExpirationDate(new Date(2090,1,1)); + } + if (umsAdmin.getId() != null) { + baseMapper.updateById(umsAdmin); + } else { + baseMapper.insert(umsAdmin); + } + + LambdaQueryWrapper<UmsAdminRoleRelation> deleteWrapper = new QueryWrapper<UmsAdminRoleRelation>().lambda() + .eq(UmsAdminRoleRelation::getAdminId, umsAdmin.getId()); + + umsAdminRoleRelationService.remove(deleteWrapper); + //娣诲姞瑙掕壊鎺堟潈 + List<Long> ids = umsAdminParam.getRoleIds(); + if (!ids.isEmpty()) { + List<UmsAdminRoleRelation> roleIds = new ArrayList<>(); + for (Long id : ids) { + UmsAdminRoleRelation urr = new UmsAdminRoleRelation(); + urr.setAdminId(umsAdmin.getId()); + urr.setRoleId(id); + roleIds.add(urr); + } + umsAdminRoleRelationService.saveBatch(roleIds); + } + + umsDepartManageMapper.deletedByDepartId(umsAdmin.getId()); + + //娣诲姞閮ㄩ棬 + UmsDepartManage departManage = new UmsDepartManage(); + departManage.setUserId(umsAdmin.getId()); + departManage.setDepartId(umsAdminParam.getDepartmentId()); + departManage.setCreateTime(new Date()); + departManage.setUpdateTime(new Date()); + umsDepartManageMapper.insert(departManage); + + // baseMapper.updateById(umsAdmin); + return umsAdmin; + } + + @Override + public void importExcl(UmsAdminParam umsAdminParam) { + UmsAdmin umsAdmin = new UmsAdmin(); + BeanUtils.copyProperties(umsAdminParam, umsAdmin); + umsAdmin.setCreateTime(new Date()); + umsAdmin.setStatus(1); + umsAdmin.setMacAddress(MacUtils.getMac()); + //鏌ヨ鏄惁鏈夌浉鍚岀敤鎴峰悕鐨勭敤鎴� + QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername()); + List<UmsAdmin> umsAdminList = list(wrapper); + if (umsAdminList.size() > 0) { + throw new RuntimeException("鐢ㄦ埛宸插瓨鍦�"); + } + //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣� + String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); + + if (!umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { + Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸"); + } + if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) { + Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�"); + } umsAdmin.setPassword(encodePassword); baseMapper.insert(umsAdmin); - return umsAdmin; + + //娣诲姞瑙掕壊鎺堟潈 + List<Long> ids = umsAdminParam.getRoleIds(); + if (!ids.isEmpty()) { + List<UmsAdminRoleRelation> roleIds = new ArrayList<>(); + for (Long id : ids) { + UmsAdminRoleRelation urr = new UmsAdminRoleRelation(); + urr.setAdminId(umsAdmin.getId()); + urr.setRoleId(id); + roleIds.add(urr); + } + umsAdminRoleRelationService.saveBatch(roleIds); + } + //缁戝畾鑿滃崟浜庣敤鎴� + if (!ids.isEmpty()) { + ArrayList<UmsRoleMenuRelation> umsRoleMenuRelations = new ArrayList<>(); + for (Long id : ids) { + umsRoleMenuRelations.addAll(umsRoleMenuRelationMapper + .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>() + .eq(UmsRoleMenuRelation::getRoleId, id))); + } + umsRoleMenuRelations + .stream() + .map(item -> item.getMenuId()) + .collect(Collectors.toList()) + .stream() + .distinct() + .collect(Collectors.toList()) + .stream() + .forEach(item -> { + AdminMenuRelation adminMenuRelation = new AdminMenuRelation(); + adminMenuRelation.setAdminId(umsAdmin.getId()); + adminMenuRelation.setMenuId(item); + adminMenuRelationMapper.insert(adminMenuRelation); + }); + } + //瀵圭敤鎴峰悕绯荤粺榛樿娣诲姞 + //umsAdmin.setNickName(RandomUtils.getUserId(umsAdmin.getId())); + //娣诲姞閮ㄩ棬 + UmsDepartManage departManage = new UmsDepartManage(); + departManage.setUserId(umsAdmin.getId()); + departManage.setDepartId(umsAdminParam.getDepartmentId()); + departManage.setCreateTime(new Date()); + departManage.setUpdateTime(new Date()); + umsDepartManageMapper.insert(departManage); + + baseMapper.updateById(umsAdmin); } @Override @@ -101,18 +259,59 @@ String token = null; //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫� try { - UserDetails userDetails = loadUserByUsername(username); - if(!passwordEncoder.matches(password,userDetails.getPassword())){ + AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); + + UmsAdmin admin = userDetails.getUmsAdmin(); + LocalDateTime nowTime = LocalDateTime.now(); + nowTime = nowTime.plusMinutes(-15); + if (admin.getPasswordErrorNum() != null && admin.getPasswordErrorNum() >= 5 + && admin.getPasswordErrorLastTime().isAfter(nowTime)) { + admin.setPasswordErrorLastTime(LocalDateTime.now()); + updateById(admin); + Asserts.fail("鐧诲綍澶辫触瓒呰繃5娆★紝姝よ处鍙疯閿佸畾锛岃15鍒嗛挓鍚庡啀璇曘��"); + } + if (!passwordEncoder.matches(password, userDetails.getPassword())) { + if (admin.getPasswordErrorNum() == null) { + admin.setPasswordErrorNum(1); + } else { + admin.setPasswordErrorNum(admin.getPasswordErrorNum() + 1); + } + admin.setPasswordErrorLastTime(LocalDateTime.now()); + updateById(admin); Asserts.fail("瀵嗙爜涓嶆纭�"); } - if(!userDetails.isEnabled()){ + if (!userDetails.isEnabled()) { Asserts.fail("甯愬彿宸茶绂佺敤"); } + admin.setPasswordErrorNum(0); + updateById(admin); + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); - token = jwtTokenUtil.generateToken(userDetails); + //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚� + token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername()); + redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time); // updateLoginTimeByUsername(username); - insertLoginLog(username); + //insertLoginLog(username); + } catch (AuthenticationException e) { + LOGGER.warn("鐧诲綍寮傚父:{}", e.getMessage()); + } + return token; + } + + @Override + public String getOAuthToken(String username) { + String token = null; + //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫� + try { + AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authentication); + //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚� + token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername()); + redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time); +// updateLoginTimeByUsername(username); + //insertLoginLog(username); } catch (AuthenticationException e) { LOGGER.warn("鐧诲綍寮傚父:{}", e.getMessage()); } @@ -121,11 +320,12 @@ /** * 娣诲姞鐧诲綍璁板綍 + * * @param username 鐢ㄦ埛鍚� */ private void insertLoginLog(String username) { UmsAdmin admin = getAdminByUsername(username); - if(admin==null) return; + if (admin == null) return; UmsAdminLoginLog loginLog = new UmsAdminLoginLog(); loginLog.setAdminId(admin.getId()); loginLog.setCreateTime(new Date()); @@ -142,8 +342,8 @@ UmsAdmin record = new UmsAdmin(); record.setLoginTime(new Date()); QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); - wrapper.lambda().eq(UmsAdmin::getUsername,username); - update(record,wrapper); + wrapper.lambda().eq(UmsAdmin::getUsername, username); + update(record, wrapper); } @Override @@ -153,28 +353,29 @@ @Override public Page<UmsAdmin> list(String keyword, Integer pageSize, Integer pageNum) { - Page<UmsAdmin> page = new Page<>(pageNum,pageSize); + Page<UmsAdmin> page = new Page<>(pageNum, pageSize); QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); LambdaQueryWrapper<UmsAdmin> lambda = wrapper.lambda(); - if(StrUtil.isNotEmpty(keyword)){ - lambda.like(UmsAdmin::getUsername,keyword); - lambda.or().like(UmsAdmin::getNickName,keyword); + if (StrUtil.isNotEmpty(keyword)) { + lambda.like(UmsAdmin::getUsername, keyword); + lambda.or().like(UmsAdmin::getNickName, keyword); } - return page(page,wrapper); + return page(page, wrapper); } @Override + @Transactional(rollbackFor = Exception.class) public boolean update(Long id, UmsAdmin admin) { admin.setId(id); UmsAdmin rawAdmin = getById(id); - if(rawAdmin.getPassword().equals(admin.getPassword())){ + if (rawAdmin.getPassword().equals(admin.getPassword())) { //涓庡師鍔犲瘑瀵嗙爜鐩稿悓鐨勪笉闇�瑕佷慨鏀� admin.setPassword(null); - }else{ + } else { //涓庡師鍔犲瘑瀵嗙爜涓嶅悓鐨勯渶瑕佸姞瀵嗕慨鏀� - if(StrUtil.isEmpty(admin.getPassword())){ + if (StrUtil.isEmpty(admin.getPassword())) { admin.setPassword(null); - }else{ + } else { admin.setPassword(passwordEncoder.encode(admin.getPassword())); } } @@ -196,7 +397,7 @@ int count = roleIds == null ? 0 : roleIds.size(); //鍏堝垹闄ゅ師鏉ョ殑鍏崇郴 QueryWrapper<UmsAdminRoleRelation> wrapper = new QueryWrapper<>(); - wrapper.lambda().eq(UmsAdminRoleRelation::getAdminId,adminId); + wrapper.lambda().eq(UmsAdminRoleRelation::getAdminId, adminId); umsAdminRoleRelationService.remove(wrapper); //寤虹珛鏂板叧绯� if (!CollectionUtils.isEmpty(roleIds)) { @@ -219,33 +420,35 @@ } @Override - public List<UmsResource> getResourceList(Long adminId) { - List<UmsResource> resourceList = getCacheService().getResourceList(adminId); - if(CollUtil.isNotEmpty(resourceList)){ - return resourceList; + public List<UmsMenu> getResourceList(Long adminId) { + List<UmsMenu> umsMenuList = getCacheService().getResourceList(adminId); + if (CollUtil.isNotEmpty(umsMenuList)) { + return umsMenuList; } - resourceList = umsResourceMapper.getResourceList(adminId); - if(CollUtil.isNotEmpty(resourceList)){ - getCacheService().setResourceList(adminId,resourceList); - } - return resourceList; + umsMenuList = umsMenuMapper.getMenuList(adminId); + getCacheService().setResourceList(adminId, umsMenuList); + return umsMenuList; } @Override public int updatePassword(UpdateAdminPasswordParam param) { - if(StrUtil.isEmpty(param.getUsername()) - ||StrUtil.isEmpty(param.getOldPassword()) - ||StrUtil.isEmpty(param.getNewPassword())){ + if (StrUtil.isNotEmpty(param.getUsername()) + && StrUtil.isNotEmpty(param.getOldPassword()) + && StrUtil.isNotEmpty(param.getNewPassword()) + && !param.getNewPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { return -1; } + if (param.getUsername().equals(param.getNewPassword())) { + return -4; + } QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); - wrapper.lambda().eq(UmsAdmin::getUsername,param.getUsername()); + wrapper.lambda().eq(UmsAdmin::getUsername, param.getUsername()); List<UmsAdmin> adminList = list(wrapper); - if(CollUtil.isEmpty(adminList)){ + if (CollUtil.isEmpty(adminList)) { return -2; } UmsAdmin umsAdmin = adminList.get(0); - if(!passwordEncoder.matches(param.getOldPassword(),umsAdmin.getPassword())){ + if (!passwordEncoder.matches(param.getOldPassword(), umsAdmin.getPassword())) { return -3; } umsAdmin.setPassword(passwordEncoder.encode(param.getNewPassword())); @@ -255,18 +458,167 @@ } @Override - public UserDetails loadUserByUsername(String username){ + public UserDetails loadUserByUsername(String username) { //鑾峰彇鐢ㄦ埛淇℃伅 UmsAdmin admin = getAdminByUsername(username); if (admin != null) { - List<UmsResource> resourceList = getResourceList(admin.getId()); - return new AdminUserDetails(admin,resourceList); + if (admin.getExpirationDate() != null) { + if (!admin.getExpirationDate().after(new Date())) { + Asserts.fail("璐﹀彿宸茶繃鏈熻鑱旂郴绠$悊鍛�"); + } + } + List<UmsMenu> resourceList = getResourceList(admin.getId()); + return new AdminUserDetails(admin, resourceList); } - throw new UsernameNotFoundException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); + throw new UsernameNotFoundException("鐢ㄦ埛涓嶅瓨鍦�"); } @Override public UmsAdminCacheService getCacheService() { return SpringUtil.getBean(UmsAdminCacheService.class); } + + @Override + public Page<UmsAdmin> pageUser(UserVO.PageUserVO pageUserVO) { + int pageSize = pageUserVO.getPageSize(); + int current = pageUserVO.getCurrent(); + Page<UmsAdmin> page = new Page<>(current, pageSize); + /* LambdaQueryWrapper<UmsAdmin> queryWrapper = new LambdaQueryWrapper<>(); + + if (StringUtils.isNotBlank(pageUserVO.getKeyword())) { + queryWrapper.like(UmsAdmin::getUsername, pageUserVO.getKeyword()) + .or().like(UmsAdmin::getNickName, pageUserVO.getKeyword()) + .or().like(UmsAdmin::getMobile, pageUserVO.getKeyword()); + } + if (StringUtils.isNotBlank(pageUserVO.getJobTitle())) { + queryWrapper.eq(UmsAdmin::getJobTitle, pageUserVO.getJobTitle()); + } + if (PojoUtils.Vo.isUsefulSearchParam(pageUserVO.getUserType())) { + queryWrapper.eq(UmsAdmin::getUserType, pageUserVO.getUserType()); + }*/ + UmsAdmin umsAdmin = new UmsAdmin(); + if (pageUserVO.getUserType() != null) { + umsAdmin.setUserType(pageUserVO.getUserType()); + } + if (pageUserVO.getKeyword() != null && !("".equals(pageUserVO.getKeyword()))) { + umsAdmin.setKeyword(pageUserVO.getKeyword()); + } + if (pageUserVO.getJobTitle() != null && !("".equals(pageUserVO.getJobTitle()))) { + umsAdmin.setJobTitle(pageUserVO.getJobTitle()); + } + PageUtil.setFirstPageNo(1); + int offset = PageUtil.getStart(current, pageSize); + List<UmsAdmin> list = baseMapper.selectCondList(umsAdmin, offset, pageSize); + Long total = baseMapper.selectCondTotal(umsAdmin); + page.setRecords(list); + page.setTotal(total); + return page; + } + + @Override + public List<UmsUserDto1> userExp() { + List<UmsAdmin> umsAdmins = baseMapper.selectToExp(); + List<UmsUserDto1> res = umsAdmins.stream() + .map(item -> { + UmsUserDto1 res1 = new UmsUserDto1(); + res1.setId(item.getId()); + res1.setUsername(item.getUsername()); + res1.setNickName(item.getNickName()); + res1.setMobile(item.getMobile()); + StringBuffer roleStrBuffer = new StringBuffer(); + List<UmsRole> roles = item.getRoles(); + roles.forEach(new Consumer<UmsRole>() { + @Override + public void accept(UmsRole o) { + roleStrBuffer.append(o.getName()); + roleStrBuffer.append(","); + } + }); + roleStrBuffer.deleteCharAt(roleStrBuffer.length() - 1); + res1.setRoles(roleStrBuffer.toString()); + StringBuffer departStrBuffer = new StringBuffer(); + List<UmsDepart> departs = item.getDepart(); + departs.forEach(new Consumer<UmsDepart>() { + @Override + public void accept(UmsDepart o) { + departStrBuffer.append(o.getDepartName()); + departStrBuffer.append(","); + } + }); + departStrBuffer.deleteCharAt(departStrBuffer.length() - 1); + res1.setDepart(departStrBuffer.toString()); + res1.setJobTitle(item.getJobTitle()); + Date createTime = item.getCreateTime(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (createTime != null) { + res1.setCreateTime(sdf.format(createTime)); + } + + Integer status = item.getStatus(); + if (status.equals(1)) { + res1.setStatus("鍚敤"); + } else { + res1.setStatus("绂佺敤"); + } + return res1; + }).collect(Collectors.toList()); + return res; + } + + @Override + public boolean deleteBatch(List<Long> ids) { + boolean success = removeByIds(ids); + getCacheService().delBatchAdmin(ids); + return success; + } + + @Override + public boolean updateStatusBatch(List<Long> ids, Integer status) { + List<UmsAdmin> users = new ArrayList<>(); + for (Long id : ids) { + UmsAdmin umsAdmin = UmsAdmin.builder(). + id(id).status(status).build(); + users.add(umsAdmin); + } + updateBatchById(users, users.size()); + getCacheService().delBatchAdmin(ids); + return true; + } + + @Override + public List<UmsAdmin> getDepartUser(Long departId) { + QueryWrapper<UmsDepartManage> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsDepartManage::getDepartId, departId); + List<UmsDepartManage> list = umsDepartManageMapper.selectList(wrapper); + List<Long> userIds = list.stream().map(UmsDepartManage::getUserId).collect(Collectors.toList()); + QueryWrapper<UmsAdmin> wrapperUser = new QueryWrapper<>(); + wrapperUser.in("id", userIds); + List<UmsAdmin> adminList = baseMapper.selectList(wrapperUser); + return adminList; + } + + @Override + public String getTargetTo(String ids, String sendType) { + String str = null; + String[] arr = ids.split(","); + QueryWrapper<UmsAdmin> wrapperUser = new QueryWrapper<>(); + wrapperUser.in("id", arr); + List<UmsAdmin> adminList = baseMapper.selectList(wrapperUser); + if (adminList == null || adminList.isEmpty()) { + throw new ApiException("鏈煡璇㈠埌鐢ㄦ埛"); + } + if ("02".equals(sendType)) { + str = adminList.stream().map(UmsAdmin::getEmail).collect(Collectors.joining(",")); + } else { + str = adminList.stream().map(UmsAdmin::getMobile).collect(Collectors.joining(",")); + } + return str; + } + + @Override + public UmsAdmin getByOpenid(String openid) { + LambdaQueryWrapper<UmsAdmin> wrapper = new LambdaQueryWrapper<UmsAdmin>().eq(UmsAdmin::getOpenid, openid).last("limit 1"); + + return baseMapper.selectOne(wrapper); + } } -- Gitblit v1.8.0