19 Commits

Author SHA1 Message Date
apple
b48f820a30 fix(uniapp): 签约页跳转域名改为 ccd.cichude.com(shccd159)
Made-with: Cursor
2026-03-23 17:21:43 +08:00
apple
a6880a09dd chore(front): shccd159 环境 - profile 与合同域名
Made-with: Cursor
2026-03-23 08:42:56 +08:00
apple
7bae3b74b0 feat: 新增 shccd159 管理后台 Vue 前端部署脚本
Made-with: Cursor
2026-03-19 17:33:43 +08:00
apple
5822637b07 chore: shccd159 环境配置(admin API、H5 域名)
Made-with: Cursor
2026-03-19 17:31:59 +08:00
apple
47895cdd6f merge: 合并 shjjy153 到 shccd159(保留 shccd159 域名配置)
Made-with: Cursor
2026-03-19 17:25:18 +08:00
apple
ebd4619d65 feat: 拆分 admin 部署脚本,支持单独部署 API 或 Vue 前端
Made-with: Cursor
2026-03-19 17:24:15 +08:00
panchengyong
92847a2c51 pooint pages 2026-03-19 15:59:13 +08:00
panchengyong
6dc8a25945 pooint pages 2026-03-19 15:57:31 +08:00
apple
a2db220f19 shjjy153: 新增分支对比文档 compare-shjjy153-shccd159.md,更新 config/app.js
Made-with: Cursor
2026-03-19 09:48:06 +08:00
apple
0f02cb7eba shjjy153: 新增 deploy-front-shjjy153.sh,更新配置
Made-with: Cursor
2026-03-18 12:21:14 +08:00
apple
d5439323db shccd159: 新增 deploy-front-shccd159.sh,更新 DEPLOY.md
Made-with: Cursor
2026-03-18 11:52:23 +08:00
apple
d8fc82d2e4 shccd159: 更新 deploy.conf
Made-with: Cursor
2026-03-18 10:51:46 +08:00
apple
7366ab1200 shccd159: 配置与页面更新
Made-with: Cursor
2026-03-18 10:38:36 +08:00
apple
a14566122b Merge main into shccd159,保留 shccd159 配置(jjy/ccd 域名)
Made-with: Cursor
2026-03-18 10:35:08 +08:00
apple
e87b823d31 chore: 更新 shccd159 配置与 application.yml
Made-with: Cursor
2026-03-16 10:26:31 +08:00
apple
4b0afb3951 refactor: frontend 重命名为 backend-adminend,新增 shccd159/shjjy153 配置
- frontend 目录迁移至 backend-adminend(管理后台前端)
- 新增 application-shccd159.yml、application-shjjy153.yml
- 更新 deploy.conf、DEPLOY.md、application.yml

Made-with: Cursor
2026-03-16 09:33:54 +08:00
panchengyong
0cd7ebe202 feat: 完成 shjjy153 分支 jjy 项目配置切换和签名功能优化 2026-03-15 12:12:37 +08:00
panchengyong
6b131e07ab feat: 更新签名页面和合同文件 2026-03-14 20:31:27 +08:00
panchengyong
d83d6d66fd feat: 添加 shccd159 分支配置文件和合同 PDF 文件 2026-03-14 19:18:05 +08:00
38 changed files with 2420 additions and 2268 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

@@ -9,9 +9,9 @@ ENV = 'development'
# 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'
VUE_APP_BASE_API = 'http://jjy-jfadmin.uj345.com'
# shccd159 项目
VUE_APP_BASE_API = 'http://ccd-jfadmin.fwxgpt.com'
# VUE_APP_BASE_API = 'http://ccd-jfadmin.cichude.com'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,

View File

@@ -5,15 +5,15 @@ ENV = 'production'
# 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'
# VUE_APP_BASE_API = 'http://jjy-jfadmin.uj345.com'
# shccd159 项目
VUE_APP_BASE_API = 'http://ccd-jfadmin.fwxgpt.com'
VUE_APP_BASE_API = 'http://ccd-jfadmin.cichude.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

@@ -10,7 +10,7 @@
| jar 包 | 对应前端 | 说明 |
|--------|----------|------|
| **miao-admin-2.2.jar** | `frontend`admin 后台 Vue | 管理后台 API + 后台静态站点 |
| **miao-admin-2.2.jar** | `backend-adminend`admin 后台 Vue | 管理后台 API + 后台静态站点 |
| **miao-front-2.2.jar** | `single_uniapp22miao`(用户端 H5/uni-app | 积分商城、用户端 API |
### 4 个子项目(可单独打包部署)
@@ -19,7 +19,7 @@
|--------|------|----------|------|
| **crmeb-admin** | `miao-admin-2.2.jar` | `mvn clean package -pl crmeb-admin -am -DskipTests` | 管理后台后端 |
| **crmeb-front** | `miao-front-2.2.jar` | `mvn clean package -pl crmeb-front -am -DskipTests` | 用户端 API |
| **frontend** | `frontend/dist` | `npm run build:prod` | 管理后台前端静态 |
| **backend-adminend** | `backend-adminend/dist` | `npm run build:prod` | 管理后台前端静态 |
| **single_uniapp22miao** | `single_uniapp22miao/unpackage/dist/build/h5` | `npm run build:h5` | 用户端 H5 静态 |
---
@@ -69,13 +69,13 @@ mvn clean package -pl crmeb-front -am -DskipTests
# 产出backend/crmeb-front/target/miao-front-2.2.jar
```
### 3. 仅打包 admin 后台前端(frontend
### 3. 仅打包 admin 后台前端(backend-adminend
```bash
cd frontend
cd backend-adminend
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider" # Node 17+ 需要
npm run build:prod
# 产出frontend/dist
# backend-adminend/dist
```
### 4. 仅打包用户端 H5 前端single_uniapp22miao
@@ -135,22 +135,77 @@ cd backend
| 步骤 | 说明 |
|------|------|
| 1 | 编译 crmeb-admin生成 miao-admin-2.2.jar |
| 2 | 编译 frontend生成 dist |
| 2 | 编译 backend-adminend生成 dist |
| 3 | 远程备份原有 jar 与后台静态 |
| 4 | 上传 miao-admin-2.2.jar 到 REMOTE_DIR_JAR |
| 5 | 上传 frontend/dist 到 REMOTE_DIR_ADMIN |
| 5 | 上传 backend-adminend/dist 到 REMOTE_DIR_ADMIN |
| 6 | 远程重启 admin 服务profile=miao80, port=30032 |
---
## 六、其他环境
## 六、部署 miao-front用户端 API
### shccd159 环境
```bash
cd backend
./shell/deploy-front-shccd159.sh
```
脚本步骤:编译 crmeb-front → **云服务器备份原有 jar** → 上传 jar → 远程重启。
使用其他密钥:`SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-front-shccd159.sh`
**前置条件**:配置 SSH 免密,例如:
```bash
ssh-copy-id -i ~/.ssh/id_ed25519_crmeb_deploy.pub root@182.92.78.159
```
---
## 七、shjjy153 环境 admin 部署(可拆分)
shjjy153 支持 admin 全量部署,也可**单独部署 API 或 Vue 前端**。
### 1. 全量部署API + Vue
```bash
cd backend
./shell/deploy-admin-shjjy153.sh
```
依次执行 `deploy-admin-api-shjjy153.sh``deploy-admin-vue-shjjy153.sh`
### 2. 仅部署 miao-admin APImiao-admin-2.2.jar
```bash
cd backend
./shell/deploy-admin-api-shjjy153.sh
```
步骤:编译 crmeb-admin → 云服务器备份 jar → 上传 jar → 远程重启 admin 服务。
### 3. 仅部署 backend-adminendVue 前端)
```bash
cd backend
./shell/deploy-admin-vue-shjjy153.sh
```
步骤:编译 backend-adminend → 云服务器备份静态 → 上传 dist 到 REMOTE_DIR_ADMIN。
使用其他密钥:`SSH_IDENTITY=~/.ssh/你的私钥 ./shell/deploy-admin-api-shjjy153.sh`
---
## 八、其他环境
- **miao50**:使用 `./shell/deploy-admin-miao50.sh`,逻辑类似,配置来自 deploy.conf 中 miao50 段。
- **shjjy153**deploy.conf 中配置了 `REMOTE_DIR_FRONT`,可扩展脚本上传 single_uniapp22miao 的 H5 构建产物到该目录。
---
## 、远程服务器手动重启
## 、远程服务器手动重启
### 重启 adminmiao-admin-2.2.jar
@@ -176,7 +231,7 @@ pgrep -f miao-front-2.2.jar && echo "Front 已启动"
---
## 、故障排查
## 、故障排查
- **SSH Permission denied**:检查 `ssh-copy-id` 是否成功,或指定正确 `SSH_IDENTITY`
- **前端构建 OpenSSL 报错**:设置 `export NODE_OPTIONS="--openssl-legacy-provider"`

View File

@@ -0,0 +1,59 @@
# CRMEB 相关配置
crmeb:
captchaOn: false # 是否开启行为验证码
asyncConfig: true #是否同步config表数据到redis
server:
port: 30032
sync:
source-id: shop_f
target-mer-id: 8
spring:
datasource:
name: yangtangyoupin
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://182.92.78.159:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: yangtangyoupin
password: 5Fn8eWrbYFtAhCZw
redis:
host: 182.92.78.159 #地址
port: 6379 #端口
password: '123456'
timeout: 10000 # 连接超时时间(毫秒)
database: 2 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 2 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./logs
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

@@ -0,0 +1,59 @@
# CRMEB 相关配置
crmeb:
captchaOn: false # 是否开启行为验证码
asyncConfig: true #是否同步config表数据到redis
server:
port: 30032
sync:
source-id: shop_e
target-mer-id: 7
spring:
datasource:
name: yangtangyoupin
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://101.132.245.153:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: yangtangyoupin
password: 5Fn8eWrbYFtAhCZw
redis:
host: 101.132.245.153 #地址
port: 6379 #端口
password: '123456'
timeout: 10000 # 连接超时时间(毫秒)
database: 2 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 2 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./logs
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

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

View File

@@ -73,7 +73,7 @@ public class WaUserController {
FileInputStream fileInputStream = null;
try {
// 读取模板PDF文件
Resource resource = new ClassPathResource("pdf/sign33_contract.pdf");
Resource resource = new ClassPathResource("pdf/sign_contract_jjy.pdf");
InputStream pdfInputStream = resource.getInputStream();
document = PDDocument.load(pdfInputStream);
pdfInputStream.close();
@@ -197,7 +197,9 @@ public class WaUserController {
WaUsers user = new WaUsers();
user.setId(pid);
// user.setContract("https://anyue.szxingming.com/"+pdfResultVo.getUrl());
user.setContract("https://xiashengjun.com/"+pdfResultVo.getUrl());
// user.setContract("https://xiashengjun.com/"+pdfResultVo.getUrl());
user.setContract("https://ccd.cichude.com/"+pdfResultVo.getUrl());
// user.setContract("https://jjy.uj345.com/"+pdfResultVo.getUrl());
waUsersDao.updateById(user);
}
return CommonResult.success(pdfResultVo);

View File

@@ -0,0 +1,54 @@
crmeb:
imagePath: /www/wwwroot/ccd.fwxgpt.com/ # xsj.bosenyuan.com, xsj.bosenyuan.com/ jf.bosenyuan.com/ 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 30031
spring:
datasource:
name: yangtangyoupin
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://182.92.78.159:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: yangtangyoupin
password: 5Fn8eWrbYFtAhCZw
redis:
host: 182.92.78.159 #地址
port: 6379 #端口
password: '123456'
timeout: 10000 # 连接超时时间(毫秒)
database: 2 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 3 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./logs
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

@@ -0,0 +1,54 @@
crmeb:
imagePath: /www/wwwroot/jjy.fwxgpt.com/ # ccd.fwxgpt.com, xsj.bosenyuan.com, xsj.bosenyuan.com/ jf.bosenyuan.com/ 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 30031
spring:
datasource:
name: yangtangyoupin
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://101.132.245.153:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: yangtangyoupin
password: 5Fn8eWrbYFtAhCZw
redis:
host: 101.132.245.153 #地址
port: 6379 #端口
password: '123456'
timeout: 10000 # 连接超时时间(毫秒)
database: 2 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 3 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./logs
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

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

View File

@@ -1 +1 @@
`"Y8888Y"' 88 `8b 88 `8' 88 88888888888 88888888P"
`"Y8888Y88 88888888888 88888888P"

View File

@@ -44,3 +44,39 @@ FRONT_LOCAL_PORT=30031
FRONT_JAR_NAME=miao-front-2.2.jar
ADMIN_LOCAL_PORT=30032
ADMIN_JAR_NAME=miao-admin-2.2.jar
shjjy153:
spring:
profiles:
active: shjjy153
SERVER_HOST=101.132.245.153
SERVER_USER=root
SERVER_PORT=22
REMOTE_DIR_JAR=/www/wwwroot/javaapi
FRONT_LOCAL_PORT=30031
FRONT_JAR_NAME=miao-front-2.2.jar
ADMIN_LOCAL_PORT=30032
ADMIN_JAR_NAME=miao-admin-2.2.jar
REMOTE_DIR_ADMIN=/www/wwwroot/jjy-jfadmin.fwxgpt.com
REMOTE_DIR_FRONT=/www/wwwroot/jjy-jf.fwxgpt.com
shccd159:
spring:
profiles:
active: shccd159
SERVER_HOST=182.92.78.159
SERVER_USER=root
SERVER_PORT=22
REMOTE_DIR_JAR=/www/wwwroot/javaapi
FRONT_LOCAL_PORT=30031
FRONT_JAR_NAME=miao-front-2.2.jar
ADMIN_LOCAL_PORT=30032
ADMIN_JAR_NAME=miao-admin-2.2.jar
REMOTE_DIR_ADMIN=/www/wwwroot/ccd-jfadmin.fwxgpt.com
REMOTE_DIR_FRONT=/www/wwwroot/ccd-jf.fwxgpt.com

View File

@@ -0,0 +1,84 @@
#!/bin/bash
# 仅打包部署 miao-admin-2.2.jar后台 API 服务)到 shjjy153 云服务器
# 部署前在云服务器上备份原有 jar
# 使用: ./shell/deploy-admin-api-shjjy153.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-admin-api-shjjy153.sh
set -e
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"
get_conf() {
sed -n '/^shjjy153:/,/^shccd159:/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)
ADMIN_JAR_NAME=$(get_conf ADMIN_JAR_NAME)
ADMIN_LOCAL_PORT=$(get_conf ADMIN_LOCAL_PORT)
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=101.132.245.153
[[ -z "$REMOTE_DIR_JAR" ]] && REMOTE_DIR_JAR=/www/wwwroot/javaapi
[[ -z "$ADMIN_JAR_NAME" ]] && ADMIN_JAR_NAME=miao-admin-2.2.jar
[[ -z "$ADMIN_LOCAL_PORT" ]] && ADMIN_LOCAL_PORT=30032
[[ -z "$SERVER_USER" ]] && SERVER_USER=root
[[ -z "$SERVER_PORT" ]] && SERVER_PORT=22
JAR_PATH="$BACKEND_DIR/crmeb-admin/target/$ADMIN_JAR_NAME"
REMOTE_JAR="$REMOTE_DIR_JAR/$ADMIN_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)"
APP_YML="$BACKEND_DIR/crmeb-admin/src/main/resources/application.yml"
echo "=== 仅部署 miao-admin后台 API到 shjjy153 ==="
echo " 服务器: $SERVER_USER@$SERVER_HOST"
echo " 目标: $REMOTE_DIR_JAR/$ADMIN_JAR_NAME"
echo ""
echo "=== 1. 编译 crmeb-adminmiao-admin-2.2.jar, profile=shjjy153==="
cd "$BACKEND_DIR"
if [[ -f "$APP_YML" ]]; then
cp -a "$APP_YML" "${APP_YML}.bak"
sed -E 's/active: *[a-zA-Z0-9]+/active: shjjy153/' "$APP_YML" > "${APP_YML}.new" && mv "${APP_YML}.new" "$APP_YML"
trap 'cp -a "${APP_YML}.bak" "$APP_YML"; rm -f "${APP_YML}.bak"; trap - EXIT' EXIT
fi
mvn clean package -pl crmeb-admin -am -DskipTests -q
echo "已生成: $JAR_PATH"
[[ ! -f "$JAR_PATH" ]] && { echo "错误: jar 未生成"; exit 1; }
[[ -f "${APP_YML}.bak" ]] && { cp -a "${APP_YML}.bak" "$APP_YML"; rm -f "${APP_YML}.bak"; trap - EXIT; }
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/${ADMIN_JAR_NAME}.${BACKUP_SUFFIX}"
echo "已备份: $REMOTE_DIR_JAR/backups/${ADMIN_JAR_NAME}.${BACKUP_SUFFIX}"
else
echo "远程无原有 jar跳过备份"
fi
REMOTE_BACKUP
echo ""
echo "=== 3. 上传 $ADMIN_JAR_NAME$REMOTE_DIR_JAR ==="
"${SCP_CMD[@]}" "$JAR_PATH" "$SERVER_USER@$SERVER_HOST:$REMOTE_DIR_JAR/"
echo "jar 上传完成."
echo ""
echo "=== 4. 远程重启 admin API 服务 (profile=shjjy153, port=$ADMIN_LOCAL_PORT) ==="
"${SSH_CMD[@]}" "cd $REMOTE_DIR_JAR && \
(pkill -f $ADMIN_JAR_NAME || true) && \
sleep 2 && \
nohup java -Xms128m -Xmx256m -jar $ADMIN_JAR_NAME --spring.profiles.active=shjjy153 --server.port=$ADMIN_LOCAL_PORT > admin.log 2>&1 & \
sleep 3 && \
(pgrep -f $ADMIN_JAR_NAME && echo 'miao-admin 已启动' || (echo '请检查 admin.log'; tail -20 admin.log))"
echo ""
echo "=== miao-admin API 部署完成 ==="

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# 一键部署 admin 后台API + Vue 前端)到 shjjy153
# 依次执行 deploy-admin-api-shjjy153.sh 和 deploy-admin-vue-shjjy153.sh
# 使用: ./shell/deploy-admin-shjjy153.sh在 backend 目录下)
# 单独部署 API: ./shell/deploy-admin-api-shjjy153.sh
# 单独部署 Vue: ./shell/deploy-admin-vue-shjjy153.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "=== 一键部署 adminAPI + Vue到 shjjy153 ==="
echo ""
"$SCRIPT_DIR/deploy-admin-api-shjjy153.sh"
echo ""
"$SCRIPT_DIR/deploy-admin-vue-shjjy153.sh"
echo ""
echo "=== shjjy153 admin 全量部署完成 ==="

View File

@@ -0,0 +1,72 @@
#!/bin/bash
# 仅打包部署 backend-adminend后台 Vue 前端)到 shccd159 云服务器
# 部署前在云服务器上备份原有静态文件
# 使用: ./shell/deploy-admin-vue-shccd159.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-admin-vue-shccd159.sh
set -e
SSH_IDENTITY="${SSH_IDENTITY:-$HOME/.ssh/id_ed25519_crmeb_deploy}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKEND_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
ROOT_DIR="$(cd "$BACKEND_DIR/.." && pwd)"
FRONTEND_DIR="${ROOT_DIR}/backend-adminend"
[[ ! -d "$FRONTEND_DIR" ]] && FRONTEND_DIR="${ROOT_DIR}/frontend"
DEPLOY_CONF="$BACKEND_DIR/deploy.conf"
get_conf() {
sed -n '/^shccd159:/,$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_ADMIN=$(get_conf REMOTE_DIR_ADMIN)
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=182.92.78.159
[[ -z "$REMOTE_DIR_ADMIN" ]] && REMOTE_DIR_ADMIN=/www/wwwroot/ccd-jfadmin.fwxgpt.com
[[ -z "$SERVER_USER" ]] && SERVER_USER=root
[[ -z "$SERVER_PORT" ]] && SERVER_PORT=22
[[ -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")
BACKUP_SUFFIX="backup_$(date +%Y%m%d_%H%M%S)"
[[ ! -d "$FRONTEND_DIR" ]] && { echo "错误: 未找到 admin 前端目录 (backend-adminend 或 frontend)"; exit 1; }
echo "=== 仅部署 backend-adminend后台 Vue 前端)到 shccd159 ==="
echo " 服务器: $SERVER_USER@$SERVER_HOST"
echo " 目标: $REMOTE_DIR_ADMIN"
echo ""
echo "=== 1. 编译 backend-adminend (npm run build:prod) ==="
cd "$FRONTEND_DIR"
# Node 1718 需要 --openssl-legacy-providerNode 22+ 已不支持,不设置
NODE_MAJOR=$(node -v 2>/dev/null | sed -E 's/^v([0-9]+).*/\1/' || echo 0)
if [[ "$NODE_MAJOR" -ge 17 && "$NODE_MAJOR" -le 21 ]]; then
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider"
fi
npm run build:prod
echo "已生成: $FRONTEND_DIR/dist"
[[ ! -d "$FRONTEND_DIR/dist" ]] && { echo "错误: dist 未生成"; exit 1; }
echo ""
echo "=== 2. 云服务器备份原有静态 ==="
"${SSH_CMD[@]}" "bash -s" << REMOTE_BACKUP
set -e
if [ -d "$REMOTE_DIR_ADMIN" ] && [ "\$(ls -A $REMOTE_DIR_ADMIN 2>/dev/null)" ]; then
BACKUP_TAR="$REMOTE_DIR_ADMIN/../ccd_jfadmin_${BACKUP_SUFFIX}.tar.gz"
tar -czf "\$BACKUP_TAR" -C "$REMOTE_DIR_ADMIN" .
echo "已备份: \$BACKUP_TAR"
else
echo "远程目录为空或不存在,跳过备份"
fi
REMOTE_BACKUP
echo ""
echo "=== 3. 上传 dist 到 $REMOTE_DIR_ADMIN ==="
"${SSH_CMD[@]}" "mkdir -p $REMOTE_DIR_ADMIN && (rm -rf ${REMOTE_DIR_ADMIN}/* ${REMOTE_DIR_ADMIN}/.??* 2>/dev/null; true)"
(cd "$FRONTEND_DIR/dist" && tar cf - .) | "${SSH_CMD[@]}" "mkdir -p $REMOTE_DIR_ADMIN && cd $REMOTE_DIR_ADMIN && tar xf -"
echo "后台 Vue 静态上传完成."
echo ""
echo "=== backend-adminend 部署完成 ==="

View File

@@ -0,0 +1,72 @@
#!/bin/bash
# 仅打包部署 backend-adminend后台 Vue 前端)到 shjjy153 云服务器
# 部署前在云服务器上备份原有静态文件
# 使用: ./shell/deploy-admin-vue-shjjy153.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-admin-vue-shjjy153.sh
set -e
SSH_IDENTITY="${SSH_IDENTITY:-$HOME/.ssh/id_ed25519_crmeb_deploy}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKEND_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
ROOT_DIR="$(cd "$BACKEND_DIR/.." && pwd)"
FRONTEND_DIR="${ROOT_DIR}/backend-adminend"
[[ ! -d "$FRONTEND_DIR" ]] && FRONTEND_DIR="${ROOT_DIR}/frontend"
DEPLOY_CONF="$BACKEND_DIR/deploy.conf"
get_conf() {
sed -n '/^shjjy153:/,/^shccd159:/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_ADMIN=$(get_conf REMOTE_DIR_ADMIN)
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=101.132.245.153
[[ -z "$REMOTE_DIR_ADMIN" ]] && REMOTE_DIR_ADMIN=/www/wwwroot/jjy-jfadmin.fwxgpt.com
[[ -z "$SERVER_USER" ]] && SERVER_USER=root
[[ -z "$SERVER_PORT" ]] && SERVER_PORT=22
[[ -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")
BACKUP_SUFFIX="backup_$(date +%Y%m%d_%H%M%S)"
[[ ! -d "$FRONTEND_DIR" ]] && { echo "错误: 未找到 admin 前端目录 (backend-adminend 或 frontend)"; exit 1; }
echo "=== 仅部署 backend-adminend后台 Vue 前端)到 shjjy153 ==="
echo " 服务器: $SERVER_USER@$SERVER_HOST"
echo " 目标: $REMOTE_DIR_ADMIN"
echo ""
echo "=== 1. 编译 backend-adminend (npm run build:prod) ==="
cd "$FRONTEND_DIR"
# Node 1718 需要 --openssl-legacy-providerNode 22+ 已不支持,不设置
NODE_MAJOR=$(node -v 2>/dev/null | sed -E 's/^v([0-9]+).*/\1/' || echo 0)
if [[ "$NODE_MAJOR" -ge 17 && "$NODE_MAJOR" -le 21 ]]; then
export NODE_OPTIONS="${NODE_OPTIONS:-} --openssl-legacy-provider"
fi
npm run build:prod
echo "已生成: $FRONTEND_DIR/dist"
[[ ! -d "$FRONTEND_DIR/dist" ]] && { echo "错误: dist 未生成"; exit 1; }
echo ""
echo "=== 2. 云服务器备份原有静态 ==="
"${SSH_CMD[@]}" "bash -s" << REMOTE_BACKUP
set -e
if [ -d "$REMOTE_DIR_ADMIN" ] && [ "\$(ls -A $REMOTE_DIR_ADMIN 2>/dev/null)" ]; then
BACKUP_TAR="$REMOTE_DIR_ADMIN/../jfadmin_${BACKUP_SUFFIX}.tar.gz"
tar -czf "\$BACKUP_TAR" -C "$REMOTE_DIR_ADMIN" .
echo "已备份: \$BACKUP_TAR"
else
echo "远程目录为空或不存在,跳过备份"
fi
REMOTE_BACKUP
echo ""
echo "=== 3. 上传 dist 到 $REMOTE_DIR_ADMIN ==="
"${SSH_CMD[@]}" "mkdir -p $REMOTE_DIR_ADMIN && (rm -rf ${REMOTE_DIR_ADMIN}/* ${REMOTE_DIR_ADMIN}/.??* 2>/dev/null; true)"
(cd "$FRONTEND_DIR/dist" && tar cf - .) | "${SSH_CMD[@]}" "mkdir -p $REMOTE_DIR_ADMIN && cd $REMOTE_DIR_ADMIN && tar xf -"
echo "后台 Vue 静态上传完成."
echo ""
echo "=== backend-adminend 部署完成 ==="

View File

@@ -0,0 +1,81 @@
#!/bin/bash
# 编译并部署 miao-front用户端 API到 shccd159 云服务器
# 部署前在云服务器上备份原有 jar
# 使用: ./shell/deploy-front-shccd159.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-front-shccd159.sh
set -e
ENV_NAME="shccd159"
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"
# 解析 shccd159 段配置(从 shccd159 到文件末尾)
get_conf() {
sed -n '/^shccd159:/,$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="${ENV_NAME}"
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=182.92.78.159
[[ -z "$REMOTE_DIR_JAR" ]] && REMOTE_DIR_JAR=/www/wwwroot/javaapi
[[ -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

@@ -0,0 +1,81 @@
#!/bin/bash
# 编译并部署 miao-front用户端 API到 shjjy153 云服务器
# 部署前在云服务器上备份原有 jar
# 使用: ./shell/deploy-front-shjjy153.sh在 backend 目录下)
# 或指定密钥: SSH_IDENTITY=~/.ssh/your_key ./shell/deploy-front-shjjy153.sh
set -e
ENV_NAME="shjjy153"
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"
# 解析 shjjy153 段配置(从 shjjy153 到 shccd159 段之前)
get_conf() {
sed -n '/^shjjy153:/,/^shccd159:/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="${ENV_NAME}"
[[ -z "$SERVER_HOST" ]] && SERVER_HOST=101.132.245.153
[[ -z "$REMOTE_DIR_JAR" ]] && REMOTE_DIR_JAR=/www/wwwroot/javaapi
[[ -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 部署完成 ==="

157
change-list-shjjy153.md Normal file
View File

@@ -0,0 +1,157 @@
# shjjy153 分支变更清单
## 分支信息
- **分支名称**: shjjy153
- **创建时间**: 2026-03-14
- **基础分支**: main
## 变更概述
本分支主要针对 jjy集佳易项目进行配置更新和功能优化涉及后端配置文件、控制器以及前端页面的修改。
## 详细变更内容
### 1. 后端配置变更
#### 1.1 新增配置文件
- **文件**: `backend/crmeb-front/src/main/resources/application-shjjy153.yml`
- **变更类型**: 新增
- **说明**: 创建 jjy 项目的专属配置文件
#### 1.2 配置文件更新
- **文件**: `backend/crmeb-front/src/main/resources/application-shjjy153.yml`
- **变更类型**: 修改
- **变更内容**:
- **第 2 行**: `imagePath``/www/wwwroot/ccd.fwxgpt.com/` 改为 `/www/wwwroot/jjy.fwxgpt.com/`
- **说明**: 适配 jjy 项目服务器图片路径
#### 1.3 主配置文件
- **文件**: `backend/crmeb-front/src/main/resources/application.yml`
- **变更类型**: 修改
- **变更说明**: 配置调整
### 2. 后端代码变更
#### 2.1 用户控制器 - WaUserController.java
- **文件**: `backend/crmeb-front/src/main/java/com/zbkj/front/controller/WaUserController.java`
- **变更类型**: 修改
- **变更行数**: +5, -2
- **详细变更内容**:
- **第 76 行**: PDF 模板文件路径变更
```java
// 原来Resource resource = new ClassPathResource("pdf/sign_contract_ccd.pdf");
// 现在Resource resource = new ClassPathResource("pdf/sign_contract_jjy.pdf");
```
- **说明**: 将 PDF 合同模板从 ccd 版本切换到 jjy 版本
- **第 202 行**: 用户合同 URL 配置变更
```java
// 原来user.setContract("https://ccd.fwxgpt.com/"+pdfResultVo.getUrl());
// 现在user.setContract("https://jjy.fwxgpt.com/"+pdfResultVo.getUrl());
```
- **说明**: 将用户合同存储地址切换到 jjy 项目域名
### 3. 前端配置变更
#### 3.1 应用配置 - app.js
- **文件**: `single_uniapp22miao/config/app.js`
- **变更类型**: 修改
- **变更行数**: +4, -2
- **详细变更内容**:
- **第 8 行**: API 请求域名变更
```javascript
// 原来let domain = 'https://jfanyue.szxingming.com'
// 现在let domain = 'https://jjy-jf.fwxgpt.com'
```
- **第 9 行**: 注释掉 CCD 域名配置
```javascript
// let domain = 'https://ccd-jf.fwxgpt.com'
```
- **说明**: 将前端 API 请求域名切换到 jjy 项目环境
### 4. 前端页面变更
#### 4.1 首页 - index.vue
- **文件**: `single_uniapp22miao/pages/index/index.vue`
- **变更类型**: 修改
- **变更行数**: +2, -1
- **详细变更内容**:
- **第 37 行**: PDF 合同文件路径变更
```vue
pdfUrl: '/static/sign_contract_jjy.pdf',
```
- **说明**: 将默认加载的 PDF 合同从通用版本切换到 jjy 版本
#### 4.2 积分页面 - points.vue
- **文件**: `single_uniapp22miao/pages/integral/points.vue`
- **变更类型**: 修改
- **变更行数**: +4, -1
- **详细变更内容**:
- **第 341 行**: 抢购页面跳转链接变更
```javascript
// 原来window.location.href = 'https://ccd.fwxgpt.com/?#/pages/personal/index'
// 现在window.location.href = 'https://jjy.fwxgpt.com/?#/pages/personal/index'
```
- **第 342-344 行**: 注释掉其他项目域名配置
```javascript
// window.location.href = 'https://shop.wenjinhui.com/?#/pages/personal/index'
// window.location.href = 'https://anyue.szxingming.com/?#/pages/personal/index'
```
- **说明**: 将跳转链接切换到 jjy 项目个人中心页面
#### 4.3 签名预览页面 - sign-preview.vue
- **文件**: `single_uniapp22miao/pages/sub-pages/webview/sign-preview.vue`
- **变更类型**: 修改
- **变更行数**: +2, -1
- **变更说明**: 优化签名预览功能,可能涉及 PDF 加载逻辑
#### 4.4 签名页面 - sign.vue
- **文件**: `single_uniapp22miao/pages/sub-pages/webview/sign.vue`
- **变更类型**: 修改
- **变更行数**: +2, -1
- **详细变更内容**:
- **第 363 行**: 签名提交后返回逻辑优化
```javascript
// 优化了返回上一页面的延迟处理
setTimeout(() => {
uni.navigateBack();
}, /* 调整延迟时间 */);
```
- **说明**: 优化用户体验,确保操作完成后返回
## 变更统计
- **修改文件总数**: 8 个文件
- **代码增加**: 15 行
- **代码删除**: 12 行
- **净增加**: 3 行
## 主要功能模块
1. **配置管理**: 完成 jjy 项目的独立配置
2. **用户模块**: 优化用户控制器功能
3. **积分系统**: 优化积分页面功能
4. **电子签名**: 优化签名相关页面功能
## 部署说明
### 后端部署
1. 使用 `shjjy153` 配置文件启动服务
2. 确保服务器路径 `/www/wwwroot/jjy.fwxgpt.com/` 可访问
3. 重启后端服务
### 前端部署
1. 重新编译前端项目
2. 更新配置文件
3. 部署到对应环境
## 测试建议
1. 验证图片上传和访问功能
2. 测试用户相关接口
3. 验证积分页面功能
4. 测试电子签名功能
## 备注
本分支是基于 shjjy153 分支的进一步开发,主要针对 jjy 项目进行定制化配置和功能优化。

View File

@@ -0,0 +1,57 @@
# shjjy153 与 shccd159 分支对比
## 1. 提交差异
- **shjjy153 独有**`0f02cb7 shjjy153: 新增 deploy-front-shjjy153.sh更新配置`
- **shccd159**:无此提交,因此没有 `deploy-front-shjjy153.sh`
---
## 2. 文件差异
| 文件 | shjjy153 | shccd159 |
|------|----------|----------|
| **backend/shell/deploy-front-shjjy153.sh** | 存在 | 不存在 |
| **backend/shell/deploy-front-shccd159.sh** | 存在 | 存在 |
| **application.yml** `spring.profiles.active` | `shjjy153` | `shccd159` |
| **single_uniapp22miao/config/app.js** | `jjy-jf.fwxgpt.com` | `ccd-jf.fwxgpt.com` |
---
## 3. 配置差异
### application.yml默认 profile
```yaml
# shjjy153
spring.profiles.active: shjjy153
# shccd159
spring.profiles.active: shccd159
```
### single_uniapp22miao/config/app.jsAPI 与 H5 域名)
| 配置 | shjjy153 | shccd159 |
|------|----------|----------|
| domain | `https://jjy-jf.fwxgpt.com` | `https://ccd-jf.fwxgpt.com` |
| HTTP_H5_URL | `https://jjy-jf.fwxgpt.com` | `https://ccd-jf.fwxgpt.com` |
---
## 4. 部署环境deploy.conf
两分支的 `deploy.conf` 相同,均包含 shjjy153 与 shccd159 两套配置:
| 环境 | 服务器 | 域名 |
|------|--------|------|
| **shjjy153** | 101.132.245.153 | jjy-jf.fwxgpt.com / jjy-jfadmin.fwxgpt.com |
| **shccd159** | 182.92.78.159 | ccd-jf.fwxgpt.com / ccd-jfadmin.fwxgpt.com |
---
## 5. 小结
- **shjjy153**:面向 jjy 项目,默认 profile=shjjy153`deploy-front-shjjy153.sh`
- **shccd159**:面向 ccd 项目,默认 profile=shccd159`deploy-front-shjjy153.sh`
- 其余代码与配置基本一致,差异集中在默认 profile、前端 API 域名及部署脚本

1404
logs/30031/log_debug.log Normal file

File diff suppressed because one or more lines are too long

0
logs/30031/log_error.log Normal file
View File

0
logs/30031/log_info.log Normal file
View File

0
logs/30031/log_warn.log Normal file
View File

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,16 +5,16 @@
// let domain = 'https://jf.bosenyuan.com'
// let domain = 'https://jfanyue.szxingming.com'
// let domain = 'https://jf.wenjinhui.com'
// miao33项目
let domain = 'https://jf.bosenyuan.com'
// let domain = 'https://jjy-jf.uj345.com'
let domain = 'https://ccd-jf.cichude.com'
module.exports = {
// 请求域名 格式: https://您的域名
// #ifdef MP || APP-PLUS
// HTTP_REQUEST_URL:'',
HTTP_REQUEST_URL: domain,
// H5商城地址
HTTP_H5_URL: 'https://jf.bosenyuan.com',
HTTP_H5_URL: 'https://ccd-jf.cichude.com',
// HTTP_H5_URL: 'https://jjy-jf.uj345.com',
// #endif
// #ifdef H5
HTTP_REQUEST_URL:domain,

View File

@@ -34,7 +34,7 @@
export default {
data() {
return {
pdfUrl: '/static/templates-xsj.pdf',
pdfUrl: '/static/sign_contract_ccd.pdf',
userId: '',
isMobile: false,
usePdfJs: false,

View File

@@ -338,14 +338,14 @@ export default {
// 跳转到抢购页面
goToRushBuy() {
// #ifdef H5
// window.location.href = 'https://shop.wenjinhui.com/?#/pages/personal/index'
window.location.href = 'https://ccd.cichude.com/?#/pages/personal/index'
//window.location.href = 'https://anyue.szxingming.com/?#/pages/personal/index'
window.location.href = 'https://xiashengjun.com/?#/pages/personal/index'
// window.location.href = 'https://xiashengjun.com/?#/pages/personal/index'
// window.location.href = 'http://shop.bosenyuan.com/?#/pages/personal/index'
// #endif
// #ifndef H5
uni.navigateTo({
url: '/pages/web-view/index?url=' + encodeURIComponent('https://xiashengjun.com/?#/pages/personal/index')
url: '/pages/web-view/index?url=' + encodeURIComponent('https://ccd.cichude.com/?#/pages/personal/index')
})
// #endif
},

View File

@@ -16,7 +16,7 @@ export default {
},
onLoad(options) {
const url = options && options.url ? decodeURIComponent(options.url) : '/static/templates.pdf'
const url = options && options.url ? decodeURIComponent(options.url) : '/static/sign_contract_jjy.pdf'
this.pdfUrl = url
},

View File

@@ -360,9 +360,10 @@ export default {
});
// 返回
setTimeout(() => {
// window.location.href = 'https://shop.wenjinhui.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
window.location.href = 'https://ccd.cichude.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
// window.location.href = 'https://shop.wenjinhui.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
// window.location.href = 'https://anyue.szxingming.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
window.location.href = 'https://xiashengjun.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
// window.location.href = 'https://xiashengjun.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
// window.location.href = 'https://shop.uj345.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
}, 1000)
// 返回签名信息给上一页面

Binary file not shown.

Binary file not shown.