Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d3b50cebc | ||
|
|
40c05afb3e | ||
|
|
e8563e4fda |
118
README.md
@@ -1,25 +1,125 @@
|
|||||||
# 单商户积分商城
|
# 单商户积分商城
|
||||||
|
|
||||||
管理后台前端 + CRMEB 后端 API 合并仓库。
|
管理后台前端、用户端 H5(uni-app)与 CRMEB Java 后端合并仓库。项目由 **4 个子项目** 组成,对应 **2 个 jar 包** 与 **2 个前端**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 项目架构概览
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph frontends [前端]
|
||||||
|
AdminVue[backend-adminend / frontend]
|
||||||
|
UserH5[single_uniapp22miao]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph backends [后端 JAR]
|
||||||
|
AdminJar[miao-admin-2.2.jar]
|
||||||
|
FrontJar[miao-front-2.2.jar]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph sources [源码子项目]
|
||||||
|
crmebAdmin[crmeb-admin]
|
||||||
|
crmebFront[crmeb-front]
|
||||||
|
end
|
||||||
|
|
||||||
|
AdminVue --> AdminJar
|
||||||
|
UserH5 --> FrontJar
|
||||||
|
crmebAdmin --> AdminJar
|
||||||
|
crmebFront --> FrontJar
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2 个 jar 包 ↔ 2 个前端
|
||||||
|
|
||||||
|
| jar 包 | 对应前端 | 说明 |
|
||||||
|
|--------|----------|------|
|
||||||
|
| **miao-admin-2.2.jar** | `backend-adminend`(部分分支为 `frontend`) | 管理后台 API + 后台静态站点 |
|
||||||
|
| **miao-front-2.2.jar** | `single_uniapp22miao` | 积分商城、用户端 H5 / uni-app |
|
||||||
|
|
||||||
|
### 4 个子项目(可单独打包部署)
|
||||||
|
|
||||||
|
| 子项目 | 产出 | 说明 |
|
||||||
|
|--------|------|------|
|
||||||
|
| **crmeb-admin** | `miao-admin-2.2.jar` | 管理后台后端 |
|
||||||
|
| **crmeb-front** | `miao-front-2.2.jar` | 用户端 API |
|
||||||
|
| **backend-adminend**(或 `frontend`) | `dist/` | 管理后台 Vue 静态 |
|
||||||
|
| **single_uniapp22miao** | `unpackage/dist/build/h5` | 用户端 H5 静态 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 目录结构
|
## 目录结构
|
||||||
|
|
||||||
|
### 根目录
|
||||||
|
|
||||||
|
| 目录/文件 | 说明 |
|
||||||
|
|-----------|------|
|
||||||
|
| **backend/** | Java 后端(Maven 多模块) |
|
||||||
|
| **backend-adminend/** | 管理后台 Vue 前端(部分分支为 `frontend`) |
|
||||||
|
| **single_uniapp22miao/** | 用户端 uni-app 前端(积分商城 H5) |
|
||||||
|
| **backend/deploy.conf** | 多环境部署配置 |
|
||||||
|
| **backend/DEPLOY.md** | 打包与部署详细说明 |
|
||||||
|
|
||||||
|
### backend 子模块
|
||||||
|
|
||||||
|
| 子模块 | 产出 | 说明 |
|
||||||
|
|--------|------|------|
|
||||||
|
| **crmeb-admin** | `miao-admin-2.2.jar` | 管理后台后端 |
|
||||||
|
| **crmeb-front** | `miao-front-2.2.jar` | 用户端 API |
|
||||||
|
| **crmeb-service** | 依赖库 | 业务逻辑、Mapper |
|
||||||
|
| **crmeb-common** | 依赖库 | 公共组件 |
|
||||||
|
|
||||||
|
### single_uniapp22miao 主要目录
|
||||||
|
|
||||||
| 目录 | 说明 |
|
| 目录 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| **frontend/** | 管理后台 Vue 前端(原 single_admin22miao) |
|
| **api/** | 后台 API 调用 |
|
||||||
| **backend/** | CRMEB Java Spring Boot 后端(原 crmeb_22miao) |
|
| **components/** | 公共组件 |
|
||||||
|
| **config/** | 请求地址等配置 |
|
||||||
|
| **pages/** | 页面(含 integral 积分模块等) |
|
||||||
|
| **static/** | 静态资源 |
|
||||||
|
|
||||||
## 前端
|
### backend-adminend 主要目录
|
||||||
|
|
||||||
|
| 目录 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| **src/** | Vue 源码 |
|
||||||
|
| **public/** | 静态资源 |
|
||||||
|
| **build/** | 构建脚本 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 开发与构建
|
||||||
|
|
||||||
|
### 管理后台前端
|
||||||
|
|
||||||
- 技术栈:Vue + Vue CLI
|
- 技术栈:Vue + Vue CLI
|
||||||
- 开发:`cd frontend && npm install && npm run serve`
|
- 开发:`cd backend-adminend && npm install && npm run serve`(若仓库中为 `frontend` 目录则替换)
|
||||||
- 构建:`npm run build`
|
- 构建:`npm run build:prod`(Node 17+ 可设 `export NODE_OPTIONS="--openssl-legacy-provider"`)
|
||||||
|
- 产出:`backend-adminend/dist/`(或 `frontend/dist/`)
|
||||||
|
|
||||||
## 后端
|
### 用户端 H5 前端
|
||||||
|
|
||||||
|
- 技术栈:uni-app、Vue 2
|
||||||
|
- 开发:`cd single_uniapp22miao && npm install && npm run dev:h5`
|
||||||
|
- 构建:`npm run build:h5`
|
||||||
|
- 产出:`single_uniapp22miao/unpackage/dist/build/h5/`
|
||||||
|
|
||||||
|
### 后端
|
||||||
|
|
||||||
- 技术栈:Spring Boot 2.2.6、Maven、MyBatis Plus
|
- 技术栈:Spring Boot 2.2.6、Maven、MyBatis Plus
|
||||||
- 开发:`cd backend && mvn spring-boot:run -pl crmeb-admin`
|
- 管理后台 API:`cd backend && mvn spring-boot:run -pl crmeb-admin`
|
||||||
- 打包:`mvn clean package -pl crmeb-admin -am -DskipTests`
|
- 用户端 API:`cd backend && mvn spring-boot:run -pl crmeb-front`
|
||||||
|
- 打包、多模块命令与环境说明见 **[backend/DEPLOY.md](backend/DEPLOY.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 多环境与部署(简要)
|
||||||
|
|
||||||
|
- 环境配置:**[backend/deploy.conf](backend/deploy.conf)**(by80、miao33、miao50、shjjy153、shccd159 等)
|
||||||
|
- 部署脚本:`backend/shell/deploy-admin-*.sh`、`deploy-front-*.sh`
|
||||||
|
- 详细步骤与变量说明:**[backend/DEPLOY.md](backend/DEPLOY.md)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Gitea
|
## Gitea
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ ENV = 'development'
|
|||||||
|
|
||||||
# base api
|
# base api
|
||||||
# VUE_APP_BASE_API = '/dev-api'
|
# VUE_APP_BASE_API = '/dev-api'
|
||||||
VUE_APP_BASE_API = 'http://127.0.0.1:30032'
|
# VUE_APP_BASE_API = 'http://127.0.0.1:30032'
|
||||||
# VUE_APP_BASE_API = 'https://jfadmin.suzhouyuqi.com'
|
# VUE_APP_BASE_API = 'https://jfadmin.suzhouyuqi.com'
|
||||||
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
|
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
|
||||||
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.com'
|
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.com'
|
||||||
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
||||||
|
# shjjy153 项目
|
||||||
|
# VUE_APP_BASE_API = 'http://jjy-jfadmin.fwxgpt.com'
|
||||||
|
# shccd159 项目
|
||||||
|
VUE_APP_BASE_API = 'http://ccd-jfadmin.fwxgpt.com'
|
||||||
|
|
||||||
|
|
||||||
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
||||||
19
backend-adminend/.env.production
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# just a flag
|
||||||
|
ENV = 'production'
|
||||||
|
|
||||||
|
# base api
|
||||||
|
# VUE_APP_BASE_API = '/prod-api'
|
||||||
|
# VUE_APP_BASE_API = 'http://127.0.0.1:8080'
|
||||||
|
# VUE_APP_BASE_API = 'https://jf.suzhouyuqi.com'
|
||||||
|
# VUE_APP_BASE_API = 'http://jfadmin.xiashengjun.com'
|
||||||
|
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.com'
|
||||||
|
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
|
||||||
|
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'
|
||||||
|
# miao33 项目
|
||||||
|
# VUE_APP_BASE_API = 'http://jfadmin.xiashengjun.com'
|
||||||
|
|
||||||
|
# shjjy153 项目
|
||||||
|
# VUE_APP_BASE_API = 'http://jjy-jfadmin.fwxgpt.com'
|
||||||
|
|
||||||
|
# shccd159 项目
|
||||||
|
VUE_APP_BASE_API = 'http://ccd-jfadmin.fwxgpt.com'
|
||||||
@@ -14,8 +14,6 @@
|
|||||||
|
|
||||||
## 二、前端打包
|
## 二、前端打包
|
||||||
|
|
||||||
**打包前请确认**:`frontend/.env.production` 中 **`VUE_APP_BASE_API`** 为本项目接口地址(例如本项目为 `http://jfadmin.xiashengjun.com`)。使用 backend 的部署脚本(`deploy-admin-miao33.sh` / `deploy-admin-by80.sh`)时,会在打包前自动检查该值与 `deploy.conf` 中当前环境的 `VUE_APP_BASE_API_EXPECTED` 是否一致,不一致将拒绝打包并提示修改。
|
|
||||||
|
|
||||||
在 **frontend 目录** 下执行:
|
在 **frontend 目录** 下执行:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -36,15 +34,10 @@ npm run build:prod
|
|||||||
|
|
||||||
前端与后端一起发布时,使用 **backend 的一键部署脚本**,会自动完成:前端打包 → 后端打包 → 远程备份 → 上传 jar 与 `dist` → 重启服务。
|
前端与后端一起发布时,使用 **backend 的一键部署脚本**,会自动完成:前端打包 → 后端打包 → 远程备份 → 上传 jar 与 `dist` → 重启服务。
|
||||||
|
|
||||||
在项目 **backend 目录** 下执行(按环境二选一):
|
在项目 **backend 目录** 下执行:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd backend
|
cd backend
|
||||||
|
|
||||||
# miao33 环境(profile=miao33,默认 8.152.170.46 / jfadmin.xiashengjun.com)
|
|
||||||
./shell/deploy-admin-miao33.sh
|
|
||||||
|
|
||||||
# by80 环境(profile=miao80,默认 123.56.214.80 / jfadmin.bosenyuan.com)
|
|
||||||
./shell/deploy-admin-by80.sh
|
./shell/deploy-admin-by80.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -54,7 +47,7 @@ cd backend
|
|||||||
2. **在 frontend 目录执行 `npm run build:prod`**,生成 `dist`
|
2. **在 frontend 目录执行 `npm run build:prod`**,生成 `dist`
|
||||||
3. 远程备份原有 jar 与后台静态
|
3. 远程备份原有 jar 与后台静态
|
||||||
4. 上传 jar 到 `REMOTE_DIR_JAR`,上传 **dist 到 REMOTE_DIR_ADMIN**
|
4. 上传 jar 到 `REMOTE_DIR_JAR`,上传 **dist 到 REMOTE_DIR_ADMIN**
|
||||||
5. 远程重启 admin 服务(对应 Spring Profile)
|
5. 远程重启 admin 服务(Spring Profile miao80)
|
||||||
|
|
||||||
即:**前端无需单独操作,一次执行即可完成前端打包 + 自动部署发布**。
|
即:**前端无需单独操作,一次执行即可完成前端打包 + 自动部署发布**。
|
||||||
SSH 配置、deploy.conf、故障排查见:**[backend/DEPLOY.md](../backend/DEPLOY.md)**。
|
SSH 配置、deploy.conf、故障排查见:**[backend/DEPLOY.md](../backend/DEPLOY.md)**。
|
||||||
@@ -63,11 +56,11 @@ SSH 配置、deploy.conf、故障排查见:**[backend/DEPLOY.md](../backend/DE
|
|||||||
|
|
||||||
## 四、部署配置(前端相关)
|
## 四、部署配置(前端相关)
|
||||||
|
|
||||||
配置在 **backend/deploy.conf**,按环境分段(miao33、by80、miao50):
|
配置在 **backend/deploy.conf**,by80 段示例:
|
||||||
|
|
||||||
| 配置项 | 说明 | miao33 示例 | by80 示例 |
|
| 配置项 | 说明 | 示例 |
|
||||||
|--------|------|-------------|-----------|
|
|--------|------|------|
|
||||||
| **REMOTE_DIR_ADMIN** | 前端 dist 发布目录(admin 后台站点根目录) | `/www/wwwroot/jfadmin.xiashengjun.com` | `/www/wwwroot/jfadmin.bosenyuan.com` |
|
| **REMOTE_DIR_ADMIN** | 前端 dist 发布目录(admin 后台站点根目录) | `/www/wwwroot/jfadmin.bosenyuan.com` |
|
||||||
|
|
||||||
脚本通过 **tar 管道** 将 `frontend/dist` 内容上传到该目录,不依赖远程安装 rsync。
|
脚本通过 **tar 管道** 将 `frontend/dist` 内容上传到该目录,不依赖远程安装 rsync。
|
||||||
|
|
||||||
@@ -14,23 +14,6 @@ ADMIN_LOCAL_PORT=30032
|
|||||||
ADMIN_JAR_NAME=miao-admin-2.2.jar
|
ADMIN_JAR_NAME=miao-admin-2.2.jar
|
||||||
|
|
||||||
|
|
||||||
miao33:
|
|
||||||
spring:
|
|
||||||
profiles:
|
|
||||||
active: miao33
|
|
||||||
SERVER_HOST=8.152.170.46
|
|
||||||
SERVER_USER=root
|
|
||||||
SERVER_PORT=22
|
|
||||||
REMOTE_DIR_JAR=/www/wwwroot/crmeb
|
|
||||||
REMOTE_DIR_ADMIN=/www/wwwroot/jfadmin.xiashengjun.com
|
|
||||||
FRONT_LOCAL_PORT=30031
|
|
||||||
FRONT_JAR_NAME=miao-front-2.2.jar
|
|
||||||
ADMIN_LOCAL_PORT=30032
|
|
||||||
ADMIN_JAR_NAME=miao-admin-2.2.jar
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
miao50:
|
miao50:
|
||||||
spring:
|
spring:
|
||||||
profiles:
|
profiles:
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
|
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 343 B |
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 344 B After Width: | Height: | Size: 344 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 338 B |
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 53 B After Width: | Height: | Size: 53 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 43 B After Width: | Height: | Size: 43 B |