update 优化 框架整体提高查询性能

2.X
疯狂的狮子Li 1 year ago
parent 073d5e0243
commit bb37b3401d

@ -35,6 +35,11 @@ public interface CacheNames {
*/ */
String SYS_TENANT = GlobalConstants.GLOBAL_REDIS_KEY + "sys_tenant#30d"; String SYS_TENANT = GlobalConstants.GLOBAL_REDIS_KEY + "sys_tenant#30d";
/**
*
*/
String SYS_CLIENT = GlobalConstants.GLOBAL_REDIS_KEY + "sys_client#30d";
/** /**
* *
*/ */

@ -97,7 +97,7 @@ public class SysClientController extends BaseController {
@Log(title = "客户端管理", businessType = BusinessType.UPDATE) @Log(title = "客户端管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysClientBo bo) { public R<Void> changeStatus(@RequestBody SysClientBo bo) {
return toAjax(sysClientService.updateUserStatus(bo.getId(), bo.getStatus())); return toAjax(sysClientService.updateUserStatus(bo.getClientId(), bo.getStatus()));
} }
/** /**

@ -22,6 +22,7 @@ import org.dromara.system.domain.bo.SysUserProfileBo;
import org.dromara.system.domain.vo.AvatarVo; import org.dromara.system.domain.vo.AvatarVo;
import org.dromara.system.domain.vo.ProfileVo; import org.dromara.system.domain.vo.ProfileVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysRoleService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -43,6 +44,7 @@ import java.util.Arrays;
public class SysProfileController extends BaseController { public class SysProfileController extends BaseController {
private final ISysUserService userService; private final ISysUserService userService;
private final ISysRoleService roleService;
@DubboReference @DubboReference
private RemoteFileService remoteFileService; private RemoteFileService remoteFileService;
@ -53,10 +55,11 @@ public class SysProfileController extends BaseController {
@GetMapping @GetMapping
public R<ProfileVo> profile() { public R<ProfileVo> profile() {
SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); SysUserVo user = userService.selectUserById(LoginHelper.getUserId());
user.setRoles(roleService.selectRolesByUserId(user.getUserId()));
ProfileVo profileVo = new ProfileVo(); ProfileVo profileVo = new ProfileVo();
profileVo.setUser(user); profileVo.setUser(user);
profileVo.setRoleGroup(userService.selectUserRoleGroup(user.getUserName())); profileVo.setRoleGroup(userService.selectUserRoleGroup(user.getUserId()));
profileVo.setPostGroup(userService.selectUserPostGroup(user.getUserName())); profileVo.setPostGroup(userService.selectUserPostGroup(user.getUserId()));
return R.ok(profileVo); return R.ok(profileVo);
} }

@ -116,6 +116,7 @@ public class SysUserController extends BaseController {
if (ObjectUtil.isNull(user)) { if (ObjectUtil.isNull(user)) {
return R.fail("没有权限访问用户数据!"); return R.fail("没有权限访问用户数据!");
} }
user.setRoles(roleService.selectRolesByUserId(user.getUserId()));
userInfoVo.setUser(user); userInfoVo.setUser(user);
userInfoVo.setPermissions(loginUser.getMenuPermission()); userInfoVo.setPermissions(loginUser.getMenuPermission());
userInfoVo.setRoles(loginUser.getRolePermission()); userInfoVo.setRoles(loginUser.getRolePermission());
@ -142,7 +143,7 @@ public class SysUserController extends BaseController {
if (ObjectUtil.isNotNull(userId)) { if (ObjectUtil.isNotNull(userId)) {
SysUserVo sysUser = userService.selectUserById(userId); SysUserVo sysUser = userService.selectUserById(userId);
userInfoVo.setUser(sysUser); userInfoVo.setUser(sysUser);
userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRoleVo::getRoleId)); userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId));
userInfoVo.setPostIds(postService.selectPostListByUserId(userId)); userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
} }
return R.ok(userInfoVo); return R.ok(userInfoVo);
@ -241,8 +242,9 @@ public class SysUserController extends BaseController {
@SaCheckPermission("system:user:query") @SaCheckPermission("system:user:query")
@GetMapping("/authRole/{userId}") @GetMapping("/authRole/{userId}")
public R<SysUserInfoVo> authRole(@PathVariable Long userId) { public R<SysUserInfoVo> authRole(@PathVariable Long userId) {
userService.checkUserDataScope(userId);
SysUserVo user = userService.selectUserById(userId); SysUserVo user = userService.selectUserById(userId);
List<SysRoleVo> roles = roleService.selectRolesByUserId(userId); List<SysRoleVo> roles = roleService.selectRolesAuthByUserId(userId);
SysUserInfoVo userInfoVo = new SysUserInfoVo(); SysUserInfoVo userInfoVo = new SysUserInfoVo();
userInfoVo.setUser(user); userInfoVo.setUser(user);
userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin())); userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));

@ -19,10 +19,12 @@ import org.dromara.system.api.model.RoleDTO;
import org.dromara.system.api.model.XcxLoginUser; import org.dromara.system.api.model.XcxLoginUser;
import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysConfigService; import org.dromara.system.service.ISysConfigService;
import org.dromara.system.service.ISysPermissionService; import org.dromara.system.service.ISysPermissionService;
import org.dromara.system.service.ISysRoleService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -41,14 +43,13 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private final ISysUserService userService; private final ISysUserService userService;
private final ISysPermissionService permissionService; private final ISysPermissionService permissionService;
private final ISysConfigService configService; private final ISysConfigService configService;
private final ISysRoleService roleService;
private final SysUserMapper userMapper; private final SysUserMapper userMapper;
@Override @Override
public LoginUser getUserInfo(String username, String tenantId) throws UserException { public LoginUser getUserInfo(String username, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> { return TenantHelper.dynamic(tenantId, () -> {
SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, username));
.select(SysUser::getUserName, SysUser::getStatus)
.eq(SysUser::getUserName, username));
if (ObjectUtil.isNull(sysUser)) { if (ObjectUtil.isNull(sysUser)) {
throw new UserException("user.not.exists", username); throw new UserException("user.not.exists", username);
} }
@ -57,16 +58,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
} }
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
return buildLoginUser(userMapper.selectUserByUserName(username)); return buildLoginUser(sysUser);
}); });
} }
@Override @Override
public LoginUser getUserInfo(Long userId, String tenantId) throws UserException { public LoginUser getUserInfo(Long userId, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> { return TenantHelper.dynamic(tenantId, () -> {
SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() SysUserVo sysUser = userMapper.selectVoById(userId);
.select(SysUser::getUserName, SysUser::getStatus)
.eq(SysUser::getUserId, userId));
if (ObjectUtil.isNull(sysUser)) { if (ObjectUtil.isNull(sysUser)) {
throw new UserException("user.not.exists", ""); throw new UserException("user.not.exists", "");
} }
@ -75,16 +74,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
} }
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
return buildLoginUser(userMapper.selectUserByUserName(sysUser.getUserName())); return buildLoginUser(sysUser);
}); });
} }
@Override @Override
public LoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId) throws UserException { public LoginUser getUserInfoByPhonenumber(String phonenumber, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> { return TenantHelper.dynamic(tenantId, () -> {
SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, phonenumber));
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(SysUser::getPhonenumber, phonenumber));
if (ObjectUtil.isNull(sysUser)) { if (ObjectUtil.isNull(sysUser)) {
throw new UserException("user.not.exists", phonenumber); throw new UserException("user.not.exists", phonenumber);
} }
@ -93,16 +90,14 @@ public class RemoteUserServiceImpl implements RemoteUserService {
} }
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
return buildLoginUser(userMapper.selectUserByPhonenumber(phonenumber)); return buildLoginUser(sysUser);
}); });
} }
@Override @Override
public LoginUser getUserInfoByEmail(String email, String tenantId) throws UserException { public LoginUser getUserInfoByEmail(String email, String tenantId) throws UserException {
return TenantHelper.dynamic(tenantId, () -> { return TenantHelper.dynamic(tenantId, () -> {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmail, email));
.select(SysUser::getEmail, SysUser::getStatus)
.eq(SysUser::getEmail, email));
if (ObjectUtil.isNull(user)) { if (ObjectUtil.isNull(user)) {
throw new UserException("user.not.exists", email); throw new UserException("user.not.exists", email);
} }
@ -111,7 +106,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
} }
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可 // 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了 // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
return buildLoginUser(userMapper.selectUserByEmail(email)); return buildLoginUser(user);
}); });
} }
@ -179,8 +174,10 @@ public class RemoteUserServiceImpl implements RemoteUserService {
loginUser.setMenuPermission(permissionService.getMenuPermission(userVo.getUserId())); loginUser.setMenuPermission(permissionService.getMenuPermission(userVo.getUserId()));
loginUser.setRolePermission(permissionService.getRolePermission(userVo.getUserId())); loginUser.setRolePermission(permissionService.getRolePermission(userVo.getUserId()));
loginUser.setDeptName(ObjectUtil.isNull(userVo.getDept()) ? "" : userVo.getDept().getDeptName()); loginUser.setDeptName(ObjectUtil.isNull(userVo.getDept()) ? "" : userVo.getDept().getDeptName());
List<RoleDTO> roles = BeanUtil.copyToList(userVo.getRoles(), RoleDTO.class); List<SysRoleVo> roles = DataPermissionHelper.ignore(() -> {
loginUser.setRoles(roles); return roleService.selectRolesByUserId(userVo.getUserId());
});
loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class));
return loginUser; return loginUser;
} }

@ -32,7 +32,7 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
@DataPermission({ @DataPermission({
@DataColumn(key = "deptName", value = "dept_id") @DataColumn(key = "deptName", value = "dept_id")
}) })
SysDeptVo selectDeptById(Long deptId); long countDeptById(Long deptId);
/** /**
* ID * ID

@ -13,20 +13,12 @@ import java.util.List;
*/ */
public interface SysPostMapper extends BaseMapperPlus<SysPost, SysPostVo> { public interface SysPostMapper extends BaseMapperPlus<SysPost, SysPostVo> {
/**
* ID
*
* @param userId ID
* @return ID
*/
List<Long> selectPostListByUserId(Long userId);
/** /**
* *
* *
* @param userName * @param userId ID
* @return * @return
*/ */
List<SysPostVo> selectPostsByUserName(String userName); List<SysPostVo> selectPostsByUserId(Long userId);
} }

@ -3,12 +3,12 @@ package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.system.domain.SysRole; import org.dromara.system.domain.SysRole;
import org.dromara.system.domain.vo.SysRoleVo; import org.dromara.system.domain.vo.SysRoleVo;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -51,21 +51,12 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo> {
*/ */
List<SysRoleVo> selectRolePermissionByUserId(Long userId); List<SysRoleVo> selectRolePermissionByUserId(Long userId);
/**
* ID
*
* @param userId ID
* @return ID
*/
List<Long> selectRoleListByUserId(Long userId);
/** /**
* ID * ID
* *
* @param userName * @param userId ID
* @return * @return
*/ */
List<SysRoleVo> selectRolesByUserName(String userName); List<SysRoleVo> selectRolesByUserId(Long userId);
} }

@ -61,41 +61,11 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
}) })
Page<SysUserVo> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper); Page<SysUserVo> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
/**
*
*
* @param userName
* @return
*/
SysUserVo selectUserByUserName(String userName);
/**
*
*
* @param phonenumber
* @return
*/
SysUserVo selectUserByPhonenumber(String phonenumber);
/**
*
*
* @param email
* @return
*/
SysUserVo selectUserByEmail(String email);
/**
* ID
*
* @param userId ID
* @return
*/
@DataPermission({ @DataPermission({
@DataColumn(key = "deptName", value = "d.dept_id"), @DataColumn(key = "deptName", value = "dept_id"),
@DataColumn(key = "userName", value = "u.user_id") @DataColumn(key = "userName", value = "user_id")
}) })
SysUserVo selectUserById(Long userId); long countUserById(Long userId);
@Override @Override
@DataPermission({ @DataPermission({

@ -48,7 +48,7 @@ public interface ISysClientService {
/** /**
* *
*/ */
int updateUserStatus(Long id, String status); int updateUserStatus(String clientId, String status);
/** /**
* *

@ -35,6 +35,14 @@ public interface ISysRoleService {
*/ */
List<SysRoleVo> selectRolesByUserId(Long userId); List<SysRoleVo> selectRolesByUserId(Long userId);
/**
* ID()
*
* @param userId ID
* @return
*/
List<SysRoleVo> selectRolesAuthByUserId(Long userId);
/** /**
* ID * ID
* *
@ -180,4 +188,5 @@ public interface ISysRoleService {
int insertAuthUsers(Long roleId, Long[] userIds); int insertAuthUsers(Long roleId, Long[] userIds);
void cleanOnlineUserByRole(Long roleId); void cleanOnlineUserByRole(Long roleId);
} }

@ -68,18 +68,18 @@ public interface ISysUserService {
/** /**
* ID * ID
* *
* @param userName * @param userId ID
* @return * @return
*/ */
String selectUserRoleGroup(String userName); String selectUserRoleGroup(Long userId);
/** /**
* ID * ID
* *
* @param userName * @param userId ID
* @return * @return
*/ */
String selectUserPostGroup(String userName); String selectUserPostGroup(Long userId);
/** /**
* *

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -16,6 +17,8 @@ import org.dromara.system.domain.bo.SysClientBo;
import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysClientVo;
import org.dromara.system.mapper.SysClientMapper; import org.dromara.system.mapper.SysClientMapper;
import org.dromara.system.service.ISysClientService; import org.dromara.system.service.ISysClientService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
@ -47,6 +50,7 @@ public class SysClientServiceImpl implements ISysClientService {
/** /**
* *
*/ */
@Cacheable(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId")
@Override @Override
public SysClientVo queryByClientId(String clientId) { public SysClientVo queryByClientId(String clientId) {
return baseMapper.selectVoOne(new LambdaQueryWrapper<SysClient>().eq(SysClient::getClientId, clientId)); return baseMapper.selectVoOne(new LambdaQueryWrapper<SysClient>().eq(SysClient::getClientId, clientId));
@ -104,6 +108,7 @@ public class SysClientServiceImpl implements ISysClientService {
/** /**
* *
*/ */
@CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#bo.clientId")
@Override @Override
public Boolean updateByBo(SysClientBo bo) { public Boolean updateByBo(SysClientBo bo) {
SysClient update = MapstructUtils.convert(bo, SysClient.class); SysClient update = MapstructUtils.convert(bo, SysClient.class);
@ -115,12 +120,13 @@ public class SysClientServiceImpl implements ISysClientService {
/** /**
* *
*/ */
@CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId")
@Override @Override
public int updateUserStatus(Long id, String status) { public int updateUserStatus(String clientId, String status) {
return baseMapper.update(null, return baseMapper.update(null,
new LambdaUpdateWrapper<SysClient>() new LambdaUpdateWrapper<SysClient>()
.set(SysClient::getStatus, status) .set(SysClient::getStatus, status)
.eq(SysClient::getId, id)); .eq(SysClient::getClientId, clientId));
} }
/** /**
@ -133,6 +139,7 @@ public class SysClientServiceImpl implements ISysClientService {
/** /**
* *
*/ */
@CacheEvict(cacheNames = CacheNames.SYS_CLIENT, allEntries = true)
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) { if (isValid) {

@ -143,6 +143,7 @@ public class SysDeptServiceImpl implements ISysDeptService{
* @param deptIds ID * @param deptIds ID
* @return * @return
*/ */
@Override
public String selectDeptNameByIds(String deptIds) { public String selectDeptNameByIds(String deptIds) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
for (Long id : StringUtils.splitTo(deptIds, Convert::toLong)) { for (Long id : StringUtils.splitTo(deptIds, Convert::toLong)) {
@ -219,8 +220,7 @@ public class SysDeptServiceImpl implements ISysDeptService{
if (LoginHelper.isSuperAdmin()) { if (LoginHelper.isSuperAdmin()) {
return; return;
} }
SysDeptVo dept = baseMapper.selectDeptById(deptId); if (baseMapper.countDeptById(deptId) == 0) {
if (ObjectUtil.isNull(dept)) {
throw new ServiceException("没有权限访问部门数据!"); throw new ServiceException("没有权限访问部门数据!");
} }
} }

@ -32,14 +32,6 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
private final SysLogininforMapper baseMapper; private final SysLogininforMapper baseMapper;
private String getBlock(Object msg) {
if (msg == null) {
msg = "";
}
return "[" + msg.toString() + "]";
}
@Override @Override
public TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) { public TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) {
Map<String, Object> params = logininfor.getParams(); Map<String, Object> params = logininfor.getParams();

@ -4,18 +4,19 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.SysNotice; import org.dromara.system.domain.SysNotice;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysNoticeBo; import org.dromara.system.domain.bo.SysNoticeBo;
import org.dromara.system.domain.vo.SysNoticeVo; import org.dromara.system.domain.vo.SysNoticeVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.SysNoticeMapper; import org.dromara.system.mapper.SysNoticeMapper;
import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysNoticeService; import org.dromara.system.service.ISysNoticeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
@ -68,7 +69,7 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle()); lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle());
lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType()); lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType());
if (StringUtils.isNotBlank(bo.getCreateByName())) { if (StringUtils.isNotBlank(bo.getCreateByName())) {
SysUserVo sysUser = userMapper.selectUserByUserName(bo.getCreateByName()); SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, bo.getCreateByName()));
lqw.eq(SysNotice::getCreateBy, ObjectUtil.isNotNull(sysUser) ? sysUser.getUserId() : null); lqw.eq(SysNotice::getCreateBy, ObjectUtil.isNotNull(sysUser) ? sysUser.getUserId() : null);
} }
lqw.orderByAsc(SysNotice::getNoticeId); lqw.orderByAsc(SysNotice::getNoticeId);

@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -18,6 +18,7 @@ import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysPostMapper;
import org.dromara.system.mapper.SysUserPostMapper; import org.dromara.system.mapper.SysUserPostMapper;
import org.dromara.system.service.ISysPostService; import org.dromara.system.service.ISysPostService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
@ -92,7 +93,8 @@ public class SysPostServiceImpl implements ISysPostService {
*/ */
@Override @Override
public List<Long> selectPostListByUserId(Long userId) { public List<Long> selectPostListByUserId(Long userId) {
return baseMapper.selectPostListByUserId(userId); List<SysPostVo> list = baseMapper.selectPostsByUserId(userId);
return StreamUtils.toList(list, SysPostVo::getPostId);
} }
/** /**

@ -79,7 +79,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
.like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey()) .like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey())
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
"r.create_time", params.get("beginTime"), params.get("endTime")) "r.create_time", params.get("beginTime"), params.get("endTime"))
.orderByAsc("r.role_sort").orderByAsc("r.create_time");; .orderByAsc("r.role_sort").orderByAsc("r.create_time");
return wrapper; return wrapper;
} }
@ -91,6 +91,17 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public List<SysRoleVo> selectRolesByUserId(Long userId) { public List<SysRoleVo> selectRolesByUserId(Long userId) {
return baseMapper.selectRolesByUserId(userId);
}
/**
* ID()
*
* @param userId ID
* @return
*/
@Override
public List<SysRoleVo> selectRolesAuthByUserId(Long userId) {
List<SysRoleVo> userRoles = baseMapper.selectRolePermissionByUserId(userId); List<SysRoleVo> userRoles = baseMapper.selectRolePermissionByUserId(userId);
List<SysRoleVo> roles = selectRoleAll(); List<SysRoleVo> roles = selectRoleAll();
for (SysRoleVo role : roles) { for (SysRoleVo role : roles) {
@ -140,7 +151,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public List<Long> selectRoleListByUserId(Long userId) { public List<Long> selectRoleListByUserId(Long userId) {
return baseMapper.selectRoleListByUserId(userId); List<SysRoleVo> list = baseMapper.selectRolesByUserId(userId);
return StreamUtils.toList(list, SysRoleVo::getRoleId);
} }
/** /**

@ -35,7 +35,6 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -141,7 +140,7 @@ public class SysUserServiceImpl implements ISysUserService {
*/ */
@Override @Override
public SysUserVo selectUserByUserName(String userName) { public SysUserVo selectUserByUserName(String userName) {
return baseMapper.selectUserByUserName(userName); return baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
} }
/** /**
@ -152,7 +151,7 @@ public class SysUserServiceImpl implements ISysUserService {
*/ */
@Override @Override
public SysUserVo selectUserByPhonenumber(String phonenumber) { public SysUserVo selectUserByPhonenumber(String phonenumber) {
return baseMapper.selectUserByPhonenumber(phonenumber); return baseMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, phonenumber));
} }
/** /**
@ -163,18 +162,18 @@ public class SysUserServiceImpl implements ISysUserService {
*/ */
@Override @Override
public SysUserVo selectUserById(Long userId) { public SysUserVo selectUserById(Long userId) {
return baseMapper.selectUserById(userId); return baseMapper.selectVoById(userId);
} }
/** /**
* *
* *
* @param userName * @param userId ID
* @return * @return
*/ */
@Override @Override
public String selectUserRoleGroup(String userName) { public String selectUserRoleGroup(Long userId) {
List<SysRoleVo> list = roleMapper.selectRolesByUserName(userName); List<SysRoleVo> list = roleMapper.selectRolesByUserId(userId);
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
@ -184,12 +183,12 @@ public class SysUserServiceImpl implements ISysUserService {
/** /**
* *
* *
* @param userName * @param userId ID
* @return * @return
*/ */
@Override @Override
public String selectUserPostGroup(String userName) { public String selectUserPostGroup(Long userId) {
List<SysPostVo> list = postMapper.selectPostsByUserName(userName); List<SysPostVo> list = postMapper.selectPostsByUserId(userId);
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
@ -261,7 +260,7 @@ public class SysUserServiceImpl implements ISysUserService {
if (LoginHelper.isSuperAdmin()) { if (LoginHelper.isSuperAdmin()) {
return; return;
} }
if (ObjectUtil.isNull(baseMapper.selectUserById(userId))) { if (baseMapper.countUserById(userId) == 0) {
throw new ServiceException("没有权限访问用户数据!"); throw new ServiceException("没有权限访问用户数据!");
} }
} }
@ -421,7 +420,7 @@ public class SysUserServiceImpl implements ISysUserService {
userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, user.getUserId())); userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, user.getUserId()));
} }
// 新增用户与岗位管理 // 新增用户与岗位管理
List<SysUserPost> list = StreamUtils.toList(Arrays.asList(posts), postId -> { List<SysUserPost> list = StreamUtils.toList(List.of(posts), postId -> {
SysUserPost up = new SysUserPost(); SysUserPost up = new SysUserPost();
up.setUserId(user.getUserId()); up.setUserId(user.getUserId());
up.setPostId(postId); up.setPostId(postId);
@ -449,7 +448,7 @@ public class SysUserServiceImpl implements ISysUserService {
if (!LoginHelper.isSuperAdmin(userId)) { if (!LoginHelper.isSuperAdmin(userId)) {
roleList.remove(UserConstants.SUPER_ADMIN_ID); roleList.remove(UserConstants.SUPER_ADMIN_ID);
} }
List<Long> canDoRoleList = StreamUtils.filter(Arrays.asList(roleIds), roleList::contains); List<Long> canDoRoleList = StreamUtils.filter(List.of(roleIds), roleList::contains);
if (CollUtil.isEmpty(canDoRoleList)) { if (CollUtil.isEmpty(canDoRoleList)) {
throw new ServiceException("没有权限访问角色的数据"); throw new ServiceException("没有权限访问角色的数据");
} }
@ -502,7 +501,7 @@ public class SysUserServiceImpl implements ISysUserService {
checkUserAllowed(userId); checkUserAllowed(userId);
checkUserDataScope(userId); checkUserDataScope(userId);
} }
List<Long> ids = Arrays.asList(userIds); List<Long> ids = List.of(userIds);
// 删除用户与角色关联 // 删除用户与角色关联
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids)); userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
// 删除用户与岗位表 // 删除用户与岗位表

@ -11,8 +11,8 @@
select * from sys_dept ${ew.getCustomSqlSegment} select * from sys_dept ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectDeptById" resultMap="SysDeptResult"> <select id="countDeptById" resultType="Long">
select * from sys_dept where del_flag = '0' and dept_id = #{deptId} select count(*) from sys_dept where del_flag = '0' and dept_id = #{deptId}
</select> </select>
<select id="selectDeptListByRoleId" resultType="Long"> <select id="selectDeptListByRoleId" resultType="Long">

@ -7,20 +7,12 @@
<resultMap type="org.dromara.system.domain.vo.SysPostVo" id="SysPostResult"> <resultMap type="org.dromara.system.domain.vo.SysPostVo" id="SysPostResult">
</resultMap> </resultMap>
<select id="selectPostListByUserId" parameterType="Long" resultType="Long"> <select id="selectPostsByUserId" parameterType="Long" resultMap="SysPostResult">
select p.post_id
from sys_post p
left join sys_user_post up on up.post_id = p.post_id
left join sys_user u on u.user_id = up.user_id
where u.user_id = #{userId}
</select>
<select id="selectPostsByUserName" parameterType="String" resultMap="SysPostResult">
select p.post_id, p.post_name, p.post_code select p.post_id, p.post_name, p.post_code
from sys_post p from sys_post p
left join sys_user_post up on up.post_id = p.post_id left join sys_user_post up on up.post_id = p.post_id
left join sys_user u on u.user_id = up.user_id left join sys_user u on u.user_id = up.user_id
where u.user_name = #{userName} where u.user_id = #{userId}
</select> </select>
</mapper> </mapper>

@ -40,23 +40,17 @@
WHERE r.del_flag = '0' and sur.user_id = #{userId} WHERE r.del_flag = '0' and sur.user_id = #{userId}
</select> </select>
<select id="selectRoleListByUserId" parameterType="Long" resultType="Long"> <select id="selectRolesByUserId" parameterType="Long" resultMap="SysRoleResult">
select r.role_id
from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id
left join sys_user u on u.user_id = sur.user_id
where u.user_id = #{userId}
</select>
<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
select r.role_id, select r.role_id,
r.role_name, r.role_name,
r.role_key, r.role_key,
r.role_sort r.role_sort,
r.data_scope,
r.status
from sys_role r from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id left join sys_user_role sur on sur.role_id = r.role_id
left join sys_user u on u.user_id = sur.user_id left join sys_user u on u.user_id = sur.user_id
WHERE r.del_flag = '0' and u.user_name = #{userName} WHERE r.del_flag = '0' and sur.user_id = #{userId}
</select> </select>
<select id="selectRoleById" resultMap="SysRoleResult"> <select id="selectRoleById" resultMap="SysRoleResult">

@ -9,7 +9,6 @@
<id property="userId" column="user_id"/> <id property="userId" column="user_id"/>
<result property="deptId" column="dept_id"/> <result property="deptId" column="dept_id"/>
<association property="dept" column="dept_id" resultMap="deptResult"/> <association property="dept" column="dept_id" resultMap="deptResult"/>
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
</resultMap> </resultMap>
<resultMap id="deptResult" type="org.dromara.system.domain.vo.SysDeptVo"> <resultMap id="deptResult" type="org.dromara.system.domain.vo.SysDeptVo">
@ -19,50 +18,6 @@
<result property="createTime" column="dept_create_time"/> <result property="createTime" column="dept_create_time"/>
</resultMap> </resultMap>
<resultMap id="RoleResult" type="org.dromara.system.domain.vo.SysRoleVo">
<id property="roleId" column="role_id"/>
<result property="status" column="role_status"/>
<result property="createTime" column="role_create_time"/>
</resultMap>
<sql id="selectUserVo">
select u.user_id,
u.tenant_id,
u.dept_id,
u.user_name,
u.nick_name,
u.user_type,
u.email,
u.avatar,
u.phonenumber,
u.password,
u.sex,
u.status,
u.del_flag,
u.login_ip,
u.login_date,
u.create_by,
u.create_time,
u.remark,
d.dept_id,
d.parent_id,
d.ancestors,
d.dept_name,
d.order_num,
d.leader,
d.status as dept_status,
r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.status as role_status
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role sur on u.user_id = sur.user_id
left join sys_role r on r.role_id = sur.role_id
</sql>
<select id="selectPageUserList" resultMap="SysUserResult"> <select id="selectPageUserList" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
@ -101,24 +56,8 @@
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult"> <select id="countUserById" resultType="Long">
<include refid="selectUserVo"/> select count(*) from sys_user where del_flag = '0' and user_id = #{userId}
where u.del_flag = '0' and u.user_name = #{userName}
</select>
<select id="selectUserByPhonenumber" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.del_flag = '0' and u.phonenumber = #{phonenumber}
</select>
<select id="selectUserByEmail" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.del_flag = '0' and u.email = #{email}
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.del_flag = '0' and u.user_id = #{userId}
</select> </select>

Loading…
Cancel
Save