mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +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}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
    :title="title"
 | 
			
		||||
    :mask-closable="false"
 | 
			
		||||
    :esc-to-close="false"
 | 
			
		||||
    draggable
 | 
			
		||||
    :width="width >= 600 ? 600 : '100%'"
 | 
			
		||||
    @before-ok="save"
 | 
			
		||||
    @close="reset"
 | 
			
		||||
@@ -31,7 +32,6 @@ const visible = ref(false)
 | 
			
		||||
const isUpdate = computed(() => !!dataId.value)
 | 
			
		||||
const title = computed(() => (isUpdate.value ? '修改${businessName}' : '新增${businessName}'))
 | 
			
		||||
const formRef = ref<InstanceType<typeof GiForm>>()
 | 
			
		||||
 | 
			
		||||
<#if hasDictField>
 | 
			
		||||
const { <#list dictCodes as dictCode>${dictCode}<#if dictCode_has_next>,</#if></#list> } = useDict(<#list dictCodes as dictCode>'${dictCode}'<#if dictCode_has_next>,</#if></#list>)
 | 
			
		||||
</#if>
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { useWindowSize } from '@vueuse/core'
 | 
			
		||||
import { type ${classNamePrefix}DetailResp, get${classNamePrefix} } from '@/apis/${apiModuleName}/${apiName}'
 | 
			
		||||
import { type ${classNamePrefix}DetailResp, get${classNamePrefix} as getDetail } from '@/apis/${apiModuleName}/${apiName}'
 | 
			
		||||
 | 
			
		||||
const { width } = useWindowSize()
 | 
			
		||||
 | 
			
		||||
@@ -25,7 +25,7 @@ const visible = ref(false)
 | 
			
		||||
 | 
			
		||||
// 查询详情
 | 
			
		||||
const getDataDetail = async () => {
 | 
			
		||||
  const { data } = await get${classNamePrefix}(dataId.value)
 | 
			
		||||
  const { data } = await getDetail(dataId.value)
 | 
			
		||||
  dataDetail.value = data
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="table-page">
 | 
			
		||||
    <GiTable
 | 
			
		||||
      row-key="id"
 | 
			
		||||
      title="${businessName}管理"
 | 
			
		||||
      row-key="id"
 | 
			
		||||
      :data="dataList"
 | 
			
		||||
      :columns="columns"
 | 
			
		||||
      :loading="loading"
 | 
			
		||||
@@ -135,7 +135,6 @@ const {
 | 
			
		||||
  search,
 | 
			
		||||
  handleDelete
 | 
			
		||||
} = useTable((page) => list${classNamePrefix}({ ...queryForm, ...page }), { immediate: true })
 | 
			
		||||
 | 
			
		||||
const columns: TableInstanceColumns[] = [
 | 
			
		||||
<#if fieldConfigs??>
 | 
			
		||||
  <#list fieldConfigs as fieldConfig>
 | 
			
		||||
@@ -150,7 +149,7 @@ const columns: TableInstanceColumns[] = [
 | 
			
		||||
    width: 130,
 | 
			
		||||
    align: 'center',
 | 
			
		||||
    fixed: !isMobile() ? 'right' : undefined,
 | 
			
		||||
    show: has.hasPermOr(['${apiModuleName}:${apiName}:update', '${apiModuleName}:${apiName}:delete'])
 | 
			
		||||
    show: has.hasPermOr(['${apiModuleName}:${apiName}:detail', '${apiModuleName}:${apiName}:update', '${apiModuleName}:${apiName}:delete'])
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -54,13 +54,6 @@ public class RoleController extends BaseController<RoleService, RoleResp, RoleDe
 | 
			
		||||
 | 
			
		||||
    private final UserRoleService userRoleService;
 | 
			
		||||
 | 
			
		||||
    @Operation(summary = "查询角色关联用户", description = "查询角色关联的用户ID列表")
 | 
			
		||||
    @Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH)
 | 
			
		||||
    @GetMapping("/{id}/user")
 | 
			
		||||
    public List<Long> listUser(@PathVariable("id") Long id) {
 | 
			
		||||
        return userRoleService.listUserIdByRoleId(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Operation(summary = "分配角色给用户", description = "批量分配角色给用户")
 | 
			
		||||
    @SaCheckPermission("system:role:assign")
 | 
			
		||||
    @PostMapping("/{id}/user")
 | 
			
		||||
@@ -68,4 +61,11 @@ public class RoleController extends BaseController<RoleService, RoleResp, RoleDe
 | 
			
		||||
                              @Validated @NotEmpty(message = "用户ID列表不能为空") @RequestBody List<Long> userIds) {
 | 
			
		||||
        baseService.assignToUsers(id, userIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Operation(summary = "查询角色关联用户", description = "查询角色关联的用户ID列表")
 | 
			
		||||
    @Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH)
 | 
			
		||||
    @GetMapping("/{id}/user")
 | 
			
		||||
    public List<Long> listUser(@PathVariable("id") Long id) {
 | 
			
		||||
        return userRoleService.listUserIdByRoleId(id);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,32 +28,36 @@ VALUES
 | 
			
		||||
 | 
			
		||||
(1050, '菜单管理', 1000, 2, '/system/menu', 'SystemMenu', 'system/menu/index', NULL, 'menu', b'0', b'0', b'0', NULL, 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1051, '列表', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1052, '新增', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1053, '修改', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1054, '删除', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1052, '详情', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1053, '新增', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1054, '修改', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1055, '删除', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1060, '部门管理', 1000, 2, '/system/dept', 'SystemDept', 'system/dept/index', NULL, 'mind-mapping', b'0', b'0', b'0', NULL, 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1061, '列表', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1062, '新增', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1063, '修改', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1064, '删除', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1065, '导出', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:export', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1062, '详情', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1063, '新增', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1064, '修改', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1065, '删除', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1066, '导出', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:export', 6, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1070, '字典管理', 1000, 2, '/system/dict', 'SystemDict', 'system/dict/index', NULL, 'bookmark', b'0', b'0', b'0', NULL, 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1071, '列表', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1072, '新增', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1073, '修改', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1074, '删除', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1072, '详情', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1073, '新增', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1074, '修改', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1075, '删除', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1080, '字典项管理', 1000, 2, '/system/dict/item', 'SystemDictItem', 'system/dict/item/index', NULL, 'bookmark', b'0', b'0', b'1', NULL, 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1081, '列表', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1082, '新增', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1083, '修改', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1084, '删除', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1082, '详情', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1083, '新增', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1084, '修改', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1085, '删除', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1090, '通知公告', 1000, 2, '/system/notice', 'SystemNotice', 'system/notice/index', NULL, 'notification', b'0', b'0', b'0', NULL, 6, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1091, '列表', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1092, '详情', 1090, 2, '/system/notice/detail', 'SystemNoticeDetail', 'system/notice/page/detail', NULL, NULL, b'0', b'0', b'1', 'system:notice:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1093, '新增', 1090, 2, '/system/notice/add', 'SystemNoticeAdd', 'system/notice/page/add', NULL, NULL, b'0', b'0', b'1', 'system:notice:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1092, '详情', 1090, 2, '/system/notice/detail', 'SystemNoticeDetail', 'system/notice/detail/index', NULL, NULL, b'0', b'0', b'1', 'system:notice:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1093, '新增', 1090, 2, '/system/notice/add', 'SystemNoticeAdd', 'system/notice/add/index', NULL, NULL, b'0', b'0', b'1', 'system:notice:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1094, '修改', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1095, '删除', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
@@ -67,9 +71,10 @@ VALUES
 | 
			
		||||
 | 
			
		||||
(1110, '存储管理', 1000, 2, '/system/storage', 'SystemStorage', 'system/storage/index', NULL, 'storage', b'0', b'0', b'0', NULL, 8, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1111, '列表', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1112, '新增', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1113, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1114, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1112, '详情', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1113, '新增', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1114, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1115, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1190, '系统配置', 1000, 2, '/system/config', 'SystemConfig', 'system/config/index', NULL, 'config', b'0', b'0', b'0', NULL, 999, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1191, '查看', 1190, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:config:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
@@ -80,6 +85,7 @@ VALUES
 | 
			
		||||
(2010, '在线用户', 2000, 2, '/monitor/online', 'MonitorOnline', 'monitor/online/index', NULL, 'user', b'0', b'0', b'0', NULL, 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2011, '列表', 2010, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:online:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2012, '强退', 2010, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:online:kickout', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(2020, '系统日志', 2000, 2, '/monitor/log', 'MonitorLog', 'monitor/log/index', NULL, 'history', b'0', b'0', b'0', NULL, 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2021, '列表', 2020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:log:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2022, '详情', 2020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:log:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 
 | 
			
		||||
@@ -28,32 +28,36 @@ VALUES
 | 
			
		||||
 | 
			
		||||
(1050, '菜单管理', 1000, 2, '/system/menu', 'SystemMenu', 'system/menu/index', NULL, 'menu', false, false, false, NULL, 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1051, '列表', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1052, '新增', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1053, '修改', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1054, '删除', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1052, '详情', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1053, '新增', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1054, '修改', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1055, '删除', 1050, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:menu:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1060, '部门管理', 1000, 2, '/system/dept', 'SystemDept', 'system/dept/index', NULL, 'mind-mapping', false, false, false, NULL, 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1061, '列表', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1062, '新增', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1063, '修改', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1064, '删除', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1065, '导出', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:export', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1062, '详情', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1063, '新增', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1064, '修改', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1065, '删除', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1066, '导出', 1060, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dept:export', 6, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1070, '字典管理', 1000, 2, '/system/dict', 'SystemDict', 'system/dict/index', NULL, 'bookmark', false, false, false, NULL, 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1071, '列表', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1072, '新增', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1073, '修改', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1074, '删除', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1072, '详情', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1073, '新增', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1074, '修改', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1075, '删除', 1070, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1080, '字典项管理', 1000, 2, '/system/dict/item', 'SystemDictItem', 'system/dict/item/index', NULL, 'bookmark', false, false, true, NULL, 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1081, '列表', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1082, '新增', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1083, '修改', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1084, '删除', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1082, '详情', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1083, '新增', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1084, '修改', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1085, '删除', 1080, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:dict:item:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1090, '通知公告', 1000, 2, '/system/notice', 'SystemNotice', 'system/notice/index', NULL, 'notification', false, false, false, NULL, 6, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1091, '列表', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1092, '详情', 1090, 2, '/system/notice/detail', 'SystemNoticeDetail', 'system/notice/page/detail', NULL, NULL, false, false, true, 'system:notice:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1093, '新增', 1090, 2, '/system/notice/add', 'SystemNoticeAdd', 'system/notice/page/add', NULL, NULL, false, false, true, 'system:notice:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1092, '详情', 1090, 2, '/system/notice/detail', 'SystemNoticeDetail', 'system/notice/detail/index', NULL, NULL, false, false, true, 'system:notice:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1093, '新增', 1090, 2, '/system/notice/add', 'SystemNoticeAdd', 'system/notice/add/index', NULL, NULL, false, false, true, 'system:notice:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1094, '修改', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1095, '删除', 1090, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:notice:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
@@ -67,9 +71,10 @@ VALUES
 | 
			
		||||
 | 
			
		||||
(1110, '存储管理', 1000, 2, '/system/storage', 'SystemStorage', 'system/storage/index', NULL, 'storage', false, false, false, NULL, 8, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1111, '列表', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1112, '新增', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:add', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1113, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:update', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1114, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1112, '详情', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1113, '新增', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:add', 3, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1114, '修改', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:update', 4, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1115, '删除', 1110, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 5, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(1190, '系统配置', 1000, 2, '/system/config', 'SystemConfig', 'system/config/index', NULL, 'config', false, false, false, NULL, 999, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(1191, '查看', 1190, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:config:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
@@ -80,6 +85,7 @@ VALUES
 | 
			
		||||
(2010, '在线用户', 2000, 2, '/monitor/online', 'MonitorOnline', 'monitor/online/index', NULL, 'user', false, false, false, NULL, 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2011, '列表', 2010, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:online:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2012, '强退', 2010, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:online:kickout', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 | 
			
		||||
(2020, '系统日志', 2000, 2, '/monitor/log', 'MonitorLog', 'monitor/log/index', NULL, 'history', false, false, false, NULL, 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2021, '列表', 2020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:log:list', 1, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
(2022, '详情', 2020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'monitor:log:detail', 2, 1, 1, NOW(), NULL, NULL),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user