Commit Graph

209 Commits

Author SHA1 Message Date
Charles7c
d9af44f9fa style: 优化社交身份认证注释为三方账号认证 2023-10-20 22:24:41 +08:00
Charles7c
a1ccc421c4 fix: 修复重载校验方法定义及使用错误 2023-10-20 00:24:05 +08:00
Charles7c
efe455736c feat: 个人中心-安全设置,支持绑定、解绑三方账号 2023-10-19 23:44:56 +08:00
Bull-BCLS
a0b1afc546 fix: 修复 RestControllerAdvice 统一返回导致 Knife4j 文档请求异常 2023-10-15 19:22:50 +08:00
Charles7c
05cb609780 feat: 支持第三方账号登录
Just Auth(开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy!)
2023-10-14 23:58:13 +08:00
Bull-BCLS
992a8fca17 fix: 新增全局响应结果处理器
实现ResponseBodyAdvice接口,可以将相同的处理逻辑抽取出来,避免了在多个Controller中重复编写代码,提高了代码的可维护性和可读性。同时,对返回结果进行统一格式化、异常处理等处理,使得返回结果更加规范、易于处理和阅读。
2023-10-12 23:12:41 +08:00
Charles7c
3a176ac5ef style: 优化部分代码格式及注释 2023-10-10 22:37:24 +08:00
Charles7c
243ac0104a perf: 对查询参数信息接口增加缓存处理 2023-09-24 10:58:24 +08:00
Charles7c
90d825a02f refactor: 完善前后端校验 2023-09-18 22:21:25 +08:00
Charles7c
8a02401a24 refactor: 💥 优化系统内置类型数据标识
1.系统内置类型数据标识由 type 调整为 is_system
2.优化部分表的非空字段
2023-09-17 23:53:25 +08:00
Charles7c
2755bc8479 refactor: 优化部分前端代码
1.前端部分 id 类型调整为 number(去除 Jackson 针对 Long 等类型的全局转换后,需要调整下前端部分 id 的类)
2.前端部分表格列去除 data-index(部分表格列,使用了 slot,则无需再使用 data-index 属性)
3.部分字典状态遗漏更改
2023-09-17 20:38:56 +08:00
Charles7c
1f73aa732d refactor: 优化枚举字典处理,增加颜色类型
1.重构 useDict 方法,同时支持枚举和查询字典,对应后端接口增加缓存处理
2.优化 BaseEnum 处理,增加 color 字段可用于设置对应枚举背景颜色(同字典背景颜色)
2023-09-17 18:03:14 +08:00
Charles7c
3a3a5d6b71 refactor: 公告类型适配字典数据
1.新增 <dict-tag> 自定义组件,用于回显字典标签
2.重构 useDict 方法,支持查询字典数据
3.优化部分字典相关数据类型
2023-09-17 13:26:14 +08:00
Charles7c
8529af8eca refactor: 优化字典导出数据和格式 2023-09-16 22:29:28 +08:00
Charles7c
375810772a refactor: 优化通用查询注解多字段模糊查询 2023-09-12 22:33:36 +08:00
Charles7c
b3b6446433 refactor: 💥 分离 HTTP 状态码和业务状态码
1.传输正常的情况下无论业务是否有异常,HTTP 状态码始终为 200
2.防止非 HTTPS 情况下出现运营商劫持(例如:404)
2023-09-10 22:35:50 +08:00
Charles7c
a3082e72a9 style: 部分代码优化
1.格式优化:去除部分多余空行(较少代码段区分尽量不添加空行)、注释(代码尽量自解释)
2.完善部分 Swagger 注解信息
3.修复部分前后端警告
2023-09-10 18:01:44 +08:00
Charles7c
b874ca0782 refactor: 封装 Spring Boot 默认错误处理
1.排除路径配置放开 /error,以防止出现默认错误处理却显示为 401 的问题(例如:404 被识别为 401)
2.封装 Spring Boot 默认错误处理,统一响应结构
2023-09-10 11:17:47 +08:00
Charles7c
566c9a1224 refactor: 优化分页查询登录日志列表接口实现
利用 module 字段直接可以查询登录相关记录
2023-09-09 22:19:01 +08:00
Charles7c
1722133ac4 perf: 对查询仪表盘访问趋势信息接口增加缓存处理 2023-09-09 22:12:18 +08:00
Charles7c
a91ddeefc3 Merge branch '1.1.x' into dev 2023-09-08 21:18:32 +08:00
Charles7c
883dbecb1b refactor: 优化部分代码 2023-09-08 21:17:30 +08:00
Charles7c
5c9e6639db Merge branch '1.1.x' into dev
# Conflicts:
#	README.md
#	continew-admin-ui/package.json
#	continew-admin-ui/src/components/footer/index.vue
#	continew-admin-webapi/src/main/resources/application.yml
#	pom.xml
2023-09-06 21:01:05 +08:00
Bull-BCLS
7a6db2d14e fix: 还原登录 Helper 优化
Revert #9
2023-09-06 20:41:18 +08:00
Charles7c
31f0abbae2 fix: 修复是否为管理员判断错误 2023-09-06 20:11:50 +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
bfea689b0e refactor: 优化分页总记录数数据类型 2023-09-01 00:36:56 +08:00
Charles7c
015ff5512b fix: 修复在线用户列表等自定义分页查询 NPE 的问题 2023-09-01 00:35:43 +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
332bd6cd2a docs: 修复接口文档中 LocalDateTime 类型数据的示例信息不显示的问题 2023-08-29 19:43:48 +08:00
Charles7c
bb398d8101 refactor: 完善前端 axios 请求响应拦截器 2023-08-28 22:47:05 +08:00
Charles7c
df77e574cc refactor: 💥 更新信息调整为仅在更新数据时自动填充 2023-08-24 22:14:06 +08:00
Charles7c
58e838d5f9 docs: 完善接口文档信息 2023-08-23 21:44:12 +08:00
Charles7c
54ea41048a chore: 使用属性变量消除配置文件中分散的 ContiNew Admin 品牌元素
1.项目配置属性前缀由 continew-admin 改为 project(暂时未发现属性前缀 project 冲突)
2.配置文件中涉及到项目元素信息使用的,统一通过变量引用项目配置属性(如此改动之后,仅需要修改项目配置即可快速调整大量项目配置信息)
2023-08-20 10:23:12 +08:00
Charles7c
76622c238f fix: 修复 Redisson 与 Spring Boot 2.7.x 版本冲突的问题
1.报错信息:Caused by: java.lang.ClassNotFoundException:org.springframework.data.redis.connection.zset.Tuple
2.解决方案:将 redisson-spring-data-30(对应 Spring Boot 3.0.x 版本) 调整为 redisson-spring-data-27(对应 Spring Boot 2.7.x 版本)
2023-08-17 00:04:08 +08:00
Bull-BCLS
9e2a5ef124 refactor: 优化登录Helper 2023-08-16 23:19:14 +08:00
Charles7c
90e1c64db6 refactor: 将全局异常处理器未知异常的异常类型从 Exception 调整为 Throwable 2023-08-15 23:36:26 +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
fa916b9324 refactor: 将时间戳单位从毫秒调整为秒
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。它的提出主要是为用户提供一份电子证据,以证明用户的某些数据的产生时间。在实际应用上,它可以使用在包括电子商务、金融活动的各个方面,尤其可以用来支撑公开密钥基础设施的“不可否认”服务。
2023-08-15 00:31:48 +08:00
Charles7c
a61196cd62 refactor: 将验证码唯一标识格式从无符号 UUID 调整为带符号 UUID 2023-08-15 00:26:05 +08:00
Charles7c
190385ed36 docs: 完善公共模块相关接口文档信息 2023-08-15 00:23:58 +08:00
Charles7c
9def265af6 docs: 完善代码生成相关接口文档信息 2023-08-12 23:33:58 +08:00
Charles7c
76c65463c2 refactor: 移除所有的 @Accessors(chain = true),并全局配置禁止使用 2023-08-11 23:59:44 +08:00
Charles7c
241a9cf85b refactor: 使用 DatePattern 中的日期格式常量替代字符串常量中的日期格式 2023-08-10 23:38:20 +08:00
Charles7c
e533cf6a29 fix: 完善保存代码生成配置信息接口的参数验证 2023-08-09 23:34:48 +08:00
Charles7c
f4c6d83ff5 feat: 新增查询列映射信息列表接口
提取 QueryTypeEnum 枚举
2023-08-06 23:32:01 +08:00
Charles7c
bb6f47cfd2 feat: 新增系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等) 2023-08-05 00:08:41 +08:00
Charles7c
668124591e Merge branch '1.0.x' into dev
# Conflicts:
#	continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java
2023-07-19 23:17:39 +08:00
Charles7c
b0b1127b5b style: 优化 BaseController 中部分权限码的使用 2023-07-19 23:05:04 +08:00
Charles7c
76f04dd38f fix: 优化分页总记录数数据类型 2023-07-05 22:07:59 +08:00
Charles7c
c1fbabaaa7 Merge branch '1.0.x' into dev 2023-07-01 17:05:56 +08:00
Charles7c
b632c18399 fix: 完善使用通用查询注解时的参数验证提示 2023-07-01 17:03:26 +08:00
Charles7c
78a5d5ec7a refactor: 优化分组校验 2023-05-07 19:51:14 +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
ae8d294705 refactor: 优化 springdoc-openapi 对象型参数处理
1.使用 default-flat-param-object 全局设置对象型参数展示形式。此设置是在 springdoc-openapi v1.6.11 版本开始添加的新特性(详情请参阅:https://github.com/springdoc/springdoc-openapi/pull/1805),在此之前,只能在所有需要处理的对象型参数类上使用 @ParameterObject,工作量较大。
2.作者在使用上方这个配置时还遇到了一个 Bug,那就是只要在对象型参数前使用了注解,例如:@Validated PageQuery pageQuery,这个配置就不会生效了。此问题已在 GitHub 提交了相应 issue(详情请参阅:https://github.com/springdoc/springdoc-openapi/issues/2181),并且 springdoc-openapi 社区某个小伙伴儿已在当前最新发布的 v2.1.0 和 v1.7.0 中修复。
注意:由于当前使用的 Knife4j 版本其内部引入的 springdoc-openapi 相关依赖非最新版本,所以为了解决配置不生效问题,暂时将部分对象型参数移除了 @Validated 注解(除了 PageQuery,其他类当前也未实际添加校验,所以直接移除了)。当然如果不想移除的话,也可以从依赖上功夫,即移除 Knife4j 内引入的 springdoc-openapi 相关依赖,然后自行添加 springdoc-openapi 相关依赖并指定最新版本即可。
2023-04-09 01:13:23 +08:00
Charles7c
587698b1ba Merge branch '1.0.x' into dev 2023-04-09 00:42:13 +08:00
Charles7c
2d2a7e7c8e fix: 修复分页查询条件默认值未生效的问题
Spring MVC 对于对象型参数的属性赋值,如果属性值为 null 则不会调用其对应 set 方法,所以在 set
方法中添加默认处理逻辑无效
2023-04-09 00:40:28 +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
e6f7429fa3 style: 使用常量优化部分魔法值 2023-03-31 23:31:30 +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
38f52aaafa style: 适配 Java 14 新特性
1.增强 switch(Java 12 预览特性 => Java 14 标准特性)
详情请参阅:https://docs.oracle.com/en/java/javase/14/language/switch-expressions.html
2.@Serial(类似于 @Override 的检查注解,用于检查序列化)
2023-03-31 23:00:57 +08:00
Charles7c
5a5bd1681e style: 适配 Java 11 新 API
1.对 Optional 的 isPresent() 取反用法 => isEmpty()
2.集合 toArray(new String[0]) 用法 => toArray(String[]::new)
2023-03-31 22:46:14 +08:00
Charles7c
7dda38d2b8 Merge branch 'dev' into 2.0.x
# Conflicts:
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java
#	continew-admin-webapi/src/main/resources/application.yml
2023-03-31 22:22:50 +08:00
Charles7c
48de2e85e0 style: 优化部分 Properties 用法 2023-03-31 22:16:49 +08:00
Charles7c
e964c4cc4b Merge branch '1.0.x' into dev 2023-03-31 21:53:09 +08:00
Charles7c
a623acd4a5 fix: 优化通用查询注解解析器 2023-03-31 21:31:07 +08:00
Charles7c
9f25925d46 fix: 调整 BaseController API 方法的访问权限修饰符 2023-03-31 21:17:55 +08:00
Charles7c
95c27ea323 chore: Spring Boot 3.0.3 => 3.0.5
1.Spring Boot 3.0.3 => 3.0.5
2.Sa-Token 适配 Spring Boot 3.x
2023-03-31 00:08:07 +08:00
Charles7c
40e11a7a25 fix: 修复部分配置错误 2023-03-30 23:40:30 +08:00
Charles7c
0aafcc015c Merge branch 'pr_2' into 2.0.x
# Conflicts:
#	continew-admin-common/pom.xml
#	continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java
#	continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/LoginHelper.java
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/DeptRequest.java
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/MenuRequest.java
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/RoleRequest.java
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateBasicInfoRequest.java
#	continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java
#	pom.xml
2023-03-30 22:59:43 +08:00
dlj
dea160a7b2 chore: Spring Boot 2.7.8 => 3.0.3
1.Spring Boot 2.7.8 => 3.0.3
2.Knife4j 适配 Spring Boot 3.x
3.ServletUtil => JakartaServletUtil
4.javax.* => jakarta.*
2023-03-30 22:28:02 +08:00
Charles7c
3b7021e88c Merge branch '1.0.x' into dev 2023-03-29 23:48:44 +08:00
Charles7c
8b955a0b1b 修复:补充校验 2023-03-29 23:47:48 +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
bc54acd60b 重构:重构获取登录用户信息的代码逻辑
1.用户基本信息调整为实时获取
2.登录用户不再保存基本信息,降低维护成本
3.移除冗余的维护登录用户基本信息的代码
2023-03-26 10:58:23 +08:00
Charles7c
267ad9be13 优化:优化修改角色的代码逻辑
1.变更角色编码、功能权限或数据权限后,关联在线用户会自动下线
2.优化角色和菜单关联、角色和部门关联、用户和角色关联的业务代码(增加返回结果)
3.重构在线用户功能,抽取在线用户业务实现
2023-03-26 00:14:05 +08:00
Charles7c
c5b748fe52 完善:发版前配置梳理 2023-03-24 00:40:49 +08:00
Charles7c
069104c598 优化:优化部分常量命名及使用 2023-03-23 21:56:37 +08:00
Charles7c
8591a24730 优化:优化跨域配置,可支持配置允许跨域的具体域名或 * 2023-03-23 19:54:15 +08:00
Charles7c
0d17bd2444 优化:优化使用的获取泛型工具方法 2023-03-22 21:52:47 +08:00
Charles7c
a09711c04e 完善:完善菜单相关代码逻辑,优化部分细节 2023-03-20 21:56:20 +08:00
Charles7c
6d3ba478e9 优化:优化校验工具类的使用及部分模板文本写法
1.优化校验工具类,支持传入 {} 模板文本
2.校验工具类增加 throwIf 重载方法,适合于 boolean 类型参数的情况
3.优化一些模板文本的写法
4.优化一些其他细节
2023-03-20 20:44:52 +08:00
Charles7c
b345e4450d 优化:部门新增类型字段,用于标识部门是系统内置或自定义
1.系统内置部门不允许禁用、删除、修改上级部门
2.抽取 getAncestors 方法,用于复用获取祖级列表
3.删除部门时,自动删除角色和部门关联
2023-03-19 22:10:37 +08:00
Charles7c
6b73aeb8a9 优化:优化校验工具类的部分写法 2023-03-19 11:19:20 +08:00
Charles7c
25e11ad9bc 优化:优化后端公共 CRUD 组件-修改接口,将 id 从请求体提取到路径变量,更符合 RESTful 风格 2023-03-11 00:26:18 +08:00
Charles7c
fb0effed9a 新增:新增角色数据权限功能(基于 MyBatis Plus DataPermissionInterceptor 插件实现)
1.基于 MyBatis Plus DataPermissionInterceptor 插件实现的数据权限功能
2.通过在指定 Mapper 接口层方法添加 @DataPermission 注解实现数据权限
2023-03-07 23:55:24 +08:00
Charles7c
405c821e2a 重构:🔥 基于阿里巴巴 Java 开发手册(黄山版)重构各表基本结构(简化列名)
1.MySQL数据库>建表规约>第9条:
【强制】表必备三字段:id,create_time,update_time。
说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time,update_time 的类型均为datetime 类型,如果要记录时区信息,那么类型设置为 timestamp。
个人理解:简化列名的目的是为了后续能抽取更多公共能力
2.MySQL数据库>SQL语句>第10条:
【推荐】SQL 语句中表的别名前加 as,并且以 t1、t2、t3、...的顺序依次命名。
说明:
  1)别名可以是表的简称,或者是依照表在 SQL 语句中出现的顺序,以 t1、t2、t3 的方式命名。
  2)别名前加 as 使别名更容易识别。
正例:select t1.name from first_table as t1 , second_table as t2 where t1.id = t2.id;
2023-03-06 00:09:11 +08:00
Charles7c
4cd4ad1f82 优化:优化分页查询条件 2023-03-05 20:24:40 +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
95784e5c7d 修复:不再查询父 ID 为 0 的记录的父名称 2023-03-05 13:10:28 +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
44fa7266b6 优化:基于阿里巴巴 Java 开发手册(黄山版)优化日志配置
1.异常日志>日志规约>第2条:
【强制】日志文件至少保存 15 天,因为有些异常具备以“周”为频次发生的特点。对于当天日志,以“应用名.log”来保存,保存在/{统一目录}/{应用名}/logs/目录下,过往日志格式为:{logname}.log.{保存日期},日期格式:yyyy-MM-dd
正例:以 mppserver 应用为例,日志保存/home/admin/mppserver/logs/mppserver.log,历史日志名称为 mppserver.log.2021-11-28
2.异常日志>日志规约>第3条:
【强制】根据国家法律,网络运行状态、网络安全事件、个人敏感信息操作等相关记录,留存的日志不少于六个月,并且进行网络多机备份。
3.异常日志>日志规约>第9条:
【强制】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws 往上抛出。
正例:logger.error("inputParams: {} and errorMessage: {}", 各类参数或者对象 toString(), e.getMessage(), e);
4.异常日志>日志规约>第12条:
【推荐】可以使用 warn 日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。如非必要,请不要在此场景打出 error 级别,避免频繁报警。
说明:注意日志输出的级别,error 级别只记录系统逻辑出错、异常或者重要的错误信息。
2023-03-05 00:15:01 +08:00
Charles7c
47fa1422bb 优化:基于阿里巴巴 Java 开发手册(黄山版)优化部分变量和方法命名
1.编程规约>命名风格>第14条:
【推荐】在常量与变量命名时,表示类型的名词放在词尾,以提升辨识度。
正例:startTime / workQueue / nameList / TERMINATED_THREAD_COUNT
反例:startedAt / QueueOfWork / listName / COUNT_TERMINATED_THREAD
2.编程规约>命名风格>第19条:
【参考】各层命名规约:
  A)Service / DAO 层方法命名规约:
  1)获取单个对象的方法用 get 做前缀。
  2)获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects
  3)获取统计值的方法用 count 做前缀。
  4)插入的方法用 save / insert 做前缀。
  5)删除的方法用 remove / delete 做前缀。
  6)修改的方法用 update 做前缀。
个人理解及应用 🔥:
  1)在变量命名方面:
    a)方法体内局部变量,命名时表示类型的名词放在词尾,以提升辨识度;
      正例:nameList、nameArr。
    b)方法声明上参数(局部变量),命名时尽量采用复数形式,以和方法名保持一致;
      正例:List<String> listNameByIds(List<Long> ids);
    c)成员变量,命名时尽量采用复数形式。
  2)在方法命名方面:
    a)CRUD 类方法可以简化命名;
      正例:UserService:page、list、add、update、delete...;
      说明:UserService 是围绕 User 为核心的业务接口,简化命名的方法也很容易理解操作的是什么。
    b)其他方法,查询信息名词采用单数(与其纠结单数、复数,那就用单数,简单粗暴一点),以上述第2条要求为命名前缀。
      正例:RoleService:listNameByIds(根据 ID 查询名称列表)
           RoleService:listRoleCodeByUserId(根据用户 ID 查询角色编码列表)
           UserRoleService:listRoleIdByUserId(根据用户 ID 查询角色 ID 列表)
           UserService:getByUsername(根据用户名查询用户)
2023-03-04 23:03:33 +08:00