Charles7c
|
f4c0919eda
|
refactor: 优化部分使用类的引用路径
|
2023-11-21 22:22:07 +08:00 |
|
Charles7c
|
a86f3a5047
|
refactor: 适配 Jackson、API 文档(Knife4j:Spring Doc)自动配置
|
2023-11-21 22:07:53 +08:00 |
|
Charles7c
|
ec1daaf045
|
refactor: 适配线程池自动配置
|
2023-11-20 22:16:36 +08:00 |
|
Charles7c
|
2c4f5116c9
|
build: 引入 ContiNew Starter,并适配跨域自动配置
由于 ContiNew Starter 尚处于开发中,所以使用快照版本
|
2023-11-20 20:00:11 +08:00 |
|
Charles7c
|
2f87310bc8
|
style: 优化部分代码格式
|
2023-11-05 21:26:12 +08:00 |
|
Charles7c
|
51e1cd9307
|
Merge remote-tracking branch 'origin/2.0.x' into dev
# Conflicts:
# README.md
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseReq.java
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseServiceImpl.java
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/handler/GlobalExceptionHandler.java
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExceptionUtils.java
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java
# continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/req/DeptReq.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/req/MenuReq.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/req/RoleReq.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java
# continew-admin-ui/src/components/footer/index.vue
# continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/common/CommonController.java
# continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserCenterController.java
# continew-admin-webapi/src/main/resources/config/application-dev.yml
# continew-admin-webapi/src/main/resources/config/application-prod.yml
# pom.xml
|
2023-11-04 23:57:06 +08:00 |
|
Charles7c
|
4d70bc84db
|
feat: 支持手机号登录(演示环境不开放)
1.在个人中心-安全设置中绑手机号后,才支持手机号登录
2.SMS4J(短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程)
|
2023-10-27 21:32:25 +08:00 |
|
Charles7c
|
f5e8b0943c
|
style: 枚举接口 BaseEnum => IBaseEnum
|
2023-10-25 23:12:03 +08:00 |
|
Charles7c
|
38deb950ac
|
refactor: 项目配置增加是否为生产环境配置项
|
2023-10-25 22:00:41 +08:00 |
|
Charles7c
|
05cb609780
|
feat: 支持第三方账号登录
Just Auth(开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy!)
|
2023-10-14 23:58:13 +08:00 |
|
Charles7c
|
1f73aa732d
|
refactor: 优化枚举字典处理,增加颜色类型
1.重构 useDict 方法,同时支持枚举和查询字典,对应后端接口增加缓存处理
2.优化 BaseEnum 处理,增加 color 字段可用于设置对应枚举背景颜色(同字典背景颜色)
|
2023-09-17 18:03:14 +08:00 |
|
Charles7c
|
a3082e72a9
|
style: 部分代码优化
1.格式优化:去除部分多余空行(较少代码段区分尽量不添加空行)、注释(代码尽量自解释)
2.完善部分 Swagger 注解信息
3.修复部分前后端警告
|
2023-09-10 18:01:44 +08:00 |
|
Charles7c
|
32904b54ef
|
refactor: 升级 MyBatis Plus 3.5.3.1 => 3.5.3.2,并优化数据权限处理
1.解决升级到 MyBatis Plus 3.5.3.2 后,由于 BaseMapper 接口变化导致部分数据权限处理报 Invalid bound statement (not found) 错误的问题(处理思路来源于:https://github.com/baomidou/mybatis-plus/issues/5630)
2.提取 DataPermissionMapper(数据权限 Mapper 基类),如需处理通用 Mapper 方法的数据权限,继承该 Mapper 即可
|
2023-09-04 22:18:28 +08:00 |
|
Charles7c
|
be394f3de4
|
style: 优化登录用户信息角色相关信息命名
1.roles => roleCodes
2.roleSet => roles
|
2023-09-02 00:12:45 +08:00 |
|
Charles7c
|
4639d13ba6
|
perf: 对获取路由信息接口增加缓存处理
1.优化 Spring Cache 配置
2.暂时移除 Jackson 针对数值类型:Long、BigInteger、BigDecimal 的 toString 处理(TreeUtil 疑似在字符串类型 parentId 时会出现转换异常)
|
2023-08-31 22:05:35 +08:00 |
|
Charles7c
|
df77e574cc
|
refactor: 💥 更新信息调整为仅在更新数据时自动填充
|
2023-08-24 22:14:06 +08:00 |
|
Charles7c
|
54ea41048a
|
chore: 使用属性变量消除配置文件中分散的 ContiNew Admin 品牌元素
1.项目配置属性前缀由 continew-admin 改为 project(暂时未发现属性前缀 project 冲突)
2.配置文件中涉及到项目元素信息使用的,统一通过变量引用项目配置属性(如此改动之后,仅需要修改项目配置即可快速调整大量项目配置信息)
|
2023-08-20 10:23:12 +08:00 |
|
Charles7c
|
487fa82306
|
style: 优化 == 及 != 表达式格式
1.将 null 或常量值调整到符号左侧
2.将无特殊意义的方法判空写法改为表达式判断写法
|
2023-08-15 23:31:50 +08:00 |
|
Charles7c
|
94f88bad22
|
fix: 修复访问 doc.html 接口文档,控制台报 No mapping for GET /favicon.ico 警告的问题
|
2023-08-15 23:02:11 +08:00 |
|
Charles7c
|
b23b00d02a
|
perf: 集成 Spring Cache,优化查询用户昵称性能
|
2023-08-15 22:58:44 +08:00 |
|
Charles7c
|
241a9cf85b
|
refactor: 使用 DatePattern 中的日期格式常量替代字符串常量中的日期格式
|
2023-08-10 23:38:20 +08:00 |
|
Charles7c
|
3738fa4872
|
Merge branch 'dev' into 2.0.x
# Conflicts:
# continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java
# continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java
# continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java
# continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/auth/model/query/OnlineUserQuery.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/DeptQuery.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/MenuQuery.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/RoleQuery.java
# continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java
|
2023-04-13 22:36:57 +08:00 |
|
Charles7c
|
b1c0ac1998
|
Merge branch '1.0.x' into dev
|
2023-04-13 22:32:11 +08:00 |
|
Charles7c
|
efbcb9b39d
|
style: 优化业务实现注释
|
2023-04-13 22:29:53 +08:00 |
|
Charles7c
|
0f2f35d608
|
Merge branch 'dev' into 2.0.x
# Conflicts:
# README.md
|
2023-04-03 21:37:38 +08:00 |
|
Charles7c
|
6bb15d782e
|
Merge branch '1.0.x' into dev
# Conflicts:
# README.md
|
2023-04-03 21:34:42 +08:00 |
|
Charles7c
|
cf3044312c
|
style: 适配 Java 16 新特性
1.instanceof 模式匹配(Java 14 预览特性 => Java 16 标准特性)
详情请参阅:https://docs.oracle.com/en/java/javase/16/language/pattern-matching-instanceof-operator.html
|
2023-03-31 23:08:50 +08:00 |
|
Charles7c
|
48de2e85e0
|
style: 优化部分 Properties 用法
|
2023-03-31 22:16:49 +08:00 |
|
Charles7c
|
51a82d8f4e
|
升级:升级后端依赖
1.Spring Boot 2.7.8 => 2.7.10
2.Redisson 3.19.0 => 2.20.0
3.Easy Excel 3.2.0 => 3.2.1
4.Knife4j 4.0.0 => 4.1.0(此版本已内置了 springdoc-openapi-ui 依赖)
5.Hutool 5.8.11 => 5.8.16
|
2023-03-27 21:22:14 +08:00 |
|
Charles7c
|
405d40e19d
|
release: v1.0.0
|
2023-03-26 21:10:30 +08:00 |
|
Charles7c
|
c5b748fe52
|
完善:发版前配置梳理
|
2023-03-24 00:40:49 +08:00 |
|
Charles7c
|
8591a24730
|
优化:优化跨域配置,可支持配置允许跨域的具体域名或 *
|
2023-03-23 19:54:15 +08:00 |
|
Charles7c
|
fb0effed9a
|
新增:新增角色数据权限功能(基于 MyBatis Plus DataPermissionInterceptor 插件实现)
1.基于 MyBatis Plus DataPermissionInterceptor 插件实现的数据权限功能
2.通过在指定 Mapper 接口层方法添加 @DataPermission 注解实现数据权限
|
2023-03-07 23:55:24 +08:00 |
|
Charles7c
|
8823211fd9
|
优化:基于阿里巴巴 Java 开发手册(黄山版)优化 Jackson 超大整数配置
1.编程规约>前后端规约>第6条:
【强制】对于需要使用超大整数的场景,服务端一律使用 String 字符串类型返回,禁止使用 Long 类型。
说明:Java 服务端如果直接返回 Long 整型数据给前端,Javascript 会自动转换为 Number 类型(注:此类型为双精度浮点数,表示原理与取值范围等同于 Java 中的 Double)。Long 类型能表示的最大值是 263-1,在取值范围之内,超过 253(9007199254740992)的数值转化为Javascript 的 Number 时,有些数值会产生精度损失。
扩展说明,在 Long 取值范围内,任何 2 的指数次的整数都是绝对不会存在精度损失的,所以说精度损失是一个概率问题。若浮点数尾数位与指数位空间不限,则可以精确表示任何整数,但很不幸,双精度浮点数的尾数位只有 52 位。
反例:通常在订单号或交易号大于等于 16 位,大概率会出现前后端订单数据不一致的情况。比如,后端传输的 "orderId":362909601374617692,前端拿到的值却是:362909601374617660
|
2023-03-05 19:31:02 +08:00 |
|
Charles7c
|
39f267699a
|
优化:优化成员变量相关注释及部分操作写法
成员变量有时候会被称为 Field 有时候会被称为 Property,它们的区别如下:
1.Field:Field 是 Java 反射中描述类的属性信息的类。成员变量(Instance Variable)就是定义的字段(Field),例如 private String name;。Field 可以获取当前对象的成员变量的类型,对成员变量重新设值等。使用 Field 可以直接操作类的属性,不需要通过 getter 和 setter 方法,但是需要了解反射机制。
2.Property:Property 是成员变量的 getter 和 setter 方法。例如,public String getName() { return name; } 和 public void setName(String name) { this.name = name; } 分别是获取和设置 MyField 类中的实例变量 name 的 getter 和 setter 方法。使用 Property 可以在类的外部访问和修改类的属性,但是需要注意访问权限和数据类型的正确性。
综上所述,Field 和 Property 都可以用来表示 Java 类中的成员变量,选择哪种方式取决于具体的应用场景和需求。如果需要直接操作类的属性,可以使用 Field;如果需要在类的外部访问和修改类的属性,可以使用 Property。
个人理解:从 MyBatis 的映射角度来说,column 表示数据库表列/字段,property 表示 Java 对象属性/字段,所以此前在涉及到 MyBatis 操作时,尽可能多的用了 Property 而不是 Field。但除了 MyBatis 之外还有很多地方也需要用到成员变量,与其纠结 Field 还是 Property,那就用 Field,简单粗暴一点。
|
2023-03-05 12:59:10 +08:00 |
|
Charles7c
|
25f6e3402b
|
优化:优化使用 MyBatis Plus ChainWrapper 的方式
|
2023-03-04 17:38:10 +08:00 |
|
Charles7c
|
89a327920e
|
优化:基于阿里巴巴 Java 开发手册(黄山版)优化常量
1.编程规约>常量定义>第1条:
【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
|
2023-03-04 14:35:45 +08:00 |
|
Charles7c
|
4779d77265
|
优化:基于阿里巴巴 Java 开发手册(黄山版)优化方法排序及访问权限修饰符
1.编程规约>OOP规约>第20条:
【推荐】当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起,便于阅读,
此条规则优先于下一条。
2.编程规约>OOP规约>第21条:
【推荐】类内方法定义的顺序依次是:公有方法或保护方法 > 私有方法 > getter / setter 方法。
说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类关心,也可能是“模板设
计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个黑盒实现;因为承载的信息价值较低,所有
Service 和 DAO 的 getter / setter 方法放在类体最后。
3.编程规约>OOP规约>第26条:
【推荐】类成员与方法访问控制从严:
1)如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。
2)工具类不允许有 public 或 default 构造方法。
3)类非 static 成员变量并且与子类共享,必须是 protected。
4)类非 static 成员变量并且仅在本类使用,必须是 private。
5)类 static 成员变量如果仅在本类使用,必须是 private。
6)若是 static 成员变量,考虑是否为 final。
7)类成员方法只供类内部调用,必须是 private。
8)类成员方法只对继承类公开,那么限制为 protected。
说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。思考:如果是一个
private 的方法,想删除就删除,可是一个 public 的 service 成员方法或成员变量,删除一下,不得手心冒点汗吗?
变量像自己的小孩,尽量在自己的视线内,变量作用域太大,无限制的到处跑,那么你会担心的。
|
2023-03-04 10:41:43 +08:00 |
|
Charles7c
|
dc751fc3ec
|
优化:基于阿里巴巴 Java 开发手册(黄山版)优化部分方法使用
1.编程规约>OOP规约>第12条:
【强制】禁止使用构造方法 BigDecimal(double) 的方式把 double 值转化为 BigDecimal 对象。
说明:BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
如:BigDecimal g = new BigDecimal(0.1F);实际的存储值为:0.100000001490116119384765625
正例:优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,此方法内部其实执行了 Double 的
toString,而 Double 的 toString 按 double 的实际能表达的精度对尾数进行了截断。
BigDecimal recommend1 = new BigDecimal("0.1");
BigDecimal recommend2 = BigDecimal.valueOf(0.1);
2.编程规约>OOP规约>第19条:
【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,
否则会有抛 IndexOutOfBoundsException 的风险。
说明:
String str = "a,b,c,,";
String[] ary = str.split(",");
// 预期大于 3,结果等于 3
System.out.println(ary.length);
|
2023-03-03 23:14:15 +08:00 |
|
Charles7c
|
a79b3e0e96
|
新增:新增公共查询枚举字典 API,优化前端获取枚举数据的方式
|
2023-02-26 21:49:03 +08:00 |
|
Charles7c
|
142d315a8d
|
优化:MyBatis Plus 新增防全表更新与删除插件配置
|
2023-02-11 22:56:13 +08:00 |
|
Charles7c
|
ebc7c2b3b0
|
优化:基于 ESLint 和阿里编码规约插件对部分代码规范进行优化
|
2023-02-10 20:45:15 +08:00 |
|
Charles7c
|
ceba8e9e53
|
新增:新增系统管理/部门管理/导出功能(引入 Easy Excel 依赖用于导出 Excel,详情可见 README 介绍。另请注意:测试导出功能时,前端需要关闭 mockjs,否则 responseType 会被 mockjs 设置为 '',导致导出的文件无法打开)
|
2023-02-06 23:02:23 +08:00 |
|
Charles7c
|
21fe29b56f
|
优化:优化日志表结构(新增 module 所属模块字段);优化日志引擎部分代码;使用 defaultIfNull() 和 blankToDefault 替换部分三元运算符代码(便于阅读及理解);将 BaseEntity 重命名为 BaseDO
|
2023-01-31 20:29:48 +08:00 |
|
Charles7c
|
1837047a9e
|
修复:🔥 修复重写 RequestMappingHandlerMapping 后,日志拦截器等失效的问题
|
2023-01-30 23:06:22 +08:00 |
|
Charles7c
|
d7851bc811
|
重构:初步封装后端 CRUD 公共组件(BaseController、BaseService、BaseServiceImpl)
|
2023-01-29 23:40:29 +08:00 |
|
Charles7c
|
8b82557883
|
新增:新增修改邮箱功能,并优化部分以往代码(引入 spring-boot-starter-mail 用于发送邮件验证码)
|
2023-01-14 01:05:39 +08:00 |
|
Charles7c
|
76fb698a37
|
新增:新增修改基础信息 API(优化 Jackson 针对通用枚举接口 IEnum 的序列化和反序列化)
|
2023-01-09 22:41:09 +08:00 |
|
Charles7c
|
5252c54c48
|
新增:新增上传头像 API,采用本地存储方式存储头像
|
2023-01-05 22:32:23 +08:00 |
|
Charles7c
|
21f5aceccf
|
优化:使用枚举存储性别、状态等信息(采用 MyBatis Plus#通用枚举扩展),常量类则专注于存储全局变量,例如:缓存键、默认值等
|
2023-01-02 00:19:56 +08:00 |
|