Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
6cc3bb40
提交
6cc3bb40
authored
5月 12, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev'
# Conflicts: # ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java
上级
95d1bb0f
23936b66
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
286 行增加
和
46 行删除
+286
-46
pom.xml
ruoyi-modules/ruoyi-system/pom.xml
+6
-0
SysUserController.java
...g/dromara/system/controller/system/SysUserController.java
+1
-1
SysUserExportVo.java
...in/java/org/dromara/system/domain/vo/SysUserExportVo.java
+37
-20
SysUserImportVo.java
...in/java/org/dromara/system/domain/vo/SysUserImportVo.java
+52
-15
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
+15
-0
SysRoleServiceImpl.java
...a/org/dromara/system/service/impl/SysRoleServiceImpl.java
+11
-0
SysUserServiceImpl.java
...a/org/dromara/system/service/impl/SysUserServiceImpl.java
+71
-5
SysUserMapper.xml
...system/src/main/resources/mapper/system/SysUserMapper.xml
+2
-2
没有找到文件。
ruoyi-modules/ruoyi-system/pom.xml
浏览文件 @
6cc3bb40
...
@@ -109,6 +109,12 @@
...
@@ -109,6 +109,12 @@
<artifactId>
ruoyi-api-server
</artifactId>
<artifactId>
ruoyi-api-server
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.8.35
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
浏览文件 @
6cc3bb40
...
@@ -91,7 +91,7 @@ public class SysUserController extends BaseController {
...
@@ -91,7 +91,7 @@ public class SysUserController extends BaseController {
@SaCheckPermission
(
"system:user:import"
)
@SaCheckPermission
(
"system:user:import"
)
@PostMapping
(
value
=
"/importData"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
@PostMapping
(
value
=
"/importData"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Void
>
importData
(
@RequestPart
(
"file"
)
MultipartFile
file
,
boolean
updateSupport
)
throws
Exception
{
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
());
return
R
.
ok
(
result
.
getAnalysis
());
}
}
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java
浏览文件 @
6cc3bb40
package
org
.
dromara
.
system
.
domain
.
vo
;
package
org
.
dromara
.
system
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelIgnore
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -8,7 +9,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
...
@@ -8,7 +9,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
/**
* 用户对象导出VO
* 用户对象导出VO
...
@@ -26,7 +26,7 @@ public class SysUserExportVo implements Serializable {
...
@@ -26,7 +26,7 @@ public class SysUserExportVo implements Serializable {
/**
/**
* 用户ID
* 用户ID
*/
*/
@Excel
Property
(
value
=
"用户序号"
)
@Excel
Ignore
private
Long
userId
;
private
Long
userId
;
/**
/**
...
@@ -42,10 +42,16 @@ public class SysUserExportVo implements Serializable {
...
@@ -42,10 +42,16 @@ public class SysUserExportVo implements Serializable {
private
String
nickName
;
private
String
nickName
;
/**
/**
*
用户邮箱
*
部门id
*/
*/
@ExcelProperty
(
value
=
"用户邮箱"
)
@ExcelIgnore
private
String
email
;
private
Long
deptId
;
/**
* 归属部门
*/
@ExcelProperty
(
value
=
"归属部门"
)
private
String
deptName
;
/**
/**
* 手机号码
* 手机号码
...
@@ -53,6 +59,18 @@ public class SysUserExportVo implements Serializable {
...
@@ -53,6 +59,18 @@ public class SysUserExportVo implements Serializable {
@ExcelProperty
(
value
=
"手机号码"
)
@ExcelProperty
(
value
=
"手机号码"
)
private
String
phonenumber
;
private
String
phonenumber
;
/**
* 用户邮箱
*/
@ExcelProperty
(
value
=
"用户邮箱"
)
private
String
email
;
/**
* 身份证号码
*/
@ExcelProperty
(
value
=
"身份证"
)
private
String
idCard
;
/**
/**
* 用户性别
* 用户性别
*/
*/
...
@@ -67,28 +85,27 @@ public class SysUserExportVo implements Serializable {
...
@@ -67,28 +85,27 @@ public class SysUserExportVo implements Serializable {
@ExcelDictFormat
(
dictType
=
"sys_normal_disable"
)
@ExcelDictFormat
(
dictType
=
"sys_normal_disable"
)
private
String
status
;
private
String
status
;
/**
@ExcelProperty
(
"岗位"
)
* 最后登录IP
private
String
postName
;
*/
@ExcelProperty
(
value
=
"最后登录IP
"
)
@ExcelProperty
(
"角色
"
)
private
String
loginIp
;
private
String
roleName
;
/**
/**
*
最后登录时间
*
微信号
*/
*/
@ExcelProperty
(
value
=
"最后登录时间
"
)
@ExcelProperty
(
"微信号
"
)
private
Date
loginDate
;
private
String
wechatId
;
/**
/**
*
部门名称
*
微信二维码
*/
*/
@ExcelProperty
(
value
=
"部门名称
"
)
@ExcelProperty
(
"微信二维码
"
)
private
String
deptNam
e
;
private
Long
wechatQrCod
e
;
/**
/**
*
负责人
*
备注
*/
*/
@ExcelProperty
(
value
=
"部门负责人"
)
@ExcelProperty
(
"备注"
)
private
String
leaderName
;
private
String
remark
;
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java
浏览文件 @
6cc3bb40
package
org
.
dromara
.
system
.
domain
.
vo
;
package
org
.
dromara
.
system
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelIgnore
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -49,34 +50,34 @@ public class SysUserImportVo implements Serializable {
...
@@ -49,34 +50,34 @@ public class SysUserImportVo implements Serializable {
private
String
nickName
;
private
String
nickName
;
/**
/**
*
用户邮箱
*
部门id
*/
*/
@Excel
Property
(
value
=
"用户邮箱"
)
@Excel
Ignore
private
String
email
;
private
Long
deptId
;
/**
/**
*
手机号码
*
归属部门
*/
*/
@ExcelProperty
(
value
=
"
手机号码
"
)
@ExcelProperty
(
value
=
"
归属部门
"
)
private
String
phonenumber
;
private
String
deptName
;
/**
/**
*
身份证
号码
*
手机
号码
*/
*/
@ExcelProperty
(
value
=
"
身份证
"
)
@ExcelProperty
(
value
=
"
手机号码
"
)
private
String
idCard
;
private
String
phonenumber
;
/**
/**
*
微信号
*
用户邮箱
*/
*/
@ExcelProperty
(
value
=
"
微信号
"
)
@ExcelProperty
(
value
=
"
用户邮箱
"
)
private
String
wechatId
;
private
String
email
;
/**
/**
*
微信二维
码
*
身份证号
码
*/
*/
@ExcelProperty
(
value
=
"
微信二维码
"
)
@ExcelProperty
(
value
=
"
身份证
"
)
private
Long
wechatQrCode
;
private
String
idCard
;
/**
/**
* 用户性别
* 用户性别
...
@@ -92,4 +93,40 @@ public class SysUserImportVo implements Serializable {
...
@@ -92,4 +93,40 @@ public class SysUserImportVo implements Serializable {
@ExcelDictFormat
(
dictType
=
"sys_normal_disable"
)
@ExcelDictFormat
(
dictType
=
"sys_normal_disable"
)
private
String
status
;
private
String
status
;
@ExcelProperty
(
"岗位"
)
private
String
postName
;
/**
* 岗位组
*/
@ExcelIgnore
private
Long
[]
postIds
;
@ExcelProperty
(
"角色"
)
private
String
roleName
;
/**
* 角色组
*/
@ExcelIgnore
private
Long
[]
roleIds
;
/**
* 微信号
*/
@ExcelProperty
(
"微信号"
)
private
String
wechatId
;
/**
* 微信二维码
*/
@ExcelProperty
(
"微信二维码"
)
private
Long
wechatQrCode
;
/**
* 备注
*/
@ExcelProperty
(
"备注"
)
private
String
remark
;
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java
浏览文件 @
6cc3bb40
...
@@ -2,6 +2,7 @@ package org.dromara.system.listener;
...
@@ -2,6 +2,7 @@ package org.dromara.system.listener;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.crypto.digest.BCrypt
;
import
cn.hutool.crypto.digest.BCrypt
;
import
cn.hutool.http.HtmlUtil
;
import
cn.hutool.http.HtmlUtil
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.context.AnalysisContext
;
...
@@ -12,17 +13,19 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -12,17 +13,19 @@ import lombok.extern.slf4j.Slf4j;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.SpringUtils
;
import
org.dromara.common.core.utils.StreamUtils
;
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.core.utils.ValidatorUtils
;
import
org.dromara.common.excel.core.ExcelListener
;
import
org.dromara.common.excel.core.ExcelListener
;
import
org.dromara.common.excel.core.ExcelResult
;
import
org.dromara.common.excel.core.ExcelResult
;
import
org.dromara.common.satoken.utils.LoginHelper
;
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.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysUserImportVo
;
import
org.dromara.system.domain.vo.SysUserImportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.service.ISysConfigService
;
import
org.dromara.system.service.*
;
import
org.dromara.system.service.ISysUserService
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
/**
/**
* 系统用户自定义导入
* 系统用户自定义导入
...
@@ -33,6 +36,10 @@ import java.util.List;
...
@@ -33,6 +36,10 @@ import java.util.List;
public
class
SysUserImportListener
extends
AnalysisEventListener
<
SysUserImportVo
>
implements
ExcelListener
<
SysUserImportVo
>
{
public
class
SysUserImportListener
extends
AnalysisEventListener
<
SysUserImportVo
>
implements
ExcelListener
<
SysUserImportVo
>
{
private
final
ISysUserService
userService
;
private
final
ISysUserService
userService
;
private
final
SysUserController
sysUserController
;
private
final
ISysDeptService
sysDeptService
;
private
final
ISysPostService
sysPostService
;
private
final
ISysRoleService
sysRoleService
;
private
final
String
password
;
private
final
String
password
;
...
@@ -48,6 +55,10 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
...
@@ -48,6 +55,10 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
public
SysUserImportListener
(
Boolean
isUpdateSupport
)
{
public
SysUserImportListener
(
Boolean
isUpdateSupport
)
{
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
this
.
userService
=
SpringUtils
.
getBean
(
ISysUserService
.
class
);
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
.
password
=
BCrypt
.
hashpw
(
initPassword
);
this
.
isUpdateSupport
=
isUpdateSupport
;
this
.
isUpdateSupport
=
isUpdateSupport
;
this
.
operUserId
=
LoginHelper
.
getUserId
();
this
.
operUserId
=
LoginHelper
.
getUserId
();
...
@@ -63,7 +74,20 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
...
@@ -63,7 +74,20 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
ValidatorUtils
.
validate
(
user
);
ValidatorUtils
.
validate
(
user
);
user
.
setPassword
(
password
);
user
.
setPassword
(
password
);
user
.
setCreateBy
(
operUserId
);
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
++;
successNum
++;
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
user
.
getUserName
()).
append
(
" 导入成功"
);
successMsg
.
append
(
"<br/>"
).
append
(
successNum
).
append
(
"、账号 "
).
append
(
user
.
getUserName
()).
append
(
" 导入成功"
);
}
else
if
(
isUpdateSupport
)
{
}
else
if
(
isUpdateSupport
)
{
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
浏览文件 @
6cc3bb40
...
@@ -143,8 +143,17 @@ public interface ISysDeptService {
...
@@ -143,8 +143,17 @@ public interface ISysDeptService {
/**
/**
* 首页部门详情
* 首页部门详情
*
* @param deptId 部门id
* @param deptId 部门id
* @return
* @return
*/
*/
SysDeptDetailVo
deptDetailIndex
(
Long
deptId
);
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
浏览文件 @
6cc3bb40
...
@@ -119,4 +119,13 @@ public interface ISysPostService {
...
@@ -119,4 +119,13 @@ public interface ISysPostService {
* @return 结果
* @return 结果
*/
*/
int
updatePost
(
SysPostBo
bo
);
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
浏览文件 @
6cc3bb40
...
@@ -195,6 +195,18 @@ public interface ISysRoleService {
...
@@ -195,6 +195,18 @@ public interface ISysRoleService {
*/
*/
int
insertAuthUsers
(
Long
roleId
,
Long
[]
userIds
);
int
insertAuthUsers
(
Long
roleId
,
Long
[]
userIds
);
/**
* 根据角色清理在线用户
*
* @param roleId 角色id
*/
void
cleanOnlineUserByRole
(
Long
roleId
);
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
浏览文件 @
6cc3bb40
...
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -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.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.dromara.common.core.constant.CacheNames
;
import
org.dromara.common.core.constant.CacheNames
;
import
org.dromara.common.core.constant.UserConstants
;
import
org.dromara.common.core.constant.UserConstants
;
...
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
...
@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
*/
*/
@RequiredArgsConstructor
@RequiredArgsConstructor
@Service
@Service
@Slf4j
public
class
SysDeptServiceImpl
implements
ISysDeptService
{
public
class
SysDeptServiceImpl
implements
ISysDeptService
{
private
final
SysDeptMapper
baseMapper
;
private
final
SysDeptMapper
baseMapper
;
...
@@ -381,4 +383,36 @@ public class SysDeptServiceImpl implements ISysDeptService {
...
@@ -381,4 +383,36 @@ public class SysDeptServiceImpl implements ISysDeptService {
detail
.
setUserList
(
users
);
detail
.
setUserList
(
users
);
return
detail
;
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
=
parentId
;
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
浏览文件 @
6cc3bb40
...
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.dromara.common.core.constant.UserConstants
;
import
org.dromara.common.core.constant.UserConstants
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.MapstructUtils
;
import
org.dromara.common.core.utils.MapstructUtils
;
...
@@ -27,6 +28,8 @@ import org.springframework.stereotype.Service;
...
@@ -27,6 +28,8 @@ import org.springframework.stereotype.Service;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -241,4 +244,16 @@ public class SysPostServiceImpl implements ISysPostService {
...
@@ -241,4 +244,16 @@ public class SysPostServiceImpl implements ISysPostService {
SysPost
post
=
MapstructUtils
.
convert
(
bo
,
SysPost
.
class
);
SysPost
post
=
MapstructUtils
.
convert
(
bo
,
SysPost
.
class
);
return
baseMapper
.
updateById
(
post
);
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:
:
getPostId
).
orElse
(
null
))
.
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
}
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
浏览文件 @
6cc3bb40
...
@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
...
@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* 角色 业务层处理
* 角色 业务层处理
...
@@ -517,4 +518,14 @@ public class SysRoleServiceImpl implements ISysRoleService {
...
@@ -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
());
}
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
浏览文件 @
6cc3bb40
...
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
@@ -42,9 +43,8 @@ import org.springframework.cache.annotation.Cacheable;
...
@@ -42,9 +43,8 @@ import org.springframework.cache.annotation.Cacheable;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.Map
;
/**
/**
* 用户 业务层处理
* 用户 业务层处理
...
@@ -86,7 +86,72 @@ public class SysUserServiceImpl implements ISysUserService {
...
@@ -86,7 +86,72 @@ public class SysUserServiceImpl implements ISysUserService {
*/
*/
@Override
@Override
public
List
<
SysUserExportVo
>
selectUserExportList
(
SysUserBo
user
)
{
public
List
<
SysUserExportVo
>
selectUserExportList
(
SysUserBo
user
)
{
return
baseMapper
.
selectUserExportList
(
this
.
buildQueryWrapper
(
user
));
List
<
SysUserExportVo
>
list
=
baseMapper
.
selectUserExportList
(
this
.
buildQueryWrapper
(
user
));
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
List
<
Long
>
userIds
=
StreamUtils
.
toList
(
list
,
SysUserExportVo:
:
getUserId
);
//获取部门信息
List
<
Long
>
deptIdList
=
list
.
stream
().
map
(
SysUserExportVo:
:
getDeptId
).
filter
(
Objects:
:
nonNull
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
SysDept
>
deptList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
deptIdList
))
{
List
<
SysDept
>
sysDeptList
=
deptMapper
.
selectByIds
(
deptIdList
);
deptIdList
=
sysDeptList
.
stream
().
flatMap
(
s
->
{
List
<
Long
>
deptIds
=
StrUtil
.
split
(
s
.
getAncestors
(),
','
,
-
1
,
true
,
Convert:
:
toLong
);
deptIds
.
add
(
s
.
getDeptId
());
return
deptIds
.
stream
();
}).
distinct
().
collect
(
Collectors
.
toList
());
deptList
=
deptMapper
.
selectByIds
(
deptIdList
);
}
//获取岗位信息
List
<
SysUserPost
>
supList
=
userPostMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysUserPost
>().
in
(
SysUserPost:
:
getUserId
,
userIds
));
List
<
SysPost
>
postList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
supList
))
{
List
<
Long
>
postIds
=
StreamUtils
.
toList
(
supList
,
SysUserPost:
:
getPostId
);
postList
=
postMapper
.
selectByIds
(
postIds
);
}
//获取角色信息
List
<
SysUserRole
>
surList
=
userRoleMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysUserRole
>().
in
(
SysUserRole:
:
getUserId
,
userIds
));
List
<
SysRole
>
roleList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
supList
))
{
List
<
Long
>
roleIds
=
StreamUtils
.
toList
(
surList
,
SysUserRole:
:
getRoleId
);
roleList
=
roleMapper
.
selectByIds
(
roleIds
);
}
List
<
SysDept
>
finalDeptList
=
deptList
;
List
<
SysPost
>
finalPostList
=
postList
;
List
<
SysRole
>
finalRoleList
=
roleList
;
for
(
SysUserExportVo
export
:
list
)
{
//设置部门信息
if
(
ObjectUtil
.
isNotNull
(
export
.
getDeptId
()))
{
SysDept
sd
=
StreamUtils
.
findFirst
(
deptList
,
d
->
Objects
.
equals
(
d
.
getDeptId
(),
export
.
getDeptId
()));
if
(
ObjectUtil
.
isNotNull
(
sd
))
{
List
<
Long
>
deptIds
=
StrUtil
.
split
(
sd
.
getAncestors
(),
','
,
-
1
,
true
,
Convert:
:
toLong
);
deptIds
.
add
(
sd
.
getDeptId
());
export
.
setDeptName
(
deptIds
.
stream
().
map
(
deptId
->
{
if
(
Objects
.
equals
(
deptId
,
0L
))
{
return
null
;
}
return
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
finalDeptList
,
d
->
Objects
.
equals
(
d
.
getDeptId
(),
deptId
))).
map
(
SysDept:
:
getDeptName
).
orElse
(
null
);
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
joining
(
"/"
)));
}
}
//设置岗位信息
List
<
SysUserPost
>
posts
=
StreamUtils
.
filter
(
supList
,
sup
->
Objects
.
equals
(
sup
.
getUserId
(),
export
.
getUserId
()));
if
(
CollectionUtils
.
isNotEmpty
(
posts
))
{
List
<
Long
>
pIds
=
StreamUtils
.
toList
(
posts
,
SysUserPost:
:
getPostId
);
export
.
setPostName
(
pIds
.
stream
().
map
(
pid
->
{
return
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
finalPostList
,
p
->
Objects
.
equals
(
p
.
getPostId
(),
pid
))).
map
(
SysPost:
:
getPostName
).
orElse
(
null
);
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
joining
(
"/"
)));
}
//设置角色信息
List
<
SysUserRole
>
roles
=
StreamUtils
.
filter
(
surList
,
sur
->
Objects
.
equals
(
sur
.
getUserId
(),
export
.
getUserId
()));
if
(
CollectionUtils
.
isNotEmpty
(
roles
))
{
List
<
Long
>
rIds
=
StreamUtils
.
toList
(
roles
,
SysUserRole:
:
getRoleId
);
export
.
setRoleName
(
rIds
.
stream
().
map
(
rid
->
{
return
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
finalRoleList
,
p
->
Objects
.
equals
(
p
.
getRoleId
(),
rid
))).
map
(
SysRole:
:
getRoleName
).
orElse
(
null
);
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
joining
(
"/"
)));
}
}
}
return
list
;
}
}
private
Wrapper
<
SysUser
>
buildQueryWrapper
(
SysUserBo
user
)
{
private
Wrapper
<
SysUser
>
buildQueryWrapper
(
SysUserBo
user
)
{
...
@@ -162,7 +227,8 @@ public class SysUserServiceImpl implements ISysUserService {
...
@@ -162,7 +227,8 @@ public class SysUserServiceImpl implements ISysUserService {
*/
*/
@Override
@Override
public
SysUserVo
selectUserByUserName
(
String
userName
)
{
public
SysUserVo
selectUserByUserName
(
String
userName
)
{
return
baseMapper
.
selectVoOne
(
new
LambdaQueryWrapper
<
SysUser
>().
eq
(
SysUser:
:
getUserName
,
userName
));
return
baseMapper
.
selectVoOne
(
new
LambdaQueryWrapper
<
SysUser
>().
eq
(
SysUser:
:
getUserName
,
userName
)
.
eq
(
SysUser:
:
getUserType
,
UserType
.
SYS_USER
.
getUserType
()));
}
}
/**
/**
...
...
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
浏览文件 @
6cc3bb40
...
@@ -52,8 +52,8 @@
...
@@ -52,8 +52,8 @@
<select
id=
"selectUserExportList"
resultMap=
"SysUserExportResult"
>
<select
id=
"selectUserExportList"
resultMap=
"SysUserExportResult"
>
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.id_card, u.phonenumber, u.sex,
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.id_card, u.phonenumber, u.sex,
u.
status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
,
u.
wechat_id, u.wechat_qr_code, u.dept_id
,
d.dept_name, d.leader, u1.user_name as leaderName
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
from sys_user u
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user u1 on u1.user_id = d.leader
left join sys_user u1 on u1.user_id = d.leader
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论