Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e181d65295 | ||
|
|
71bb0a03f7 | ||
|
|
dc401eafff |
@@ -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:
|
||||
|
||||
@@ -32,7 +32,7 @@ server:
|
||||
|
||||
spring:
|
||||
profiles:
|
||||
active: miao33
|
||||
active: miao80
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 50MB #设置单个文件大小
|
||||
|
||||
82
backend/shell/deploy-front-by80.sh
Executable file
82
backend/shell/deploy-front-by80.sh
Executable 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-front(miao-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 部署完成 ==="
|
||||
217
docs/com-bybsy80-data-imgration-del.md
Normal file
217
docs/com-bybsy80-data-imgration-del.md
Normal file
@@ -0,0 +1,217 @@
|
||||
|
||||
# 公司名称:宝应博森元
|
||||
|
||||
## mysql数据库配置信息
|
||||
|
||||
host ip: 123.56.214.80
|
||||
datasource:
|
||||
name: yangtangyoupin
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
|
||||
---
|
||||
|
||||
## 数据删除任务
|
||||
|
||||
- **用户id数据范围**:
|
||||
93257
|
||||
93255
|
||||
93247
|
||||
93246
|
||||
93245
|
||||
93244
|
||||
93243
|
||||
93242
|
||||
93240
|
||||
93237
|
||||
93236
|
||||
93235
|
||||
93234
|
||||
93232
|
||||
93231
|
||||
93230
|
||||
93229
|
||||
93227
|
||||
93226
|
||||
93225
|
||||
93224
|
||||
93223
|
||||
93222
|
||||
93221
|
||||
93220
|
||||
93219
|
||||
93215
|
||||
93210
|
||||
93209
|
||||
93208
|
||||
93206
|
||||
93205
|
||||
93204
|
||||
93203
|
||||
93202
|
||||
93201
|
||||
93199
|
||||
93198
|
||||
93197
|
||||
93196
|
||||
93195
|
||||
93191
|
||||
93188
|
||||
93181
|
||||
93180
|
||||
93178
|
||||
93176
|
||||
93175
|
||||
93174
|
||||
93173
|
||||
93172
|
||||
93165
|
||||
93162
|
||||
93158
|
||||
93154
|
||||
93151
|
||||
93149
|
||||
93141
|
||||
93099
|
||||
93098
|
||||
93096
|
||||
93095
|
||||
93079
|
||||
93076
|
||||
93063
|
||||
93041
|
||||
93003
|
||||
93001
|
||||
92959
|
||||
92951
|
||||
92885
|
||||
92884
|
||||
92880
|
||||
92850
|
||||
92792
|
||||
92754
|
||||
92671
|
||||
91757
|
||||
|
||||
---
|
||||
|
||||
## 需求目标
|
||||
|
||||
删除数据库中“用户id数据范围”内用户在所有相关表中的业务数据,保留不在该范围内的其他用户及其业务数据。
|
||||
|
||||
本文件可作为后续同类“按用户范围删除数据”需求的标准处理方案文档。执行时只需替换公司信息、数据库连接信息和用户 ID 范围。
|
||||
|
||||
## 执行边界
|
||||
|
||||
- **删除方向**:删除用户 ID 范围内的数据,保留范围外数据。
|
||||
- **表范围**:不只处理显式列出的表,需要扫描目标库所有表结构,找出用户关联字段后统一处理。
|
||||
- **字段范围**:重点处理以下用户关联字段:
|
||||
- `uid`
|
||||
- `user_id`
|
||||
- `seller_id`
|
||||
- `buyer_id`
|
||||
- `out_user_id`
|
||||
- `bargain_user_id`
|
||||
- `pay_uid`
|
||||
- 其他明确表示用户 ID 的字段
|
||||
- **核心用户表**:
|
||||
- `wa_users.id`
|
||||
- `eb_user.uid`
|
||||
- **特殊字段边界**:
|
||||
- `eb_user.spread_uid` 表示“当前用户的推荐人”。
|
||||
- 当 `spread_uid` 命中待删除用户 ID 时,不删除这些范围外用户,也不默认清空该字段。
|
||||
- `spread_uid` 仅作为预检报告项,除非需求另行明确要求处理。
|
||||
|
||||
## 预检要求
|
||||
|
||||
执行删除前必须先做只读预检:
|
||||
|
||||
1. 确认连接的数据库为目标库 `yangtangyoupin`。
|
||||
2. 扫描 `INFORMATION_SCHEMA.COLUMNS`,找出所有用户关联字段。
|
||||
3. 对每个命中的表字段统计目标用户 ID 的命中行数。
|
||||
4. 单独报告 `eb_user.spread_uid` 命中数量,但不纳入删除范围。
|
||||
5. 输出清理前基线统计,作为最终删除数量核对依据。
|
||||
|
||||
参考字段扫描范围:
|
||||
|
||||
```sql
|
||||
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND (
|
||||
COLUMN_NAME IN (
|
||||
'uid',
|
||||
'user_id',
|
||||
'seller_id',
|
||||
'buyer_id',
|
||||
'out_user_id',
|
||||
'bargain_user_id',
|
||||
'pay_uid',
|
||||
'spread_uid'
|
||||
)
|
||||
OR COLUMN_NAME LIKE '%user%'
|
||||
OR COLUMN_NAME LIKE '%uid%'
|
||||
OR COLUMN_NAME LIKE '%seller%'
|
||||
OR COLUMN_NAME LIKE '%buyer%'
|
||||
)
|
||||
ORDER BY TABLE_NAME, COLUMN_NAME;
|
||||
```
|
||||
|
||||
## 删除规则
|
||||
|
||||
### `wa_*` 相关表
|
||||
|
||||
删除用户 ID 范围内的相关记录:
|
||||
|
||||
- `wa_users`:删除 `id` 在用户 ID 范围内的记录。
|
||||
- `wa_order`:删除 `seller_id` 或 `buyer_id` 在用户 ID 范围内的订单。同一订单只删除一次。
|
||||
- `wa_merchandise`:删除 `user_id` 在用户 ID 范围内的寄售商品。
|
||||
- `wa_selfbonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_sharebonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_coupon_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_address`、`wa_alipay`、`wa_bank`、`wa_money_log`、`wa_withdraw` 等存在 `user_id` 字段的表:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
|
||||
### `eb_*` 相关表
|
||||
|
||||
删除用户 ID 范围内的相关记录:
|
||||
|
||||
- `eb_user`:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_user_integral_record`:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_user_address`、`eb_user_bill`、`eb_user_brokerage_record`、`eb_user_experience_record`、`eb_user_extract`、`eb_user_level`、`eb_user_recharge`、`eb_user_sign`、`eb_user_token`、`eb_user_visit_record` 等存在 `uid` 字段的用户表:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_store_order`、`eb_store_cart`、`eb_store_coupon_user`、`eb_store_pink`、`eb_store_product_log`、`eb_store_product_relation`、`eb_store_product_reply` 等存在 `uid` / `pay_uid` / `bargain_user_id` 的业务表:删除相关字段在用户 ID 范围内的记录。
|
||||
- `eb_pay_component_order.out_user_id` 等明确表示用户 ID 的字段:删除字段值在用户 ID 范围内的记录。
|
||||
|
||||
### 其他相关表
|
||||
|
||||
- `t_platform_account.user_id` 等非 `wa_*` / `eb_*` 表:如字段语义明确为用户 ID,删除字段值在用户 ID 范围内的记录。
|
||||
- 仅字段名包含 `username`、`user_phone`、`user_address` 等非用户 ID 语义字段时,不按用户 ID 范围删除。
|
||||
|
||||
## 执行顺序
|
||||
|
||||
1. 先删除业务子表和日志表数据。
|
||||
2. 再删除订单、商品、积分、账单、访问记录等用户关联数据。
|
||||
3. 最后删除核心用户表:
|
||||
- `wa_users WHERE id IN (...)`
|
||||
- `eb_user WHERE uid IN (...)`
|
||||
4. 不处理 `eb_user.spread_uid IN (...)` 的范围外用户。
|
||||
|
||||
## 校验要求
|
||||
|
||||
删除完成后必须逐表校验:
|
||||
|
||||
- 所有纳入删除范围的 `uid`、`user_id`、`seller_id`、`buyer_id`、`out_user_id`、`bargain_user_id`、`pay_uid` 等字段,对目标用户 ID 的命中数应为 `0`。
|
||||
- `wa_users.id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `eb_user.uid` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `wa_order` 中 `seller_id` 或 `buyer_id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `eb_user.spread_uid` 命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。
|
||||
|
||||
## 输出要求
|
||||
|
||||
执行完成后输出以下结果:
|
||||
|
||||
- 每张表清理前命中数。
|
||||
- 每张表实际删除数。
|
||||
- 每张表清理后剩余命中数。
|
||||
- `eb_user.spread_uid` 的保留说明。
|
||||
- 最终结论:是否所有纳入删除范围的相关数据均已清零。
|
||||
|
||||
Reference in New Issue
Block a user