Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来技术
youlai-mall
提交
e5847684
Y
youlai-mall
项目概览
有来技术
/
youlai-mall
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e5847684
编写于
2月 28, 2024
作者:
R
Ray Hao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 用户列表查询问题修复
上级
b46e788c
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
38 addition
and
68 deletion
+38
-68
youlai-system/system-boot/pom.xml
youlai-system/system-boot/pom.xml
+5
-0
youlai-system/system-boot/src/main/java/com/youlai/system/config/PasswordEncoderConfig.java
.../java/com/youlai/system/config/PasswordEncoderConfig.java
+2
-2
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysUserController.java
.../java/com/youlai/system/controller/SysUserController.java
+5
-13
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysUserService.java
...c/main/java/com/youlai/system/service/SysUserService.java
+1
-9
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
...va/com/youlai/system/service/impl/SysUserServiceImpl.java
+7
-33
youlai-system/system-boot/src/main/resources/mapper/SysUserMapper.xml
...m/system-boot/src/main/resources/mapper/SysUserMapper.xml
+18
-11
未找到文件。
youlai-system/system-boot/pom.xml
浏览文件 @
e5847684
...
...
@@ -105,6 +105,11 @@
<artifactId>
common-apidoc
</artifactId>
</dependency>
<dependency>
<groupId>
com.youlai
</groupId>
<artifactId>
common-sms
</artifactId>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/config/PasswordEncoderConfig.java
浏览文件 @
e5847684
...
...
@@ -6,10 +6,10 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import
org.springframework.security.crypto.password.PasswordEncoder
;
/**
* 密码编码器
* 密码编码器
(修改、重置密码使用)
*
* @author haoxr
* @since
2022/10/2
1
* @since
0.0.
1
*/
@Configuration
public
class
PasswordEncoderConfig
{
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/controller/SysUserController.java
浏览文件 @
e5847684
...
...
@@ -126,8 +126,8 @@ public class SysUserController {
public
Result
<
UserAuthInfo
>
getUserAuthInfo
(
@Parameter
(
description
=
"用户名"
)
@PathVariable
String
username
)
{
UserAuthInfo
userA
U
thInfo
=
userService
.
getUserAuthInfo
(
username
);
return
Result
.
success
(
userA
U
thInfo
);
UserAuthInfo
userA
u
thInfo
=
userService
.
getUserAuthInfo
(
username
);
return
Result
.
success
(
userA
u
thInfo
);
}
@Operation
(
summary
=
"获取登录用户信息"
)
...
...
@@ -192,19 +192,10 @@ public class SysUserController {
@Operation
(
summary
=
"发送注册短信验证码"
)
@PostMapping
(
"/register/sms_code"
)
public
Result
sendRegist
er
SmsCode
(
public
Result
sendRegist
ration
SmsCode
(
@Parameter
(
description
=
"手机号"
)
@RequestParam
String
mobile
)
{
boolean
result
=
userService
.
sendRegisterSmsCode
(
mobile
);
return
Result
.
judge
(
result
);
}
@Operation
(
summary
=
"发送登录短信验证码"
)
@PostMapping
(
"/login/sms_code"
)
public
Result
sendLoginSmsCode
(
@Parameter
(
description
=
"手机号"
)
@RequestParam
String
mobile
)
{
boolean
result
=
userService
.
sendLoginSmsCode
(
mobile
);
boolean
result
=
userService
.
sendRegistrationSmsCode
(
mobile
);
return
Result
.
judge
(
result
);
}
...
...
@@ -215,4 +206,5 @@ public class SysUserController {
return
Result
.
success
(
userProfile
);
}
}
youlai-system/system-boot/src/main/java/com/youlai/system/service/SysUserService.java
浏览文件 @
e5847684
...
...
@@ -124,15 +124,7 @@ public interface SysUserService extends IService<SysUser> {
* @param mobile 手机号
* @return {@link Boolean} 是否发送成功
*/
boolean
sendRegisterSmsCode
(
String
mobile
);
/**
* 发送登录短信验证码
*
* @param mobile 手机号
* @return {@link Boolean} 是否发送成功
*/
boolean
sendLoginSmsCode
(
String
mobile
);
boolean
sendRegistrationSmsCode
(
String
mobile
);
/**
...
...
youlai-system/system-boot/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java
浏览文件 @
e5847684
...
...
@@ -15,7 +15,8 @@ import com.youlai.common.constant.RedisConstants;
import
com.youlai.common.constant.SystemConstants
;
import
com.youlai.common.security.service.PermissionService
;
import
com.youlai.common.security.util.SecurityUtils
;
import
com.youlai.system.config.AliyunSmsProperties
;
import
com.youlai.common.sms.property.AliyunSmsProperties
;
import
com.youlai.common.sms.service.SmsService
;
import
com.youlai.system.converter.UserConverter
;
import
com.youlai.system.dto.UserAuthInfo
;
import
com.youlai.system.mapper.SysUserMapper
;
...
...
@@ -30,13 +31,13 @@ import com.youlai.system.model.vo.UserExportVO;
import
com.youlai.system.model.vo.UserInfoVO
;
import
com.youlai.system.model.vo.UserPageVO
;
import
com.youlai.system.model.vo.UserProfileVO
;
import
com.youlai.system.service.SmsService
;
import
com.youlai.system.service.SysRoleService
;
import
com.youlai.system.service.SysUserRoleService
;
import
com.youlai.system.service.SysUserService
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -70,7 +71,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
private
final
AliyunSmsProperties
aliyunSmsProperties
;
private
final
RedisTemplate
<
String
,
Object
>
redisTemplate
;
private
final
StringRedisTemplate
redisTemplate
;
/**
* 获取用户分页列表
...
...
@@ -283,7 +284,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
});
if
(
!
expireTimeOpt
.
isPresent
())
{
if
(
expireTimeOpt
.
isEmpty
())
{
// token 永不过期则永久加入黑名单
redisTemplate
.
opsForValue
().
set
(
RedisConstants
.
TOKEN_BLACKLIST_PREFIX
+
jti
,
""
);
}
...
...
@@ -303,7 +304,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
String
mobile
=
userRegisterForm
.
getMobile
();
String
code
=
userRegisterForm
.
getCode
();
// 校验验证码
String
cacheCode
=
(
String
)
redisTemplate
.
opsForValue
().
get
(
RedisConstants
.
REGISTER_SMS_CODE_PREFIX
+
mobile
);
String
cacheCode
=
redisTemplate
.
opsForValue
().
get
(
RedisConstants
.
REGISTER_SMS_CODE_PREFIX
+
mobile
);
if
(!
StrUtil
.
equals
(
code
,
cacheCode
))
{
log
.
warn
(
"验证码不匹配或不存在: {}"
,
mobile
);
return
false
;
// 验证码不匹配或不存在时返回false
...
...
@@ -339,7 +340,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
* @return true|false 是否发送成功
*/
@Override
public
boolean
sendRegist
er
SmsCode
(
String
mobile
)
{
public
boolean
sendRegist
ration
SmsCode
(
String
mobile
)
{
// 获取短信模板代码
String
templateCode
=
aliyunSmsProperties
.
getTemplateCodes
().
get
(
"register"
);
...
...
@@ -360,33 +361,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return
result
;
}
/**
* 发送登录短信验证码
*
* @param mobile 手机号
* @return true|false 是否发送成功
*/
@Override
public
boolean
sendLoginSmsCode
(
String
mobile
)
{
// 获取短信模板代码
String
templateCode
=
aliyunSmsProperties
.
getTemplateCodes
().
get
(
"login"
);
// 生成随机4位数验证码
String
code
=
RandomUtil
.
randomNumbers
(
4
);
// 短信模板: 您的验证码:${code},该验证码5分钟内有效,请勿泄漏于他人。
// 其中 ${code} 是模板参数,使用时需要替换为实际值。
String
templateParams
=
JSONUtil
.
toJsonStr
(
Collections
.
singletonMap
(
"code"
,
code
));
boolean
result
=
smsService
.
sendSms
(
mobile
,
templateCode
,
templateParams
);
if
(
result
)
{
// 将验证码存入redis,有效期5分钟
redisTemplate
.
opsForValue
().
set
(
RedisConstants
.
REGISTER_SMS_CODE_PREFIX
+
mobile
,
code
,
5
,
TimeUnit
.
MINUTES
);
// TODO 考虑记录每次发送短信的详情,如发送时间、手机号和短信内容等,以便后续审核或分析短信发送效果。
}
return
result
;
}
/**
* 获取用户个人中心信息
...
...
youlai-system/system-boot/src/main/resources/mapper/SysUserMapper.xml
浏览文件 @
e5847684
...
...
@@ -23,7 +23,7 @@
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
<where>
u.deleted = 0 AND u.username !=
${@com.youlai.common.constant.SystemConstants@ROOT_ROLE_CODE}
u.deleted = 0 AND u.username !=
'${@com.youlai.common.constant.SystemConstants@ROOT_ROLE_CODE}'
<if
test=
'queryParams.keywords!=null and queryParams.keywords.trim() neq ""'
>
AND (
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
...
...
@@ -74,17 +74,21 @@
dept_id
FROM
sys_user
WHERE
id = #{userId}
AND deleted = 0
WHERE
id = #{userId}
AND deleted = 0
</select>
<!-- 用户认证信息映射 -->
<resultMap
id=
"UserAuthMap"
type=
"com.youlai.system.dto.UserAuthInfo"
>
<id
property=
"userId"
column=
"userId"
jdbcType=
"BIGINT"
/>
<result
property=
"username"
column=
"username"
jdbcType=
"VARCHAR"
/>
<result
property=
"password"
column=
"password"
jdbcType=
"VARCHAR"
/>
<result
property=
"status"
column=
"status"
jdbcType=
"BOOLEAN"
/>
<result
property=
"deptId"
column=
"dept_id"
jdbcType=
"BIGINT"
/>
<id
property=
"userId"
column=
"id"
jdbcType=
"BIGINT"
/>
<result
property=
"username"
column=
"username"
/>
<result
property=
"password"
column=
"PASSWORD"
/>
<result
property=
"status"
column=
"STATUS"
/>
<result
property=
"deptId"
column=
"dept_id"
/>
<result
property=
"nickname"
column=
"nickname"
/>
<result
property=
"mobile"
column=
"mobile"
/>
<result
property=
"email"
column=
"email"
/>
<result
property=
"avatar"
column=
"avatar"
/>
<collection
property=
"roles"
ofType=
"string"
javaType=
"java.util.Set"
>
<result
column=
"code"
/>
</collection>
...
...
@@ -93,13 +97,16 @@
<!-- 根据用户名获取认证信息 -->
<select
id=
"getUserAuthInfo"
resultMap=
"UserAuthMap"
>
SELECT
t1.id
userId
,
t1.id,
t1.username,
t1.nickname,
t1.PASSWORD,
t1.STATUS,
t1.dept_id ,
t3.CODE
t1.dept_id,
t3.CODE,
t1.avatar,
t1.mobile,
t1.email
FROM
sys_user t1
LEFT JOIN sys_user_role t2 ON t2.user_id = t1.id
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录