Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-cr20g
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
dsk-cr20g
Commits
922b87eb
Commit
922b87eb
authored
Aug 31, 2023
by
施翔轲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化新增企业、用户的自动密码生成规则
parent
61c14e2c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
83 additions
and
111 deletions
+83
-111
SysUserController.java
...java/com/dsk/web/controller/system/SysUserController.java
+3
-4
MapStructUtils.java
...on/src/main/java/com/dsk/common/utils/MapStructUtils.java
+0
-91
PasswordUtils.java
...mon/src/main/java/com/dsk/common/utils/PasswordUtils.java
+62
-0
ISysTenantServiceImpl.java
...va/com/dsk/system/service/impl/ISysTenantServiceImpl.java
+2
-16
SysUserServiceImpl.java
.../java/com/dsk/system/service/impl/SysUserServiceImpl.java
+16
-0
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/system/SysUserController.java
View file @
922b87eb
...
@@ -10,9 +10,6 @@ import com.dsk.common.annotation.Log;
...
@@ -10,9 +10,6 @@ import com.dsk.common.annotation.Log;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.system.domain.SysDept
;
import
com.dsk.system.domain.SysRole
;
import
com.dsk.system.domain.SysUser
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.excel.ExcelResult
;
import
com.dsk.common.excel.ExcelResult
;
...
@@ -20,6 +17,9 @@ import com.dsk.common.helper.LoginHelper;
...
@@ -20,6 +17,9 @@ import com.dsk.common.helper.LoginHelper;
import
com.dsk.common.utils.StreamUtils
;
import
com.dsk.common.utils.StreamUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.poi.ExcelUtil
;
import
com.dsk.common.utils.poi.ExcelUtil
;
import
com.dsk.system.domain.SysDept
;
import
com.dsk.system.domain.SysRole
;
import
com.dsk.system.domain.SysUser
;
import
com.dsk.system.domain.vo.SysUserExportVo
;
import
com.dsk.system.domain.vo.SysUserExportVo
;
import
com.dsk.system.domain.vo.SysUserImportVo
;
import
com.dsk.system.domain.vo.SysUserImportVo
;
import
com.dsk.system.listener.SysUserImportListener
;
import
com.dsk.system.listener.SysUserImportListener
;
...
@@ -142,7 +142,6 @@ public class SysUserController extends BaseController {
...
@@ -142,7 +142,6 @@ public class SysUserController extends BaseController {
}
else
if
(
StringUtils
.
isNotEmpty
(
user
.
getEmail
())
&&
!
userService
.
checkEmailUnique
(
user
))
{
}
else
if
(
StringUtils
.
isNotEmpty
(
user
.
getEmail
())
&&
!
userService
.
checkEmailUnique
(
user
))
{
return
R
.
fail
(
"新增用户'"
+
user
.
getUserName
()
+
"'失败,邮箱账号已存在"
);
return
R
.
fail
(
"新增用户'"
+
user
.
getUserName
()
+
"'失败,邮箱账号已存在"
);
}
}
user
.
setPassword
(
BCrypt
.
hashpw
(
user
.
getPassword
()));
return
toAjax
(
userService
.
insertUser
(
user
));
return
toAjax
(
userService
.
insertUser
(
user
));
}
}
...
...
dsk-common/src/main/java/com/dsk/common/utils/MapStructUtils.java
deleted
100644 → 0
View file @
61c14e2c
package
com
.
dsk
.
common
.
utils
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.dsk.common.utils.spring.SpringUtils
;
import
io.github.linpeilie.Converter
;
import
lombok.AccessLevel
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author sxk
* @date 2023.08.23
* @description: Mapstruct 工具类
* <p>参考文档:<a href="https://mapstruct.plus/introduction/quick-start.html">mapstruct-plus</a></p>
*/
@NoArgsConstructor
(
access
=
AccessLevel
.
PRIVATE
)
public
class
MapStructUtils
{
private
final
static
Converter
CONVERTER
=
SpringUtils
.
getBean
(
Converter
.
class
);
/**
* 将 T 类型对象,转换为 desc 类型的对象并返回
*
* @param source 数据来源实体
* @param desc 描述对象 转换后的对象
* @return desc
*/
public
static
<
T
,
V
>
V
convert
(
T
source
,
Class
<
V
>
desc
)
{
if
(
ObjectUtil
.
isNull
(
source
))
{
return
null
;
}
if
(
ObjectUtil
.
isNull
(
desc
))
{
return
null
;
}
return
CONVERTER
.
convert
(
source
,
desc
);
}
/**
* 将 T 类型对象,按照配置的映射字段规则,给 desc 类型的对象赋值并返回 desc 对象
*
* @param source 数据来源实体
* @param desc 转换后的对象
* @return desc
*/
public
static
<
T
,
V
>
V
convert
(
T
source
,
V
desc
)
{
if
(
ObjectUtil
.
isNull
(
source
))
{
return
null
;
}
if
(
ObjectUtil
.
isNull
(
desc
))
{
return
null
;
}
return
CONVERTER
.
convert
(
source
,
desc
);
}
/**
* 将 T 类型的集合,转换为 desc 类型的集合并返回
*
* @param sourceList 数据来源实体列表
* @param desc 描述对象 转换后的对象
* @return desc
*/
public
static
<
T
,
V
>
List
<
V
>
convert
(
List
<
T
>
sourceList
,
Class
<
V
>
desc
)
{
if
(
ObjectUtil
.
isNull
(
sourceList
))
{
return
null
;
}
if
(
CollUtil
.
isEmpty
(
sourceList
))
{
return
CollUtil
.
newArrayList
();
}
return
CONVERTER
.
convert
(
sourceList
,
desc
);
}
/**
* 将 Map 转换为 beanClass 类型的集合并返回
*
* @param map 数据来源
* @param beanClass bean类
* @return bean对象
*/
public
static
<
T
>
T
convert
(
Map
<
String
,
Object
>
map
,
Class
<
T
>
beanClass
)
{
if
(
MapUtil
.
isEmpty
(
map
))
{
return
null
;
}
if
(
ObjectUtil
.
isNull
(
beanClass
))
{
return
null
;
}
return
CONVERTER
.
convert
(
map
,
beanClass
);
}
}
dsk-common/src/main/java/com/dsk/common/utils/PasswordUtils.java
0 → 100644
View file @
922b87eb
package
com
.
dsk
.
common
.
utils
;
import
lombok.AccessLevel
;
import
lombok.NoArgsConstructor
;
import
java.util.Random
;
/**
* 密码工具类
*
* @author sxk
* @date 2023.08.31
*/
@NoArgsConstructor
(
access
=
AccessLevel
.
PRIVATE
)
public
class
PasswordUtils
{
private
static
final
String
LOWER_CASE
=
"abcdefghijklmnopqrstuvwxyz"
;
private
static
final
String
UPPER_CASE
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
private
static
final
String
NUMBERS
=
"0123456789"
;
/**
* 生成随机密码
* @param length 密码长度
* @return 新生成的密码
*/
public
static
String
generatePwd
(
int
length
)
{
StringBuilder
password
=
new
StringBuilder
();
Random
random
=
new
Random
();
// 至少包含一个小写字母
password
.
append
(
LOWER_CASE
.
charAt
(
random
.
nextInt
(
LOWER_CASE
.
length
())));
// 至少包含一个大写字母
password
.
append
(
UPPER_CASE
.
charAt
(
random
.
nextInt
(
UPPER_CASE
.
length
())));
// 至少包含一个数字
password
.
append
(
NUMBERS
.
charAt
(
random
.
nextInt
(
NUMBERS
.
length
())));
// 生成剩余部分的密码
for
(
int
i
=
0
;
i
<
length
-
3
;
i
++)
{
String
characters
=
LOWER_CASE
+
UPPER_CASE
+
NUMBERS
;
password
.
append
(
characters
.
charAt
(
random
.
nextInt
(
characters
.
length
())));
}
// 打乱密码中字符的顺序
return
shufflePassword
(
password
.
toString
());
}
public
static
String
shufflePassword
(
String
password
)
{
char
[]
passwordArray
=
password
.
toCharArray
();
Random
random
=
new
Random
();
for
(
int
i
=
passwordArray
.
length
-
1
;
i
>
0
;
i
--)
{
int
index
=
random
.
nextInt
(
i
+
1
);
char
temp
=
passwordArray
[
index
];
passwordArray
[
index
]
=
passwordArray
[
i
];
passwordArray
[
i
]
=
temp
;
}
return
new
String
(
passwordArray
);
}
}
dsk-system/src/main/java/com/dsk/system/service/impl/ISysTenantServiceImpl.java
View file @
922b87eb
...
@@ -17,6 +17,7 @@ import com.dsk.common.core.domain.entity.SysDictType;
...
@@ -17,6 +17,7 @@ import com.dsk.common.core.domain.entity.SysDictType;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.DingTalkUtil
;
import
com.dsk.common.utils.DingTalkUtil
;
import
com.dsk.common.utils.PasswordUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.system.domain.*
;
import
com.dsk.system.domain.*
;
import
com.dsk.system.domain.bo.SysTenantBo
;
import
com.dsk.system.domain.bo.SysTenantBo
;
...
@@ -33,7 +34,6 @@ import javax.annotation.Resource;
...
@@ -33,7 +34,6 @@ import javax.annotation.Resource;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Random
;
/**
/**
* @author sxk
* @author sxk
...
@@ -186,7 +186,7 @@ public class ISysTenantServiceImpl implements ISysTenantService {
...
@@ -186,7 +186,7 @@ public class ISysTenantServiceImpl implements ISysTenantService {
user
.
setUserName
(
bo
.
getContactPhone
());
user
.
setUserName
(
bo
.
getContactPhone
());
user
.
setNickName
(
bo
.
getContactUserName
());
user
.
setNickName
(
bo
.
getContactUserName
());
//生成8位随机密码
//生成8位随机密码
String
password
=
generatePasswor
d
(
8
);
String
password
=
PasswordUtils
.
generatePw
d
(
8
);
user
.
setPassword
(
BCrypt
.
hashpw
(
password
));
user
.
setPassword
(
BCrypt
.
hashpw
(
password
));
user
.
setDeptId
(
deptId
);
user
.
setDeptId
(
deptId
);
userMapper
.
insert
(
user
);
userMapper
.
insert
(
user
);
...
@@ -238,20 +238,6 @@ public class ISysTenantServiceImpl implements ISysTenantService {
...
@@ -238,20 +238,6 @@ public class ISysTenantServiceImpl implements ISysTenantService {
return
true
;
return
true
;
}
}
// 生成随机密码
public
static
String
generatePassword
(
int
length
)
{
String
characters
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
;
StringBuilder
password
=
new
StringBuilder
();
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
int
index
=
random
.
nextInt
(
characters
.
length
());
password
.
append
(
characters
.
charAt
(
index
));
}
return
password
.
toString
();
}
/**
/**
* 生成租户id
* 生成租户id
*
*
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/SysUserServiceImpl.java
View file @
922b87eb
package
com
.
dsk
.
system
.
service
.
impl
;
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.dev33.satoken.secure.BCrypt
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
...
@@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...
@@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.dsk.common.utils.DingTalkUtil
;
import
com.dsk.common.utils.PasswordUtils
;
import
com.dsk.system.mapper.*
;
import
com.dsk.system.mapper.*
;
import
com.dsk.system.service.ISysUserService
;
import
com.dsk.system.service.ISysUserService
;
import
com.dsk.common.constant.CacheNames
;
import
com.dsk.common.constant.CacheNames
;
...
@@ -270,8 +273,21 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
...
@@ -270,8 +273,21 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
int
insertUser
(
SysUser
user
)
{
public
int
insertUser
(
SysUser
user
)
{
String
password
=
PasswordUtils
.
generatePwd
(
8
);
user
.
setPassword
(
BCrypt
.
hashpw
(
password
));
// 新增用户信息
// 新增用户信息
int
rows
=
baseMapper
.
insert
(
user
);
int
rows
=
baseMapper
.
insert
(
user
);
if
(
rows
>
0
)
{
//租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信
String
content
=
"【央企数字经营管理系统通知】:"
+
user
.
getNickName
()
+
"您好,您已经成功注册央企数字经营管理系统,请使用手机号码登录,初始密码为"
+
password
+
"。友情提示:为了您的账号安全,请立即前往【个人中心】修改密码。"
;
DingTalkUtil
.
sendDingTalkMsg
(
content
);
System
.
out
.
println
(
"👉🏻:"
+
content
);
}
// 新增用户岗位关联
// 新增用户岗位关联
insertUserPost
(
user
);
insertUserPost
(
user
);
// 新增用户与角色管理
// 新增用户与角色管理
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment