我为什么要来读若依的源码
- SpringBoot学了两三遍;
- 项目做了一个,里面借鉴了若依的某些源码;
- 项目不够完善,相关业务逻辑不够完整;
项目架构
注释
- 控制层:在类上面注明该类的主要相关信息,并表明作者;在方法上面仅添加代码相关义务意思。
- 服务层:在类上面注明该类的主要相关信息,并表明作者;在方法上面添加代码相关业务意思、方法参数(及简单的说明)、方法返回的是啥(如用户信息集合信息) 【接口层与实现层注释逻辑相同】。
- 数据层:在类上面注明该类的主要相关信息,并表明作者;在方法上面添加代码相关业务意思、方法参数(及简单的说明)、方法返回的是啥(如用户信息集合信息) 【xml里面就不需要注释了】。
- 类属性:采用文档注释,可以是一行。
- 其他:见阿里巴巴编程规范如不要再代码后面进行注释,应在代码上方,内容与// 之间有且仅有一个空格
ps: 之前一直不明白文档注释是干什么的。阅读源码,将鼠标挪到方法或者常量枚举值上的时候,会出现悬浮窗,会包含文档注释的内容。
业务代码
- 查询所有:无必要则分页;
- 根据Id查询:首先判断???
- 新增:对必要字段进行 checkXxxxxUnique 检查是否唯一;
- 更改:对必要字段进行 checkXxxxxUnique 检查是否唯一、是否支持更改;删除相关关联后增加相关关联 -> 执行更改信息【更改信息不可更新全部字段!更新需要更新的字段即可】;udateByupdateTime;
- 删除:是否能够删除?删除相关关联(执行逻辑删除) :抛全局异常
- 参数校验:如validation
ps: - checkXxxxxUnique: 【SELECT ‘id’, ‘col’ FROM ‘table’ WHERE ‘col’ = #{col} LIMIT 1】
登陆流程
1、/captchaImage – GET 返回一个uuid 和 验证码;
{
"msg": "操作成功",
"img": "/9j/4A 节选 M//2Q==",
"code": 200,
"captchaOnOff": true,
"uuid": "42 节选 1f"
}
2、/login – POST
# 形式:json 入参如下:
{
"username":"admin",
"password":"admin123",
"code":"验证码(可以去redis里面查找,也可以debug打断点获取)",
"uuid":"唯一码(可去 redis 或 打断点、最简单的是从captchaImage的返回结果获取)"
}
# 登陆成功返回结果如下:
{
"msg": "操作成功",
"code": 200,
"token": "string1.string2.string3 节选 "
}
登陆成功之后 redis 中就会依据【固定头:uuid】来存取该用户的基本信息
3、system/dept – POST
# 记得在 headers 中添加【Authorization:登陆成功返回的 token 值】
{"deptName": "可以的", // 部门名称【非空、[0,30]】【部门名称唯一】
"email": "12312", // 邮箱【符合邮箱格式、长度有限50】
"leader": "童鹤", // 部门负责人
"orderNum": 2, // 排序【非空】
"parentId": 100, // 部门父id【】【父部门状态正常】
"phone": "13912312312", // 电话号【前端会验证格式,后端判断字符长度】
"status": "1" // 部门状态 1表停用
}