From 7ec36eee3bae7b9efa32dba01776f5760d91b81a Mon Sep 17 00:00:00 2001 From: wl <173@qq.com> Date: 星期五, 28 十月 2022 11:25:14 +0800 Subject: [PATCH] 查询部门id --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 404 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 404 insertions(+), 0 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 new file mode 100644 index 0000000..85aa93d --- /dev/null +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java @@ -0,0 +1,404 @@ +package com.ycl.service.user.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +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.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.*; +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; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +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.util.stream.Collectors; + +/** + * 鍚庡彴绠$悊鍛樼鐞哠ervice瀹炵幇绫� + * Created by macro on 2018/4/26. + */ +@Service +public class UmsAdminServiceImpl extends ServiceImpl<UmsAdminMapper, UmsAdmin> implements UmsAdminService { + private static final Logger LOGGER = LoggerFactory.getLogger(UmsAdminServiceImpl.class); + @Autowired + private JwtTokenUtil jwtTokenUtil; + @Autowired + private PasswordEncoder passwordEncoder; + @Resource + private UmsAdminLoginLogMapper umsAdminLoginLogMapper; + @Resource + private UmsAdminRoleRelationService umsAdminRoleRelationService; + @Resource + 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; + @Resource + UmsAdminMapper umsAdminMapper; + + @Override + public UmsAdmin getAdminByUsername(String username) { + UmsAdmin admin = getCacheService().getAdmin(username); + if (admin != null) return admin; + QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsAdmin::getUsername, username); + List<UmsAdmin> adminList = list(wrapper); + if (adminList != null && adminList.size() > 0) { + admin = adminList.get(0); + getCacheService().setAdmin(admin); + return admin; + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public UmsAdmin register(UmsAdminParam umsAdminParam) { + UmsAdmin umsAdmin = new UmsAdmin(); + //TODO mac,ip,鑱屽姟锛岀敤鎴风被鍨� + 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) { + return null; + } + //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣� + String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); + umsAdmin.setPassword(encodePassword); + baseMapper.insert(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); + return umsAdmin; + } + + @Override + public String login(String username, String password) { + String token = null; + //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫� + try { + AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); + if (!passwordEncoder.matches(password, userDetails.getPassword())) { + Asserts.fail("瀵嗙爜涓嶆纭�"); + } + if (!userDetails.isEnabled()) { + Asserts.fail("甯愬彿宸茶绂佺敤"); + } + 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()); + } + return token; + } + + /** + * 娣诲姞鐧诲綍璁板綍 + * + * @param username 鐢ㄦ埛鍚� + */ + private void insertLoginLog(String username) { + UmsAdmin admin = getAdminByUsername(username); + if (admin == null) return; + UmsAdminLoginLog loginLog = new UmsAdminLoginLog(); + loginLog.setAdminId(admin.getId()); + loginLog.setCreateTime(new Date()); + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + loginLog.setIp(request.getRemoteAddr()); + umsAdminLoginLogMapper.insert(loginLog); + } + + /** + * 鏍规嵁鐢ㄦ埛鍚嶄慨鏀圭櫥褰曟椂闂� + */ + private void updateLoginTimeByUsername(String username) { + UmsAdmin record = new UmsAdmin(); + record.setLoginTime(new Date()); + QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsAdmin::getUsername, username); + update(record, wrapper); + } + + @Override + public String refreshToken(String oldToken) { + return jwtTokenUtil.refreshHeadToken(oldToken); + } + + @Override + public Page<UmsAdmin> list(String keyword, Integer pageSize, Integer pageNum) { + 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); + } + 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())) { + //涓庡師鍔犲瘑瀵嗙爜鐩稿悓鐨勪笉闇�瑕佷慨鏀� + admin.setPassword(null); + } else { + //涓庡師鍔犲瘑瀵嗙爜涓嶅悓鐨勯渶瑕佸姞瀵嗕慨鏀� + if (StrUtil.isEmpty(admin.getPassword())) { + admin.setPassword(null); + } else { + admin.setPassword(passwordEncoder.encode(admin.getPassword())); + } + } + boolean success = updateById(admin); + getCacheService().delAdmin(id); + return success; + } + + @Override + public boolean delete(Long id) { + getCacheService().delAdmin(id); + boolean success = removeById(id); + getCacheService().delResourceList(id); + return success; + } + + @Override + public int updateRole(Long adminId, List<Long> roleIds) { + int count = roleIds == null ? 0 : roleIds.size(); + //鍏堝垹闄ゅ師鏉ョ殑鍏崇郴 + QueryWrapper<UmsAdminRoleRelation> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsAdminRoleRelation::getAdminId, adminId); + umsAdminRoleRelationService.remove(wrapper); + //寤虹珛鏂板叧绯� + if (!CollectionUtils.isEmpty(roleIds)) { + List<UmsAdminRoleRelation> list = new ArrayList<>(); + for (Long roleId : roleIds) { + UmsAdminRoleRelation roleRelation = new UmsAdminRoleRelation(); + roleRelation.setAdminId(adminId); + roleRelation.setRoleId(roleId); + list.add(roleRelation); + } + umsAdminRoleRelationService.saveBatch(list); + } + getCacheService().delResourceList(adminId); + return count; + } + + @Override + public List<UmsRole> getRoleList(Long adminId) { + return umsRoleMapper.getRoleList(adminId); + } + + @Override + public List<UmsMenu> getResourceList(Long adminId) { + List<UmsMenu> umsMenuList = getCacheService().getResourceList(adminId); + if (CollUtil.isNotEmpty(umsMenuList)) { + return umsMenuList; + } + 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())) { + return -1; + } + QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(UmsAdmin::getUsername, param.getUsername()); + List<UmsAdmin> adminList = list(wrapper); + if (CollUtil.isEmpty(adminList)) { + return -2; + } + UmsAdmin umsAdmin = adminList.get(0); + if (!passwordEncoder.matches(param.getOldPassword(), umsAdmin.getPassword())) { + return -3; + } + umsAdmin.setPassword(passwordEncoder.encode(param.getNewPassword())); + updateById(umsAdmin); + getCacheService().delAdmin(umsAdmin.getId()); + return 1; + } + + @Override + public UserDetails loadUserByUsername(String username) { + //鑾峰彇鐢ㄦ埛淇℃伅 + UmsAdmin admin = getAdminByUsername(username); + if (admin != null) { + List<UmsMenu> resourceList = getResourceList(admin.getId()); + return new AdminUserDetails(admin, resourceList); + } + 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); + return umsAdminMapper.selectPageByWordKey(page,pageUserVO.getKeyword()); + } + + @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; + } +} -- Gitblit v1.8.0