# WANFi软件编译手册

## 项目介绍

WANFi远距离WiFi产品设计软件服务和计费系统，主要用于WiFi AP设备管理、用户管理及费用管理，系统包含客户平台和用户平台，客户平台包含设备管理和用户套餐计费管理及系统管理等功能；用户平台主要面向终端用户，终端用户可通过充值和购买流量套餐实现互联网接入服务。WANFi控制平台目前基于TPLINK Omada平台API实现。

本项目基于Spring Cloud、Ant Design Vue的前后端分离的开发平台， 采用微服务解决方案，包括核心模块：角色用户、菜单权限、网关路由、数据权限等，使用中间件：日志脱敏、任务调度、短信邮箱等。

## 软件工程项目目录树

```sh
tree -L 1 wfc.git
    wfc.git
    ├── be.wfc          # 后端模块目录
    ├── build.wfc       # 系统构建目录
    ├── fe.wfc          # 客户平台前端目录
    └── fe.wfc.user     # 用户平台前端目录
```

## 后端模块编译说明

**工程目录树**

```sh
tree -L 2 be.wfc/
    be.wfc/
    ├── LICENSE
    ├── README.md
    ├── bin
    │   ├── clean.bat
    │   ├── package.bat
    │   ├── run-auth.bat
    │   ├── run-gateway.bat
    │   ├── run-modules-file.bat
    │   ├── run-modules-gen.bat
    │   ├── run-modules-job.bat
    │   ├── run-modules-system.bat
    │   └── run-monitor.bat
    ├── docker
    │   ├── copy.bat
    │   ├── copy.sh
    │   ├── deploy.bat
    │   ├── deploy.sh
    │   ├── docker-compose.yml
    │   ├── mysql
    │   ├── nacos
    │   ├── nginx
    │   ├── redis
    │   ├── start-backend.bat
    │   ├── start-backend.sh
    │   ├── start-frontend.bat
    │   ├── start-frontend.sh
    │   └── wfc
    ├── pom.xml
    ├── sql                                     # 数据库脚本
    │   ├── upgrade
    │   ├── wfc_config_db                       # nacos配置数据库
    │   ├── wfc_system_db                       # 客户平台数据库
    │   └── wfc_user_db                         # 用户平台数据库
    ├── wfc-api                                 # API接口模块
    │   ├── pom.xml
    │   ├── wfc-api-omada                       # Omada API接口
    │   ├── wfc-api-system                      # 客户平台 API接口
    │   └── wfc-api-user                        # 用户平台 API接口
    ├── wfc-auth                                # 认证中心 [8081]
    │   ├── pom.xml
    │   ├── src
    │   └── target
    ├── wfc-common                              # 通用模块                              
    │   ├── pom.xml
    │   ├── wfc-common-core                     # 核心模块             
    │   ├── wfc-common-datascope                # 权限范围  
    │   ├── wfc-common-datasource               # 多数据源  
    │   ├── wfc-common-log                      # 日志记录  
    │   ├── wfc-common-mail                     # 邮件服务   
    │   ├── wfc-common-mybatis                  # 数据操作
    │   ├── wfc-common-redis                    # 缓存服务  
    │   ├── wfc-common-seata                    # 分布式事务 
    │   ├── wfc-common-security                 # 安全模块
    │   ├── wfc-common-sensitive                # 数据脱敏  
    │   └── wfc-common-swagger                  # 系统接口
    ├── wfc-gateway                             # 网关模块 [8080]           
    │   ├── pom.xml
    │   ├── src
    │   └── target
    ├── wfc-modules                             # 业务模块    
    │   ├── pom.xml
    │   ├── wfc-file                            # 文件服务 [9201]  
    │   ├── wfc-gen                             # 代码生成 (未启用)
    │   ├── wfc-job                             # 定时任务 [9203]
    │   ├── wfc-payment                         # 支付服务 [9204]
    │   ├── wfc-system                          # 客户平台模块 [9205]
    │   └── wfc-user                            # 用户平台模块 [9206]  
    └── wfc-visual                              # 系统监控 (未启用)
        ├── pom.xml
        └── wfc-visual-monitor
```

**环境部署**

```
JDK >= 1.8 (推荐1.8版本)
Maven >= 3.6.3
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 7.4.2
nacos >= v2.5.0
sentinel >= 1.6.0 (optional)
```

**编译系统**

```sh
cd be.wfc
mvn clean package -P prod -DskipTests
```

## 客户平台前端编译说明

**工程目录树**

```sh
tree -L 1 fe.wfc
    fe.wfc
    ├── README.md
    ├── build
    ├── dist
    ├── env.config.ts
    ├── eslint.config.js
    ├── index.html
    ├── node_modules
    ├── package.json
    ├── packages
    ├── pnpm-lock.yaml
    ├── pnpm-workspace.yaml
    ├── public
    ├── src
    ├── tsconfig.json
    ├── uno.config.ts
    ├── vite.config.ts
    └── vitest.config.ts
```

**环境准备**

确保你的环境满足以下要求：

- **NodeJS**: >=18.12.0，推荐 18.19.0 或更高。
- **pnpm**: >= 8.7.0，推荐 8.14.0 或更高。

**安装依赖**

npm install -g pnpm

```bash
npm install -g pnpm
pnpm i
```

> 由于本项目采用了 pnpm monorepo 的管理方式，因此请不要使用 npm 或 yarn 来安装依赖。

**启动项目**

```bash
pnpm dev
```

**构建项目**

```bash
pnpm build
```

## 用户平台前端编译说明

**工程目录树**

```sh
tree -L 1 fe.wfc.user
    fe.wfc.user
    ├── README.md
    ├── build
    ├── dist
    ├── env.config.ts
    ├── eslint.config.js
    ├── index.html
    ├── node_modules
    ├── package.json
    ├── packages
    ├── pnpm-lock.yaml
    ├── pnpm-workspace.yaml
    ├── public
    ├── src
    ├── tsconfig.json
    ├── uno.config.ts
    ├── vite.config.ts
    └── vitest.config.ts
```

**环境准备**

确保你的环境满足以下要求：

- **NodeJS**: >=18.12.0，推荐 18.19.0 或更高。
- **pnpm**: >= 8.7.0，推荐 8.14.0 或更高。

**安装依赖**

npm install -g pnpm

```bash
npm install -g pnpm
pnpm i
```

> 由于本项目采用了 pnpm monorepo 的管理方式，因此请不要使用 npm 或 yarn 来安装依赖。

**启动项目**

```bash
pnpm dev
```

**构建项目**

```bash
pnpm build
```

## 安装包构建说明

**工程目录树**

```text
build.wfc/
├── bin                             # build binary file
├── build                           # build directory
│   ├── bin
│   ├── docker                      # docker compose root directory
│   │   ├── env
│   │   ├── mysql
│   │   │   ├── conf
│   │   │   ├── data
│   │   │   ├── db
│   │   │   └── logs
│   │   ├── nacos
│   │   │   ├── conf
│   │   │   └── logs
│   │   ├── nginx
│   │   │   ├── conf
│   │   │   ├── conf.d
│   │   │   ├── html
│   │   │   └── logs
│   │   ├── redis
│   │   │   ├── conf
│   │   │   └── data
│   │   └── wfc
│   │       ├── auth
│   │       │   └── jar
│   │       ├── gateway
│   │       │   └── jar
│   │       ├── modules
│   │       │   ├── file
│   │       │   │   └── jar
│   │       │   ├── gen
│   │       │   │   └── jar
│   │       │   ├── job
│   │       │   │   └── jar
│   │       │   ├── payment
│   │       │   │   └── jar
│   │       │   ├── system
│   │       │   │   └── jar
│   │       │   └── user
│   │       │       └── jar
│   │       ├── upload
│   │       └── visual
│   │           └── monitor
│   │               └── jar
│   └── systemd                     # system service daemon file saved here
│       └── system
├── debbuild                        # deb build directory
│   ├── DEBIAN
│   ├── etc
│   └── opt
│       └── wfc
├── docs
│   ├── 01-requirement
│   ├── 02-design
│   └── 03-configuration
└── release
    ├── debs                        # deb package release, n/a
    └── tars                        # tar package release
```

**准备工作**

```text
JDK >= 1.8 (推荐1.8版本)
Maven >= 3.0
Mysql >= 5.7.0 (推荐5.7版本) # docker内部构建
Redis >= 7.4.2              # docker内部构建
nacos >= v2.5.0             # docker内部构建
sentinel >= 1.6.0 (optional)
```

**构建发布包**

> 如果不同步拉取git仓库，带-g

- TAR发布包

```sh
cd wfc.git/build.wfc/bin
./build.sh -g tar
```

- DEB发布包

```sh
cd wfc.git/build.wfc/bin
./build.sh -g deb
```
