Skip to content

Commit 3b7021e

Browse files
committed
Merge branch '1.0.x' into dev
2 parents 6164110 + 8b955a0 commit 3b7021e

File tree

15 files changed

+105
-29
lines changed

15 files changed

+105
-29
lines changed

continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/RegExpConsts.java renamed to continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/RegexConsts.java

+19-2
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,34 @@
1919
import lombok.AccessLevel;
2020
import lombok.NoArgsConstructor;
2121

22+
import cn.hutool.core.lang.RegexPool;
23+
2224
/**
2325
* 正则相关常量
2426
*
2527
* @author Charles7c
2628
* @since 2023/1/10 20:06
2729
*/
2830
@NoArgsConstructor(access = AccessLevel.PRIVATE)
29-
public class RegExpConsts {
31+
public class RegexConsts implements RegexPool {
3032

3133
/**
32-
* 密码正则(必须包含字母和数字的组合,可以使用特殊字符,长度在6-32之间)
34+
* 用户名正则(长度为 4 到 16 位,可以包含字母、数字,下划线,以字母开头)
35+
*/
36+
public static final String USERNAME = "^[a-zA-Z][a-zA-Z0-9_]{3,15}$";
37+
38+
/**
39+
* 密码正则(长度为 6 到 32 位,可以包含字母、数字、下划线,特殊字符,同时包含字母和数字)
3340
*/
3441
public static final String PASSWORD = "^(?=.*\\d)(?=.*[a-z]).{6,32}$";
42+
43+
/**
44+
* 通用编码正则(长度为 2 到 16 位,可以包含字母、数字,下划线,以字母开头)
45+
*/
46+
public static final String GENERAL_CODE = "^[a-zA-Z][a-zA-Z0-9_]{1,15}$";
47+
48+
/**
49+
* 通用名称正则(长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线)
50+
*/
51+
public static final String GENERAL_NAME = "^[\\u4e00-\\u9fa5a-zA-Z0-9_-]{1,20}$";
3552
}

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/DeptRequest.java

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import javax.validation.constraints.NotBlank;
2020
import javax.validation.constraints.NotNull;
21+
import javax.validation.constraints.Pattern;
2122

2223
import lombok.Data;
2324

@@ -26,6 +27,7 @@
2627
import org.hibernate.validator.constraints.Length;
2728

2829
import top.charles7c.cnadmin.common.base.BaseRequest;
30+
import top.charles7c.cnadmin.common.constant.RegexConsts;
2931
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
3032

3133
/**
@@ -52,6 +54,7 @@ public class DeptRequest extends BaseRequest {
5254
*/
5355
@Schema(description = "部门名称")
5456
@NotBlank(message = "部门名称不能为空")
57+
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "部门名称长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线")
5558
private String name;
5659

5760
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/MenuRequest.java

+3
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818

1919
import javax.validation.constraints.NotBlank;
2020
import javax.validation.constraints.NotNull;
21+
import javax.validation.constraints.Pattern;
2122

2223
import lombok.Data;
2324

2425
import io.swagger.v3.oas.annotations.media.Schema;
2526

2627
import top.charles7c.cnadmin.common.base.BaseRequest;
28+
import top.charles7c.cnadmin.common.constant.RegexConsts;
2729
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
2830
import top.charles7c.cnadmin.common.enums.MenuTypeEnum;
2931

@@ -57,6 +59,7 @@ public class MenuRequest extends BaseRequest {
5759
*/
5860
@Schema(description = "菜单标题")
5961
@NotBlank(message = "菜单标题不能为空")
62+
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "菜单标题长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线")
6063
private String title;
6164

6265
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/RoleRequest.java

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import javax.validation.constraints.NotBlank;
2323
import javax.validation.constraints.NotNull;
24+
import javax.validation.constraints.Pattern;
2425

2526
import lombok.Data;
2627

@@ -29,6 +30,7 @@
2930
import org.hibernate.validator.constraints.Length;
3031

3132
import top.charles7c.cnadmin.common.base.BaseRequest;
33+
import top.charles7c.cnadmin.common.constant.RegexConsts;
3234
import top.charles7c.cnadmin.common.enums.DataScopeEnum;
3335
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
3436

@@ -49,12 +51,15 @@ public class RoleRequest extends BaseRequest {
4951
*/
5052
@Schema(description = "角色名称")
5153
@NotBlank(message = "角色名称不能为空")
54+
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "角色名称长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线")
5255
private String name;
5356

5457
/**
5558
* 角色编码
5659
*/
5760
@Schema(description = "角色编码")
61+
@NotBlank(message = "角色编码不能为空")
62+
@Pattern(regexp = RegexConsts.GENERAL_CODE, message = "角色编码长度为 2 到 16 位,可以包含字母、数字,下划线,以字母开头")
5863
private String code;
5964

6065
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateBasicInfoRequest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020

2121
import javax.validation.constraints.NotBlank;
2222
import javax.validation.constraints.NotNull;
23+
import javax.validation.constraints.Pattern;
2324

2425
import lombok.Data;
2526

2627
import io.swagger.v3.oas.annotations.media.Schema;
2728

28-
import org.hibernate.validator.constraints.Length;
29-
29+
import top.charles7c.cnadmin.common.constant.RegexConsts;
3030
import top.charles7c.cnadmin.common.enums.GenderEnum;
3131

3232
/**
@@ -46,7 +46,7 @@ public class UpdateBasicInfoRequest implements Serializable {
4646
*/
4747
@Schema(description = "昵称")
4848
@NotBlank(message = "昵称不能为空")
49-
@Length(max = 32, message = "昵称长度不能超过 {max} 个字符")
49+
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "昵称长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线")
5050
private String nickname;
5151

5252
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateEmailRequest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import org.hibernate.validator.constraints.Length;
2929

30-
import cn.hutool.core.lang.RegexPool;
30+
import top.charles7c.cnadmin.common.constant.RegexConsts;
3131

3232
/**
3333
* 修改邮箱信息
@@ -46,7 +46,7 @@ public class UpdateEmailRequest implements Serializable {
4646
*/
4747
@Schema(description = "新邮箱")
4848
@NotBlank(message = "新邮箱不能为空")
49-
@Pattern(regexp = RegexPool.EMAIL, message = "邮箱格式错误")
49+
@Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误")
5050
private String newEmail;
5151

5252
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@
1818

1919
import java.util.List;
2020

21-
import javax.validation.constraints.*;
21+
import javax.validation.constraints.NotBlank;
22+
import javax.validation.constraints.NotNull;
23+
import javax.validation.constraints.Pattern;
2224

2325
import lombok.Data;
2426

2527
import io.swagger.v3.oas.annotations.media.Schema;
2628

2729
import org.hibernate.validator.constraints.Length;
2830

29-
import cn.hutool.core.lang.RegexPool;
30-
3131
import top.charles7c.cnadmin.common.base.BaseRequest;
32+
import top.charles7c.cnadmin.common.constant.RegexConsts;
3233
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
3334
import top.charles7c.cnadmin.common.enums.GenderEnum;
3435

@@ -49,27 +50,29 @@ public class UserRequest extends BaseRequest {
4950
*/
5051
@Schema(description = "用户名")
5152
@NotBlank(message = "用户名不能为空")
53+
@Pattern(regexp = RegexConsts.USERNAME, message = "用户名长度为 4 到 16 位,可以包含字母、数字,下划线,以字母开头")
5254
private String username;
5355

5456
/**
5557
* 昵称
5658
*/
5759
@Schema(description = "昵称")
58-
@Length(max = 32, message = "昵称长度不能超过 {max} 个字符")
60+
@NotBlank(message = "昵称不能为空")
61+
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "昵称长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线")
5962
private String nickname;
6063

6164
/**
6265
* 邮箱
6366
*/
6467
@Schema(description = "邮箱")
65-
@Pattern(regexp = RegexPool.EMAIL, message = "邮箱格式错误")
68+
@Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误")
6669
private String email;
6770

6871
/**
6972
* 手机号码
7073
*/
7174
@Schema(description = "手机号码")
72-
@Pattern(regexp = RegexPool.MOBILE, message = "手机号码格式错误")
75+
@Pattern(regexp = RegexConsts.MOBILE, message = "手机号码格式错误")
7376
private String phone;
7477

7578
/**

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/UserService.java

+11
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import top.charles7c.cnadmin.common.base.BaseService;
2424
import top.charles7c.cnadmin.system.model.entity.UserDO;
2525
import top.charles7c.cnadmin.system.model.query.UserQuery;
26+
import top.charles7c.cnadmin.system.model.request.UpdateBasicInfoRequest;
2627
import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest;
2728
import top.charles7c.cnadmin.system.model.request.UserRequest;
2829
import top.charles7c.cnadmin.system.model.vo.UserDetailVO;
@@ -47,6 +48,16 @@ public interface UserService extends BaseService<UserVO, UserDetailVO, UserQuery
4748
*/
4849
String uploadAvatar(MultipartFile avatar, Long id);
4950

51+
/**
52+
* 修改基础信息
53+
*
54+
* @param request
55+
* 修改信息
56+
* @param id
57+
* ID
58+
*/
59+
void updateBasicInfo(UpdateBasicInfoRequest request, Long id);
60+
5061
/**
5162
* 修改密码
5263
*

continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,15 @@
5252
import top.charles7c.cnadmin.system.mapper.UserMapper;
5353
import top.charles7c.cnadmin.system.model.entity.UserDO;
5454
import top.charles7c.cnadmin.system.model.query.UserQuery;
55+
import top.charles7c.cnadmin.system.model.request.UpdateBasicInfoRequest;
5556
import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest;
5657
import top.charles7c.cnadmin.system.model.request.UserRequest;
5758
import top.charles7c.cnadmin.system.model.vo.UserDetailVO;
5859
import top.charles7c.cnadmin.system.model.vo.UserVO;
59-
import top.charles7c.cnadmin.system.service.*;
60+
import top.charles7c.cnadmin.system.service.DeptService;
61+
import top.charles7c.cnadmin.system.service.RoleService;
62+
import top.charles7c.cnadmin.system.service.UserRoleService;
63+
import top.charles7c.cnadmin.system.service.UserService;
6064

6165
/**
6266
* 用户业务实现类
@@ -181,6 +185,13 @@ public String uploadAvatar(MultipartFile avatarFile, Long id) {
181185
return newAvatar;
182186
}
183187

188+
@Override
189+
public void updateBasicInfo(UpdateBasicInfoRequest request, Long id) {
190+
super.getById(id);
191+
baseMapper.lambdaUpdate().set(UserDO::getNickname, request.getNickname())
192+
.set(UserDO::getGender, request.getGender()).eq(UserDO::getId, id).update();
193+
}
194+
184195
@Override
185196
@Transactional(rollbackFor = Exception.class)
186197
public void updatePassword(String oldPassword, String newPassword, Long id) {

continew-admin-ui/src/views/system/role/index.vue

+14-1
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,20 @@
464464
form: {} as RoleRecord,
465465
// 表单验证规则
466466
rules: {
467-
name: [{ required: true, message: '请输入角色名称' }],
467+
name: [
468+
{ required: true, message: '请输入角色名称' },
469+
{
470+
match: /^[\u4e00-\u9fa5a-zA-Z0-9_-]{1,20}$/,
471+
message: '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线'
472+
},
473+
],
474+
code: [
475+
{ required: true, message: '请输入角色编码' },
476+
{
477+
match: /^[a-zA-Z][a-zA-Z0-9_]{1,15}$/,
478+
message: '长度为 2 到 16 位,可以包含字母、数字,下划线,以字母开头'
479+
},
480+
],
468481
dataScope: [{ required: true, message: '请选择数据权限' }],
469482
sort: [{ required: true, message: '请输入角色排序' }],
470483
},

continew-admin-ui/src/views/system/user/center/components/basic-info.vue

+10-2
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
<a-input
1313
v-model="form.username"
1414
:placeholder="$t('userCenter.basicInfo.form.placeholder.username')"
15-
max-length="50"
15+
max-length="16"
1616
/>
1717
</a-form-item>
1818
<a-form-item :label="$t('userCenter.basicInfo.form.label.nickname')" field="nickname">
1919
<a-input
2020
v-model="form.nickname"
2121
:placeholder="$t('userCenter.basicInfo.form.placeholder.nickname')"
22-
max-length="32"
22+
max-length="20"
2323
/>
2424
</a-form-item>
2525
<a-form-item :label="$t('userCenter.basicInfo.form.label.gender')" field="gender">
@@ -70,12 +70,20 @@
7070
required: true,
7171
message: t('userCenter.basicInfo.form.error.required.username'),
7272
},
73+
{
74+
match: /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/,
75+
message: t('userCenter.basicInfo.form.error.match.username'),
76+
},
7377
],
7478
nickname: [
7579
{
7680
required: true,
7781
message: t('userCenter.basicInfo.form.error.required.nickname'),
7882
},
83+
{
84+
match: /^[\u4e00-\u9fa5a-zA-Z0-9_-]{1,20}$/,
85+
message: t('userCenter.basicInfo.form.error.match.nickname'),
86+
},
7987
],
8088
};
8189
}),

continew-admin-ui/src/views/system/user/center/locale/en-US.ts

+2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ export default {
2525
'userCenter.basicInfo.form.placeholder.nickname': 'Please enter nickname',
2626

2727
'userCenter.basicInfo.form.error.required.username': 'Please enter username',
28+
'userCenter.basicInfo.form.error.match.username': 'Username are 4 to 16 characters long and can contain letters, numbers, underscores, and start with a letter',
2829
'userCenter.basicInfo.form.error.required.nickname': 'Please enter nickname',
30+
'userCenter.basicInfo.form.error.match.nickname': 'Nickname are 1 to 20 digits long and can contain Chinese, letters, numbers, underscores, dashes',
2931

3032
'userCenter.basicInfo.form.save': 'Save',
3133
'userCenter.basicInfo.form.save.success': 'Save success',

continew-admin-ui/src/views/system/user/center/locale/zh-CN.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ export default {
2525
'userCenter.basicInfo.form.placeholder.nickname': '请输入昵称',
2626

2727
'userCenter.basicInfo.form.error.required.username': '请输入用户名',
28+
'userCenter.basicInfo.form.error.match.username': '长度为 4 到 16 位,可以包含字母、数字,下划线,以字母开头',
2829
'userCenter.basicInfo.form.error.required.nickname': '请输入昵称',
30+
'userCenter.basicInfo.form.error.match.nickname': '长度为 1 到 20 位,可以包含中文、字母、数字、下划线,短横线',
2931

3032
'userCenter.basicInfo.form.save': '保存',
3133
'userCenter.basicInfo.form.save.success': '保存成功',
@@ -44,12 +46,12 @@ export default {
4446
'userCenter.securitySettings.updatePwd.form.label.rePassword': '确认新密码',
4547

4648
'userCenter.securitySettings.updatePwd.form.placeholder.oldPassword': '请输入当前密码',
47-
'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': '密码长度 6 到 32 位,同时包含数字和字母',
49+
'userCenter.securitySettings.updatePwd.form.placeholder.newPassword': '长度为 6 到 32 位,同时包含字母和数字',
4850
'userCenter.securitySettings.updatePwd.form.placeholder.rePassword': '请再次输入新密码',
4951

5052
'userCenter.securitySettings.updatePwd.form.error.required.oldPassword': '请输入当前密码',
5153
'userCenter.securitySettings.updatePwd.form.error.required.newPassword': '请输入新密码',
52-
'userCenter.securitySettings.updatePwd.form.error.match.newPassword': '密码长度 6 到 32 位,同时包含数字和字母',
54+
'userCenter.securitySettings.updatePwd.form.error.match.newPassword': '长度为 6 到 32 位,同时包含字母和数字',
5355
'userCenter.securitySettings.updatePwd.form.error.validator.newPassword': '新密码不能与当前密码相同',
5456
'userCenter.securitySettings.updatePwd.form.error.required.rePassword': '请再次输入新密码',
5557
'userCenter.securitySettings.updatePwd.form.error.validator.rePassword': '两次输入的密码不一致',

continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/common/CaptchaController.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,18 @@
3636

3737
import cn.dev33.satoken.annotation.SaIgnore;
3838
import cn.hutool.core.lang.Dict;
39-
import cn.hutool.core.lang.RegexPool;
4039
import cn.hutool.core.util.IdUtil;
4140
import cn.hutool.core.util.RandomUtil;
4241

4342
import top.charles7c.cnadmin.common.config.properties.CaptchaProperties;
4443
import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties;
4544
import top.charles7c.cnadmin.common.constant.CacheConsts;
45+
import top.charles7c.cnadmin.common.constant.RegexConsts;
4646
import top.charles7c.cnadmin.common.model.vo.CaptchaVO;
4747
import top.charles7c.cnadmin.common.model.vo.R;
48-
import top.charles7c.cnadmin.common.util.*;
48+
import top.charles7c.cnadmin.common.util.MailUtils;
49+
import top.charles7c.cnadmin.common.util.RedisUtils;
50+
import top.charles7c.cnadmin.common.util.TemplateUtils;
4951
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
5052

5153
/**
@@ -86,7 +88,7 @@ public R<CaptchaVO> getImageCaptcha() {
8688
@Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱")
8789
@GetMapping("/mail")
8890
public R getMailCaptcha(
89-
@NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexPool.EMAIL, message = "邮箱格式错误") String email)
91+
@NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误") String email)
9092
throws MessagingException {
9193
String limitKeyPrefix = CacheConsts.LIMIT_KEY_PREFIX;
9294
String captchaKeyPrefix = CacheConsts.CAPTCHA_KEY_PREFIX;

0 commit comments

Comments
 (0)