# HHF1-backend **Repository Path**: dXmo/hhf1-backend ## Basic Information - **Project Name**: HHF1-backend - **Description**: HHF1 项目 Nestjs 后端 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-09-03 - **Last Updated**: 2022-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HH1 后端 ## 开发工具 1. 框架 [nestjs](https://nestjs.com/) 2. 语言 [typescript](https://www.typescriptlang.org/) 3. 数据库 [typeorm](https://typeorm.io/#/) + [mysql](https://www.mysql.com/) + [docker](https://www.docker.com/) + [docker-compose](https://docs.docker.com/compose/) 4. JS 依赖 [pnpm](https://pnpm.io/) 5. 质量管理工具 [eslint](https://eslint.org/) + [prettier](https://prettier.io/docs/en/) + [commitlint](https://commitlint.js.org/#/) + [git-cz](https://github.com/streamich/git-cz) + [husky](https://typicode.github.io/husky/#/) 6. 测试 [jest](https://jestjs.io/) ## 介绍 **HHF1 后台管理系统**是一个对标**标准生产流程**的系统,其主要功能为订单管理和送货单管理,还包括用户管理、产品质量管理、产品类型管理、公司管理等,同时提供基础的数据统计功能,后期还将添加物料和成本管理模块。 其**不是一个开箱即用的模板后台系统**,而是一个让你**立刻使用的可用于商业的系统**。在设计上,该系统可以满足多个公司的管理,允许管理员一次性交付给多家企业进行使用。每个公司中的内容采取了严格的安全性设计,确保相互隔离,防止用户跨公司访问数据。 由于后台管理系统的特性,其**不提供**并发和缓存功能。 --- 本系统采用了复杂度为中的设计模式,如果你是后端或全栈开发初学者,有学习 TS+Nest 后端的愿望,我认为本项目可以成为你的关注点之一。 如果你确实有学习欲望,以下是我对于学习本项目的一些建议: 1. 你首先需要具备 [nestjs](https://nestjs.com/) 和 [typescript](https://www.typescriptlang.org/) 的基础知识; 2. `company` 模块是一个相对简单的模块,它不需要依赖其它模块; 3. `auth` 模块是关于登录的模块,将它与 `utils/guards/jwt-auth.guard.ts` `utils/guards/local-auth.guard.ts` `utils/strategies` `user` 模块结合可以得到一个完成的登录路径; 4. `order` `delivery` `delivery-item` 模块相对复杂,其相互依赖的程度高,因此我将涉及多个模块的功能都交付给了 `deliver-order` 模块。 5. 由于测试需要访问数据库,因此无法进行并发测试,需要通过 `--detectOpenHandles` 参数强制测试串行执行。 ## 其它 如果本项目为你提供的帮助,请不要忘记为项目添加 Star ,谢谢你的关注。 ## TODO 项目还存在一些设计的优化空间, 后续需要进行定向修复或重构. 1. √ - 如果 Delivery 中的 Item 为空, 则应当删除该 Delivery. 2. √ - 将修改 order 的 quantity 和 left 的行为包装起来, 统一管理. 3. √ - 不应当允许 order 中的 quantity 为 0, 这样会导致一些毫无必要的逻辑分支. 4. √ - 也不应当允许 delivery-item 中的 quantity 为 0, 理由同上. 5. √ - 删除 ifDelivered 现在只观察 left 是否为 0 来判断是否已送出.