/store-web-backend

数字门店系统后端项目

Primary LanguageTypeScript

Nest Logo

介绍

本项目是NestJS技术图书 《NestJS全栈开发解析:快速上手与实践》 的实战项目,于2024.9月上线。

安装

$ pnpm install

运行

# development
$ pnpm start

# watch mode
$ pnpm start:dev

# production mode
$ pnpm start:prod

注意: 1.由于项目中权限是环环相扣,如果你使用Postman等接口调试工具,大部分接口需要有access_token验证,意味着需要登录,登录前需要注册,注册需要获取验证,这些都可以在日志中看到。 2.除此之外,注册之后还不能调用某些接口,因为当前用户的权限集需要分配,你可以往db中添加数据,或者直接导入sql目录下的store_web_project.sql到db中。 3.项目中.http已经创建了一些接口测试案例,你可以直接使用。

运行测试

# unit tests
$ pnpm test

# e2e tests
$ pnpm test:e2e

# test coverage
$ pnpm test:cov

项目配置及注意事项

  • class-transformer采用0.3.x版本,使用plainToClass|classToPlain方法操作对象或实体, 不指定默认会安装0.5.x版本,这个版本废弃了前面两个api,使用plainToInstance|instanceToPlain代替,要想使用最新api,可能会报错缺少class-transformer/storage包,此时删除项目中@nestjs/types包即可

  • chalk包使用^4.1.2版本,超过5.x是breaking version,应该使用ESM模式

jwt-auth.guard.ts 用于验证用户session状态 role-auth.guard.ts 用于验证用户接口权限

JWTModule注册在user模块中,当然也可以注册到auth模块中统一管理,生成和验证access_token就在auth.service.ts中进行

项目目录

├── README.md  
├── nest-cli.json  
├── package.json  
├── pnpm-lock.yaml  
├── src  
│   ├── activity  
│   │   ├── activity.controller.ts  
│   │   ├── activity.module.ts  
│   │   ├── activity.service.ts  
│   │   ├── dto  
│   │   ├── entities  
│   │   └── start-activity.service.ts  
│   ├── app.controller.spec.ts  
│   ├── app.controller.ts  
│   ├── app.module.ts  
│   ├── app.service.ts  
│   ├── auth  
│   │   ├── auth.module.ts  
│   │   ├── auth.service.ts  
│   │   ├── jwt-auth.guard.ts  
│   │   ├── jwt.strategy.ts  
│   │   └── role-auth.guard.ts  
│   ├── common  
│   │   ├── decorators  
│   │   ├── enums  
│   │   ├── http-exceptions.filter.ts  
│   │   ├── logger  
│   │   ├── logger.middleware.ts  
│   │   ├── mail  
│   │   ├── redis  
│   │   ├── response.interceptor.ts  
│   │   └── utils  
│   ├── logs  
│   │   ├── application-2024-04-05.error.log.gz  
│   │   ├── application-2024-04-05.info.log.gz  
│   │   ├── application-2024-04-06.error.log  
│   │   ├── application-2024-04-06.info.log.gz  
│   │   ├── application-2024-04-07.error.log  
│   │   └── application-2024-04-07.info.log  
│   ├── main.ts  
│   ├── order  
│   │   ├── dto  
│   │   ├── entities  
│   │   ├── order.controller.ts  
│   │   ├── order.module.ts  
│   │   └── order.service.ts  
│   ├── permission  
│   │   ├── dto  
│   │   ├── entities  
│   │   ├── permission.controller.ts  
│   │   ├── permission.module.ts  
│   │   └── permission.service.ts  
│   ├── product  
│   │   ├── dto  
│   │   ├── entities  
│   │   ├── hot-sales.service.ts  
│   │   ├── product.controller.ts  
│   │   ├── product.module.ts  
│   │   └── product.service.ts  
│   ├── role  
│   │   ├── dto  
│   │   ├── entities  
│   │   ├── role.controller.ts  
│   │   ├── role.module.ts  
│   │   └── role.service.ts  
│   ├── sys  
│   │   ├── dto  
│   │   ├── sys.controller.ts  
│   │   ├── sys.module.ts  
│   │   └── sys.service.ts  
│   └── user  
│       ├── dto  
│       ├── entities  
│       ├── user.controller.ts  
│       ├── user.module.ts  
│       └── user.service.ts  
├── tsconfig.build.json  
└── tsconfig.json  

部署

如需部署到生产环境或Docker环境,需要区分各个服务地址,如Nest服务、Redis MySQL服务,它们在Docker和开发环境的host配置是不一样的,对应不同环境的.evn文件。

交流学习

在项目运行中有遇到任何问题,请直接与作者联系! 需要加入交流群探讨学习,直接扫描下方二维码,如过期请添加作者WeChat!

作者WeChat:

描述文本

项目交流群:

描述文本

支持作者

图书购买链接:京东

图书购买链接:当当