Commit Graph

93 Commits

Author SHA1 Message Date
Charles7c
0d3f1ae633 优化:优化表结构语法 2023-03-11 00:22:03 +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
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
Charles7c
94be1f9553 新增:新增功能权限适配及校验
1.后端 API 注解鉴权使用方式:@SaCheckPermission("system:user:add")
2.前端全局指令函数使用方式:v-permission="['system:user:add']"
3.前端权限判断函数使用方式:checkPermission(['system:user:add'])
2023-03-02 23:39:22 +08:00
Charles7c
ac6d2918d9 删除:删除系统管理/岗位管理(过于偏向行政业务向) 2023-02-27 22:53:36 +08:00
Charles7c
8eb82d4c72 修复:修复初始菜单数据错误 2023-02-27 22:21:20 +08:00
Charles7c
72e5522952 优化:优化新增关键词 create => add 2023-02-26 22:26:17 +08:00
Charles7c
a79b3e0e96 新增:新增公共查询枚举字典 API,优化前端获取枚举数据的方式 2023-02-26 21:49:03 +08:00
Charles7c
8200ea822f 新增:新增系统管理/岗位管理(列表、查看详情、新增、修改、删除、导出) 2023-02-26 00:19:56 +08:00
Charles7c
efa8f4fcf5 新增:新增系统管理/用户管理(列表、查看详情、新增、修改、删除、导出) 2023-02-22 23:58:28 +08:00
Charles7c
297fbd3675 重构:重构系统管理/角色管理功能
1. 使用抽屉代替对话框
2. 优化数据权限权限范围存储,新增角色和部门关联表
3. 新增角色和菜单关联表
4. 部分细节优化
2023-02-20 00:14:14 +08:00
Charles7c
510f86031f 新增:新增系统管理/菜单管理(列表、创建、修改、删除、导出) 2023-02-16 23:01:26 +08:00
Charles7c
148a98371f 优化:优化 Hikari 连接池配置 2023-02-14 23:17:08 +08:00
Charles7c
68a1da687f 优化:生产环境打印日志到控制台去除颜色格式 2023-02-14 21:16:05 +08:00
Charles7c
ebc7c2b3b0 优化:基于 ESLint 和阿里编码规约插件对部分代码规范进行优化 2023-02-10 20:45:15 +08:00
Charles7c
5251a484f2 新增:新增系统管理/角色管理(分页、查看详情、创建、修改、删除) 2023-02-09 23:15:16 +08:00
Charles7c
2bc68528a4 优化:优化 Hikari 连接池配置 2023-02-08 22:00:58 +08:00
Charles7c
c44503b7ea 新增:部门管理对接用户信息(新增所属部门),并完善查看部门详情(增加上级部门显示) 2023-02-07 22:04:22 +08:00
Charles7c
ceba8e9e53 新增:新增系统管理/部门管理/导出功能(引入 Easy Excel 依赖用于导出 Excel,详情可见 README 介绍。另请注意:测试导出功能时,前端需要关闭 mockjs,否则 responseType 会被 mockjs 设置为 '',导致导出的文件无法打开) 2023-02-06 23:02:23 +08:00
Charles7c
f2f23e6a17 优化:优化 Hikari 连接池配置 2023-02-03 23:47:58 +08:00
Charles7c
21fe29b56f 优化:优化日志表结构(新增 module 所属模块字段);优化日志引擎部分代码;使用 defaultIfNull() 和 blankToDefault 替换部分三元运算符代码(便于阅读及理解);将 BaseEntity 重命名为 BaseDO 2023-01-31 20:29:48 +08:00
Charles7c
d7851bc811 重构:初步封装后端 CRUD 公共组件(BaseController、BaseService、BaseServiceImpl) 2023-01-29 23:40:29 +08:00
Charles7c
bdf8eeb1b4 新增:新增系统管理/部门管理/查询列表功能,并将所有描述字段名从 notes 调整为 description,将部分前端方法名前缀从 query 调整为 get,以及去除部分冗余代码 2023-01-23 19:00:47 +08:00
Charles7c
d8debf5481 新增:新增系统监控/系统日志功能,优化日志表结构 2023-01-18 23:46:50 +08:00
Charles7c
c57383abad 新增:新增系统监控/登录日志功能,优化日志表结构,并新增记录错误信息(非未知异常不记录异常详情,只记录错误信息) 2023-01-17 23:16:37 +08:00
Charles7c
aa726fc6b6 新增:新增系统监控/操作日志功能,优化日志表结构 2023-01-16 23:00:54 +08:00
Charles7c
f4ea2d44d6 新增:个人中心新增查询操作日志功能,优化日志表结构,并支持关闭记录内网 IP 操作 2023-01-16 00:18:53 +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
88755ab720 新增:新增获取用户信息 API,未设置头像时,前端将根据用户性别显示对应默认头像 2023-01-02 10:23:19 +08:00
Charles7c
1d21019813 修复:解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题,同时优化所有 Date 类型为对应 Java 8 日期、时间类型 2022-12-29 21:48:50 +08:00
Charles7c
6a7ad96fa3 优化:优化跨域配置 2022-12-26 23:23:33 +08:00
Charles7c
727850933f 新增:新增系统监控模块(存放系统监控模块相关功能,例如:日志管理、服务监控等),新增操作日志引擎,记录 HTTP 请求信息 2022-12-25 13:16:15 +08:00
Charles7c
78e84e8941 完善:完善用户登录 API,优化部分包结构(引入 MyBatis Plus、多数据源、P6Spy、Liquibase 等依赖,详情可见 README 介绍) 2022-12-25 12:35:35 +08:00
Charles7c
00e2b44d0e 新增:新增用户登录和退出 API(引入 Sa-Token 依赖,详情可见 README 介绍) 2022-12-22 19:39:27 +08:00
Charles7c
d54c93aebc 升级:升级 Knife4j 为 4.0.0 正式版,并完善接口文档配置 2022-12-22 18:05:06 +08:00
Charles7c
79891e8b5a 新增:新增接口文档配置(基于 Spring Doc OpenAPI,使用 Knife4j 作为增强解决方案) 2022-12-11 22:32:18 +08:00
Charles7c
1e5eaab9d3 新增:新增获取图片验证码 API(引入 Redisson、Hutool、Easy Captcha 依赖,详情可见 README 介绍) 2022-12-11 15:06:21 +08:00
Charles7c
12b839f297 重构:按功能初步拆分模块 2022-12-10 21:25:14 +08:00