mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-13 14:57:16 +08:00
refactor: 优化系统管理相关代码及初始菜单脚本
1.优化方法排序 2.优化前端模板 3.完善菜单
This commit is contained in:
@@ -36,6 +36,14 @@ import java.util.Set;
|
||||
*/
|
||||
public interface RoleService extends BaseService<RoleResp, RoleDetailResp, RoleQuery, RoleReq>, IService<RoleDO> {
|
||||
|
||||
/**
|
||||
* 分配角色给用户
|
||||
*
|
||||
* @param id 角色 ID
|
||||
* @param userIds 用户 ID 列表
|
||||
*/
|
||||
void assignToUsers(Long id, List<Long> userIds);
|
||||
|
||||
/**
|
||||
* 根据用户 ID 查询权限码
|
||||
*
|
||||
@@ -91,12 +99,4 @@ public interface RoleService extends BaseService<RoleResp, RoleDetailResp, RoleQ
|
||||
* @return 角色数量
|
||||
*/
|
||||
int countByNames(List<String> roleNames);
|
||||
|
||||
/**
|
||||
* 分配角色给用户
|
||||
*
|
||||
* @param id 角色 ID
|
||||
* @param userIds 用户 ID 列表
|
||||
*/
|
||||
void assignToUsers(Long id, List<Long> userIds);
|
||||
}
|
||||
|
@@ -39,14 +39,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface UserService extends BaseService<UserResp, UserDetailResp, UserQuery, UserReq>, IService<UserDO> {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return ID
|
||||
*/
|
||||
Long add(UserDO user);
|
||||
|
||||
/**
|
||||
* 下载导入模板
|
||||
*
|
||||
@@ -132,6 +124,14 @@ public interface UserService extends BaseService<UserResp, UserDetailResp, UserQ
|
||||
*/
|
||||
void updateEmail(String newEmail, String oldPassword, Long id);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return ID
|
||||
*/
|
||||
Long add(UserDO user);
|
||||
|
||||
/**
|
||||
* 根据用户名查询
|
||||
*
|
||||
|
@@ -52,36 +52,14 @@ import java.util.Optional;
|
||||
@RequiredArgsConstructor
|
||||
public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptResp, DeptResp, DeptQuery, DeptReq> implements DeptService {
|
||||
|
||||
private final RoleDeptService roleDeptService;
|
||||
@Resource
|
||||
private UserService userService;
|
||||
private final RoleDeptService roleDeptService;
|
||||
@Resource
|
||||
private DataSource dataSource;
|
||||
|
||||
@Override
|
||||
public List<DeptDO> listChildren(Long id) {
|
||||
DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(dataSource, DatabaseType.MYSQL);
|
||||
return baseMapper.lambdaQuery().apply(databaseType.findInSet(id, "ancestors")).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeptDO> listByNames(List<String> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return this.list(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getName, list));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int countByNames(List<String> deptNames) {
|
||||
if (CollUtil.isEmpty(deptNames)) {
|
||||
return 0;
|
||||
}
|
||||
return (int)this.count(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getName, deptNames));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeAdd(DeptReq req) {
|
||||
public void beforeAdd(DeptReq req) {
|
||||
String name = req.getName();
|
||||
boolean isExists = this.isNameExists(name, req.getParentId(), null);
|
||||
CheckUtils.throwIf(isExists, "新增失败,[{}] 已存在", name);
|
||||
@@ -89,7 +67,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeUpdate(DeptReq req, Long id) {
|
||||
public void beforeUpdate(DeptReq req, Long id) {
|
||||
String name = req.getName();
|
||||
boolean isExists = this.isNameExists(name, req.getParentId(), id);
|
||||
CheckUtils.throwIf(isExists, "修改失败,[{}] 已存在", name);
|
||||
@@ -124,7 +102,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeDelete(List<Long> ids) {
|
||||
public void beforeDelete(List<Long> ids) {
|
||||
List<DeptDO> list = baseMapper.lambdaQuery()
|
||||
.select(DeptDO::getName, DeptDO::getIsSystem)
|
||||
.in(DeptDO::getId, ids)
|
||||
@@ -138,6 +116,28 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
|
||||
roleDeptService.deleteByDeptIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeptDO> listChildren(Long id) {
|
||||
DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(dataSource, DatabaseType.MYSQL);
|
||||
return baseMapper.lambdaQuery().apply(databaseType.findInSet(id, "ancestors")).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeptDO> listByNames(List<String> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return this.list(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getName, list));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int countByNames(List<String> deptNames) {
|
||||
if (CollUtil.isEmpty(deptNames)) {
|
||||
return 0;
|
||||
}
|
||||
return (int)this.count(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getName, deptNames));
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称是否存在
|
||||
*
|
||||
|
@@ -55,14 +55,14 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte
|
||||
private static final Map<String, List<LabelValueResp>> ENUM_DICT_CACHE = new ConcurrentHashMap<>();
|
||||
|
||||
@Override
|
||||
protected void beforeAdd(DictItemReq req) {
|
||||
public void beforeAdd(DictItemReq req) {
|
||||
String value = req.getValue();
|
||||
CheckUtils.throwIf(this.isValueExists(value, null, req.getDictId()), "新增失败,字典值 [{}] 已存在", value);
|
||||
RedisUtils.deleteByPattern(CacheConstants.DICT_KEY_PREFIX + StringConstants.ASTERISK);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeUpdate(DictItemReq req, Long id) {
|
||||
public void beforeUpdate(DictItemReq req, Long id) {
|
||||
String value = req.getValue();
|
||||
CheckUtils.throwIf(this.isValueExists(value, id, req.getDictId()), "修改失败,字典值 [{}] 已存在", value);
|
||||
RedisUtils.deleteByPattern(CacheConstants.DICT_KEY_PREFIX + StringConstants.ASTERISK);
|
||||
|
@@ -45,7 +45,7 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes
|
||||
private final DictItemService dictItemService;
|
||||
|
||||
@Override
|
||||
protected void beforeAdd(DictReq req) {
|
||||
public void beforeAdd(DictReq req) {
|
||||
String name = req.getName();
|
||||
CheckUtils.throwIf(this.isNameExists(name, null), "新增失败,[{}] 已存在", name);
|
||||
String code = req.getCode();
|
||||
@@ -53,7 +53,7 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeUpdate(DictReq req, Long id) {
|
||||
public void beforeUpdate(DictReq req, Long id) {
|
||||
String name = req.getName();
|
||||
CheckUtils.throwIf(this.isNameExists(name, id), "修改失败,[{}] 已存在", name);
|
||||
DictDO oldDict = super.getById(id);
|
||||
@@ -61,7 +61,7 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeDelete(List<Long> ids) {
|
||||
public void beforeDelete(List<Long> ids) {
|
||||
List<DictDO> list = baseMapper.lambdaQuery()
|
||||
.select(DictDO::getName, DictDO::getIsSystem)
|
||||
.in(DictDO::getId, ids)
|
||||
|
@@ -105,7 +105,7 @@ public class MenuServiceImpl extends BaseServiceImpl<MenuMapper, MenuDO, MenuRes
|
||||
public List<MenuResp> listByRoleCode(String roleCode) {
|
||||
List<MenuDO> menuList = baseMapper.selectListByRoleCode(roleCode);
|
||||
List<MenuResp> list = BeanUtil.copyToList(menuList, MenuResp.class);
|
||||
list.forEach(this::fill);
|
||||
list.forEach(super::fill);
|
||||
return list;
|
||||
}
|
||||
|
||||
|
@@ -106,7 +106,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeDelete(List<Long> ids) {
|
||||
public void beforeDelete(List<Long> ids) {
|
||||
List<RoleDO> list = baseMapper.lambdaQuery()
|
||||
.select(RoleDO::getName, RoleDO::getIsSystem)
|
||||
.in(RoleDO::getId, ids)
|
||||
@@ -122,7 +122,16 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fill(Object obj) {
|
||||
public void assignToUsers(Long id, List<Long> userIds) {
|
||||
super.getById(id);
|
||||
// 保存用户和角色关联
|
||||
userRoleService.assignRoleToUsers(id, userIds);
|
||||
// 更新用户上下文
|
||||
this.updateUserContext(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fill(Object obj) {
|
||||
super.fill(obj);
|
||||
if (obj instanceof RoleDetailResp detail) {
|
||||
Long roleId = detail.getId();
|
||||
@@ -188,15 +197,6 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
return (int)this.count(Wrappers.<RoleDO>lambdaQuery().in(RoleDO::getName, roleNames));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assignToUsers(Long id, List<Long> userIds) {
|
||||
super.getById(id);
|
||||
// 保存用户和角色关联
|
||||
userRoleService.assignRoleToUsers(id, userIds);
|
||||
// 更新用户上下文
|
||||
this.updateUserContext(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称是否存在
|
||||
*
|
||||
|
@@ -65,7 +65,7 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO
|
||||
private FileService fileService;
|
||||
|
||||
@Override
|
||||
protected void beforeAdd(StorageReq req) {
|
||||
public void beforeAdd(StorageReq req) {
|
||||
this.decodeSecretKey(req, null);
|
||||
CheckUtils.throwIf(Boolean.TRUE.equals(req.getIsDefault()) && this.isDefaultExists(null), "请先取消原有默认存储");
|
||||
String code = req.getCode();
|
||||
@@ -74,7 +74,7 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeUpdate(StorageReq req, Long id) {
|
||||
public void beforeUpdate(StorageReq req, Long id) {
|
||||
StorageDO oldStorage = super.getById(id);
|
||||
CheckUtils.throwIfNotEqual(req.getCode(), oldStorage.getCode(), "不允许修改存储编码");
|
||||
CheckUtils.throwIfNotEqual(req.getType(), oldStorage.getType(), "不允许修改存储类型");
|
||||
@@ -99,7 +99,7 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void beforeDelete(List<Long> ids) {
|
||||
public void beforeDelete(List<Long> ids) {
|
||||
CheckUtils.throwIf(fileService.countByStorageIds(ids) > 0, "所选存储存在文件关联,请删除文件后重试");
|
||||
List<StorageDO> storageList = baseMapper.lambdaQuery().in(StorageDO::getId, ids).list();
|
||||
storageList.forEach(s -> {
|
||||
|
@@ -209,13 +209,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
ids.forEach(onlineUserService::kickOut);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long add(UserDO user) {
|
||||
user.setStatus(DisEnableStatusEnum.ENABLE);
|
||||
baseMapper.insert(user);
|
||||
return user.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downloadImportTemplate(HttpServletResponse response) throws IOException {
|
||||
try {
|
||||
@@ -360,19 +353,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
return new UserImportResp(insertList.size() + updateList.size(), insertList.size(), updateList.size());
|
||||
}
|
||||
|
||||
public void doImportUser(List<UserDO> insertList, List<UserDO> updateList, List<UserRoleDO> userRoleDOList) {
|
||||
if (CollUtil.isNotEmpty(insertList)) {
|
||||
baseMapper.insert(insertList);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(updateList)) {
|
||||
this.updateBatchById(updateList);
|
||||
userRoleService.deleteByUserIds(updateList.stream().map(UserDO::getId).toList());
|
||||
}
|
||||
if (CollUtil.isNotEmpty(userRoleDOList)) {
|
||||
userRoleService.saveBatch(userRoleDOList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetPassword(UserPasswordResetReq req, Long id) {
|
||||
super.getById(id);
|
||||
@@ -459,6 +439,13 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
baseMapper.lambdaUpdate().set(UserDO::getEmail, newEmail).eq(UserDO::getId, id).update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long add(UserDO user) {
|
||||
user.setStatus(DisEnableStatusEnum.ENABLE);
|
||||
baseMapper.insert(user);
|
||||
return user.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDO getByUsername(String username) {
|
||||
return baseMapper.selectByUsername(username);
|
||||
@@ -523,6 +510,26 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
.in(CollUtil.isNotEmpty(userIdList), "t1.id", userIdList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入用户
|
||||
*
|
||||
* @param insertList 新增用户
|
||||
* @param updateList 修改用户
|
||||
* @param userRoleDOList 用户角色关联
|
||||
*/
|
||||
private void doImportUser(List<UserDO> insertList, List<UserDO> updateList, List<UserRoleDO> userRoleDOList) {
|
||||
if (CollUtil.isNotEmpty(insertList)) {
|
||||
baseMapper.insert(insertList);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(updateList)) {
|
||||
this.updateBatchById(updateList);
|
||||
userRoleService.deleteByUserIds(updateList.stream().map(UserDO::getId).toList());
|
||||
}
|
||||
if (CollUtil.isNotEmpty(userRoleDOList)) {
|
||||
userRoleService.saveBatch(userRoleDOList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否跳过导入
|
||||
*
|
||||
@@ -681,6 +688,12 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
return null != count && count > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户列表
|
||||
*
|
||||
* @param usernames 用户名列表
|
||||
* @return 用户列表
|
||||
*/
|
||||
private List<UserDO> listByUsernames(List<String> usernames) {
|
||||
return this.list(Wrappers.<UserDO>lambdaQuery()
|
||||
.in(UserDO::getUsername, usernames)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="top.continew.admin.system.mapper.DictItemMapper">
|
||||
<select id="listByDictCode" resultType="top.continew.starter.extension.crud.model.resp.LabelValueResp">
|
||||
SELECT t1.label, t1.value, t1.color AS extend
|
||||
SELECT t1.label, t1.value, t1.color AS extra
|
||||
FROM sys_dict_item AS t1
|
||||
LEFT JOIN sys_dict AS t2 ON t1.dict_id = t2.id
|
||||
WHERE t1.status = 1 AND t2.code = #{dictCode}
|
||||
|
Reference in New Issue
Block a user