docs: add ops and merchandise status repair guides
This commit is contained in:
48
docs/dashboard/mysql-remote-connections.md
Normal file
48
docs/dashboard/mysql-remote-connections.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# 积分商城front MySQL 远程连接汇总
|
||||
|
||||
整理范围:`backend/crmeb-front/src/main/resources/application*.yml`
|
||||
|
||||
整理时间:2026-05-11
|
||||
|
||||
## 口径说明
|
||||
|
||||
- 仅汇总 MySQL URL 中 host 为远程地址的配置。
|
||||
- 所属公司优先按 `docs/company-info-*.md`、`docs/*data-imgration*.md` 中的公司名称和 host ip 匹配;没有明确公司名时,按部署文档、域名、profile 或数据库名推断并注明。
|
||||
- 密码按当前配置文件完整记录。
|
||||
|
||||
## 按 MySQL 主机聚合
|
||||
|
||||
| MySQL host:port | 关联 profile | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `8.140.218.149:3306` | `byjyw149` | 宝应金雅文商贸 |
|
||||
| `8.136.120.231:3306` | `czc231` | 宝应晨召春商贸 |
|
||||
| `121.43.134.82:3306` | `czcf82` | 池州春芳商贸 |
|
||||
| `101.37.101.6:3306` | `czrt6` | 池州瑞棠商贸 |
|
||||
| `rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com:3306` | `czleilei240` | 池州雷蕾商贸 |
|
||||
| `114.55.232.191:3306` | `hapr191` | 淮安鹏然商贸 |
|
||||
| `106.14.132.80:3306` | `sxsy80` | 太原树英商贸 |
|
||||
| `39.106.63.33:3306` | `miao33` | 夏盛军商贸 |
|
||||
| `123.56.214.80:3306` | `miao80` | 宝应博森元 |
|
||||
| `101.37.253.50:3306` | `miao50` | 上海文锦惠商贸 |
|
||||
| `101.132.245.153:3306` | `shjjy153` | 上海聚伽源商贸 |
|
||||
| `182.92.78.159:3306` | `shccd159` | 上海慈初德商贸 |
|
||||
|
||||
## 远程 MySQL 配置清单
|
||||
|
||||
| Profile | 配置文件 | 所属公司 / 项目 | MySQL host:port | 数据库名 | 用户名 | 密码 | 依据 / 备注 |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| `byjyw149` | `backend/crmeb-front/src/main/resources/application-byjyw149.yml` | 宝应金雅文商贸 | `8.140.218.149:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/company-info-byjyw149.md`、`docs/byjyw149-data-imgration.md` |
|
||||
| `czc231` | `backend/crmeb-front/src/main/resources/application-czc231.yml` | 宝应晨召春商贸 | `8.136.120.231:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/company-czc231-data-imgration.md`、`docs/company-czc231-integral-imgration.md` |
|
||||
| `czcf82` | `backend/crmeb-front/src/main/resources/application-czcf82.yml` | 池州春芳商贸 | `121.43.134.82:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/company-info-czcf82.md`、`docs/company-czcf82-data-imgration.md` |
|
||||
| `czrt6` | `backend/crmeb-front/src/main/resources/application-czrt6.yml` | 池州瑞棠商贸 | `101.37.101.6:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/company-info-czrt6.md`、`docs/company-czrt6-data-imgration.md` |
|
||||
| `czleilei240` | `backend/crmeb-front/src/main/resources/application-czleilei240.yml` | 池州雷蕾商贸 | `rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/com-czleilei240.md`、`docs/com-czleilei240-data-imgration.md` |
|
||||
| `hapr191` | `backend/crmeb-front/src/main/resources/application-hapr191.yml` | 淮安鹏然商贸 | `114.55.232.191:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/company-info.md`、`docs/company-data-imgration.md` |
|
||||
| `sxsy80` | `backend/crmeb-front/src/main/resources/application-sxsy80.yml` | 太原树英商贸 | `106.14.132.80:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/com-sxsy80.md`、`docs/com-sxsy80-data-imgration.md` |
|
||||
| `miao33` | `backend/crmeb-front/src/main/resources/application-miao33.yml` | 夏盛军商贸 | `39.106.63.33:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/com-xsj33-data-imgration.md`;部署文档中也标注 `jfadmin.xiashengjun.com` |
|
||||
| `miao80` | `backend/crmeb-front/src/main/resources/application-miao80.yml` | 宝应博森元 | `123.56.214.80:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `backend-adminend/DEPLOY.md` 中 by80 示例域名为 `jfadmin.bosenyuan.com`;`.cursor/plans/bybsy80范围数据删除_1cf340f6.plan.md` 也指向该 host |
|
||||
| `miao50` | `backend/crmeb-front/src/main/resources/application-miao50.yml` | 上海文锦惠商贸 | `101.37.253.50:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `backend/DEPLOY.md`、OpenClaw 配置文档中标注为生产环境 |
|
||||
| `shjjy153` | `backend/crmeb-front/src/main/resources/application-shjjy153.yml` | 上海聚伽源商贸 | `101.132.245.153:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/compare-shjjy153-shccd159.md` 标注域名 `jjy-jf.fwxgpt.com`、`jjy-jfadmin.fwxgpt.com` |
|
||||
| `shccd159` | `backend/crmeb-front/src/main/resources/application-shccd159.yml` | 上海慈初德商贸 | `182.92.78.159:3306` | `yangtangyoupin` | `yangtangyoupin` | `5Fn8eWrbYFtAhCZw` | `docs/compare-shjjy153-shccd159.md` 标注域名 `ccd-jf.fwxgpt.com`、`ccd-jfadmin.fwxgpt.com` |
|
||||
|
||||
|
||||
|
||||
221
docs/ecs-ssh-restart-webman.md
Normal file
221
docs/ecs-ssh-restart-webman.md
Normal file
@@ -0,0 +1,221 @@
|
||||
# ECS 服务器 SSH 终端进入 Docker `integral-houtai` 重启 Webman
|
||||
|
||||
适用项目:池州雷蕾商贸 `czleilei240` 寄卖商城
|
||||
适用容器:`integral-houtai`
|
||||
适用域名:`https://leileiadmin.czchunfang.com`
|
||||
|
||||
## 先说结论
|
||||
|
||||
这套项目当前不是标准 ThinkPHP / `php think` 启动方式。
|
||||
|
||||
我已经核对过当前代码目录,实际应用文件只有:
|
||||
|
||||
```text
|
||||
integral-resell/houtai/webman.bin
|
||||
```
|
||||
|
||||
没有下面这些文件:
|
||||
|
||||
- `think`
|
||||
- `start.php`
|
||||
- `composer.json`
|
||||
|
||||
所以这套 `integral-houtai` 容器里,不能按 `php think` 命令去重启 Webman,正确方式是进入容器后执行:
|
||||
|
||||
```bash
|
||||
./webman.bin restart -d
|
||||
```
|
||||
|
||||
## 一、SSH 登录 ECS
|
||||
|
||||
在本地终端执行:
|
||||
|
||||
```bash
|
||||
ssh root@116.62.83.240
|
||||
```
|
||||
|
||||
如果 SSH 端口不是默认 `22`,则执行:
|
||||
|
||||
```bash
|
||||
ssh -p 22 root@116.62.83.240
|
||||
```
|
||||
|
||||
## 二、进入容器
|
||||
登录服务器后,直接执行:
|
||||
|
||||
```bash
|
||||
docker exec -it integral-houtai sh
|
||||
```
|
||||
|
||||
进入容器后,提示符会切换到容器内部环境。
|
||||
|
||||
|
||||
## 五、在容器内重启 Webman
|
||||
|
||||
进入容器后执行:
|
||||
|
||||
```bash
|
||||
./webman.bin restart -d
|
||||
```
|
||||
|
||||
如果你不确定当前目录,也可以写成:
|
||||
|
||||
```bash
|
||||
cd /app
|
||||
./webman.bin restart -d
|
||||
```
|
||||
|
||||
## 六、退出容器
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
exit
|
||||
```
|
||||
|
||||
## 七、查看日志确认是否启动成功
|
||||
|
||||
回到服务器宿主机终端后执行:
|
||||
|
||||
```bash
|
||||
docker logs -f --tail 100 integral-houtai
|
||||
```
|
||||
|
||||
看到类似下面的字样,说明 Webman 已成功拉起:
|
||||
|
||||
```text
|
||||
Webman start success
|
||||
```
|
||||
|
||||
看完日志后按 `Ctrl + C` 退出。
|
||||
|
||||
## 八、验证接口是否恢复
|
||||
|
||||
可以在服务器上直接验证:
|
||||
|
||||
```bash
|
||||
curl -I http://127.0.0.1:18085
|
||||
```
|
||||
|
||||
或者验证线上域名:
|
||||
|
||||
```bash
|
||||
curl -I https://leileiadmin.czchunfang.com
|
||||
```
|
||||
|
||||
如果要验证业务接口:
|
||||
|
||||
```bash
|
||||
curl -s "https://leileiadmin.czchunfang.com/api/order/goods?page=1&limit=1"
|
||||
```
|
||||
|
||||
## 九、完整操作示例
|
||||
|
||||
如果只是日常手动进入容器重启,整套命令如下:
|
||||
|
||||
```bash
|
||||
ssh root@116.62.83.240
|
||||
docker exec -it integral-houtai sh
|
||||
pwd
|
||||
cd /app
|
||||
ls
|
||||
./webman.bin restart -d
|
||||
exit
|
||||
docker logs -f --tail 100 integral-houtai
|
||||
```
|
||||
|
||||
## 十、为什么不是 `php think`
|
||||
|
||||
因为当前这套项目不是通过 ThinkPHP 命令入口运行的。
|
||||
|
||||
我核对到的实际情况是:
|
||||
|
||||
- 容器挂载的应用目录是 `/app`
|
||||
- 对应宿主机目录是 `/www/wwwroot/leileiadmin.czchunfang.com`
|
||||
- 应用启动文件是 `webman.bin`
|
||||
- 当前项目目录里不存在 `think` / `start.php`
|
||||
|
||||
所以如果你进入容器后执行类似:
|
||||
|
||||
```bash
|
||||
php think
|
||||
php think start
|
||||
php think restart
|
||||
```
|
||||
|
||||
大概率会提示文件不存在或命令不可用。
|
||||
|
||||
## 十一、按实际操作整理的最短步骤
|
||||
|
||||
```bash
|
||||
ssh root@116.62.83.240
|
||||
docker exec -it integral-houtai sh
|
||||
cd /app
|
||||
./webman.bin restart -d
|
||||
exit
|
||||
docker logs -f --tail 100 integral-houtai
|
||||
```
|
||||
|
||||
## 十二、如果你一定要先验证容器里有没有 `think`
|
||||
|
||||
进入容器后可以手动检查:
|
||||
|
||||
```bash
|
||||
cd /app
|
||||
ls -la
|
||||
find /app -maxdepth 2 -name think -o -name start.php
|
||||
```
|
||||
|
||||
如果没有结果,就说明这套容器内确实不是 ThinkPHP 命令模式。
|
||||
|
||||
## 十三、进入 Redis 容器
|
||||
|
||||
Redis 容器名是:
|
||||
|
||||
```bash
|
||||
integral-redis
|
||||
```
|
||||
|
||||
进入容器执行:
|
||||
|
||||
```bash
|
||||
docker exec -it integral-redis sh
|
||||
```
|
||||
|
||||
如果想直接连 Redis,也可以不进容器,直接在宿主机执行:
|
||||
|
||||
```bash
|
||||
docker exec -it integral-redis redis-cli
|
||||
```
|
||||
|
||||
## 十四、清空 Redis 数据
|
||||
|
||||
进入 Redis 容器后,先连上 redis:
|
||||
|
||||
```bash
|
||||
redis-cli
|
||||
```
|
||||
|
||||
如果需要密码,执行:
|
||||
|
||||
```bash
|
||||
redis-cli -a '你的Redis密码'
|
||||
```
|
||||
|
||||
清空当前数据库:
|
||||
|
||||
```bash
|
||||
FLUSHDB
|
||||
```
|
||||
|
||||
清空所有数据库:
|
||||
|
||||
```bash
|
||||
FLUSHALL
|
||||
```
|
||||
|
||||
如果要一条命令直接清空当前库,也可以在宿主机执行:
|
||||
|
||||
```bash
|
||||
docker exec -it integral-redis redis-cli -a '你的Redis密码' FLUSHDB
|
||||
```
|
||||
95
docs/wa_merchandise-status-repair-plan.md
Normal file
95
docs/wa_merchandise-status-repair-plan.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# 寄卖商品状态修正方案
|
||||
|
||||
适用范围:池州雷蕾商贸 `czleilei240`
|
||||
|
||||
## 问题说明
|
||||
|
||||
寄卖商品表 `wa_merchandise.status` 可能与真实售卖结果不一致。
|
||||
|
||||
当前接口 `/api/order/goods` 只按:
|
||||
|
||||
- `wa_merchandise.status = 1`
|
||||
- `wa_merchandise.is_show = 1`
|
||||
|
||||
查询商品,见 [WaOrderServiceImpl.java](</Users/mac/scott2026/integral-shop/single-shop-22/backend/crmeb-front/src/main/java/com/zbkj/front/service/impl/WaOrderServiceImpl.java:65>).
|
||||
|
||||
但实际业务中,商品是否已售出应结合 `wa_order` 判断。
|
||||
|
||||
## 判定口径
|
||||
|
||||
建议以以下规则修正商品状态:
|
||||
|
||||
- 订单存在且 `status = 2`
|
||||
- 且 `is_cancel = 0`
|
||||
- 则对应 `wa_merchandise.status` 应置为 `0`(已售)
|
||||
|
||||
## 查询异常数据
|
||||
|
||||
查询“商品仍标记未售,但实际已有已完成订单”的数据:
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
m.id,
|
||||
m.old_id,
|
||||
m.user_id,
|
||||
m.status AS merchandise_status,
|
||||
m.is_show,
|
||||
m.created_at,
|
||||
m.updated_at,
|
||||
o.id AS order_id,
|
||||
o.status AS order_status,
|
||||
o.is_cancel
|
||||
FROM wa_merchandise m
|
||||
JOIN wa_order o ON o.merchandise_id = m.id
|
||||
WHERE m.status = 1
|
||||
AND m.is_show = 1
|
||||
AND o.status = 2
|
||||
AND o.is_cancel = 0
|
||||
ORDER BY m.id DESC;
|
||||
```
|
||||
|
||||
查询当前仍可售商品:
|
||||
|
||||
```sql
|
||||
SELECT COUNT(*) AS remaining_unsold_visible
|
||||
FROM wa_merchandise
|
||||
WHERE status = 1 AND is_show = 1;
|
||||
```
|
||||
|
||||
## 批量修正
|
||||
|
||||
将“已有已完成订单”的商品统一改为已售:
|
||||
|
||||
```sql
|
||||
UPDATE wa_merchandise m
|
||||
JOIN wa_order o ON o.merchandise_id = m.id
|
||||
SET m.status = 0,
|
||||
m.updated_at = NOW()
|
||||
WHERE m.status = 1
|
||||
AND m.is_show = 1
|
||||
AND o.status = 2
|
||||
AND o.is_cancel = 0;
|
||||
```
|
||||
|
||||
## 处理步骤
|
||||
|
||||
1. 先查异常商品清单。
|
||||
2. 确认这些商品是否确实已有完成订单。
|
||||
3. 执行批量更新,把状态改为 `0`。
|
||||
4. 复核 `status = 1 AND is_show = 1` 是否已清空。
|
||||
5. 如发现重复出现,继续按同一规则修正。
|
||||
|
||||
## 复核方式
|
||||
|
||||
```sql
|
||||
SELECT id, status, is_show, updated_at
|
||||
FROM wa_merchandise
|
||||
WHERE status = 1 AND is_show = 1
|
||||
ORDER BY id DESC;
|
||||
```
|
||||
|
||||
如果结果为空,说明当前没有可售状态异常的寄卖商品。
|
||||
|
||||
## 备注
|
||||
|
||||
如果后续要从根源避免再次发生,建议把商品状态判定逻辑从“只看 `wa_merchandise.status`”改为“联动 `wa_order` 订单状态”。
|
||||
Reference in New Issue
Block a user