my_midway_project
{{description}}
QuickStart
see midway docs for more detail.
Development
先将database目录下到sql文件迁移到数据库,修改默认的config配置文件
$ npm i
$ npm run dev
$ open http://localhost:7001/
Deploy
$ npm start
$ npm stop
npm scripts
- Use
npm run lint
to check code style. - Use
npm test
to run unit test.
Redis 划分
借助 jwt 插件做签名校验,管理员的 token 中会包含 id 字段。
admin:xxxx
下面
所有 admin 相关的缓存数据都放在 admin:accessToken:${id}
缓存管理员 Token 信息admin:userinfo:${id}
缓存管理员基本信息
数据库设计(目前基础模块不使用软删除)
所有实体表均有deleted_at字段,用于软删除。如果要关闭软删除,将deletedAt字段注释即可
进行软删除的时候,关系表的数据不做改动。
后期根据需要,用脚本定期清理软删除的数据。
- 权限
- 角色
- 菜单
- 管理员
查询注意事项(业务软删除单独写一个BaseModel)
- 实体查询,继承
BaseModel
的实体会自带软删除判断,例子查看src/app/model/base.ts
- 在做关系查询的时候,关系表需要手动加软删除判断,如下
/** * 根据菜单id获取数据 * @param id 菜单id */ async getAdminMenuById(id: string) { const row = await this.adminMenuModel .createQueryBuilder() .select() .leftJoinAndSelect( 'AdminMenuModel.roles', 'role', 'role.deletedAt IS NULL' ) .where({ id: id }) .getOne(); return row; }
TODO
-
基础
-
- Admin登录
-
- 普通用户登录-账户密码
-
- OAuth 2.0
-
- 日志监控
-
- 本地上传文件服务
-
- 鉴权中间件
-
- 接口响应统计中间件
-
超级管理
-
- 权限
-
- 角色
-
- 管理员
-
- 菜单
-
- 日志
迁移API
-
home.ts
-
- /
-
- /ping
-
auth.ts
-
- /auth/login
-
- /auth/logout
-
- /auth/currentUser
-
admin/menu.ts
-
- /admin/menu/query
-
- /admin/menu/show
-
- /admin/menu/create
-
- /admin/menu/update
-
- /admin/menu/remove
-
- /admin/menu/order
-
admin/permission.ts
-
- /admin/permission/query
-
- /admin/permission/show
-
- /admin/permission/create
-
- /admin/permission/update
-
- /admin/permission/remove
-
admin/role.ts
-
- /admin/role/query
-
- /admin/role/show
-
- /admin/role/create
-
- /admin/role/update
-
- /admin/role/remove
-
admin/user.ts
-
- /admin/user/query
-
- /admin/user/show
-
- /admin/user/create
-
- /admin/user/update
-
- /admin/user/remove