Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
39baadf9
提交
39baadf9
authored
5月 12, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
用户导入实现
上级
66927bb6
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
117 行增加
和
4 行删除
+117
-4
SysUserController.java
...g/dromara/system/controller/system/SysUserController.java
+1
-1
SysUserImportListener.java
...va/org/dromara/system/listener/SysUserImportListener.java
+27
-3
ISysDeptService.java
...main/java/org/dromara/system/service/ISysDeptService.java
+9
-0
ISysPostService.java
...main/java/org/dromara/system/service/ISysPostService.java
+9
-0
ISysRoleService.java
...main/java/org/dromara/system/service/ISysRoleService.java
+12
-0
SysDeptServiceImpl.java
...a/org/dromara/system/service/impl/SysDeptServiceImpl.java
+34
-0
SysPostServiceImpl.java
...a/org/dromara/system/service/impl/SysPostServiceImpl.java
+14
-0
SysRoleServiceImpl.java
...a/org/dromara/system/service/impl/SysRoleServiceImpl.java
+11
-0
没有找到文件。
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
浏览文件 @
39baadf9
...
...
@@ -91,7 +91,7 @@ public class SysUserController extends BaseController {
@SaCheckPermission
(
"system:user:import"
)
@PostMapping
(
value
=
"/importData"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Void
>
importData
(
@RequestPart
(
"file"
)
MultipartFile
file
,
boolean
updateSupport
)
throws
Exception
{
ExcelResult
<
SysUserImportVo
>
result
=
ExcelUtil
.
importExcel
(
file
.
getInputStream
(),
SysUserImportVo
.
class
,
new
SysUserImportListener
(
updateSupport
));
ExcelResult
<
SysUserImportVo
>
result
=
ExcelUtil
.
importExcel
(
file
.
getInputStream
(),
SysUserImportVo
.
class
,
new
SysUserImportListener
(
false
));
return
R
.
ok
(
result
.
getAnalysis
());
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java
浏览文件 @
39baadf9
...
...
@@ -2,6 +2,7 @@ package org.dromara.system.listener;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.crypto.digest.BCrypt
;
import
cn.hutool.http.HtmlUtil
;
import
com.alibaba.excel.context.AnalysisContext
;
...
...
@@ -12,17 +13,19 @@ import lombok.extern.slf4j.Slf4j;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
import
org.dromara.common.core.utils.StringUtils
;
import
org.dromara.common.core.utils.ValidatorUtils
;
import
org.dromara.common.excel.core.ExcelListener
;
import
org.dromara.common.excel.core.ExcelResult
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.system.controller.system.SysUserController
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysUserImportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.service.ISysConfigService
;
import
org.dromara.system.service.ISysUserService
;
import
org.dromara.system.service.*
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 系统用户自定义导入
...
...
@@ -33,6 +36,10 @@ import java.util.List;
public
class
SysUserImportListener
extends
AnalysisEventListener
<
SysUserImportVo
>
implements
ExcelListener
<
SysUserImportVo
>
{
private
final
ISysUserService
userService
;
private
final
SysUserController
sysUserController
;
private
final
ISysDeptService
sysDeptService
;
private
final
ISysPostService
sysPostService
;
private
final
ISysRoleService
sysRoleService
;
private
final
String
password
;
...
...
@@ -48,6 +55,10 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
public
SysUserImportListener
(
Boolean
isUpdateSupport
)
{
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
this
.
userService
=
SpringUtils
.
getBean
(
ISysUserService
.
class
);
this
.
sysUserController
=
SpringUtils
.
getBean
(
SysUserController
.
class
);
this
.
sysDeptService
=
SpringUtils
.
getBean
(
ISysDeptService
.
class
);
this
.
sysPostService
=
SpringUtils
.
getBean
(
ISysPostService
.
class
);
this
.
sysRoleService
=
SpringUtils
.
getBean
(
ISysRoleService
.
class
);
this
.
password
=
BCrypt
.
hashpw
(
initPassword
);
this
.
isUpdateSupport
=
isUpdateSupport
;
this
.
operUserId
=
LoginHelper
.
getUserId
();
...
...
@@ -63,7 +74,20 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
ValidatorUtils
.
validate
(
user
);
user
.
setPassword
(
password
);
user
.
setCreateBy
(
operUserId
);
userService
.
insertUser
(
user
);
//设置部门
if
(
StringUtils
.
isNotEmpty
(
userVo
.
getDeptName
()))
{
Long
deptId
=
sysDeptService
.
selectDeptIdByName
(
StrUtil
.
split
(
userVo
.
getDeptName
(),
"/"
));
user
.
setDeptId
(
deptId
);
}
//设置岗位
if
(
Objects
.
nonNull
(
user
.
getDeptId
())
&&
StringUtils
.
isNotEmpty
(
userVo
.
getPostName
()))
{
user
.
setPostIds
(
sysPostService
.
selectPostIdsByDeptIdAndName
(
user
.
getDeptId
(),
StrUtil
.
split
(
userVo
.
getPostName
(),
"/"
)).
toArray
(
Long
[]::
new
));
}
//设置角色
if
(
StringUtils
.
isNotEmpty
(
userVo
.
getRoleName
()))
{
user
.
setRoleIds
(
sysRoleService
.
selectRoleIdsByNameList
(
StrUtil
.
split
(
userVo
.
getRoleName
(),
"/"
)).
toArray
(
Long
[]::
new
));
}
sysUserController
.
add
(
user
);
successNum
++;
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
user
.
getUserName
()).
append
(
" 导入成功"
);
}
else
if
(
isUpdateSupport
)
{
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
浏览文件 @
39baadf9
...
...
@@ -143,8 +143,17 @@ public interface ISysDeptService {
/**
* 首页部门详情
*
* @param deptId 部门id
* @return
*/
SysDeptDetailVo
deptDetailIndex
(
Long
deptId
);
/**
* 根据部门名称获取部门id
*
* @param deptNameList 部门名称
* @return 部门id
*/
Long
selectDeptIdByName
(
List
<
String
>
deptNameList
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java
浏览文件 @
39baadf9
...
...
@@ -119,4 +119,13 @@ public interface ISysPostService {
* @return 结果
*/
int
updatePost
(
SysPostBo
bo
);
/**
* 获取岗位id集合
*
* @param deptId 部门id
* @param postNameList 岗位名称集合
* @return 岗位id集合
*/
List
<
Long
>
selectPostIdsByDeptIdAndName
(
Long
deptId
,
List
<
String
>
postNameList
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java
浏览文件 @
39baadf9
...
...
@@ -195,6 +195,18 @@ public interface ISysRoleService {
*/
int
insertAuthUsers
(
Long
roleId
,
Long
[]
userIds
);
/**
* 根据角色清理在线用户
*
* @param roleId 角色id
*/
void
cleanOnlineUserByRole
(
Long
roleId
);
/**
* 获取角色Ids
*
* @param roleNameList 角色名称
* @return 角色ids
*/
List
<
Long
>
selectRoleIdsByNameList
(
List
<
String
>
roleNameList
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
浏览文件 @
39baadf9
...
...
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.dromara.common.core.constant.CacheNames
;
import
org.dromara.common.core.constant.UserConstants
;
...
...
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
*/
@RequiredArgsConstructor
@Service
@Slf4j
public
class
SysDeptServiceImpl
implements
ISysDeptService
{
private
final
SysDeptMapper
baseMapper
;
...
...
@@ -381,4 +383,36 @@ public class SysDeptServiceImpl implements ISysDeptService {
detail
.
setUserList
(
users
);
return
detail
;
}
@Override
public
Long
selectDeptIdByName
(
List
<
String
>
deptNameList
)
{
if
(
CollectionUtils
.
isEmpty
(
deptNameList
))
{
return
null
;
}
Long
parentId
=
0L
;
Long
deptId
=
null
;
SysDeptBo
bo
=
new
SysDeptBo
();
bo
.
setStatus
(
UserConstants
.
DEPT_NORMAL
);
LambdaQueryWrapper
<
SysDept
>
lqw
=
buildQueryWrapper
(
bo
);
lqw
.
select
(
SysDept:
:
getDeptId
,
SysDept:
:
getParentId
,
SysDept:
:
getDeptName
);
List
<
SysDeptVo
>
depts
=
baseMapper
.
selectDeptList
(
lqw
);
// 逐级查询部门ID
for
(
String
deptName
:
deptNameList
)
{
// 根据当前父ID和部门名称查询部门
Long
finalDeptId
=
deptId
;
SysDeptVo
dept
=
StreamUtils
.
findFirst
(
depts
,
d
->
Objects
.
equals
(
finalDeptId
,
d
.
getParentId
())
&&
StringUtils
.
equals
(
deptName
,
d
.
getDeptName
()));
if
(
dept
==
null
)
{
// 部门不存在,返回null或抛出异常
log
.
warn
(
"部门不存在: parentId={}, deptName={}"
,
parentId
,
deptName
);
return
null
;
}
// 更新父ID为当前部门ID,继续查询下一级
parentId
=
dept
.
getDeptId
();
deptId
=
dept
.
getDeptId
();
}
return
deptId
;
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
浏览文件 @
39baadf9
...
...
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.dromara.common.core.constant.UserConstants
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.MapstructUtils
;
...
...
@@ -27,6 +28,8 @@ import org.springframework.stereotype.Service;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -241,4 +244,15 @@ public class SysPostServiceImpl implements ISysPostService {
SysPost
post
=
MapstructUtils
.
convert
(
bo
,
SysPost
.
class
);
return
baseMapper
.
updateById
(
post
);
}
@Override
public
List
<
Long
>
selectPostIdsByDeptIdAndName
(
Long
deptId
,
List
<
String
>
postNameList
)
{
if
(
Objects
.
isNull
(
deptId
)
||
CollectionUtils
.
isEmpty
(
postNameList
))
{
return
List
.
of
();
}
List
<
SysPost
>
postList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysPost
>().
eq
(
SysPost:
:
getDeptId
,
deptId
));
return
postNameList
.
stream
().
map
(
pn
->
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
postList
,
p
->
StringUtils
.
equals
(
p
.
getPostName
(),
pn
))).
map
(
SysPost:
:
getDeptId
).
orElse
(
null
))
.
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
浏览文件 @
39baadf9
...
...
@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 角色 业务层处理
...
...
@@ -517,4 +518,14 @@ public class SysRoleServiceImpl implements ISysRoleService {
}
});
}
@Override
public
List
<
Long
>
selectRoleIdsByNameList
(
List
<
String
>
roleNameList
)
{
if
(
org
.
apache
.
commons
.
collections4
.
CollectionUtils
.
isEmpty
(
roleNameList
))
{
return
List
.
of
();
}
List
<
SysRole
>
roleList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysRole
>().
select
(
SysRole:
:
getRoleId
,
SysRole:
:
getRoleName
));
return
roleNameList
.
stream
().
map
(
rn
->
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
roleList
,
r
->
Objects
.
equals
(
r
.
getRoleName
(),
rn
))).
map
(
SysRole:
:
getRoleId
).
orElse
(
null
))
.
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论