在 sys_user 表中新增 can_create_task 字段,用于标识用户是否具有创建任务单的权限。该字段从 OA 系统的 OA_User 表中的 OA_Power 字段同步而来。
当 OA_Power 字段包含 ,020101, 时,用户具有创建任务单权限。
SQL 判断逻辑:sql CASE WHEN OA_Power LIKE '%,020101,%' THEN '1' ELSE '0' END AS can_create_task
文件: sql/add_can_create_task_to_sys_user.sql
ALTER TABLE sys_user ADD COLUMN can_create_task CHAR(1) DEFAULT '0' COMMENT '是否可创建任务单(0否 1是)';
CREATE INDEX idx_can_create_task ON sys_user(can_create_task);
字段说明:
- 字段名: can_create_task
- 类型: CHAR(1)
- 默认值: '0' (不可创建)
- 可选值:
- '0': 不可创建任务单
- '1': 可以创建任务单
- 索引: 已添加索引 idx_can_create_task 方便查询
文件: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
新增字段:
```java
/** 是否可创建任务单(0否 1是) */
@Excel(name = "可创建任务单", readConverterExp = "0=否,1=是")
private String canCreateTask;
public String getCanCreateTask() {
return canCreateTask;
}
public void setCanCreateTask(String canCreateTask) {
this.canCreateTask = canCreateTask;
}
```
文件: ruoyi-system/src/main/java/com/ruoyi/system/domain/UserSyncDTO.java
新增字段:
```java
/** 是否可创建任务单(0否 1是) */
private String canCreateTask;
public String getCanCreateTask() {
return canCreateTask;
}
public void setCanCreateTask(String canCreateTask) {
this.canCreateTask = canCreateTask;
}
```
文件: ruoyi-system/src/main/resources/mapper/system/UserSyncMapper.xml
修改内容:
1. 在 resultMap 中添加字段映射
2. 在 SQL 查询中添加 CASE 判断逻辑
<result property="canCreateTask" column="can_create_task" />
<!-- SQL 查询添加 -->
CASE
WHEN OA_Power LIKE '%,020101,%' THEN '1'
ELSE '0'
END AS can_create_task
文件: ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
修改内容:
1. resultMap 添加字段映射
2. selectUserVo 查询添加字段
3. insertUser 添加字段插入
4. updateUser 添加字段更新
文件: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserSyncServiceImpl.java
修改内容:
更新已存在用户:java if (StringUtils.isNotEmpty(dto.getCanCreateTask())) { existingUser.setCanCreateTask(dto.getCanCreateTask()); }
创建新用户:java if (StringUtils.isNotEmpty(dto.getCanCreateTask())) { newUser.setCanCreateTask(dto.getCanCreateTask()); }
OA_User (SQL Server)
↓
OA_Power LIKE '%,020101,%'
↓
SQL CASE 判断
↓
UserSyncDTO.canCreateTask
↓
SysUser.canCreateTask
↓
sys_user.can_create_task
mysql -u root -p ry-vue < sql/add_can_create_task_to_sys_user.sql
通过后台管理界面或 API 执行用户同步:bash POST http://localhost:8080/system/dept/sync/user Headers: Authorization: Bearer {你的token}
-- 查看具有创建任务单权限的用户
SELECT
user_name,
nick_name,
can_create_task,
oa_user_id
FROM sys_user
WHERE can_create_task = '1'
AND del_flag = '0'
ORDER BY create_time DESC;
-- 统计权限分布
SELECT
can_create_task,
CASE can_create_task
WHEN '1' THEN '可创建'
ELSE '不可创建'
END AS permission_label,
COUNT(*) AS user_count
FROM sys_user
WHERE del_flag = '0'
GROUP BY can_create_task;
// 在 Service 层添加查询方法
public List<SysUser> getUsersWithCreateTaskPermission() {
SysUser query = new SysUser();
query.setCanCreateTask("1");
return userMapper.selectUserList(query);
}
// 根据用户权限显示/隐藏创建任务按钮
if (user.canCreateTask === '1') {
// 显示创建任务按钮
showCreateTaskButton();
} else {
// 隐藏创建任务按钮
hideCreateTaskButton();
}
@PreAuthorize("@ss.hasPermi('task:create')")
@PostMapping("/create")
public AjaxResult createTask(@RequestBody Task task) {
SysUser user = SecurityUtils.getLoginUser().getUser();
if (!"1".equals(user.getCanCreateTask())) {
return AjaxResult.error("您没有创建任务单的权限");
}
// 创建任务逻辑
return taskService.createTask(task);
}
'0'(不可创建)can_view_all_consult: 是否可查看所有咨询单(OA_Power LIKE '%,020112,%')can_create_task: 是否可创建任务单(OA_Power LIKE '%,020101,%')这两个字段互相独立,用户可以同时拥有或分别拥有这些权限。
-- 检查字段是否存在
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND COLUMN_NAME = 'can_create_task';
-- 查看具体用户的权限
SELECT
u.user_name,
u.nick_name,
u.can_view_all_consult,
u.can_create_task,
u.oa_user_id
FROM sys_user u
WHERE u.oa_user_id IS NOT NULL
ORDER BY u.user_id;
sql/add_can_create_task_to_sys_user.sql - 添加字段脚本SysUser.java(修改) - 添加字段定义UserSyncDTO.java(修改) - 添加 DTO 字段UserSyncServiceImpl.java(修改) - 添加同步逻辑UserSyncMapper.xml(修改) - 添加 SQL 查询逻辑SysUserMapper.xml(修改) - 添加字段映射和操作prd/用户创建任务单权限功能说明.md - 本文档A: 为了与若依框架的数据字典规范保持一致,使用 '0' 和 '1' 字符串表示布尔值。
A: 不建议手动修改。该字段应通过 OA 系统的 OA_Power 字段控制,通过用户同步自动更新。
A: 请检查:
1. OA 系统中用户的 OA_Power 字段是否包含 ,020101,
2. 用户同步是否执行成功
3. 查看同步日志确认更新情况
A: 在 OA 系统中批量修改用户的 OA_Power 字段,然后执行用户同步即可。
版本: v1.0
更新时间: 2025-12-29
相关功能: 用户同步、权限管理