2 Commits
main ... by80

Author SHA1 Message Date
apple
71bb0a03f7 by80: 新增 deploy-front-by80.sh 部署脚本
Made-with: Cursor
2026-03-18 12:11:03 +08:00
apple
dc401eafff by80: 更新 application 配置
Made-with: Cursor
2026-03-18 12:02:47 +08:00
740 changed files with 141 additions and 2265 deletions

118
README.md
View File

@@ -1,125 +1,25 @@
# 单商户积分商城
管理后台前端、用户端 H5uni-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 静态 |
---
管理后台前端 + CRMEB 后端 API 合并仓库
## 目录结构
### 根目录
| 目录/文件 | 说明 |
|-----------|------|
| **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 主要目录
| 目录 | 说明 |
|------|------|
| **api/** | 后台 API 调用 |
| **components/** | 公共组件 |
| **config/** | 请求地址等配置 |
| **pages/** | 页面(含 integral 积分模块等) |
| **static/** | 静态资源 |
| **frontend/** | 管理后台 Vue 前端(原 single_admin22miao |
| **backend/** | CRMEB Java Spring Boot 后端(原 crmeb_22miao |
### backend-adminend 主要目录
| 目录 | 说明 |
|------|------|
| **src/** | Vue 源码 |
| **public/** | 静态资源 |
| **build/** | 构建脚本 |
---
## 开发与构建
### 管理后台前端
## 前端
- 技术栈Vue + Vue CLI
- 开发:`cd backend-adminend && npm install && npm run serve`(若仓库中为 `frontend` 目录则替换)
- 构建:`npm run build:prod`Node 17+ 可设 `export NODE_OPTIONS="--openssl-legacy-provider"`
- 产出:`backend-adminend/dist/`(或 `frontend/dist/`
- 开发:`cd frontend && npm install && npm run serve`
- 构建:`npm run build`
### 用户端 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
- 管理后台 API`cd backend && mvn spring-boot:run -pl crmeb-admin`
- 用户端 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)**
---
- 开发`cd backend && mvn spring-boot:run -pl crmeb-admin`
- 打包:`mvn clean package -pl crmeb-admin -am -DskipTests`
## Gitea

View File

@@ -1,19 +0,0 @@
# 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'

View File

@@ -1,5 +1,5 @@
crmeb:
imagePath: /www/wwwroot/shop.bosenyuan.com/ # 服务器图片路径配置 斜杠结尾
imagePath: /www/wwwroot/shop.bosenyuan.com/ # /www/wwwroot/shop.bosenyuan.com/ 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:

View File

@@ -32,7 +32,7 @@ server:
spring:
profiles:
active: miao33
active: miao80
servlet:
multipart:
max-file-size: 50MB #设置单个文件大小

View File

@@ -0,0 +1,82 @@
#!/bin/bash
# 编译并部署 miao-front用户端 API到 by80 云服务器
# 部署前在云服务器上备份原有 jar
# 使用: ./shell/deploy-front-by80.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-front-by80.sh
set -e
ENV_NAME="by80"
SSH_IDENTITY="${SSH_IDENTITY:-$HOME/.ssh/id_ed25519_crmeb_deploy}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKEND_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
DEPLOY_CONF="$BACKEND_DIR/deploy.conf"
# 解析 by80 段配置deploy.conf 中 by80 段到 miao33 段之前的 KEY=value
get_conf() {
sed -n '1,/^miao33:/p' "$DEPLOY_CONF" | grep -E "^${1}=" | tail -1 | cut -d= -f2-
}
SERVER_HOST=$(get_conf SERVER_HOST)
SERVER_USER=$(get_conf SERVER_USER)
SERVER_PORT=$(get_conf SERVER_PORT)
REMOTE_DIR_JAR=$(get_conf REMOTE_DIR_JAR)
FRONT_JAR_NAME=$(get_conf FRONT_JAR_NAME)
FRONT_LOCAL_PORT=$(get_conf FRONT_LOCAL_PORT)
SPRING_PROFILE="miao80"
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=123.56.214.80
[[ -z "$REMOTE_DIR_JAR" ]] && REMOTE_DIR_JAR=/www/wwwroot/crmeb
[[ -z "$FRONT_JAR_NAME" ]] && FRONT_JAR_NAME=miao-front-2.2.jar
[[ -z "$FRONT_LOCAL_PORT" ]] && FRONT_LOCAL_PORT=30031
[[ -z "$SERVER_USER" ]] && SERVER_USER=root
[[ -z "$SERVER_PORT" ]] && SERVER_PORT=22
JAR_PATH="$BACKEND_DIR/crmeb-front/target/$FRONT_JAR_NAME"
REMOTE_JAR="$REMOTE_DIR_JAR/$FRONT_JAR_NAME"
[[ -f "$SSH_IDENTITY" ]] && SSH_OPTS=(-o "IdentityFile=$SSH_IDENTITY") || SSH_OPTS=()
SSH_CMD=(ssh "${SSH_OPTS[@]}" -o StrictHostKeyChecking=accept-new -p "$SERVER_PORT" "$SERVER_USER@$SERVER_HOST")
SCP_CMD=(scp "${SSH_OPTS[@]}" -o StrictHostKeyChecking=accept-new -P "$SERVER_PORT")
BACKUP_SUFFIX="backup_$(date +%Y%m%d_%H%M%S)"
echo "=== 部署 miao-front用户端 API$ENV_NAME 云服务器 ==="
echo " 服务器: $SERVER_USER@$SERVER_HOST"
echo " 目标目录: $REMOTE_DIR_JAR"
echo " Profile: $SPRING_PROFILE"
echo ""
echo "=== 1. 编译 crmeb-frontmiao-front-2.2.jar==="
cd "$BACKEND_DIR"
mvn clean package -pl crmeb-front -am -DskipTests -q
echo "已生成: $JAR_PATH"
[[ ! -f "$JAR_PATH" ]] && { echo "错误: jar 未生成"; exit 1; }
echo ""
echo "=== 2. 云服务器备份原有 jar ==="
"${SSH_CMD[@]}" "bash -s" << REMOTE_BACKUP
set -e
mkdir -p "$REMOTE_DIR_JAR/backups"
if [ -f "$REMOTE_JAR" ]; then
cp -a "$REMOTE_JAR" "$REMOTE_DIR_JAR/backups/${FRONT_JAR_NAME}.${BACKUP_SUFFIX}"
echo "已备份: $REMOTE_DIR_JAR/backups/${FRONT_JAR_NAME}.${BACKUP_SUFFIX}"
else
echo "远程无原有 jar跳过备份"
fi
REMOTE_BACKUP
echo ""
echo "=== 3. 上传 $FRONT_JAR_NAME$REMOTE_DIR_JAR ==="
"${SCP_CMD[@]}" "$JAR_PATH" "$SERVER_USER@$SERVER_HOST:$REMOTE_DIR_JAR/"
echo "jar 上传完成."
echo ""
echo "=== 4. 远程重启 miao-front 服务 (profile=$SPRING_PROFILE, port=$FRONT_LOCAL_PORT) ==="
"${SSH_CMD[@]}" "cd $REMOTE_DIR_JAR && \
(pkill -f $FRONT_JAR_NAME || true) && \
sleep 2 && \
nohup java -Xms128m -Xmx256m -jar $FRONT_JAR_NAME --spring.profiles.active=$SPRING_PROFILE --server.port=$FRONT_LOCAL_PORT > front.log 2>&1 & \
sleep 3 && \
(pgrep -f $FRONT_JAR_NAME && echo 'miao-front 已启动' || (echo '启动可能失败,请检查 front.log'; tail -20 front.log))"
echo ""
echo "=== miao-front 部署完成 ==="

View File

@@ -3,15 +3,11 @@ ENV = 'development'
# base 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 = 'http://jfanyueadmin.szxingming.com'
# VUE_APP_BASE_API = 'http://jfadmin.wenjinhui.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,

12
frontend/.env.production Normal file
View File

@@ -0,0 +1,12 @@
# 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'
# miao33 项目
VUE_APP_BASE_API = 'http://jfadmin.xiashengjun.com'
# VUE_APP_BASE_API = 'http://jfanyueadmin.szxingming.com'
# VUE_APP_BASE_API = 'http://jfadmin-bsy.bosenyuan.com'

View File

@@ -14,6 +14,8 @@
## 二、前端打包
**打包前请确认**`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 目录** 下执行:
```bash
@@ -34,10 +36,15 @@ npm run build:prod
前端与后端一起发布时,使用 **backend 的一键部署脚本**,会自动完成:前端打包 → 后端打包 → 远程备份 → 上传 jar 与 `dist` → 重启服务。
在项目 **backend 目录** 下执行:
在项目 **backend 目录** 下执行(按环境二选一)
```bash
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
```
@@ -47,7 +54,7 @@ cd backend
2. **在 frontend 目录执行 `npm run build:prod`**,生成 `dist`
3. 远程备份原有 jar 与后台静态
4. 上传 jar 到 `REMOTE_DIR_JAR`,上传 **dist 到 REMOTE_DIR_ADMIN**
5. 远程重启 admin 服务Spring Profile miao80
5. 远程重启 admin 服务(对应 Spring Profile
即:**前端无需单独操作,一次执行即可完成前端打包 + 自动部署发布**。
SSH 配置、deploy.conf、故障排查见**[backend/DEPLOY.md](../backend/DEPLOY.md)**。
@@ -56,11 +63,11 @@ SSH 配置、deploy.conf、故障排查见**[backend/DEPLOY.md](../backend/DE
## 四、部署配置(前端相关)
配置在 **backend/deploy.conf**by80 段示例
配置在 **backend/deploy.conf**按环境分段miao33、by80、miao50
| 配置项 | 说明 | 示例 |
|--------|------|------|
| **REMOTE_DIR_ADMIN** | 前端 dist 发布目录admin 后台站点根目录) | `/www/wwwroot/jfadmin.bosenyuan.com` |
| 配置项 | 说明 | miao33 示例 | by80 示例 |
|--------|------|-------------|-----------|
| **REMOTE_DIR_ADMIN** | 前端 dist 发布目录admin 后台站点根目录) | `/www/wwwroot/jfadmin.xiashengjun.com` | `/www/wwwroot/jfadmin.bosenyuan.com` |
脚本通过 **tar 管道**`frontend/dist` 内容上传到该目录,不依赖远程安装 rsync。

View File

@@ -14,6 +14,23 @@ ADMIN_LOCAL_PORT=30032
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:
spring:
profiles:

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Some files were not shown because too many files have changed in this diff Show More