# nestjs-mysql-api
**Repository Path**: FuXiangRong/nestjs-mysql-api
## Basic Information
- **Project Name**: nestjs-mysql-api
- **Description**: nestjs + mysql 后端,配套前端https://github.com/buqiyuan/vue3-antd-admin
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-02-17
- **Last Updated**: 2022-02-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> 原项目地址:https://github.com/kuangshp/nestjs-mysql-api
## 一、项目介绍
* 1、采用`java`的`MVC`的经典开发模型(在`nestjs`开发中也可以使用基于`angular`方式的模块化开发模式,看个人喜好),来构建项目结构,也符合后端企业开发的需求。
* 2、项目是基于`mysql`数据库开发的
* 3、使用`jwt`的方式进行登录鉴权(颗粒度仅到菜单权限)
## 二、使用项目
* 1、本项目仅仅是实现了`rbac`的权限系统,对于其他的功能需要自己基于这个基础上去扩展
* 2、先在本地创建数据库
* 3、在项目的根目录的`.env`文件修改为你自己的数据库基本配置(地址、用户名、密码、数据库)
* 4、启动项目
```shell
npm run start:dev
```
* 5、运行第五步的时候会默认初始化菜单数据和用户数据(账号:`admin`,密码:123456)
* 6、如果你想初始化别的数据,可以在`src/services/init-db`中写上你要初始化的数据
## 二、主要实现功能
- [x] 实现用户的登录、`jwt`鉴权
- [x] 如果你是要将已有的项目改造成新的项目(基于已经有数据表的时候),可以尝试使用命令
```shell
# 会将数据库文件映射生成typeORM的实体类
npm run db1
```
- [x] 如果你是新项目可以使用数据迁移的方式,将你写的实体类,在需要的时候手动映射到数据库
```shell
npm run generate
npm run db
```
- [x] 基于`RBAC`实现权限控制
项目中采用基于账号的方式来替换用户的,(对一个用户可能有几个账号的情况下的扩展),所以拿到项目后,一般流程是
* 先创建用户
* 创建账号的时候关联对应的用户

- [x] 采用创建账号的时候可以选择该账号对应的角色

- [x] 创建角色的时候权限列表采用树机构展示出来,可以选择对应的权限

- [x] 字典管理主要是用于项目中配置下拉框使用的
- [x] 集成`swagger`文档
```shell
localhost:7000/api/v1/docs
# 端口号根据.env文件的PORT=7000 来写
```
- [x] 在`module`中统一封装了几个模块
* `code`是验证码模块
* `file`是文件模块
* `upload-img`图片上传,可以上传到本地和阿里云`oss`上
* `upload-excel`导入`excel`文件
* `redis-utils`封装了几个关于`redis`的模块
* `yunpian-sms`是云片网发送手机短信的
- [x] `ecosystem.config.js`是采用`PM2`的配置文件,项目开发完后直接运行命令一键部署
```shell
npm run build
npm run pm2:prod
```
- [x] 日志系统没有开发,直接使用`PM2`查看日志
```shell
pm2 log
```
## 三、技术解答
> 本项目还在持续集成新功能进来,最后会加上前端做一个`cms`系统的`api`,后期会拉分支使用`graphql`提供`api`
- 1、有关于`nestjs`的技术问题可以直接加我微信(微信号:332904234)备注:nest 开发
- 2、如果你觉得本项目对你帮助很大,**给一个赞**