Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
5619441f
提交
5619441f
authored
2月 03, 2023
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善 AdminUserServiceImpl 单元测试
上级
6474fba9
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
367 行增加
和
150 行删除
+367
-150
DataPermissionUtils.java
...amework/datapermission/core/util/DataPermissionUtils.java
+43
-0
DataPermissionUtilsTest.java
...rk/datapermission/core/utils/DataPermissionUtilsTest.java
+16
-0
BpmTaskAssignRuleServiceImpl.java
.../bpm/service/definition/BpmTaskAssignRuleServiceImpl.java
+3
-3
BpmTaskAssignRuleServiceImplTest.java
.../service/definition/BpmTaskAssignRuleServiceImplTest.java
+2
-2
AdminUserApi.java
...cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
+5
-5
AdminUserApiImpl.java
...ocoder/yudao/module/system/api/user/AdminUserApiImpl.java
+8
-8
UserController.java
...o/module/system/controller/admin/user/UserController.java
+8
-8
AdminUserMapper.java
...r/yudao/module/system/dal/mysql/user/AdminUserMapper.java
+3
-8
OperateLogServiceImpl.java
...o/module/system/service/logger/OperateLogServiceImpl.java
+2
-2
AdminUserService.java
...er/yudao/module/system/service/user/AdminUserService.java
+9
-17
AdminUserServiceImpl.java
...udao/module/system/service/user/AdminUserServiceImpl.java
+44
-50
OperateLogServiceImplTest.java
...dule/system/service/logger/OperateLogServiceImplTest.java
+2
-2
AdminUserServiceImplTest.java
.../module/system/service/user/AdminUserServiceImplTest.java
+222
-45
没有找到文件。
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/util/DataPermissionUtils.java
0 → 100644
浏览文件 @
5619441f
package
cn
.
iocoder
.
yudao
.
framework
.
datapermission
.
core
.
util
;
import
cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission
;
import
cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder
;
import
lombok.SneakyThrows
;
/**
* 数据权限 Util
*
* @author 芋道源码
*/
public
class
DataPermissionUtils
{
private
static
DataPermission
DATA_PERMISSION_DISABLE
;
@DataPermission
(
enable
=
false
)
@SneakyThrows
private
static
DataPermission
getDisableDataPermissionDisable
()
{
if
(
DATA_PERMISSION_DISABLE
==
null
)
{
DATA_PERMISSION_DISABLE
=
DataPermissionUtils
.
class
.
getDeclaredMethod
(
"getDisableDataPermissionDisable"
)
.
getAnnotation
(
DataPermission
.
class
);
}
return
DATA_PERMISSION_DISABLE
;
}
/**
* 忽略数据权限,执行对应的逻辑
*
* @param runnable 逻辑
*/
public
static
void
executeIgnore
(
Runnable
runnable
)
{
DataPermission
dataPermission
=
getDisableDataPermissionDisable
();
DataPermissionContextHolder
.
add
(
dataPermission
);
try
{
// 执行 runnable
runnable
.
run
();
}
finally
{
DataPermissionContextHolder
.
remove
();
}
}
}
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/utils/DataPermissionUtilsTest.java
0 → 100644
浏览文件 @
5619441f
package
cn
.
iocoder
.
yudao
.
framework
.
datapermission
.
core
.
utils
;
import
cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder
;
import
cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils
;
import
org.junit.jupiter.api.Test
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
public
class
DataPermissionUtilsTest
{
@Test
public
void
testExecuteIgnore
()
{
DataPermissionUtils
.
executeIgnore
(()
->
assertFalse
(
DataPermissionContextHolder
.
get
().
enable
()));
}
}
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmTaskAssignRuleServiceImpl.java
浏览文件 @
5619441f
...
...
@@ -220,7 +220,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
}
else
if
(
Objects
.
equals
(
type
,
BpmTaskAssignRuleTypeEnum
.
POST
.
getType
()))
{
postApi
.
validPostList
(
options
);
}
else
if
(
Objects
.
equals
(
type
,
BpmTaskAssignRuleTypeEnum
.
USER
.
getType
()))
{
adminUserApi
.
validUser
s
(
options
);
adminUserApi
.
validUser
List
(
options
);
}
else
if
(
Objects
.
equals
(
type
,
BpmTaskAssignRuleTypeEnum
.
USER_GROUP
.
getType
()))
{
userGroupService
.
validUserGroups
(
options
);
}
else
if
(
Objects
.
equals
(
type
,
BpmTaskAssignRuleTypeEnum
.
SCRIPT
.
getType
()))
{
...
...
@@ -288,7 +288,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
}
private
Set
<
Long
>
calculateTaskCandidateUsersByDeptMember
(
BpmTaskAssignRuleDO
rule
)
{
List
<
AdminUserRespDTO
>
users
=
adminUserApi
.
getUser
s
ByDeptIds
(
rule
.
getOptions
()).
getCheckedData
();
List
<
AdminUserRespDTO
>
users
=
adminUserApi
.
getUser
List
ByDeptIds
(
rule
.
getOptions
()).
getCheckedData
();
return
convertSet
(
users
,
AdminUserRespDTO:
:
getId
);
}
...
...
@@ -298,7 +298,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService {
}
private
Set
<
Long
>
calculateTaskCandidateUsersByPost
(
BpmTaskAssignRuleDO
rule
)
{
List
<
AdminUserRespDTO
>
users
=
adminUserApi
.
getUser
s
ByPostIds
(
rule
.
getOptions
()).
getCheckedData
();
List
<
AdminUserRespDTO
>
users
=
adminUserApi
.
getUser
List
ByPostIds
(
rule
.
getOptions
()).
getCheckedData
();
return
convertSet
(
users
,
AdminUserRespDTO:
:
getId
);
}
...
...
yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/service/definition/BpmTaskAssignRuleServiceImplTest.java
浏览文件 @
5619441f
...
...
@@ -87,7 +87,7 @@ public class BpmTaskAssignRuleServiceImplTest extends BaseDbUnitTest {
// mock 方法
List
<
AdminUserRespDTO
>
users
=
CollectionUtils
.
convertList
(
asSet
(
11L
,
22L
),
id
->
new
AdminUserRespDTO
().
setId
(
id
));
when
(
adminUserApi
.
getUser
s
ByDeptIds
(
eq
(
rule
.
getOptions
()))).
thenReturn
(
success
(
users
));
when
(
adminUserApi
.
getUser
List
ByDeptIds
(
eq
(
rule
.
getOptions
()))).
thenReturn
(
success
(
users
));
mockGetUserMap
(
asSet
(
11L
,
22L
));
// 调用
...
...
@@ -121,7 +121,7 @@ public class BpmTaskAssignRuleServiceImplTest extends BaseDbUnitTest {
// mock 方法
List
<
AdminUserRespDTO
>
users
=
CollectionUtils
.
convertList
(
asSet
(
11L
,
22L
),
id
->
new
AdminUserRespDTO
().
setId
(
id
));
when
(
adminUserApi
.
getUser
s
ByPostIds
(
eq
(
rule
.
getOptions
()))).
thenReturn
(
success
(
users
));
when
(
adminUserApi
.
getUser
List
ByPostIds
(
eq
(
rule
.
getOptions
()))).
thenReturn
(
success
(
users
));
mockGetUserMap
(
asSet
(
11L
,
22L
));
// 调用
...
...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
浏览文件 @
5619441f
...
...
@@ -30,17 +30,17 @@ public interface AdminUserApi {
@GetMapping
(
PREFIX
+
"/list"
)
@ApiOperation
(
"通过用户 ID 查询用户们"
)
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"部门编号数组"
,
example
=
"1,2"
,
required
=
true
,
allowMultiple
=
true
)
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
(
@RequestParam
(
"ids"
)
Collection
<
Long
>
ids
);
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
(
@RequestParam
(
"ids"
)
Collection
<
Long
>
ids
);
@GetMapping
(
PREFIX
+
"/list-by-dept-id"
)
@ApiOperation
(
"获得指定部门的用户数组"
)
@ApiImplicitParam
(
name
=
"deptIds"
,
value
=
"部门编号数组"
,
example
=
"1,2"
,
required
=
true
,
allowMultiple
=
true
)
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
ByDeptIds
(
@RequestParam
(
"deptIds"
)
Collection
<
Long
>
deptIds
);
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
ByDeptIds
(
@RequestParam
(
"deptIds"
)
Collection
<
Long
>
deptIds
);
@GetMapping
(
PREFIX
+
"/list-by-post-id"
)
@ApiOperation
(
"获得指定岗位的用户数组"
)
@ApiImplicitParam
(
name
=
"postIds"
,
value
=
"岗位编号数组"
,
example
=
"2,3"
,
required
=
true
,
allowMultiple
=
true
)
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
ByPostIds
(
@RequestParam
(
"postIds"
)
Collection
<
Long
>
postIds
);
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
ByPostIds
(
@RequestParam
(
"postIds"
)
Collection
<
Long
>
postIds
);
/**
* 获得用户 Map
...
...
@@ -49,12 +49,12 @@ public interface AdminUserApi {
* @return 用户 Map
*/
default
Map
<
Long
,
AdminUserRespDTO
>
getUserMap
(
Collection
<
Long
>
ids
)
{
return
CollectionUtils
.
convertMap
(
getUser
s
(
ids
).
getCheckedData
(),
AdminUserRespDTO:
:
getId
);
return
CollectionUtils
.
convertMap
(
getUser
List
(
ids
).
getCheckedData
(),
AdminUserRespDTO:
:
getId
);
}
@GetMapping
(
PREFIX
+
"/valid"
)
@ApiOperation
(
"校验用户们是否有效"
)
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"用户编号数组"
,
example
=
"3,5"
,
required
=
true
)
CommonResult
<
Boolean
>
validUser
s
(
@RequestParam
(
"ids"
)
Set
<
Long
>
ids
);
CommonResult
<
Boolean
>
validUser
List
(
@RequestParam
(
"ids"
)
Set
<
Long
>
ids
);
}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
浏览文件 @
5619441f
...
...
@@ -33,26 +33,26 @@ public class AdminUserApiImpl implements AdminUserApi {
}
@Override
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
(
Collection
<
Long
>
ids
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
s
(
ids
);
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
(
Collection
<
Long
>
ids
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
List
(
ids
);
return
success
(
UserConvert
.
INSTANCE
.
convertList4
(
users
));
}
@Override
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
ByDeptIds
(
Collection
<
Long
>
deptIds
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
s
ByDeptIds
(
deptIds
);
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
ByDeptIds
(
Collection
<
Long
>
deptIds
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
List
ByDeptIds
(
deptIds
);
return
success
(
UserConvert
.
INSTANCE
.
convertList4
(
users
));
}
@Override
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
s
ByPostIds
(
Collection
<
Long
>
postIds
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
s
ByPostIds
(
postIds
);
public
CommonResult
<
List
<
AdminUserRespDTO
>>
getUser
List
ByPostIds
(
Collection
<
Long
>
postIds
)
{
List
<
AdminUserDO
>
users
=
userService
.
getUser
List
ByPostIds
(
postIds
);
return
success
(
UserConvert
.
INSTANCE
.
convertList4
(
users
));
}
@Override
public
CommonResult
<
Boolean
>
validUser
s
(
Set
<
Long
>
ids
)
{
userService
.
valid
Users
(
ids
);
public
CommonResult
<
Boolean
>
validUser
List
(
Set
<
Long
>
ids
)
{
userService
.
valid
ateUserList
(
ids
);
return
success
(
true
);
}
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
浏览文件 @
5619441f
...
...
@@ -111,9 +111,9 @@ public class UserController {
@GetMapping
(
"/list-all-simple"
)
@ApiOperation
(
value
=
"获取用户精简信息列表"
,
notes
=
"只包含被开启的用户,主要用于前端的下拉选项"
)
public
CommonResult
<
List
<
UserSimpleRespVO
>>
getSimpleUser
s
()
{
// 获用户
门
列表,只要开启状态的
List
<
AdminUserDO
>
list
=
userService
.
getUser
s
ByStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
public
CommonResult
<
List
<
UserSimpleRespVO
>>
getSimpleUser
List
()
{
// 获用户列表,只要开启状态的
List
<
AdminUserDO
>
list
=
userService
.
getUser
List
ByStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
// 排序后,返回给前端
return
success
(
UserConvert
.
INSTANCE
.
convertList04
(
list
));
}
...
...
@@ -122,7 +122,7 @@ public class UserController {
@ApiOperation
(
"获得用户详情"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"编号"
,
required
=
true
,
example
=
"1024"
,
dataTypeClass
=
Long
.
class
)
@PreAuthorize
(
"@ss.hasPermission('system:user:query')"
)
public
CommonResult
<
UserRespVO
>
get
Info
(
@RequestParam
(
"id"
)
Long
id
)
{
public
CommonResult
<
UserRespVO
>
get
User
(
@RequestParam
(
"id"
)
Long
id
)
{
return
success
(
UserConvert
.
INSTANCE
.
convert
(
userService
.
getUser
(
id
)));
}
...
...
@@ -130,10 +130,10 @@ public class UserController {
@ApiOperation
(
"导出用户"
)
@PreAuthorize
(
"@ss.hasPermission('system:user:export')"
)
@OperateLog
(
type
=
EXPORT
)
public
void
exportUser
s
(
@Validated
UserExportReqVO
reqVO
,
HttpServletResponse
response
)
throws
IOException
{
public
void
exportUser
List
(
@Validated
UserExportReqVO
reqVO
,
HttpServletResponse
response
)
throws
IOException
{
// 获得用户列表
List
<
AdminUserDO
>
users
=
userService
.
getUser
s
(
reqVO
);
List
<
AdminUserDO
>
users
=
userService
.
getUser
List
(
reqVO
);
// 获得拼接需要的数据
Collection
<
Long
>
deptIds
=
convertList
(
users
,
AdminUserDO:
:
getDeptId
);
...
...
@@ -183,7 +183,7 @@ public class UserController {
public
CommonResult
<
UserImportRespVO
>
importExcel
(
@RequestParam
(
"file"
)
MultipartFile
file
,
@RequestParam
(
value
=
"updateSupport"
,
required
=
false
,
defaultValue
=
"false"
)
Boolean
updateSupport
)
throws
Exception
{
List
<
UserImportExcelVO
>
list
=
ExcelUtils
.
read
(
file
,
UserImportExcelVO
.
class
);
return
success
(
userService
.
importUser
s
(
list
,
updateSupport
));
return
success
(
userService
.
importUser
List
(
list
,
updateSupport
));
}
}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
浏览文件 @
5619441f
...
...
@@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import
cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.Collection
;
...
...
@@ -16,15 +15,15 @@ import java.util.List;
public
interface
AdminUserMapper
extends
BaseMapperX
<
AdminUserDO
>
{
default
AdminUserDO
selectByUsername
(
String
username
)
{
return
selectOne
(
new
LambdaQueryWrapper
<
AdminUserDO
>().
eq
(
AdminUserDO:
:
getUsername
,
username
)
);
return
selectOne
(
AdminUserDO:
:
getUsername
,
username
);
}
default
AdminUserDO
selectByEmail
(
String
email
)
{
return
selectOne
(
new
LambdaQueryWrapper
<
AdminUserDO
>().
eq
(
AdminUserDO:
:
getEmail
,
email
)
);
return
selectOne
(
AdminUserDO:
:
getEmail
,
email
);
}
default
AdminUserDO
selectByMobile
(
String
mobile
)
{
return
selectOne
(
new
LambdaQueryWrapper
<
AdminUserDO
>().
eq
(
AdminUserDO:
:
getMobile
,
mobile
)
);
return
selectOne
(
AdminUserDO:
:
getMobile
,
mobile
);
}
default
PageResult
<
AdminUserDO
>
selectPage
(
UserPageReqVO
reqVO
,
Collection
<
Long
>
deptIds
)
{
...
...
@@ -50,10 +49,6 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
return
selectList
(
new
LambdaQueryWrapperX
<
AdminUserDO
>().
like
(
AdminUserDO:
:
getNickname
,
nickname
));
}
default
List
<
AdminUserDO
>
selectListByUsername
(
String
username
)
{
return
selectList
(
new
LambdaQueryWrapperX
<
AdminUserDO
>().
like
(
AdminUserDO:
:
getUsername
,
username
));
}
default
List
<
AdminUserDO
>
selectListByStatus
(
Integer
status
)
{
return
selectList
(
AdminUserDO:
:
getStatus
,
status
);
}
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
浏览文件 @
5619441f
...
...
@@ -49,7 +49,7 @@ public class OperateLogServiceImpl implements OperateLogService {
// 处理基于用户昵称的查询
Collection
<
Long
>
userIds
=
null
;
if
(
StrUtil
.
isNotEmpty
(
reqVO
.
getUserNickname
()))
{
userIds
=
convertSet
(
userService
.
getUser
s
ByNickname
(
reqVO
.
getUserNickname
()),
AdminUserDO:
:
getId
);
userIds
=
convertSet
(
userService
.
getUser
List
ByNickname
(
reqVO
.
getUserNickname
()),
AdminUserDO:
:
getId
);
if
(
CollUtil
.
isEmpty
(
userIds
))
{
return
PageResult
.
empty
();
}
...
...
@@ -63,7 +63,7 @@ public class OperateLogServiceImpl implements OperateLogService {
// 处理基于用户昵称的查询
Collection
<
Long
>
userIds
=
null
;
if
(
StrUtil
.
isNotEmpty
(
reqVO
.
getUserNickname
()))
{
userIds
=
convertSet
(
userService
.
getUser
s
ByNickname
(
reqVO
.
getUserNickname
()),
AdminUserDO:
:
getId
);
userIds
=
convertSet
(
userService
.
getUser
List
ByNickname
(
reqVO
.
getUserNickname
()),
AdminUserDO:
:
getId
);
if
(
CollUtil
.
isEmpty
(
userIds
))
{
return
Collections
.
emptyList
();
}
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
浏览文件 @
5619441f
...
...
@@ -127,7 +127,7 @@ public interface AdminUserService {
* @param deptIds 部门数组
* @return 用户数组
*/
List
<
AdminUserDO
>
getUser
s
ByDeptIds
(
Collection
<
Long
>
deptIds
);
List
<
AdminUserDO
>
getUser
List
ByDeptIds
(
Collection
<
Long
>
deptIds
);
/**
* 获得指定岗位的用户数组
...
...
@@ -135,7 +135,7 @@ public interface AdminUserService {
* @param postIds 岗位数组
* @return 用户数组
*/
List
<
AdminUserDO
>
getUser
s
ByPostIds
(
Collection
<
Long
>
postIds
);
List
<
AdminUserDO
>
getUser
List
ByPostIds
(
Collection
<
Long
>
postIds
);
/**
* 获得用户列表
...
...
@@ -143,7 +143,7 @@ public interface AdminUserService {
* @param ids 用户编号数组
* @return 用户列表
*/
List
<
AdminUserDO
>
getUser
s
(
Collection
<
Long
>
ids
);
List
<
AdminUserDO
>
getUser
List
(
Collection
<
Long
>
ids
);
/**
* 校验用户们是否有效。如下情况,视为无效:
...
...
@@ -152,7 +152,7 @@ public interface AdminUserService {
*
* @param ids 用户编号数组
*/
void
valid
Users
(
Set
<
Long
>
ids
);
void
valid
ateUserList
(
Collection
<
Long
>
ids
);
/**
* 获得用户 Map
...
...
@@ -164,7 +164,7 @@ public interface AdminUserService {
if
(
CollUtil
.
isEmpty
(
ids
))
{
return
new
HashMap
<>();
}
return
CollectionUtils
.
convertMap
(
getUser
s
(
ids
),
AdminUserDO:
:
getId
);
return
CollectionUtils
.
convertMap
(
getUser
List
(
ids
),
AdminUserDO:
:
getId
);
}
/**
...
...
@@ -173,7 +173,7 @@ public interface AdminUserService {
* @param reqVO 列表请求
* @return 用户列表
*/
List
<
AdminUserDO
>
getUser
s
(
UserExportReqVO
reqVO
);
List
<
AdminUserDO
>
getUser
List
(
UserExportReqVO
reqVO
);
/**
* 获得用户列表,基于昵称模糊匹配
...
...
@@ -181,15 +181,7 @@ public interface AdminUserService {
* @param nickname 昵称
* @return 用户列表
*/
List
<
AdminUserDO
>
getUsersByNickname
(
String
nickname
);
/**
* 获得用户列表,基于用户账号模糊匹配
*
* @param username 用户账号
* @return 用户列表
*/
List
<
AdminUserDO
>
getUsersByUsername
(
String
username
);
List
<
AdminUserDO
>
getUserListByNickname
(
String
nickname
);
/**
* 批量导入用户
...
...
@@ -198,7 +190,7 @@ public interface AdminUserService {
* @param isUpdateSupport 是否支持更新
* @return 导入结果
*/
UserImportRespVO
importUser
s
(
List
<
UserImportExcelVO
>
importUsers
,
boolean
isUpdateSupport
);
UserImportRespVO
importUser
List
(
List
<
UserImportExcelVO
>
importUsers
,
boolean
isUpdateSupport
);
/**
* 获得指定状态的用户们
...
...
@@ -206,7 +198,7 @@ public interface AdminUserService {
* @param status 状态
* @return 用户们
*/
List
<
AdminUserDO
>
getUser
s
ByStatus
(
Integer
status
);
List
<
AdminUserDO
>
getUser
List
ByStatus
(
Integer
status
);
/**
* 判断密码是否匹配
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
浏览文件 @
5619441f
...
...
@@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import
cn.iocoder.yudao.framework.common.exception.ServiceException
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.util.collection.CollectionUtils
;
import
cn.iocoder.yudao.framework.datapermission.core.
annotation.DataPermission
;
import
cn.iocoder.yudao.framework.datapermission.core.
util.DataPermissionUtils
;
import
cn.iocoder.yudao.module.infra.api.file.FileApi
;
import
cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO
;
...
...
@@ -43,6 +43,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
/**
* 后台用户 Service 实现类
*
* @author 芋道源码
*/
@Service
(
"adminUserService"
)
...
...
@@ -73,10 +74,6 @@ public class AdminUserServiceImpl implements AdminUserService {
@Resource
private
FileApi
fileApi
;
@Resource
@Lazy
// 循环依赖(自己依赖自己),避免报错
private
AdminUserServiceImpl
self
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Long
createUser
(
UserCreateReqVO
reqVO
)
{
...
...
@@ -88,12 +85,12 @@ public class AdminUserServiceImpl implements AdminUserService {
}
});
// 校验正确性
self
.
check
CreateOrUpdate
(
null
,
reqVO
.
getUsername
(),
reqVO
.
getMobile
(),
reqVO
.
getEmail
(),
validateUserFor
CreateOrUpdate
(
null
,
reqVO
.
getUsername
(),
reqVO
.
getMobile
(),
reqVO
.
getEmail
(),
reqVO
.
getDeptId
(),
reqVO
.
getPostIds
());
// 插入用户
AdminUserDO
user
=
UserConvert
.
INSTANCE
.
convert
(
reqVO
);
user
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
// 默认开启
user
.
setPassword
(
passwordEncoder
.
encode
(
reqVO
.
getPassword
()));
// 加密密码
user
.
setPassword
(
encodePassword
(
reqVO
.
getPassword
()));
// 加密密码
userMapper
.
insert
(
user
);
// 插入关联岗位
if
(
CollectionUtil
.
isNotEmpty
(
user
.
getPostIds
()))
{
...
...
@@ -107,7 +104,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateUser
(
UserUpdateReqVO
reqVO
)
{
// 校验正确性
self
.
check
CreateOrUpdate
(
reqVO
.
getId
(),
reqVO
.
getUsername
(),
reqVO
.
getMobile
(),
reqVO
.
getEmail
(),
validateUserFor
CreateOrUpdate
(
reqVO
.
getId
(),
reqVO
.
getUsername
(),
reqVO
.
getMobile
(),
reqVO
.
getEmail
(),
reqVO
.
getDeptId
(),
reqVO
.
getPostIds
());
// 更新用户
AdminUserDO
updateObj
=
UserConvert
.
INSTANCE
.
convert
(
reqVO
);
...
...
@@ -141,9 +138,9 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public
void
updateUserProfile
(
Long
id
,
UserProfileUpdateReqVO
reqVO
)
{
// 校验正确性
check
UserExists
(
id
);
check
EmailUnique
(
id
,
reqVO
.
getEmail
());
check
MobileUnique
(
id
,
reqVO
.
getMobile
());
validate
UserExists
(
id
);
validate
EmailUnique
(
id
,
reqVO
.
getEmail
());
validate
MobileUnique
(
id
,
reqVO
.
getMobile
());
// 执行更新
userMapper
.
updateById
(
UserConvert
.
INSTANCE
.
convert
(
reqVO
).
setId
(
id
));
}
...
...
@@ -151,7 +148,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public
void
updateUserPassword
(
Long
id
,
UserProfileUpdatePasswordReqVO
reqVO
)
{
// 校验旧密码密码
check
OldPassword
(
id
,
reqVO
.
getOldPassword
());
validate
OldPassword
(
id
,
reqVO
.
getOldPassword
());
// 执行更新
AdminUserDO
updateObj
=
new
AdminUserDO
().
setId
(
id
);
updateObj
.
setPassword
(
encodePassword
(
reqVO
.
getNewPassword
()));
// 加密密码
...
...
@@ -160,7 +157,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public
String
updateUserAvatar
(
Long
id
,
InputStream
avatarFile
)
throws
Exception
{
check
UserExists
(
id
);
validate
UserExists
(
id
);
// 存储文件
String
avatar
=
fileApi
.
createFile
(
IoUtil
.
readBytes
(
avatarFile
));
// 更新路径
...
...
@@ -174,7 +171,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public
void
updateUserPassword
(
Long
id
,
String
password
)
{
// 校验用户存在
check
UserExists
(
id
);
validate
UserExists
(
id
);
// 更新密码
AdminUserDO
updateObj
=
new
AdminUserDO
();
updateObj
.
setId
(
id
);
...
...
@@ -185,7 +182,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public
void
updateUserStatus
(
Long
id
,
Integer
status
)
{
// 校验用户存在
check
UserExists
(
id
);
validate
UserExists
(
id
);
// 更新状态
AdminUserDO
updateObj
=
new
AdminUserDO
();
updateObj
.
setId
(
id
);
...
...
@@ -197,7 +194,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteUser
(
Long
id
)
{
// 校验用户存在
check
UserExists
(
id
);
validate
UserExists
(
id
);
// 删除用户
userMapper
.
deleteById
(
id
);
// 删除用户关联数据
...
...
@@ -227,7 +224,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
List
<
AdminUserDO
>
getUser
s
ByDeptIds
(
Collection
<
Long
>
deptIds
)
{
public
List
<
AdminUserDO
>
getUser
List
ByDeptIds
(
Collection
<
Long
>
deptIds
)
{
if
(
CollUtil
.
isEmpty
(
deptIds
))
{
return
Collections
.
emptyList
();
}
...
...
@@ -235,7 +232,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
List
<
AdminUserDO
>
getUser
s
ByPostIds
(
Collection
<
Long
>
postIds
)
{
public
List
<
AdminUserDO
>
getUser
List
ByPostIds
(
Collection
<
Long
>
postIds
)
{
if
(
CollUtil
.
isEmpty
(
postIds
))
{
return
Collections
.
emptyList
();
}
...
...
@@ -247,7 +244,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
List
<
AdminUserDO
>
getUser
s
(
Collection
<
Long
>
ids
)
{
public
List
<
AdminUserDO
>
getUser
List
(
Collection
<
Long
>
ids
)
{
if
(
CollUtil
.
isEmpty
(
ids
))
{
return
Collections
.
emptyList
();
}
...
...
@@ -255,7 +252,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
void
valid
Users
(
Set
<
Long
>
ids
)
{
public
void
valid
ateUserList
(
Collection
<
Long
>
ids
)
{
if
(
CollUtil
.
isEmpty
(
ids
))
{
return
;
}
...
...
@@ -275,20 +272,15 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
List
<
AdminUserDO
>
getUser
s
(
UserExportReqVO
reqVO
)
{
public
List
<
AdminUserDO
>
getUser
List
(
UserExportReqVO
reqVO
)
{
return
userMapper
.
selectList
(
reqVO
,
getDeptCondition
(
reqVO
.
getDeptId
()));
}
@Override
public
List
<
AdminUserDO
>
getUser
s
ByNickname
(
String
nickname
)
{
public
List
<
AdminUserDO
>
getUser
List
ByNickname
(
String
nickname
)
{
return
userMapper
.
selectListByNickname
(
nickname
);
}
@Override
public
List
<
AdminUserDO
>
getUsersByUsername
(
String
username
)
{
return
userMapper
.
selectListByUsername
(
username
);
}
/**
* 获得部门条件:查询指定部门的子部门编号们,包括自身
* @param deptId 部门编号
...
...
@@ -304,25 +296,27 @@ public class AdminUserServiceImpl implements AdminUserService {
return
deptIds
;
}
@DataPermission
(
enable
=
false
)
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
public
void
checkCreateOrUpdate
(
Long
id
,
String
username
,
String
mobile
,
String
email
,
Long
deptId
,
Set
<
Long
>
postIds
)
{
// 校验用户存在
checkUserExists
(
id
);
// 校验用户名唯一
checkUsernameUnique
(
id
,
username
);
// 校验手机号唯一
checkMobileUnique
(
id
,
mobile
);
// 校验邮箱唯一
checkEmailUnique
(
id
,
email
);
// 校验部门处于开启状态
deptService
.
validateDeptList
(
CollectionUtils
.
singleton
(
deptId
));
// 校验岗位处于开启状态
postService
.
validatePostList
(
postIds
);
private
void
validateUserForCreateOrUpdate
(
Long
id
,
String
username
,
String
mobile
,
String
email
,
Long
deptId
,
Set
<
Long
>
postIds
)
{
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
DataPermissionUtils
.
executeIgnore
(()
->
{
// 校验用户存在
validateUserExists
(
id
);
// 校验用户名唯一
validateUsernameUnique
(
id
,
username
);
// 校验手机号唯一
validateMobileUnique
(
id
,
mobile
);
// 校验邮箱唯一
validateEmailUnique
(
id
,
email
);
// 校验部门处于开启状态
deptService
.
validateDeptList
(
CollectionUtils
.
singleton
(
deptId
));
// 校验岗位处于开启状态
postService
.
validatePostList
(
postIds
);
});
}
@VisibleForTesting
public
void
check
UserExists
(
Long
id
)
{
void
validate
UserExists
(
Long
id
)
{
if
(
id
==
null
)
{
return
;
}
...
...
@@ -333,7 +327,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@VisibleForTesting
public
void
check
UsernameUnique
(
Long
id
,
String
username
)
{
void
validate
UsernameUnique
(
Long
id
,
String
username
)
{
if
(
StrUtil
.
isBlank
(
username
))
{
return
;
}
...
...
@@ -351,7 +345,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@VisibleForTesting
public
void
check
EmailUnique
(
Long
id
,
String
email
)
{
void
validate
EmailUnique
(
Long
id
,
String
email
)
{
if
(
StrUtil
.
isBlank
(
email
))
{
return
;
}
...
...
@@ -369,7 +363,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@VisibleForTesting
public
void
check
MobileUnique
(
Long
id
,
String
mobile
)
{
void
validate
MobileUnique
(
Long
id
,
String
mobile
)
{
if
(
StrUtil
.
isBlank
(
mobile
))
{
return
;
}
...
...
@@ -392,7 +386,7 @@ public class AdminUserServiceImpl implements AdminUserService {
* @param oldPassword 旧密码
*/
@VisibleForTesting
public
void
check
OldPassword
(
Long
id
,
String
oldPassword
)
{
void
validate
OldPassword
(
Long
id
,
String
oldPassword
)
{
AdminUserDO
user
=
userMapper
.
selectById
(
id
);
if
(
user
==
null
)
{
throw
exception
(
USER_NOT_EXISTS
);
...
...
@@ -404,7 +398,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
// 添加事务,异常则回滚所有导入
public
UserImportRespVO
importUser
s
(
List
<
UserImportExcelVO
>
importUsers
,
boolean
isUpdateSupport
)
{
public
UserImportRespVO
importUser
List
(
List
<
UserImportExcelVO
>
importUsers
,
boolean
isUpdateSupport
)
{
if
(
CollUtil
.
isEmpty
(
importUsers
))
{
throw
exception
(
USER_IMPORT_LIST_IS_EMPTY
);
}
...
...
@@ -413,7 +407,7 @@ public class AdminUserServiceImpl implements AdminUserService {
importUsers
.
forEach
(
importUser
->
{
// 校验,判断是否有不符合的原因
try
{
check
CreateOrUpdate
(
null
,
null
,
importUser
.
getMobile
(),
importUser
.
getEmail
(),
validateUserFor
CreateOrUpdate
(
null
,
null
,
importUser
.
getMobile
(),
importUser
.
getEmail
(),
importUser
.
getDeptId
(),
null
);
}
catch
(
ServiceException
ex
)
{
respVO
.
getFailureUsernames
().
put
(
importUser
.
getUsername
(),
ex
.
getMessage
());
...
...
@@ -441,7 +435,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public
List
<
AdminUserDO
>
getUser
s
ByStatus
(
Integer
status
)
{
public
List
<
AdminUserDO
>
getUser
List
ByStatus
(
Integer
status
)
{
return
userMapper
.
selectListByStatus
(
status
);
}
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImplTest.java
浏览文件 @
5619441f
...
...
@@ -64,7 +64,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
o
.
setNickname
(
"wang"
);
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
});
when
(
userService
.
getUser
s
ByNickname
(
"wang"
)).
thenReturn
(
Collections
.
singletonList
(
user
));
when
(
userService
.
getUser
List
ByNickname
(
"wang"
)).
thenReturn
(
Collections
.
singletonList
(
user
));
Long
userId
=
user
.
getId
();
// 构造操作日志
...
...
@@ -112,7 +112,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest {
o
.
setNickname
(
"wang"
);
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
});
when
(
userService
.
getUser
s
ByNickname
(
"wang"
)).
thenReturn
(
Collections
.
singletonList
(
user
));
when
(
userService
.
getUser
List
ByNickname
(
"wang"
)).
thenReturn
(
Collections
.
singletonList
(
user
));
Long
userId
=
user
.
getId
();
// 构造操作日志
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
浏览文件 @
5619441f
...
...
@@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.common.util.collection.ArrayUtils
;
import
cn.iocoder.yudao.framework.common.util.collection.CollectionUtils
;
import
cn.iocoder.yudao.framework.common.util.object.ObjectUtils
;
import
cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest
;
import
cn.iocoder.yudao.module.infra.api.file.FileApi
;
import
cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO
;
...
...
@@ -32,23 +31,25 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import
javax.annotation.Resource
;
import
java.io.ByteArrayInputStream
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Consumer
;
import
static
cn
.
hutool
.
core
.
util
.
RandomUtil
.
randomBytes
;
import
static
cn
.
hutool
.
core
.
util
.
RandomUtil
.
randomEle
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
collection
.
SetUtils
.
asSet
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
buildLocalDateTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
LocalDateTimeUtils
.
buildBetweenTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
LocalDateTimeUtils
.
buildTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
object
.
ObjectUtils
.
cloneIgnoreId
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
AssertUtils
.
assertPojoEquals
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
AssertUtils
.
assertServiceException
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
RandomUtils
.*;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.*;
import
static
java
.
util
.
Collections
.
singleton
;
import
static
java
.
util
.
Collections
.
singletonList
;
import
static
org
.
assertj
.
core
.
util
.
Lists
.
newArrayList
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertEquals
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
import
static
org
.
mockito
.
ArgumentMatchers
.*;
import
static
org
.
mockito
.
Mockito
.*;
...
...
@@ -173,6 +174,23 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
assertEquals
(
3L
,
userPosts
.
get
(
1
).
getPostId
());
}
@Test
public
void
testUpdateUserLogin
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
(
o
->
o
.
setLoginDate
(
null
));
userMapper
.
insert
(
user
);
// 准备参数
Long
id
=
user
.
getId
();
String
loginIp
=
randomString
();
// 调用
userService
.
updateUserLogin
(
id
,
loginIp
);
// 断言
AdminUserDO
dbUser
=
userMapper
.
selectById
(
id
);
assertEquals
(
loginIp
,
dbUser
.
getLoginIp
());
assertNotNull
(
dbUser
.
getLoginDate
());
}
@Test
public
void
testUpdateUserProfile_success
()
{
// mock 数据
...
...
@@ -286,6 +304,34 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
verify
(
permissionService
,
times
(
1
)).
processUserDeleted
(
eq
(
userId
));
}
@Test
public
void
testGetUserByUsername
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
();
userMapper
.
insert
(
dbUser
);
// 准备参数
String
username
=
dbUser
.
getUsername
();
// 调用
AdminUserDO
user
=
userService
.
getUserByUsername
(
username
);
// 断言
assertPojoEquals
(
dbUser
,
user
);
}
@Test
public
void
testGetUserByMobile
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
();
userMapper
.
insert
(
dbUser
);
// 准备参数
String
mobile
=
dbUser
.
getMobile
();
// 调用
AdminUserDO
user
=
userService
.
getUserByMobile
(
mobile
);
// 断言
assertPojoEquals
(
dbUser
,
user
);
}
@Test
public
void
testGetUserPage
()
{
// mock 数据
...
...
@@ -295,8 +341,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
reqVO
.
setUsername
(
"tu"
);
reqVO
.
setMobile
(
"1560"
);
reqVO
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
reqVO
.
setCreateTime
((
new
LocalDateTime
[]{
buildLocalDateTime
(
2020
,
12
,
1
),
buildLocalDateTime
(
2020
,
12
,
24
)}));
reqVO
.
setCreateTime
(
buildBetweenTime
(
2020
,
12
,
1
,
2020
,
12
,
24
));
reqVO
.
setDeptId
(
1L
);
// 其中,1L 是 2L 的父部门
// mock 方法
List
<
DeptDO
>
deptList
=
newArrayList
(
randomPojo
(
DeptDO
.
class
,
o
->
o
.
setId
(
2L
)));
...
...
@@ -311,7 +356,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
}
@Test
public
void
testGetUser
s
()
{
public
void
testGetUser
List_export
()
{
// mock 数据
AdminUserDO
dbUser
=
initGetUserPageData
();
// 准备参数
...
...
@@ -319,15 +364,14 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
reqVO
.
setUsername
(
"tu"
);
reqVO
.
setMobile
(
"1560"
);
reqVO
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
reqVO
.
setCreateTime
((
new
LocalDateTime
[]{
buildLocalDateTime
(
2020
,
12
,
1
),
buildLocalDateTime
(
2020
,
12
,
24
)}));
reqVO
.
setCreateTime
(
buildBetweenTime
(
2020
,
12
,
1
,
2020
,
12
,
24
));
reqVO
.
setDeptId
(
1L
);
// 其中,1L 是 2L 的父部门
// mock 方法
List
<
DeptDO
>
deptList
=
newArrayList
(
randomPojo
(
DeptDO
.
class
,
o
->
o
.
setId
(
2L
)));
when
(
deptService
.
getDeptListByParentIdFromCache
(
eq
(
reqVO
.
getDeptId
()),
eq
(
true
))).
thenReturn
(
deptList
);
// 调用
List
<
AdminUserDO
>
list
=
userService
.
getUser
s
(
reqVO
);
List
<
AdminUserDO
>
list
=
userService
.
getUser
List
(
reqVO
);
// 断言
assertEquals
(
1
,
list
.
size
());
assertPojoEquals
(
dbUser
,
list
.
get
(
0
));
...
...
@@ -342,28 +386,59 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
o
.
setUsername
(
"tudou"
);
o
.
setMobile
(
"15601691300"
);
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
o
.
setCreateTime
(
build
LocalDate
Time
(
2020
,
12
,
12
));
o
.
setCreateTime
(
buildTime
(
2020
,
12
,
12
));
o
.
setDeptId
(
2L
);
});
userMapper
.
insert
(
dbUser
);
// 测试 username 不匹配
userMapper
.
insert
(
ObjectUtils
.
cloneIgnoreId
(
dbUser
,
o
->
o
.
setUsername
(
"dou"
)));
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setUsername
(
"dou"
)));
// 测试 mobile 不匹配
userMapper
.
insert
(
ObjectUtils
.
cloneIgnoreId
(
dbUser
,
o
->
o
.
setMobile
(
"18818260888"
)));
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setMobile
(
"18818260888"
)));
// 测试 status 不匹配
userMapper
.
insert
(
ObjectUtils
.
cloneIgnoreId
(
dbUser
,
o
->
o
.
setStatus
(
CommonStatusEnum
.
DISABLE
.
getStatus
())));
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setStatus
(
CommonStatusEnum
.
DISABLE
.
getStatus
())));
// 测试 createTime 不匹配
userMapper
.
insert
(
ObjectUtils
.
cloneIgnoreId
(
dbUser
,
o
->
o
.
setCreateTime
(
buildLocalDate
Time
(
2020
,
11
,
11
))));
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setCreateTime
(
build
Time
(
2020
,
11
,
11
))));
// 测试 dept 不匹配
userMapper
.
insert
(
ObjectUtils
.
cloneIgnoreId
(
dbUser
,
o
->
o
.
setDeptId
(
0L
)));
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setDeptId
(
0L
)));
return
dbUser
;
}
@Test
public
void
testGetUser
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
();
userMapper
.
insert
(
dbUser
);
// 准备参数
Long
userId
=
dbUser
.
getId
();
// 调用
AdminUserDO
user
=
userService
.
getUser
(
userId
);
// 断言
assertPojoEquals
(
dbUser
,
user
);
}
@Test
public
void
testGetUserListByDeptIds
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
(
o
->
o
.
setDeptId
(
1L
));
userMapper
.
insert
(
dbUser
);
// 测试 deptId 不匹配
userMapper
.
insert
(
cloneIgnoreId
(
dbUser
,
o
->
o
.
setDeptId
(
2L
)));
// 准备参数
Collection
<
Long
>
deptIds
=
singleton
(
1L
);
// 调用
List
<
AdminUserDO
>
list
=
userService
.
getUserListByDeptIds
(
deptIds
);
// 断言
assertEquals
(
1
,
list
.
size
());
assertEquals
(
dbUser
,
list
.
get
(
0
));
}
/**
* 情况一,校验不通过,导致插入失败
*/
@Test
public
void
testImportUser
s
_01
()
{
public
void
testImportUser
List
_01
()
{
// 准备参数
UserImportExcelVO
importUser
=
randomPojo
(
UserImportExcelVO
.
class
,
o
->
{
});
...
...
@@ -371,7 +446,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
doThrow
(
new
ServiceException
(
DEPT_NOT_FOUND
)).
when
(
deptService
).
validateDeptList
(
any
());
// 调用
UserImportRespVO
respVO
=
userService
.
importUser
s
(
newArrayList
(
importUser
),
true
);
UserImportRespVO
respVO
=
userService
.
importUser
List
(
newArrayList
(
importUser
),
true
);
// 断言
assertEquals
(
0
,
respVO
.
getCreateUsernames
().
size
());
assertEquals
(
0
,
respVO
.
getUpdateUsernames
().
size
());
...
...
@@ -383,7 +458,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
* 情况二,不存在,进行插入
*/
@Test
public
void
testImportUser
s
_02
()
{
public
void
testImportUser
List
_02
()
{
// 准备参数
UserImportExcelVO
importUser
=
randomPojo
(
UserImportExcelVO
.
class
,
o
->
{
o
.
setStatus
(
randomEle
(
CommonStatusEnum
.
values
()).
getStatus
());
// 保证 status 的范围
...
...
@@ -399,7 +474,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
when
(
passwordEncoder
.
encode
(
eq
(
"yudaoyuanma"
))).
thenReturn
(
"java"
);
// 调用
UserImportRespVO
respVO
=
userService
.
importUser
s
(
newArrayList
(
importUser
),
true
);
UserImportRespVO
respVO
=
userService
.
importUser
List
(
newArrayList
(
importUser
),
true
);
// 断言
assertEquals
(
1
,
respVO
.
getCreateUsernames
().
size
());
AdminUserDO
user
=
userMapper
.
selectByUsername
(
respVO
.
getCreateUsernames
().
get
(
0
));
...
...
@@ -413,7 +488,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
* 情况三,存在,但是不强制更新
*/
@Test
public
void
testImportUser
s
_03
()
{
public
void
testImportUser
List
_03
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
();
userMapper
.
insert
(
dbUser
);
...
...
@@ -431,7 +506,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
when
(
deptService
.
getDept
(
eq
(
dept
.
getId
()))).
thenReturn
(
dept
);
// 调用
UserImportRespVO
respVO
=
userService
.
importUser
s
(
newArrayList
(
importUser
),
false
);
UserImportRespVO
respVO
=
userService
.
importUser
List
(
newArrayList
(
importUser
),
false
);
// 断言
assertEquals
(
0
,
respVO
.
getCreateUsernames
().
size
());
assertEquals
(
0
,
respVO
.
getUpdateUsernames
().
size
());
...
...
@@ -443,7 +518,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
* 情况四,存在,强制更新
*/
@Test
public
void
testImportUser
s
_04
()
{
public
void
testImportUser
List
_04
()
{
// mock 数据
AdminUserDO
dbUser
=
randomAdminUserDO
();
userMapper
.
insert
(
dbUser
);
...
...
@@ -461,7 +536,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
when
(
deptService
.
getDept
(
eq
(
dept
.
getId
()))).
thenReturn
(
dept
);
// 调用
UserImportRespVO
respVO
=
userService
.
importUser
s
(
newArrayList
(
importUser
),
true
);
UserImportRespVO
respVO
=
userService
.
importUser
List
(
newArrayList
(
importUser
),
true
);
// 断言
assertEquals
(
0
,
respVO
.
getCreateUsernames
().
size
());
assertEquals
(
1
,
respVO
.
getUpdateUsernames
().
size
());
...
...
@@ -471,24 +546,24 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
}
@Test
public
void
test
Check
UserExists_notExists
()
{
assertServiceException
(()
->
userService
.
check
UserExists
(
randomLongId
()),
USER_NOT_EXISTS
);
public
void
test
Validate
UserExists_notExists
()
{
assertServiceException
(()
->
userService
.
validate
UserExists
(
randomLongId
()),
USER_NOT_EXISTS
);
}
@Test
public
void
test
Check
UsernameUnique_usernameExistsForCreate
()
{
public
void
test
Validate
UsernameUnique_usernameExistsForCreate
()
{
// 准备参数
String
username
=
randomString
();
// mock 数据
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setUsername
(
username
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
UsernameUnique
(
null
,
username
),
assertServiceException
(()
->
userService
.
validate
UsernameUnique
(
null
,
username
),
USER_USERNAME_EXISTS
);
}
@Test
public
void
test
Check
UsernameUnique_usernameExistsForUpdate
()
{
public
void
test
Validate
UsernameUnique_usernameExistsForUpdate
()
{
// 准备参数
Long
id
=
randomLongId
();
String
username
=
randomString
();
...
...
@@ -496,24 +571,24 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setUsername
(
username
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
UsernameUnique
(
id
,
username
),
assertServiceException
(()
->
userService
.
validate
UsernameUnique
(
id
,
username
),
USER_USERNAME_EXISTS
);
}
@Test
public
void
test
Check
EmailUnique_emailExistsForCreate
()
{
public
void
test
Validate
EmailUnique_emailExistsForCreate
()
{
// 准备参数
String
email
=
randomString
();
// mock 数据
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setEmail
(
email
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
EmailUnique
(
null
,
email
),
assertServiceException
(()
->
userService
.
validate
EmailUnique
(
null
,
email
),
USER_EMAIL_EXISTS
);
}
@Test
public
void
test
Check
EmailUnique_emailExistsForUpdate
()
{
public
void
test
Validate
EmailUnique_emailExistsForUpdate
()
{
// 准备参数
Long
id
=
randomLongId
();
String
email
=
randomString
();
...
...
@@ -521,24 +596,24 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setEmail
(
email
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
EmailUnique
(
id
,
email
),
assertServiceException
(()
->
userService
.
validate
EmailUnique
(
id
,
email
),
USER_EMAIL_EXISTS
);
}
@Test
public
void
test
Check
MobileUnique_mobileExistsForCreate
()
{
public
void
test
Validate
MobileUnique_mobileExistsForCreate
()
{
// 准备参数
String
mobile
=
randomString
();
// mock 数据
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setMobile
(
mobile
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
MobileUnique
(
null
,
mobile
),
assertServiceException
(()
->
userService
.
validate
MobileUnique
(
null
,
mobile
),
USER_MOBILE_EXISTS
);
}
@Test
public
void
test
Check
MobileUnique_mobileExistsForUpdate
()
{
public
void
test
Validate
MobileUnique_mobileExistsForUpdate
()
{
// 准备参数
Long
id
=
randomLongId
();
String
mobile
=
randomString
();
...
...
@@ -546,18 +621,18 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setMobile
(
mobile
)));
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
MobileUnique
(
id
,
mobile
),
assertServiceException
(()
->
userService
.
validate
MobileUnique
(
id
,
mobile
),
USER_MOBILE_EXISTS
);
}
@Test
public
void
test
Check
OldPassword_notExists
()
{
assertServiceException
(()
->
userService
.
check
OldPassword
(
randomLongId
(),
randomString
()),
public
void
test
Validate
OldPassword_notExists
()
{
assertServiceException
(()
->
userService
.
validate
OldPassword
(
randomLongId
(),
randomString
()),
USER_NOT_EXISTS
);
}
@Test
public
void
test
Check
OldPassword_passwordFailed
()
{
public
void
test
Validate
OldPassword_passwordFailed
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
();
userMapper
.
insert
(
user
);
...
...
@@ -566,14 +641,14 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
String
oldPassword
=
user
.
getPassword
();
// 调用,校验异常
assertServiceException
(()
->
userService
.
check
OldPassword
(
id
,
oldPassword
),
assertServiceException
(()
->
userService
.
validate
OldPassword
(
id
,
oldPassword
),
USER_PASSWORD_FAILED
);
// 校验调用
verify
(
passwordEncoder
,
times
(
1
)).
matches
(
eq
(
oldPassword
),
eq
(
user
.
getPassword
()));
}
@Test
public
void
testUser
s
ByPostIds
()
{
public
void
testUser
List
ByPostIds
()
{
// 准备参数
Collection
<
Long
>
postIds
=
asSet
(
10L
,
20L
);
// mock user1 数据
...
...
@@ -587,12 +662,114 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
userPostMapper
.
insert
(
new
UserPostDO
().
setUserId
(
user2
.
getId
()).
setPostId
(
100L
));
// 调用
List
<
AdminUserDO
>
result
=
userService
.
getUser
s
ByPostIds
(
postIds
);
List
<
AdminUserDO
>
result
=
userService
.
getUser
List
ByPostIds
(
postIds
);
// 断言
assertEquals
(
1
,
result
.
size
());
assertEquals
(
user1
,
result
.
get
(
0
));
}
@Test
public
void
testGetUserList
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
();
userMapper
.
insert
(
user
);
// 测试 id 不匹配
userMapper
.
insert
(
randomAdminUserDO
());
// 准备参数
Collection
<
Long
>
ids
=
singleton
(
user
.
getId
());
// 调用
List
<
AdminUserDO
>
result
=
userService
.
getUserList
(
ids
);
// 断言
assertEquals
(
1
,
result
.
size
());
assertEquals
(
user
,
result
.
get
(
0
));
}
@Test
public
void
testGetUserMap
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
();
userMapper
.
insert
(
user
);
// 测试 id 不匹配
userMapper
.
insert
(
randomAdminUserDO
());
// 准备参数
Collection
<
Long
>
ids
=
singleton
(
user
.
getId
());
// 调用
Map
<
Long
,
AdminUserDO
>
result
=
userService
.
getUserMap
(
ids
);
// 断言
assertEquals
(
1
,
result
.
size
());
assertEquals
(
user
,
result
.
get
(
user
.
getId
()));
}
@Test
public
void
testGetUserListByNickname
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
(
o
->
o
.
setNickname
(
"芋头"
));
userMapper
.
insert
(
user
);
// 测试 nickname 不匹配
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setNickname
(
"源码"
)));
// 准备参数
String
nickname
=
"芋"
;
// 调用
List
<
AdminUserDO
>
result
=
userService
.
getUserListByNickname
(
nickname
);
// 断言
assertEquals
(
1
,
result
.
size
());
assertEquals
(
user
,
result
.
get
(
0
));
}
@Test
public
void
testGetUserListByStatus
()
{
// mock 数据
AdminUserDO
user
=
randomAdminUserDO
(
o
->
o
.
setStatus
(
CommonStatusEnum
.
DISABLE
.
getStatus
()));
userMapper
.
insert
(
user
);
// 测试 status 不匹配
userMapper
.
insert
(
randomAdminUserDO
(
o
->
o
.
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
())));
// 准备参数
Integer
status
=
CommonStatusEnum
.
DISABLE
.
getStatus
();
// 调用
List
<
AdminUserDO
>
result
=
userService
.
getUserListByStatus
(
status
);
// 断言
assertEquals
(
1
,
result
.
size
());
assertEquals
(
user
,
result
.
get
(
0
));
}
@Test
public
void
testValidateUserList_success
()
{
// mock 数据
AdminUserDO
userDO
=
randomAdminUserDO
().
setStatus
(
CommonStatusEnum
.
ENABLE
.
getStatus
());
userMapper
.
insert
(
userDO
);
// 准备参数
List
<
Long
>
ids
=
singletonList
(
userDO
.
getId
());
// 调用,无需断言
userService
.
validateUserList
(
ids
);
}
@Test
public
void
testValidateUserList_notFound
()
{
// 准备参数
List
<
Long
>
ids
=
singletonList
(
randomLongId
());
// 调用, 并断言异常
assertServiceException
(()
->
userService
.
validateUserList
(
ids
),
USER_NOT_EXISTS
);
}
@Test
public
void
testValidateUserList_notEnable
()
{
// mock 数据
AdminUserDO
userDO
=
randomAdminUserDO
().
setStatus
(
CommonStatusEnum
.
DISABLE
.
getStatus
());
userMapper
.
insert
(
userDO
);
// 准备参数
List
<
Long
>
ids
=
singletonList
(
userDO
.
getId
());
// 调用, 并断言异常
assertServiceException
(()
->
userService
.
validateUserList
(
ids
),
USER_IS_DISABLE
,
userDO
.
getNickname
());
}
// ========== 随机对象 ==========
@SafeVarargs
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论