Charles7c
a09711c04e
完善:完善菜单相关代码逻辑,优化部分细节
2023-03-20 21:56:20 +08:00
Charles7c
d8ceda4654
新增:新增获取路由信息 API(默认前端动态路由处于关闭状态,可通过[页面配置]>[菜单来源于后台]开启)
...
1.在页面导航栏中通过[页面配置]>[菜单来源于后台]临时启用,刷新后配置失效
2.在前端项目 src/config/setting.json 中,可通过 menuFromServer 配置永久启用
2023-03-09 00:06:02 +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
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
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
1257a4bc35
优化:基于阿里巴巴 Java 开发手册(黄山版)优化常量及包命名
...
1.编程规约>常量定义>第4条:
【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
说明:大而全的常量类,杂乱无章,使用查找功能才能定位到要修改的常量,不利于理解,也不利于维护。
正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 SystemConfigConsts 下。
2.编程规约>常量定义>第5条:
【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常
量、类内共享常量。
1)跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
2)应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。
反例:易懂常量也要统一定义成应用内共享常量,两个程序员在两个类中分别定义了表示“是”的常量:
类 A 中:public static final String YES = "yes";
类 B 中:public static final String YES = "y";
A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
3)子工程内部共享常量:即在当前子工程的 constant 目录下。
4)包内共享常量:即在当前包下单独的 constant 目录下。
5)类内共享常量:直接在类内部 private static final 定义。
2023-03-03 22:34:19 +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
8200ea822f
新增:新增系统管理/岗位管理(列表、查看详情、新增、修改、删除、导出)
2023-02-26 00:19:56 +08:00
Charles7c
c44503b7ea
新增:部门管理对接用户信息(新增所属部门),并完善查看部门详情(增加上级部门显示)
2023-02-07 22:04:22 +08:00
Charles7c
3075038067
优化:优化模型类命名(为数据模型类添加 DO 后缀),并优化所有模型相关变量命名
2023-01-30 21:00:30 +08:00
Charles7c
dab3e597c2
优化:优化部分校验类型(业务验证迁移到 Service 层,使用 CheckUtils 来验证)
2023-01-25 23:07:25 +08:00
Charles7c
bdf8eeb1b4
新增:新增系统管理/部门管理/查询列表功能,并将所有描述字段名从 notes 调整为 description,将部分前端方法名前缀从 query 调整为 get,以及去除部分冗余代码
2023-01-23 19:00:47 +08:00
Charles7c
185b79320f
优化:优化校验器相关方法名
2023-01-21 12:09:49 +08:00
Charles7c
8b82557883
新增:新增修改邮箱功能,并优化部分以往代码(引入 spring-boot-starter-mail 用于发送邮件验证码)
2023-01-14 01:05:39 +08:00
Charles7c
a08fd7773e
新增:新增修改密码功能,并优化部分以往代码
2023-01-10 23:25:58 +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
21f5aceccf
优化:使用枚举存储性别、状态等信息(采用 MyBatis Plus#通用枚举扩展),常量类则专注于存储全局变量,例如:缓存键、默认值等
2023-01-02 00:19:56 +08:00
Charles7c
d9a48f7a95
修复:修复生产环境报 java.lang.NoClassDefFoundError: org/springframework/data/redis/connection/zset/Tuple 的错误问题(移除 Sa-Token 集成 Redis 依赖,改为本地 Redis 适配 SaTokenDao)
2022-12-28 23:32:05 +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
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