用户管理等

This commit is contained in:
2025-10-09 16:35:49 +08:00
parent 047bf39842
commit 39d7d0cf93
44 changed files with 3373 additions and 350 deletions

View File

@@ -0,0 +1,151 @@
package org.xyzh.system.controller;
import java.util.List;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.xyzh.api.system.dept.DepartmentService;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.dept.TbSysDept;
import org.xyzh.common.dto.dept.TbSysDeptRole;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.vo.DeptRoleVO;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
@RequestMapping("/depts")
public class DeptController {
private static final Logger logger = LoggerFactory.getLogger(DeptController.class);
@Autowired
private DepartmentService deptService;
/**
* @description 查询所有部门
* @return ResultDomain<TbSysDept> 部门列表
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/all")
public ResultDomain<TbSysDept> getAllDepts() {
return deptService.getAllDepartments();
}
/**
* @description 查询部门列表
* @param filter 过滤条件
* @return ResultDomain<TbSysDept> 部门列表
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/list")
public ResultDomain<TbSysDept> getDeptList(@RequestBody TbSysDept filter) {
return deptService.getDeptList(filter);
}
/**
* @description 查询部门
* @param deptId 部门ID
* @return ResultDomain<TbSysDept> 部门信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/id")
public ResultDomain<TbSysDept> getDeptById(@RequestBody TbSysDept dept) {
return deptService.getDepartmentById(dept.getDeptID());
}
/**
* @description 创建部门
* @param dept 部门信息
* @return ResultDomain<TbSysDept> 部门信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/dept")
public ResultDomain<TbSysDept> createDept(@RequestBody TbSysDept dept) {
return deptService.createDepartment(dept);
}
/**
* @description 更新部门
* @param dept 部门信息
* @return ResultDomain<TbSysDept> 部门信息
* @author yslg
* @since 2025-10-06
*/
@PutMapping("/dept")
public ResultDomain<TbSysDept> updateDept(@RequestBody TbSysDept dept) {
return deptService.updateDepartment(dept);
}
/**
* @description 删除部门
* @param dept 部门信息
* @return ResultDomain<TbSysDept> 部门信息
* @author yslg
* @since 2025-10-06
*/
@DeleteMapping("/dept")
public ResultDomain<TbSysDept> deleteDept(@RequestBody TbSysDept dept) {
return deptService.deleteDepartment(dept.getDeptID());
}
/**
* @description 查询部门绑定角色
* @param dept 部门信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/role")
public ResultDomain<TbSysRole> getDeptByRole(@RequestBody TbSysDept dept) {
return deptService.getDeptByRole(dept.getDeptID());
}
/**
* @description 查询部门绑定角色
* @param dept 部门信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/role/list")
public ResultDomain<TbSysDeptRole> getDeptByRoleList() {
return deptService.getDeptByRoleList();
}
/**
* @description 绑定部门角色
* @param dept 部门信息
* @return ResultDomain<TbSysDeptRole> 部门角色信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/bind/role")
public ResultDomain<TbSysDeptRole> bindDeptRole(@RequestBody DeptRoleVO deptRole) {
List<String> deptIDs = deptRole.getDepts().stream().map(TbSysDept::getDeptID).collect(Collectors.toList());
List<String> roleIDs = deptRole.getRoles().stream().map(TbSysRole::getRoleID).collect(Collectors.toList());
return deptService.bindDeptRole(deptIDs, roleIDs);
}
/**
* @description 解绑部门角色
* @param dept 部门信息
* @return ResultDomain<TbSysDeptRole> 部门角色信息
* @author yslg
* @since 2025-10-06
*/
@PostMapping("/unbind/role")
public ResultDomain<TbSysDeptRole> unbindDeptRole(@RequestBody DeptRoleVO deptRole) {
List<String> deptIDs = deptRole.getDepts().stream().map(TbSysDept::getDeptID).collect(Collectors.toList());
List<String> roleIDs = deptRole.getRoles().stream().map(TbSysRole::getRoleID).collect(Collectors.toList());
return deptService.unbindDeptRole(deptIDs, roleIDs);
}
}

View File

@@ -3,12 +3,18 @@ package org.xyzh.system.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.xyzh.api.system.role.RoleService;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.permission.TbSysPermission;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.dto.role.TbSysRolePermission;
import org.xyzh.common.vo.DeptRoleVO;
/**
* @description RoleController.java文件描述 角色控制器
@@ -35,4 +41,78 @@ public class RoleController {
public ResultDomain<TbSysRole> all() {
return roleService.getAllRoles();
}
/**
* @description 根据角色ID获取角色
* @param role 角色信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/id")
public ResultDomain<TbSysRole> getRoleById(@RequestBody TbSysRole role) {
return roleService.getRoleById(role.getRoleID());
}
/**
* @description 根据过滤条件获取角色列表
* @param filter 过滤条件
* @return ResultDomain<TbSysRole> 角色列表
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/list")
public ResultDomain<TbSysRole> getRoleList(@RequestBody TbSysRole filter) {
return roleService.getRoleList(filter);
}
/**
* @description 创建角色
* @param role 角色信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/role")
public ResultDomain<TbSysRole> createRole(@RequestBody TbSysRole role) {
return roleService.createRole(role);
}
/**
* @description 更新角色
* @param role 角色信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-09
*/
@PutMapping("/role")
public ResultDomain<TbSysRole> updateRole(@RequestBody TbSysRole role) {
return roleService.updateRole(role);
}
/**
* @description 删除角色
* @param role 角色信息
* @return ResultDomain<TbSysRole> 角色信息
* @author yslg
* @since 2025-10-09
*/
@DeleteMapping("/role")
public ResultDomain<TbSysRole> deleteRole(@RequestBody TbSysRole role) {
return roleService.deleteRole(role);
}
/**
* @description 获取角色权限
* @param role 角色信息
* @return ResultDomain<TbSysRolePermission> 角色权限信息
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/permission")
public ResultDomain<TbSysPermission> getRolePermission(@RequestBody TbSysRole role) {
return roleService.getRolePermission(role.getRoleID());
}
}

View File

@@ -13,7 +13,10 @@ import org.xyzh.common.annotation.HttpLogin;
import org.xyzh.common.core.domain.LoginDomain;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserDeptRole;
import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.vo.UserDeptRoleVO;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -25,7 +28,7 @@ import org.springframework.web.bind.annotation.GetMapping;
* @ since 2025-10-06
*/
@RestController
@RequestMapping("/user")
@RequestMapping("/users")
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@@ -35,14 +38,93 @@ public class UserController {
// ---------------- 用户 ----------------
/**
* @description 注册用户
* @param
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/register")
public ResultDomain<TbSysUser> registerUser(@RequestBody TbSysUser user){
return userService.registerUser(user);
}
/**
* @description 创建用户
* @param user
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/user")
public ResultDomain<TbSysUser> createUser(@RequestBody TbSysUser user) {
return userService.createUser(user);
}
/**
* @description 更新用户
* @param user
* @author yslg
* @since 2025-10-09
*/
@PutMapping("/user")
public ResultDomain<TbSysUser> updateUser(@RequestBody TbSysUser user) {
return userService.updateUser(user);
}
/**
* @description 删除用户
* @param user
* @author yslg
* @since 2025-10-09
*/
@DeleteMapping("/user")
public ResultDomain<TbSysUser> deleteUser(@RequestBody TbSysUser user) {
return userService.deleteUser(user.getID());
}
/**
* @description 获取用户
* @param filter
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/list")
public ResultDomain<TbSysUser> getUserList(@RequestBody TbSysUser filter) {
return userService.getUserByFilter(filter);
}
/**
* @description 绑定用户部门角色
* @param filter
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/bind/deptrole/list")
public ResultDomain<TbSysUserDeptRole> getBindUserDeptRoleList(@RequestBody TbSysUserDeptRole filter) {
return userService.getBindUserDeptRoleList(filter);
}
/**
* @description 绑定用户部门角色
* @param filter
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/bind/deptrole")
public ResultDomain<UserDeptRoleVO> bindUserDeptRole(@RequestBody UserDeptRoleVO userDeptRoleVO) {
return userService.bindUserDeptRole(userDeptRoleVO);
}
/**
* @description 解绑用户部门角色
* @param filter
* @author yslg
* @since 2025-10-09
*/
@PostMapping("/unbind/deptrole")
public ResultDomain<UserDeptRoleVO> unbindUserDeptRole(@RequestBody UserDeptRoleVO userDeptRoleVO) {
return userService.unbindUserDeptRole(userDeptRoleVO);
}

View File

@@ -1,6 +1,5 @@
package org.xyzh.system.department.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -8,11 +7,17 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.dept.TbSysDept;
import org.xyzh.common.dto.dept.TbSysDeptRole;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.system.department.service.SysDepartmentService;
import org.xyzh.system.mapper.DepartmentMapper;
import org.xyzh.system.mapper.DeptRoleMapper;
import org.xyzh.system.utils.LoginUtil;
import java.util.List;
import java.util.ArrayList;
import java.util.Date;
/**
@@ -30,18 +35,18 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private DeptRoleMapper deptRoleMapper;
@Override
public ResultDomain<TbSysDept> getAllDepartments() {
ResultDomain<TbSysDept> resultDomain = new ResultDomain<>();
try {
logger.info("开始查询所有部门");
LambdaQueryWrapper<TbSysDept> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysDept::getDeleted, false)
.orderByAsc(TbSysDept::getCreateTime);
List<TbSysDept> departments = departmentMapper.selectList(queryWrapper);
TbSysDept filter = new TbSysDept();
filter.setDeleted(false);
List<TbSysDept> departments = departmentMapper.selectDepts(filter);
logger.info("查询所有部门完成,共找到{}个部门", departments.size());
resultDomain.success("查询成功", departments);
@@ -54,6 +59,34 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
}
}
@Override
public ResultDomain<TbSysDept> getDeptList(TbSysDept filter) {
ResultDomain<TbSysDept> resultDomain = new ResultDomain<>();
try {
logger.info("开始查询部门列表");
List<TbSysDept> departments = departmentMapper.selectDepts(filter);
if (departments.isEmpty()) {
resultDomain.fail("未找到部门");
return resultDomain;
}
resultDomain.success("查询成功", departments);
return resultDomain;
} catch (Exception e) {
logger.error("查询部门列表失败", e);
resultDomain.fail("查询部门列表失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<TbSysDeptRole> getDeptByRoleList() {
ResultDomain<TbSysDeptRole> resultDomain = new ResultDomain<>();
List<TbSysDeptRole> deptRoles = deptRoleMapper.selectDeptRoleList();
resultDomain.success("查询成功", deptRoles);
return resultDomain;
}
@Override
public ResultDomain<TbSysDept> getDepartmentById(String deptId) {
ResultDomain<TbSysDept> resultDomain = new ResultDomain<>();
@@ -65,11 +98,10 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
return resultDomain;
}
LambdaQueryWrapper<TbSysDept> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysDept::getDeptID, deptId)
.eq(TbSysDept::getDeleted, false);
TbSysDept department = departmentMapper.selectOne(queryWrapper);
TbSysDept filter = new TbSysDept();
filter.setDeptID(deptId);
List<TbSysDept> departments = departmentMapper.selectDepts(filter);
TbSysDept department = departments.isEmpty() ? null : departments.get(0);
if (department == null) {
logger.warn("未找到部门:{}", deptId);
@@ -137,7 +169,7 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
department.setDeleted(false);
// 插入数据库
int result = departmentMapper.insert(department);
int result = departmentMapper.insertDept(department);
if (result > 0) {
logger.info("创建部门成功:{}", department.getName());
@@ -194,7 +226,7 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
department.setUpdateTime(new Date());
// 更新数据库
int result = departmentMapper.updateById(department);
int result = departmentMapper.updateDept(department);
if (result > 0) {
logger.info("更新部门成功:{}", department.getDeptID());
@@ -243,7 +275,7 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
department.setDeleted(true);
department.setDeleteTime(new Date());
int result = departmentMapper.updateById(department);
int result = departmentMapper.deleteDept(department);
if (result > 0) {
logger.info("删除部门成功:{}", deptId);
@@ -286,4 +318,91 @@ public class SysDepartmentServiceImpl implements SysDepartmentService {
return resultDomain;
}
}
@Override
public ResultDomain<TbSysRole> getDeptByRole(String deptId) {
ResultDomain<TbSysRole> resultDomain = new ResultDomain<>();
try {
logger.info("开始查询部门绑定角色:{}", deptId);
List<TbSysRole> roles = deptRoleMapper.selectDeptRole(deptId);
resultDomain.success("查询成功", roles);
return resultDomain;
} catch (Exception e) {
logger.error("查询部门绑定角色失败", e);
resultDomain.fail("查询部门绑定角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<TbSysDeptRole> bindDeptRole(List<String> deptIDs, List<String> roleIDs) {
ResultDomain<TbSysDeptRole> resultDomain = new ResultDomain<>();
TbSysUser user = LoginUtil.getCurrentUser();
if (user == null) {
resultDomain.fail("当前用户未登录");
return resultDomain;
}
try {
logger.info("开始绑定部门角色:{}", deptIDs);
List<TbSysDeptRole> deptRoles = new ArrayList<>();
Date now = new Date();
for (String deptID : deptIDs) {
for (String roleID : roleIDs) {
TbSysDeptRole deptRole = new TbSysDeptRole();
deptRole.setID(IDUtils.generateID());
deptRole.setDeptID(deptID);
deptRole.setRoleID(roleID);
deptRole.setCreateTime(now);
deptRole.setDeleted(false);
deptRole.setCreator(user.getID());
deptRoles.add(deptRole);
}
}
int result = deptRoleMapper.batchBindDeptRole(deptRoles);
if (result > 0) {
logger.info("绑定部门角色成功:{}", deptIDs);
resultDomain.success("绑定部门角色成功", deptRoles);
return resultDomain;
} else {
logger.warn("绑定部门角色失败:{}", deptIDs);
resultDomain.fail("绑定部门角色失败");
return resultDomain;
}
} catch (Exception e) {
logger.error("绑定部门角色失败", e);
resultDomain.fail("绑定部门角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<TbSysDeptRole> unbindDeptRole(List<String> deptIDs, List<String> roleIDs) {
ResultDomain<TbSysDeptRole> resultDomain = new ResultDomain<>();
try {
logger.info("开始解绑部门角色:{}", deptIDs);
List<TbSysDeptRole> deptRoles = new ArrayList<>();
for (String deptID : deptIDs) {
for (String roleID : roleIDs) {
TbSysDeptRole deptRole = new TbSysDeptRole();
deptRole.setDeptID(deptID);
deptRole.setRoleID(roleID);
deptRoles.add(deptRole);
}
}
int result = deptRoleMapper.batchUnbindDeptRole(deptRoles);
if (result > 0) {
logger.info("解绑部门角色成功:{}", deptIDs);
resultDomain.success("解绑部门角色成功", deptRoles);
return resultDomain;
} else {
logger.warn("解绑部门角色失败:{}", deptIDs);
resultDomain.fail("解绑部门角色失败");
return resultDomain;
}
} catch (Exception e) {
logger.error("解绑部门角色失败", e);
resultDomain.fail("解绑部门角色失败:" + e.getMessage());
return resultDomain;
}
}
}

View File

@@ -17,6 +17,15 @@ import java.util.List;
@Mapper
public interface DepartmentMapper extends BaseMapper<TbSysDept> {
/**
* @description 查询部门列表
* @param filter 过滤条件
* @return List<TbSysDept> 部门列表
* @author yslg
* @since 2025-10-06
*/
List<TbSysDept> selectDepts(TbSysDept filter);
/**
* @description 根据父部门ID查询子部门列表
* @param parentId 父部门ID
@@ -54,12 +63,29 @@ public interface DepartmentMapper extends BaseMapper<TbSysDept> {
List<TbSysDept> selectDeptTree();
/**
* @description 批量删除部门(逻辑删除)
* @param deptIds 部门ID列表
* @param updater 更新人
* @description 插入部门
* @param department 部门
* @return int 影响行数
* @author yslg
* @since 2025-09-28
*/
int batchDeleteByIds(@Param("deptIds") List<String> deptIds, @Param("updater") String updater);
int insertDept(TbSysDept department);
/**
* @description 更新部门
* @param department 部门
* @return int 影响行数
* @author yslg
* @since 2025-09-28
*/
int updateDept(TbSysDept department);
/**
* @description 删除部门
* @param department 部门
* @return int 影响行数
* @author yslg
* @since 2025-09-28
*/
int deleteDept(TbSysDept department);
}

View File

@@ -0,0 +1,42 @@
package org.xyzh.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.dept.TbSysDeptRole;
import org.xyzh.common.dto.role.TbSysRole;
@Mapper
public interface DeptRoleMapper extends BaseMapper<TbSysDeptRole> {
/**
* @description 查询部门绑定角色
* @param deptId 部门ID
* @return List<TbSysRole> 角色列表
* @author yslg
* @since 2025-09-28
*/
List<TbSysRole> selectDeptRole(String deptId);
/**
* @description 查询部门绑定角色
* @return List<TbSysDeptRole> 部门角色列表
* @author yslg
* @since 2025-10-06
*/
List<TbSysDeptRole> selectDeptRoleList();
/**
* @description 批量绑定部门角色
* @param deptRoles 部门角色列表
* @return int 影响行数
* @author yslg
* @since 2025-09-28
*/
int batchBindDeptRole(@Param("deptRoles") List<TbSysDeptRole> deptRoles);
int batchUnbindDeptRole(@Param("deptRoles") List<TbSysDeptRole> deptRoles);
}

View File

@@ -26,6 +26,42 @@ public interface RoleMapper extends BaseMapper<TbSysRole> {
*/
List<TbSysRole> selectAllRoles();
/**
* @description 根据过滤条件查询角色列表
* @param filter 过滤条件
* @return List<TbSysRole> 角色列表
* @author yslg
* @since 2025-10-09
*/
List<TbSysRole> selectRole(TbSysRole filter);
/**
* @description 插入角色
* @param role 角色
* @return int 影响行数
* @author yslg
* @since 2025-10-09
*/
int insertRole(TbSysRole role);
/**
* @description 更新角色
* @param role 角色
* @return int 影响行数
* @author yslg
* @since 2025-10-09
*/
int updateRole(TbSysRole role);
/**
* @description 删除角色
* @param role 角色
* @return int 影响行数
* @author yslg
* @since 2025-10-09
*/
int deleteRole(TbSysRole role);
/**
* @description 根据用户ID查询角色列表
* @param userId 用户ID

View File

@@ -3,6 +3,7 @@ package org.xyzh.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.permission.TbSysPermission;
import org.xyzh.common.dto.role.TbSysRolePermission;
import java.util.List;
@@ -53,7 +54,7 @@ public interface RolePermissionMapper extends BaseMapper<TbSysRolePermission> {
* @author yslg
* @since 2025-10-07
*/
List<TbSysRolePermission> selectByRoleId(@Param("roleId") String roleId);
List<TbSysPermission> selectByRoleId(@Param("roleId") String roleId);
/**
* @description 根据权限ID查询角色关联列表

View File

@@ -1,10 +1,39 @@
package org.xyzh.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.user.TbSysUserDeptRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface UserDeptRoleMapper extends BaseMapper<TbSysUserDeptRole> {
/**
* @description 查询用户部门角色
* @param userId 用户ID
* @return List<TbSysUserDeptRole> 用户部门角色列表
* @author yslg
* @since 2025-10-09
*/
List<TbSysUserDeptRole> selectByFilter(TbSysUserDeptRole filter);
/**
* @description 绑定用户
* @param userDeptRoles 用户角色列表
* @return int 影响行数
* @author yslg
* @since 2025-10-09
*/
int bindUser(@Param("userDeptRoles") List<TbSysUserDeptRole> userDeptRoles);
/**
* @description 解绑用户
* @param userDeptRoles 用户角色列表
* @return int 影响行数
* @author yslg
* @since 2025-10-09
*/
int unbindUser(@Param("userDeptRoles") List<TbSysUserDeptRole> userDeptRoles);
}

View File

@@ -1,10 +1,37 @@
package org.xyzh.system.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.user.TbSysUserInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface UserInfoMapper extends BaseMapper<TbSysUserInfo> {
/**
* @description 插入用户信息
* @param userInfo 用户信息
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int insertUserInfo(@Param("userInfo") TbSysUserInfo userInfo);
/**
* @description 更新用户信息
* @param userInfo 用户信息
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int updateUserInfo(@Param("userInfo") TbSysUserInfo userInfo);
/**
* @description 删除用户信息
* @param userId 用户ID
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int deleteUserInfo(@Param("userID") String userId);
}

View File

@@ -18,6 +18,33 @@ import java.util.List;
@Mapper
public interface UserMapper extends BaseMapper<TbSysUser> {
/**
* @description 插入用户
* @param user 用户信息
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int insertUser(@Param("user") TbSysUser user);
/**
* @description 更新用户
* @param user 用户信息
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int updateUser(@Param("user") TbSysUser user);
/**
* @description 删除用户
* @param userID 用户ID
* @return int 影响行数
* @author yslg
* @since 2025-10-06
*/
int deleteUser(@Param("userID") String userID);
/**
* @description 根据用户名查询用户
* @param username 用户名
@@ -52,7 +79,7 @@ public interface UserMapper extends BaseMapper<TbSysUser> {
* @author yslg
* @since 2025-09-28
*/
TbSysUser selectByFilter(@Param("filter") TbSysUser filter);
List<TbSysUser> selectByFilter(@Param("filter") TbSysUser filter);
/**
* @description 查询用户列表(分页)

View File

@@ -1,17 +1,18 @@
package org.xyzh.system.role.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.dept.TbSysDeptRole;
import org.xyzh.common.dto.permission.TbSysPermission;
import org.xyzh.common.dto.role.TbSysRole;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.DeptRoleVO;
import org.xyzh.system.mapper.RolePermissionMapper;
import org.xyzh.system.mapper.RoleMapper;
import org.xyzh.system.mapper.UserDeptRoleMapper;
import org.xyzh.system.role.service.SysRoleService;
import java.util.Date;
@@ -32,6 +33,12 @@ public class SysRoleServiceImpl implements SysRoleService {
@Autowired
private RoleMapper roleMapper;
@Autowired
private RolePermissionMapper rolePermissionMapper;
@Autowired
private UserDeptRoleMapper userDeptRoleMapper;
@Override
public ResultDomain<TbSysRole> getAllRoles() {
ResultDomain<TbSysRole> resultDomain = new ResultDomain<>();
@@ -53,58 +60,19 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public ResultDomain<TbSysRole> getRoleById(String roleId) {
public ResultDomain<TbSysRole> getRoleList(TbSysRole filter) {
ResultDomain<TbSysRole> resultDomain = new ResultDomain<>();
try {
logger.info("开始根据ID查询角色:{}", roleId);
logger.info("开始根据过滤条件查询角色列表{}", filter);
if (!StringUtils.hasText(roleId)) {
resultDomain.fail("角色ID不能为空");
return resultDomain;
}
List<TbSysRole> roles = roleMapper.selectRole(filter);
LambdaQueryWrapper<TbSysRole> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysRole::getRoleID, roleId)
.eq(TbSysRole::getDeleted, false);
TbSysRole role = roleMapper.selectOne(queryWrapper);
if (role == null) {
logger.warn("未找到角色:{}", roleId);
resultDomain.fail("未找到指定角色");
return resultDomain;
}
logger.info("根据ID查询角色完成{}", roleId);
resultDomain.success("查询成功", role);
return resultDomain;
} catch (Exception e) {
logger.error("根据ID查询角色失败{}", roleId, e);
resultDomain.fail("查询角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<DeptRoleVO> getDeptRolesByUserId(String userId) {
ResultDomain<DeptRoleVO> resultDomain = new ResultDomain<>();
try {
logger.info("开始根据用户ID查询部门角色列表{}", userId);
if (!StringUtils.hasText(userId)) {
resultDomain.fail("用户ID不能为空");
return resultDomain;
}
List<DeptRoleVO> roles = roleMapper.selectDeptRolesByUserId(userId);
logger.info("根据用户ID查询部门角色列表完成共找到{}个部门角色", roles.size());
logger.info("查询角色列表完成,共找到{}个角色", roles.size());
resultDomain.success("查询成功", roles);
return resultDomain;
} catch (Exception e) {
logger.error("根据用户ID查询部门角色列表失败:{}", userId, e);
logger.error("根据过滤条件查询角色列表失败:{}", filter, e);
resultDomain.fail("查询角色失败:" + e.getMessage());
return resultDomain;
}
@@ -141,7 +109,7 @@ public class SysRoleServiceImpl implements SysRoleService {
role.setDeleted(false);
// 插入数据库
int result = roleMapper.insert(role);
int result = roleMapper.insertRole(role);
if (result > 0) {
logger.info("创建角色成功:{}", role.getName());
@@ -198,7 +166,7 @@ public class SysRoleServiceImpl implements SysRoleService {
role.setUpdateTime(new Date());
// 更新数据库
int result = roleMapper.updateById(role);
int result = roleMapper.updateRole(role);
if (result > 0) {
logger.info("更新角色成功:{}", role.getRoleID());
@@ -218,49 +186,100 @@ public class SysRoleServiceImpl implements SysRoleService {
}
@Override
public ResultDomain<TbSysRole> deleteRole(String roleId) {
public ResultDomain<TbSysRole> deleteRole(TbSysRole role) {
ResultDomain<TbSysRole> resultDomain = new ResultDomain<>();
try {
logger.info("开始删除角色:{}", roleId);
logger.info("开始删除角色:{}", role.getRoleID());
if (!StringUtils.hasText(roleId)) {
if (!StringUtils.hasText(role.getRoleID())) {
resultDomain.fail("角色ID不能为空");
return resultDomain;
}
// 检查角色是否存在
ResultDomain<TbSysRole> existResult = getRoleById(roleId);
ResultDomain<TbSysRole> existResult = getRoleById(role.getRoleID());
if (!existResult.isSuccess()) {
resultDomain.fail(existResult.getMessage());
return resultDomain;
}
// TODO: 检查角色是否被用户使用,如果被使用则不能删除
// 逻辑删除
TbSysRole role = existResult.getData();
role.setDeleted(true);
role.setDeleteTime(new Date());
int result = roleMapper.updateById(role);
int result = roleMapper.deleteRole(role);
if (result > 0) {
logger.info("删除角色成功:{}", roleId);
logger.info("删除角色成功:{}", role.getRoleID());
resultDomain.success("删除角色成功", role);
return resultDomain;
} else {
logger.warn("删除角色失败:{}", roleId);
logger.warn("删除角色失败:{}", role.getRoleID());
resultDomain.fail("删除角色失败");
return resultDomain;
}
} catch (Exception e) {
logger.error("删除角色异常:{}", roleId, e);
logger.error("删除角色异常:{}", role.getRoleID(), e);
resultDomain.fail("删除角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<TbSysRole> getRoleById(String roleId) {
ResultDomain<TbSysRole> resultDomain = new ResultDomain<>();
try {
logger.info("开始根据ID查询角色{}", roleId);
if (!StringUtils.hasText(roleId)) {
resultDomain.fail("角色ID不能为空");
return resultDomain;
}
TbSysRole filter = new TbSysRole();
filter.setRoleID(roleId);
filter.setDeleted(false);
List<TbSysRole> roles = roleMapper.selectRole(filter);
TbSysRole role = roles.isEmpty() ? null : roles.get(0);
if (role == null) {
logger.warn("未找到角色:{}", roleId);
resultDomain.fail("未找到指定角色");
return resultDomain;
}
logger.info("根据ID查询角色完成{}", roleId);
resultDomain.success("查询成功", role);
return resultDomain;
} catch (Exception e) {
logger.error("根据ID查询角色失败{}", roleId, e);
resultDomain.fail("查询角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<DeptRoleVO> getDeptRolesByUserId(String userId) {
ResultDomain<DeptRoleVO> resultDomain = new ResultDomain<>();
try {
logger.info("开始根据用户ID查询部门角色列表{}", userId);
if (!StringUtils.hasText(userId)) {
resultDomain.fail("用户ID不能为空");
return resultDomain;
}
List<DeptRoleVO> roles = roleMapper.selectDeptRolesByUserId(userId);
logger.info("根据用户ID查询部门角色列表完成共找到{}个部门角色", roles.size());
resultDomain.success("查询成功", roles);
return resultDomain;
} catch (Exception e) {
logger.error("根据用户ID查询部门角色列表失败{}", userId, e);
resultDomain.fail("查询角色失败:" + e.getMessage());
return resultDomain;
}
}
@Override
public ResultDomain<Boolean> checkRoleNameExists(String roleName, String excludeId) {
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
@@ -312,7 +331,7 @@ public class SysRoleServiceImpl implements SysRoleService {
TbSysRole role = existResult.getData();
role.setUpdateTime(new Date());
int result = roleMapper.updateById(role);
int result = roleMapper.updateRole(role);
if (result > 0) {
logger.info("修改角色状态成功:{}", roleId);
@@ -330,4 +349,28 @@ public class SysRoleServiceImpl implements SysRoleService {
return resultDomain;
}
}
@Override
public ResultDomain<TbSysPermission> getRolePermission(String roleId) {
ResultDomain<TbSysPermission> resultDomain = new ResultDomain<>();
try {
logger.info("开始获取角色权限:{}", roleId);
if (!StringUtils.hasText(roleId)) {
resultDomain.fail("角色ID不能为空");
return resultDomain;
}
List<TbSysPermission> rolePermissions = rolePermissionMapper.selectByRoleId(roleId);
logger.info("获取角色权限完成:{}", roleId);
resultDomain.success("获取角色权限成功", rolePermissions);
return resultDomain;
} catch (Exception e) {
logger.error("获取角色权限异常:{}", roleId, e);
resultDomain.fail("获取角色权限失败:" + e.getMessage());
return resultDomain;
}
}
}

View File

@@ -1,6 +1,5 @@
package org.xyzh.system.user.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,13 +11,17 @@ import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserDeptRole;
import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.UserDeptRoleVO;
import org.xyzh.system.mapper.UserMapper;
import org.xyzh.system.mapper.UserInfoMapper;
import org.xyzh.system.mapper.UserDeptRoleMapper;
import org.xyzh.system.user.service.SysUserService;
import org.xyzh.system.utils.LoginUtil;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @description SysUserServiceImpl.java文件描述 系统用户服务实现类
@@ -54,22 +57,26 @@ public class SysUserServiceImpl implements SysUserService {
resultDomain.fail("用户已存在");
return resultDomain;
}
Date now = new Date();
user.setID(IDUtils.generateID());
user.setCreateTime(now);
user.setDeleted(false);
// 创建用户信息
TbSysUserInfo userInfo = new TbSysUserInfo();
userInfo.setUserID(user.getID());
userInfo.setCreateTime(new Date());
userInfo.setCreateTime(now);
userInfo.setAvatar("default");
TbSysUserDeptRole userDeptRole = new TbSysUserDeptRole();
userDeptRole.setUserID(user.getID());
userDeptRole.setDeptID("-1");
userDeptRole.setRoleID("freedom");
userDeptRole.setCreateTime(new Date());
userDeptRole.setCreateTime(now);
userMapper.insert(user);
userInfoMapper.insert(userInfo);
userDeptRoleMapper.insert(userDeptRole);
userMapper.insertUser(user);
userInfoMapper.insertUserInfo(userInfo);
userDeptRoleMapper.bindUser(Arrays.asList(userDeptRole));
resultDomain.success("注册用户成功", user);
return resultDomain;
} catch (Exception e) {
logger.error("注册用户失败:{}", user.getUsername(), e);
@@ -100,11 +107,8 @@ public class SysUserServiceImpl implements SysUserService {
try {
logger.info("开始查询所有用户");
LambdaQueryWrapper<TbSysUser> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysUser::getDeleted, false)
.orderByAsc(TbSysUser::getCreateTime);
List<TbSysUser> users = userMapper.selectList(queryWrapper);
TbSysUser filter = new TbSysUser();
List<TbSysUser> users = userMapper.selectByFilter(filter);
logger.info("查询所有用户完成,共找到{}个用户", users.size());
resultDomain.success("查询成功", users);
@@ -128,20 +132,20 @@ public class SysUserServiceImpl implements SysUserService {
return resultDomain;
}
LambdaQueryWrapper<TbSysUser> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysUser::getID, userId)
.eq(TbSysUser::getDeleted, false);
TbSysUser filter = new TbSysUser();
filter.setID(userId);
filter.setDeleted(false);
TbSysUser user = userMapper.selectOne(queryWrapper);
List<TbSysUser> users = userMapper.selectByFilter(filter);
if (user == null) {
if (users.isEmpty()) {
logger.warn("未找到用户:{}", userId);
resultDomain.fail("未找到指定用户");
return resultDomain;
}
logger.info("根据ID查询用户完成{}", userId);
resultDomain.success("查询成功", user);
resultDomain.success("查询成功", users.get(0));
return resultDomain;
} catch (Exception e) {
@@ -193,26 +197,26 @@ public class SysUserServiceImpl implements SysUserService {
}
// 检查至少有一个查询条件
boolean hasFilter = StringUtils.hasText(filter.getID()) ||
StringUtils.hasText(filter.getUsername()) ||
StringUtils.hasText(filter.getEmail()) ||
StringUtils.hasText(filter.getPhone());
// boolean hasFilter = StringUtils.hasText(filter.getID()) ||
// StringUtils.hasText(filter.getUsername()) ||
// StringUtils.hasText(filter.getEmail()) ||
// StringUtils.hasText(filter.getPhone());
if (!hasFilter) {
resultDomain.fail("至少需要提供一个查询条件");
return resultDomain;
}
// if (!hasFilter) {
// resultDomain.fail("至少需要提供一个查询条件");
// return resultDomain;
// }
TbSysUser user = userMapper.selectByFilter(filter);
List<TbSysUser> users = userMapper.selectByFilter(filter);
if (user == null) {
if (users.isEmpty()) {
logger.warn("未找到符合条件的用户:{}", filter);
resultDomain.fail("未找到指定用户");
return resultDomain;
}
logger.info("根据过滤条件查询用户完成:{}", filter);
resultDomain.success("查询成功", user);
resultDomain.success("查询成功", users);
return resultDomain;
} catch (Exception e) {
@@ -222,6 +226,7 @@ public class SysUserServiceImpl implements SysUserService {
}
}
@Transactional
@Override
public ResultDomain<TbSysUser> createUser(TbSysUser user) {
ResultDomain<TbSysUser> resultDomain = new ResultDomain<>();
@@ -267,15 +272,15 @@ public class SysUserServiceImpl implements SysUserService {
}
// 插入数据库
int result = userMapper.insert(user);
ResultDomain<TbSysUser> result = registerUser(user);
if (result > 0) {
if (result.isSuccess()) {
logger.info("创建用户成功:{}", user.getUsername());
resultDomain.success("创建用户成功", user);
resultDomain.success("创建用户成功", result.getData());
return resultDomain;
} else {
logger.warn("创建用户失败:{}", user.getUsername());
resultDomain.fail("创建用户失败");
resultDomain.fail("创建用户失败" + result.getMessage());
}
return resultDomain;
@@ -337,7 +342,7 @@ public class SysUserServiceImpl implements SysUserService {
user.setUpdateTime(new Date());
// 更新数据库
int result = userMapper.updateById(user);
int result = userMapper.updateUser(user);
if (result > 0) {
logger.info("更新用户成功:{}", user.getID());
@@ -379,7 +384,7 @@ public class SysUserServiceImpl implements SysUserService {
user.setDeleted(true);
user.setDeleteTime(new Date());
int result = userMapper.updateById(user);
int result = userMapper.updateUser(user);
if (result > 0) {
logger.info("删除用户成功:{}", userId);
@@ -398,6 +403,74 @@ public class SysUserServiceImpl implements SysUserService {
}
}
@Override
public ResultDomain<TbSysUserDeptRole> getBindUserDeptRoleList(TbSysUserDeptRole filter) {
ResultDomain<TbSysUserDeptRole> resultDomain = new ResultDomain<>();
List<TbSysUserDeptRole> userDeptRoles = userDeptRoleMapper.selectByFilter(filter);
resultDomain.success("查询成功", userDeptRoles);
return resultDomain;
}
@Transactional
@Override
public ResultDomain<UserDeptRoleVO> bindUserDeptRole(UserDeptRoleVO userDeptRoleVO) {
ResultDomain<UserDeptRoleVO> resultDomain = new ResultDomain<>();
TbSysUser currentUser = LoginUtil.getCurrentUser();
try {
List<TbSysUserDeptRole> userDeptRoles = new ArrayList<>();
logger.info("开始绑定用户部门角色:{}", userDeptRoleVO.getID());
Date now = new Date();
for (TbSysUser user : userDeptRoleVO.getUsers()) {
for(TbSysUserDeptRole userDeptRole : userDeptRoleVO.getUserDeptRoles()) {
userDeptRole.setID(IDUtils.generateID());
userDeptRole.setUserID(user.getID());
userDeptRole.setCreateTime(now);
userDeptRole.setCreator(currentUser.getID());
userDeptRoles.add(userDeptRole);
}
}
userDeptRoleMapper.bindUser(userDeptRoles);
} catch (Exception e) {
logger.error("绑定用户部门角色异常:{}", userDeptRoleVO.getID(), e);
resultDomain.fail("绑定用户部门角色失败:" + e.getMessage());
return resultDomain;
}
return resultDomain;
}
@Transactional
@Override
public ResultDomain<UserDeptRoleVO> unbindUserDeptRole(UserDeptRoleVO userDeptRoleVO) {
ResultDomain<UserDeptRoleVO> resultDomain = new ResultDomain<>();
TbSysUser currentUser = LoginUtil.getCurrentUser();
try {
List<TbSysUserDeptRole> userDeptRoles = new ArrayList<>();
logger.info("开始解绑用户部门角色:{}", userDeptRoleVO.getID());
Date now = new Date();
for(TbSysUser user:userDeptRoleVO.getUsers()) {
for(TbSysUserDeptRole userDeptRole : userDeptRoleVO.getUserDeptRoles()) {
userDeptRole.setUserID(user.getID());
userDeptRoles.add(userDeptRole);
}
}
int result = userDeptRoleMapper.unbindUser(userDeptRoles);
if(result > 0) {
logger.info("解绑用户部门角色成功:{}", userDeptRoleVO.getID());
resultDomain.success("解绑用户部门角色成功", userDeptRoleVO);
} else {
logger.warn("解绑用户部门角色失败:{}", userDeptRoleVO.getID());
resultDomain.fail("解绑用户部门角色失败");
}
return resultDomain;
} catch (Exception e) {
logger.error("解绑用户部门角色异常:{}", userDeptRoleVO.getID(), e);
resultDomain.fail("解绑用户部门角色失败:" + e.getMessage());
}
return resultDomain;
}
@Override
public ResultDomain<Boolean> checkUsernameExists(String username, String excludeId) {
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
@@ -408,16 +481,15 @@ public class SysUserServiceImpl implements SysUserService {
resultDomain.fail("用户名不能为空");
return resultDomain;
}
LambdaQueryWrapper<TbSysUser> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysUser::getUsername, username)
.eq(TbSysUser::getDeleted, false);
TbSysUser filter = new TbSysUser();
if (StringUtils.hasText(excludeId)) {
queryWrapper.ne(TbSysUser::getID, excludeId);
filter.setID(excludeId);
}
filter.setUsername(username);
filter.setDeleted(false);
long count = userMapper.selectCount(queryWrapper);
long count = userMapper.selectByFilter(filter).size();
boolean exists = count > 0;
logger.info("用户名存在性检查完成:{},存在:{}", username, exists);
@@ -442,15 +514,15 @@ public class SysUserServiceImpl implements SysUserService {
return resultDomain;
}
LambdaQueryWrapper<TbSysUser> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(TbSysUser::getEmail, email)
.eq(TbSysUser::getDeleted, false);
TbSysUser filter = new TbSysUser();
filter.setEmail(email);
filter.setDeleted(false);
if (StringUtils.hasText(excludeId)) {
queryWrapper.ne(TbSysUser::getID, excludeId);
filter.setID(excludeId);
}
long count = userMapper.selectCount(queryWrapper);
long count = userMapper.selectByFilter(filter).size();
boolean exists = count > 0;
logger.info("邮箱存在性检查完成:{},存在:{}", email, exists);
@@ -510,7 +582,7 @@ public class SysUserServiceImpl implements SysUserService {
user.setStatus(status);
user.setUpdateTime(new Date());
int result = userMapper.updateById(user);
int result = userMapper.updateUser(user);
if (result > 0) {
logger.info("修改用户状态成功:{}", userId);
@@ -557,7 +629,7 @@ public class SysUserServiceImpl implements SysUserService {
user.setPassword(newPassword);
user.setUpdateTime(new Date());
int result = userMapper.updateById(user);
int result = userMapper.updateUser(user);
if (result > 0) {
logger.info("重置用户密码成功:{}", userId);

View File

@@ -39,6 +39,16 @@
</where>
</sql>
<!-- selectDepts -->
<select id="selectDepts">
SELECT
<include refid="Base_Column_List"/>
FROM tb_sys_dept
<include refid="Where_Clause"/>
ORDER BY dept_id,create_time DESC
</select>
<!-- 根据父部门ID查询子部门列表 -->
<select id="selectByParentId" resultMap="BaseResultMap">
SELECT
@@ -46,7 +56,7 @@
FROM tb_sys_dept
WHERE deleted = 0
AND parent_id = #{parentId}
ORDER BY create_time DESC
ORDER BY dept_id,create_time DESC
</select>
<!-- 检查部门名称是否存在 -->
@@ -92,7 +102,7 @@
delete_time = NOW(),
updater = #{updater}
WHERE deleted = 0
AND id IN
AND dept_id IN
<foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
@@ -134,7 +144,7 @@
<if test="updater != null">updater = #{updater},</if>
update_time = NOW()
</set>
WHERE id = #{id} AND deleted = 0
WHERE dept_id = #{deptID} AND deleted = 0
</update>
<!-- 根据ID删除逻辑删除 -->
@@ -142,7 +152,7 @@
UPDATE tb_sys_dept
SET deleted = 1,
delete_time = NOW()
WHERE id = #{id} AND deleted = 0
WHERE dept_id = #{deptID} AND deleted = 0
</update>
</mapper>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.xyzh.system.mapper.DeptRoleMapper">
<!-- 基础结果映射 -->
<resultMap id="BaseResultMap" type="org.xyzh.common.dto.dept.TbSysDeptRole">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="dept_id" property="deptID" jdbcType="VARCHAR"/>
<result column="role_id" property="roleID" jdbcType="VARCHAR"/>
<result column="creator" property="creator" jdbcType="VARCHAR"/>
<result column="updater" property="updater" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
</resultMap>
<!-- 基础字段 -->
<sql id="Base_Column_List">
id, dept_id, role_id, creator, updater,
create_time, update_time, delete_time, deleted
</sql>
<sql id="Where_Clause">
<where>
deleted = 0
<if test="deptID != null and deptID != ''">
AND dept_id = #{deptID}
</if>
</where>
</sql>
<!-- selectDeptRole -->
<select id="selectDeptRole">
SELECT
<include refid="Base_Column_List"/>
FROM tb_sys_dept_role
<include refid="Where_Clause"/>
ORDER BY create_time DESC
</select>
<select id="selectDeptRoleList">
SELECT
<include refid="Base_Column_List"/>
FROM tb_sys_dept_role
ORDER BY dept_id, role_id, create_time DESC
</select>
<!-- batchBindDeptRole -->
<insert id="batchBindDeptRole">
INSERT INTO tb_sys_dept_role (id, dept_id, role_id, creator, create_time, deleted)
VALUES
<foreach collection="deptRoles" item="deptRole" separator=",">
(#{deptRole.id}, #{deptRole.deptID}, #{deptRole.roleID}, #{deptRole.creator}, #{deptRole.createTime}, 0)
</foreach>
</insert>
<!-- batchUnbindDeptRole -->
<delete id="batchUnbindDeptRole">
DELETE FROM tb_sys_dept_role
WHERE (dept_id, role_id) IN
<foreach collection="deptRoles" item="deptRole" open="(" separator="," close=")">
(#{deptRole.deptID}, #{deptRole.roleID})
</foreach>
</delete>
</mapper>

View File

@@ -33,13 +33,9 @@
<!-- 批量解绑菜单权限(真删除) -->
<delete id="batchUnbindMenuPermission">
DELETE FROM tb_sys_menu_permission
WHERE menu_id IN
WHERE (menu_id, permission_id) IN
<foreach collection="menuPermissions" item="menuPermission" open="(" separator="," close=")">
#{menuPermission.menuID}
</foreach>
AND permission_id IN
<foreach collection="menuPermissions" item="menuPermission" open="(" separator="," close=")">
#{menuPermission.permissionID}
(#{menuPermission.menuID}, #{menuPermission.permissionID})
</foreach>
AND deleted = 0
</delete>

View File

@@ -58,14 +58,11 @@
<sql id="Where_Clause">
<where>
deleted = 0
<if test="roleName != null and roleName != ''">
AND role_name LIKE CONCAT('%', #{roleName}, '%')
<if test="roleID != null and roleID != ''">
AND role_id = #{roleID}
</if>
<if test="roleCode != null and roleCode != ''">
AND role_code = #{roleCode}
</if>
<if test="status != null">
AND status = #{status}
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
</sql>
@@ -80,6 +77,36 @@
ORDER BY role_id, create_time ASC
</select>
<!-- 根据过滤条件查询角色列表 -->
<select id="selectRole" resultMap="tbSysRoleResultMap">
SELECT
<include refid="TbSysRole_Column_List"/>
FROM tb_sys_role
<include refid="Where_Clause"/>
ORDER BY role_id, create_time ASC
</select>
<!-- 插入角色 -->
<insert id="insertRole" parameterType="org.xyzh.common.dto.role.TbSysRole">
INSERT INTO tb_sys_role
(id, role_id, name, description, creator, create_time)
VALUES (#{id}, #{roleID}, #{name}, #{description}, #{creator}, #{createTime})
</insert>
<!-- 更新角色 -->
<update id="updateRole" parameterType="org.xyzh.common.dto.role.TbSysRole">
UPDATE tb_sys_role
(name, description, updater, update_time)
VALUES (#{name}, #{description}, #{updater}, #{updateTime})
WHERE role_id = #{roleID}
</update>
<!-- 删除角色 -->
<delete id="deleteRole" parameterType="org.xyzh.common.dto.role.TbSysRole">
DELETE FROM tb_sys_role
WHERE role_id = #{roleID}
</delete>
<!-- 根据用户ID查询角色列表 -->
<select id="selectDeptRolesByUserId" resultMap="deptRoleVOResultMap">
SELECT
@@ -107,7 +134,7 @@
SELECT COUNT(1)
FROM tb_sys_role
WHERE deleted = 0
AND role_name = #{roleName}
AND name = #{roleName}
<if test="excludeId != null and excludeId != ''">
AND id != #{excludeId}
</if>
@@ -137,55 +164,7 @@
</foreach>
</update>
<!-- 插入角色 -->
<insert id="insert" parameterType="org.xyzh.common.dto.role.TbSysRole">
INSERT INTO tb_sys_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="roleID != null">role_id,</if>
<if test="roleName != null">role_name,</if>
<if test="roleCode != null">role_code,</if>
<if test="description != null">description,</if>
<if test="status != null">status,</if>
<if test="creator != null">creator,</if>
<if test="createTime != null">create_time,</if>
deleted
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="roleID != null">#{roleID},</if>
<if test="roleName != null">#{roleName},</if>
<if test="roleCode != null">#{roleCode},</if>
<if test="description != null">#{description},</if>
<if test="status != null">#{status},</if>
<if test="creator != null">#{creator},</if>
<if test="createTime != null">#{createTime},</if>
0
</trim>
</insert>
<!-- 更新角色 -->
<update id="updateById" parameterType="org.xyzh.common.dto.role.TbSysRole">
UPDATE tb_sys_role
<set>
<if test="roleID != null">role_id = #{roleID},</if>
<if test="roleName != null">role_name = #{roleName},</if>
<if test="roleCode != null">role_code = #{roleCode},</if>
<if test="description != null">description = #{description},</if>
<if test="status != null">status = #{status},</if>
<if test="updater != null">updater = #{updater},</if>
update_time = NOW()
</set>
WHERE id = #{id} AND deleted = 0
</update>
<!-- 根据ID删除逻辑删除 -->
<update id="deleteById">
UPDATE tb_sys_role
SET deleted = 1,
delete_time = NOW()
WHERE id = #{id} AND deleted = 0
</update>
<!-- checkRoleExists -->

View File

@@ -14,6 +14,19 @@
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
</resultMap>
<resultMap id="PermissionResultMap" type="org.xyzh.common.dto.permission.TbSysPermission">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="permission_id" property="permissionID" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="code" property="code" jdbcType="VARCHAR"/>
<result column="description" property="description" jdbcType="VARCHAR"/>
<result column="creator" property="creator" jdbcType="VARCHAR"/>
<result column="updater" property="updater" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
</resultMap>
<!-- 基础字段 -->
<sql id="Base_Column_List">
@@ -21,6 +34,11 @@
create_time, update_time, delete_time, deleted
</sql>
<!-- 权限基础字段 -->
<sql id="Permission_Column_List">
id, permission_id, name, code, description, creator, updater, create_time, update_time, delete_time, deleted
</sql>
<!-- 批量绑定角色权限 -->
<insert id="batchBindRolePermission">
INSERT INTO tb_sys_role_permission (id, role_id, permission_id, creator, create_time, deleted)
@@ -33,13 +51,9 @@
<!-- 批量解绑角色权限(真删除,避免批量绑定时报错存在的问题) -->
<delete id="batchUnbindRolePermission">
DELETE FROM tb_sys_role_permission
WHERE role_id IN
WHERE (role_id, permission_id) IN
<foreach collection="rolePermissions" item="rolePermission" open="(" separator="," close=")">
#{rolePermission.roleID}
</foreach>
AND permission_id IN
<foreach collection="rolePermissions" item="rolePermission" open="(" separator="," close=")">
#{rolePermission.permissionID}
(#{rolePermission.roleID}, #{rolePermission.permissionID})
</foreach>
AND deleted = 0
</delete>
@@ -50,19 +64,27 @@
<include refid="Base_Column_List"/>
FROM tb_sys_role_permission
WHERE deleted = 0
AND role_id = #{rolePermission.roleID}
AND permission_id = #{rolePermission.permissionID}
AND role_id = #{roleId}
AND permission_id = #{permissionId}
LIMIT 1
</select>
<!-- 根据角色ID查询权限关联列表 -->
<select id="selectByRoleId" resultMap="BaseResultMap">
<select id="selectByRoleId" resultMap="PermissionResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tb_sys_role_permission
WHERE deleted = 0
AND role_id = #{rolePermission.roleID}
ORDER BY create_time ASC
tsp.permission_id,
tsp.name,
tsp.code,
tsp.description,
tsp.creator,
tsp.updater,
tsp.create_time,
tsp.update_time
FROM tb_sys_role_permission tsrp
INNER JOIN tb_sys_permission tsp ON tsrp.permission_id = tsp.permission_id
WHERE tsrp.deleted = 0 AND tsp.deleted = 0
AND tsrp.role_id = #{roleId}
ORDER BY tsrp.permission_id , tsrp.create_time ASC
</select>
<!-- 根据权限ID查询角色关联列表 -->
@@ -71,7 +93,7 @@
<include refid="Base_Column_List"/>
FROM tb_sys_role_permission
WHERE deleted = 0
AND permission_id = #{rolePermission.permissionID}
AND permission_id = #{permissionId}
ORDER BY create_time ASC
</select>
@@ -82,8 +104,8 @@
delete_time = NOW(),
updater = #{updater}
WHERE deleted = 0
AND role_id = #{rolePermission.roleID}
AND permission_id = #{rolePermission.permissionID}
AND role_id = #{roleId}
AND permission_id = #{permissionId}
</update>
</mapper>

View File

@@ -1,4 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.xyzh.system.mapper.UserDeptRoleMapper">
<resultMap id="UserDeptRoleResultMap" type="TbSysUserDeptRole">
<id column="id" property="id" />
<result column="user_id" property="userID" />
<result column="dept_id" property="deptID" />
<result column="role_id" property="roleID" />
<result column="creator" property="creator" />
<result column="updater" property="updater" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="delete_time" property="deleteTime" />
<result column="deleted" property="deleted" />
</resultMap>
<sql id="UserDeptRole_Column_List">
id, user_id, dept_id, role_id, creator, updater, create_time, update_time, delete_time, deleted
</sql>
<sql id="Where_Clause" >
<where>
<if test="id != null">
id = #{id}
</if>
<if test="userID != null">
user_id = #{userID}
</if>
<if test="deptID != null">
dept_id = #{deptID}
</if>
<if test="roleID != null">
role_id = #{roleID}
</if>
<if test="creator != null">
creator = #{creator}
</if>
<if test="updater != null">
updater = #{updater}
</if>
<if test="createTime != null">
create_time = #{createTime}
</if>
</where>
</sql>
<!-- selectByFilter -->
<select id="selectByFilter">
SELECT
<include refid="UserDeptRole_Column_List"/>
FROM tb_sys_user_dept_role
<include refid="Where_Clause"/>
ORDER BY user_id, dept_id, role_id, create_time DESC
</select>
<insert id="bindUser" parameterType="TbSysUserDeptRole">
INSERT INTO tb_sys_user_dept_role (id, user_id, dept_id, role_id, creator, create_time)
VALUES
<foreach collection="userDeptRoles" item="userDeptRole" separator=",">
(#{userDeptRole.id}, #{userDeptRole.userID}, #{userDeptRole.deptID}, #{userDeptRole.roleID}, #{userDeptRole.creator}, #{userDeptRole.createTime})
</foreach>
</insert>
<delete id="unbindUser" parameterType="TbSysUserDeptRole">
DELETE FROM tb_sys_user_dept_role
WHERE (user_id, dept_id, role_id) IN
<foreach collection="userDeptRoles" item="userDeptRole" open="(" separator="," close=")">
(#{userDeptRole.userID}, #{userDeptRole.deptID}, #{userDeptRole.roleID})
</foreach>
</delete>
</mapper>

View File

@@ -1,5 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.xyzh.system.mapper.UserInfoMapper">
<resultMap id="BaseResultMap" type="TbSysUserInfo">
<id column="id" property="id" />
<result column="user_id" property="userID" />
<result column="avatar" property="avatar" />
<result column="gender" property="gender" />
<result column="family_name" property="familyName" />
<result column="given_name" property="givenName" />
<result column="full_name" property="fullName" />
<result column="id_card" property="idCard" />
<result column="address" property="address" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="delete_time" property="deleteTime" />
<result column="deleted" property="deleted" />
</resultMap>
<sql id="Base_Column_List">
id, user_id, avatar, gender, family_name, given_name, full_name, id_card, address, create_time, update_time, delete_time, deleted
</sql>
<!-- insertUserInfo -->
<insert id="insertUserInfo">
INSERT INTO tb_sys_user_info (id, user_id, avatar, create_time)
VALUES (#{userInfo.id}, #{userInfo.userID}, #{userInfo.avatar}, #{userInfo.createTime})
</insert>
<!-- updateUserInfo -->
<update id="updateUserInfo">
UPDATE tb_sys_user_info
<set>
<if test="userInfo.avatar != null">avatar = #{userInfo.avatar},</if>
<if test="userInfo.gender != null">gender = #{userInfo.gender},</if>
<if test="userInfo.familyName != null">family_name = #{userInfo.familyName},</if>
<if test="userInfo.givenName != null">given_name = #{userInfo.givenName},</if>
<if test="userInfo.fullName != null">full_name = #{userInfo.fullName},</if>
<if test="userInfo.idCard != null">id_card = #{userInfo.idCard},</if>
<if test="userInfo.address != null">address = #{userInfo.address},</if>
<if test="userInfo.updater != null">updater = #{userInfo.updater},</if>
<if test="userInfo.updateTime != null">update_time = #{userInfo.updateTime},</if>
</set>
WHERE user_id = #{userInfo.userID}
</update>
<delete id="deleteUserInfo">
DELETE FROM tb_sys_user_info
WHERE user_id = #{userID}
</delete>
</mapper>

View File

@@ -124,7 +124,6 @@
AND wechat_id = #{filter.wechatID}
</if>
</where>
LIMIT 1
</select>
<!-- 查询用户列表 -->
@@ -150,67 +149,50 @@
</update>
<!-- 插入用户 -->
<insert id="insert" parameterType="org.xyzh.common.dto.user.TbSysUser">
<insert id="insertUser" parameterType="org.xyzh.common.dto.user.TbSysUser">
INSERT INTO tb_sys_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="username != null">username,</if>
<if test="password != null">password,</if>
<if test="email != null">email,</if>
<if test="phone != null">phone,</if>
<if test="avatar != null">avatar,</if>
<if test="nickname != null">nickname,</if>
<if test="gender != null">gender,</if>
<if test="birthday != null">birthday,</if>
<if test="status != null">status,</if>
<if test="lastLoginTime != null">last_login_time,</if>
<if test="lastLoginIp != null">last_login_ip,</if>
<if test="creator != null">creator,</if>
<if test="createTime != null">create_time,</if>
<if test="user.id != null">id,</if>
<if test="user.username != null">username,</if>
<if test="user.password != null">password,</if>
<if test="user.email != null">email,</if>
<if test="user.phone != null">phone,</if>
<if test="user.wechatID != null">wechat_id,</if>
<if test="user.status != null">status,</if>
<if test="user.createTime != null">create_time,</if>
deleted
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="username != null">#{username},</if>
<if test="password != null">#{password},</if>
<if test="email != null">#{email},</if>
<if test="phone != null">#{phone},</if>
<if test="avatar != null">#{avatar},</if>
<if test="nickname != null">#{nickname},</if>
<if test="gender != null">#{gender},</if>
<if test="birthday != null">#{birthday},</if>
<if test="status != null">#{status},</if>
<if test="lastLoginTime != null">#{lastLoginTime},</if>
<if test="lastLoginIp != null">#{lastLoginIp},</if>
<if test="creator != null">#{creator},</if>
<if test="createTime != null">#{createTime},</if>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="user.id != null">#{user.id},</if>
<if test="user.username != null">#{user.username},</if>
<if test="user.password != null">#{user.password},</if>
<if test="user.email != null">#{user.email},</if>
<if test="user.phone != null">#{user.phone},</if>
<if test="user.wechatID != null">#{user.wechatID},</if>
<if test="user.status != null">#{user.status},</if>
<if test="user.createTime != null">#{user.createTime},</if>
0
</trim>
</insert>
<!-- 更新用户 -->
<update id="updateById" parameterType="org.xyzh.common.dto.user.TbSysUser">
<update id="updateUser" parameterType="org.xyzh.common.dto.user.TbSysUser">
UPDATE tb_sys_user
<set>
<if test="username != null">username = #{username},</if>
<if test="password != null">password = #{password},</if>
<if test="email != null">email = #{email},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="avatar != null">avatar = #{avatar},</if>
<if test="nickname != null">nickname = #{nickname},</if>
<if test="gender != null">gender = #{gender},</if>
<if test="birthday != null">birthday = #{birthday},</if>
<if test="status != null">status = #{status},</if>
<if test="lastLoginTime != null">last_login_time = #{lastLoginTime},</if>
<if test="lastLoginIp != null">last_login_ip = #{lastLoginIp},</if>
<if test="updater != null">updater = #{updater},</if>
<if test="user.username != null">username = #{user.username},</if>
<if test="user.password != null">password = #{user.password},</if>
<if test="user.email != null">email = #{user.email},</if>
<if test="user.phone != null">phone = #{user.phone},</if>
<if test="user.wechatID != null">wechat_id = #{user.wechatID},</if>
<if test="user.status != null">status = #{user.status},</if>
update_time = NOW()
</set>
WHERE id = #{id} AND deleted = 0
WHERE id = #{user.id} AND deleted = 0
</update>
<!-- 根据ID删除逻辑删除 -->
<update id="deleteById">
<update id="deleteUser">
UPDATE tb_sys_user
SET deleted = 1,
delete_time = NOW()