Compare commits
5 Commits
czleilei24
...
byhlc112
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01e373faf6 | ||
|
|
6b940e424c | ||
|
|
5762f4e762 | ||
|
|
718d8c5a3c | ||
|
|
9eac385378 |
@@ -13,8 +13,8 @@ ENV = 'development'
|
||||
# shjjy153 项目
|
||||
# VUE_APP_BASE_API = 'http://jjy-jfadmin.fwxgpt.com'
|
||||
|
||||
# czleilei240 项目
|
||||
VUE_APP_BASE_API = 'https://leilei-jf.czchunfang.com'
|
||||
# byhlc112 项目
|
||||
VUE_APP_BASE_API = 'https://jf.lehoo6.com'
|
||||
|
||||
# hapr191 项目(淮安鹏然商贸)
|
||||
# VUE_APP_BASE_API = 'http://jfadmin.hapengran.com'
|
||||
|
||||
@@ -13,8 +13,8 @@ ENV = 'production'
|
||||
# shjjy153 项目
|
||||
# VUE_APP_BASE_API = 'http://jjy-jfadmin.fwxgpt.com'
|
||||
|
||||
# czleilei240 项目
|
||||
VUE_APP_BASE_API = 'https://leilei-jf.czchunfang.com'
|
||||
# byhlc112 项目
|
||||
VUE_APP_BASE_API = 'https://jf.lehoo6.com'
|
||||
|
||||
# hapr191 项目(淮安鹏然商贸)
|
||||
# VUE_APP_BASE_API = 'http://jfadmin.hapengran.com'
|
||||
|
||||
@@ -50,7 +50,7 @@ public class UploadController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> image(MultipartFile multipart,
|
||||
public CommonResult<FileResultVo> image(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
|
||||
@@ -66,7 +66,7 @@ public class UploadController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> file(MultipartFile multipart,
|
||||
public CommonResult<FileResultVo> file(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
||||
@@ -75,4 +75,3 @@ public class UploadController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# CRMEB 相关配置
|
||||
crmeb:
|
||||
captchaOn: false # 是否开启行为验证码
|
||||
asyncConfig: true #是否同步config表数据到redis
|
||||
|
||||
server:
|
||||
port: 30032
|
||||
|
||||
# 订单同步配置(每个单商户实例需要配置不同的source-id和target-mer-id)
|
||||
sync:
|
||||
source-id: shop_16
|
||||
target-mer-id: 16
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
name: byhlc112
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
url: jdbc:mysql://rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
redis:
|
||||
host: 39.97.236.112 #地址
|
||||
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: ./crmeb_log
|
||||
|
||||
# mybatis 配置
|
||||
mybatis-plus:
|
||||
# 配置sql打印日志
|
||||
configuration:
|
||||
log-impl:
|
||||
|
||||
#swagger 配置
|
||||
swagger:
|
||||
basic:
|
||||
enable: true #是否开启界面
|
||||
check: false #是否打开验证
|
||||
username: crmeb #访问swagger的账号
|
||||
password: crmeb.com #访问swagger的密码
|
||||
@@ -38,7 +38,7 @@ server:
|
||||
|
||||
spring:
|
||||
profiles:
|
||||
active: czleilei240
|
||||
active: byhlc112
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 50MB #设置单个文件大小
|
||||
|
||||
@@ -48,11 +48,11 @@ public class UploadFrontController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> image(MultipartFile multipart, @RequestParam(value = "model") String model,
|
||||
public CommonResult<FileResultVo> image(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class UserUploadController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> image(MultipartFile multipart,
|
||||
public CommonResult<FileResultVo> image(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
|
||||
@@ -66,7 +66,7 @@ public class UserUploadController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> imageOuter(MultipartFile multipart,
|
||||
public CommonResult<FileResultVo> imageOuter(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
|
||||
@@ -83,7 +83,7 @@ public class UserUploadController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> file(MultipartFile multipart,
|
||||
public CommonResult<FileResultVo> file(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
||||
@@ -92,4 +92,3 @@ public class UserUploadController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.zbkj.common.response.WaLoginResponse;
|
||||
import com.zbkj.common.response.WaUserInfoResponse;
|
||||
import com.zbkj.common.result.CommonResult;
|
||||
import com.zbkj.common.token.FrontTokenComponent;
|
||||
import com.zbkj.common.config.CrmebConfig;
|
||||
import com.zbkj.common.vo.FileResultVo;
|
||||
import com.zbkj.front.service.WaUserService;
|
||||
import com.zbkj.service.dao.consignment.WaUsersDao;
|
||||
@@ -14,7 +15,6 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
@@ -22,6 +22,9 @@ import org.apache.pdfbox.pdmodel.font.PDType1Font;
|
||||
import org.apache.pdfbox.pdmodel.font.PDFont;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType0Font;
|
||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
@@ -44,12 +47,13 @@ import java.util.Date;
|
||||
* |
|
||||
* +----------------------------------------------------------------------
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("api/front/wa/user")
|
||||
@Api(tags = "寄卖服务 -- 用户认证")
|
||||
public class WaUserController {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(WaUserController.class);
|
||||
|
||||
@Autowired
|
||||
private WaUserService waUserService;
|
||||
|
||||
@@ -62,6 +66,17 @@ public class WaUserController {
|
||||
@Autowired
|
||||
private WaUsersDao waUsersDao;
|
||||
|
||||
@Autowired
|
||||
private CrmebConfig crmebConfig;
|
||||
|
||||
private String buildPublicFileUrl(String relativeUrl) {
|
||||
String domain = StringUtils.defaultString(crmebConfig.getDomain(), "https://h5y2c.com").trim();
|
||||
if (!StringUtils.startsWithAny(domain, "http://", "https://")) {
|
||||
domain = "https://" + domain;
|
||||
}
|
||||
return StringUtils.removeEnd(domain, "/") + "/" + StringUtils.removeStart(relativeUrl, "/");
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理PDF文件,添加用户签名和签署日期
|
||||
* @param signatureImage 用户签名图片
|
||||
@@ -73,7 +88,7 @@ public class WaUserController {
|
||||
FileInputStream fileInputStream = null;
|
||||
try {
|
||||
// 读取模板PDF文件
|
||||
Resource resource = new ClassPathResource("pdf/sign_contract_czleilei240.pdf");
|
||||
Resource resource = new ClassPathResource("pdf/sign_contract_byhlc112.pdf");
|
||||
InputStream pdfInputStream = resource.getInputStream();
|
||||
document = PDDocument.load(pdfInputStream);
|
||||
pdfInputStream.close();
|
||||
@@ -185,21 +200,27 @@ public class WaUserController {
|
||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,新闻文章"),
|
||||
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||
})
|
||||
public CommonResult<FileResultVo> image(MultipartFile multipart, @RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||
public CommonResult<FileResultVo> image(@RequestParam("multipart") MultipartFile multipart,
|
||||
@RequestParam(value = "model") String model,
|
||||
@RequestParam(value = "pid", required = false) Integer pid,
|
||||
@RequestParam(value = "userId", required = false) Integer userId) throws IOException {
|
||||
// 如果是用户模型且上传的是图片,则先处理PDF文件
|
||||
if ("user".equals(model) && multipart != null) {
|
||||
// 处理PDF文件,添加用户签名和签署日期
|
||||
FileResultVo pdfResultVo = processPdfWithSignature(multipart);
|
||||
if (pdfResultVo != null) {
|
||||
// 更新用户contract字段
|
||||
if (pid != null) {
|
||||
Integer targetUserId = userId != null ? userId : pid;
|
||||
if (targetUserId == null) {
|
||||
targetUserId = frontTokenComponent.getUserId();
|
||||
}
|
||||
if (targetUserId != null) {
|
||||
WaUsers user = new WaUsers();
|
||||
user.setId(pid);
|
||||
user.setId(targetUserId);
|
||||
// user.setContract("https://anyue.szxingming.com/"+pdfResultVo.getUrl());
|
||||
// user.setContract("https://xiashengjun.com/"+pdfResultVo.getUrl());
|
||||
// user.setContract("https://ccd.cichude.com/"+pdfResultVo.getUrl());
|
||||
user.setContract("https://leilei.czchunfang.com/"+pdfResultVo.getUrl());
|
||||
user.setContract(buildPublicFileUrl(pdfResultVo.getUrl()));
|
||||
waUsersDao.updateById(user);
|
||||
}
|
||||
return CommonResult.success(pdfResultVo);
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
crmeb:
|
||||
imagePath: /www/wwwroot/h5y2c.com/ # 服务器图片路径配置 斜杠结尾
|
||||
domain: h5y2c.com # 当前项目域名,合同/PDF 等公开地址拼接使用
|
||||
asyncConfig: true #是否同步config表数据到redis
|
||||
|
||||
server:
|
||||
port: 30031
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
name: byhlc112
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
url: jdbc:mysql://rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
redis:
|
||||
host: 39.97.236.112 #地址
|
||||
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的密码
|
||||
@@ -32,7 +32,7 @@ server:
|
||||
|
||||
spring:
|
||||
profiles:
|
||||
active: czleilei240
|
||||
active: byhlc112
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 50MB #设置单个文件大小
|
||||
|
||||
Binary file not shown.
@@ -2,6 +2,13 @@
|
||||
|
||||
> 详细方案见仓库根目录的 `DOCKER_DEPLOY.md`。本文件只列必要操作。
|
||||
|
||||
## 已提供的项目化部署目录
|
||||
|
||||
| 项目 | 步骤一 | 步骤二 |
|
||||
|-----|------|------|
|
||||
| `czleilei240` 参考模板 | `deploy/docker/step1-integral` | `deploy/docker/step2-single-shop` |
|
||||
| `byhlc112` | `deploy/docker/step1-integral-byhlc112` | `deploy/docker/step2-single-shop-byhlc112` |
|
||||
|
||||
## 1. 准备环境变量
|
||||
|
||||
```bash
|
||||
@@ -110,4 +117,3 @@ ssh-copy-id root@116.62.83.240
|
||||
|
||||
> 用密码模式需要先 `brew install hudochenkov/sshpass/sshpass`(macOS)。
|
||||
> 用 SSH key 模式则任何依赖都不需要。
|
||||
|
||||
|
||||
83
deploy/docker/integral-resell/h5.Dockerfile
Normal file
83
deploy/docker/integral-resell/h5.Dockerfile
Normal file
@@ -0,0 +1,83 @@
|
||||
# =============================================================
|
||||
# 寄卖商城 H5 静态站运行时镜像
|
||||
# 静态文件通过 bind-mount 挂入 /usr/share/nginx/html
|
||||
# =============================================================
|
||||
|
||||
FROM nginx:1.25-alpine
|
||||
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
||||
&& apk add --no-cache tzdata \
|
||||
&& cp /usr/share/zoneinfo/$TZ /etc/localtime \
|
||||
&& echo $TZ > /etc/timezone \
|
||||
&& rm -f /etc/apk/cache/*.apk
|
||||
|
||||
RUN cat > /etc/nginx/conf.d/default.conf <<'NGX'
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
client_max_body_size 50m;
|
||||
|
||||
location ~* \.(?:js|css|png|jpg|jpeg|gif|svg|woff2?|ttf|map|pdf)$ {
|
||||
expires 30d;
|
||||
add_header Cache-Control "public, max-age=2592000";
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
location /api/ {
|
||||
proxy_pass http://integral-houtai:8785/api/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
location /upload/ {
|
||||
proxy_pass http://integral-houtai:8785/upload/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
||||
NGX
|
||||
|
||||
RUN cat > /docker-entrypoint.d/90-integral-configs.sh <<'SH' \
|
||||
&& chmod +x /docker-entrypoint.d/90-integral-configs.sh
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
CONFIG_FILE=/usr/share/nginx/html/static/configs.js
|
||||
|
||||
js_escape() {
|
||||
printf '%s' "$1" | awk '{ gsub(/\\/, "\\\\"); gsub("\047", "\\\047"); printf "%s", $0 }'
|
||||
}
|
||||
|
||||
mkdir -p "$(dirname "$CONFIG_FILE")"
|
||||
|
||||
cat > "$CONFIG_FILE" <<EOF
|
||||
window.configs = {
|
||||
TITLE: '$(js_escape "${INTEGRAL_TITLE:-}")',
|
||||
BASE_URL: '$(js_escape "${INTEGRAL_API_PUBLIC_URL:-}")/api',
|
||||
IMG_URL: '$(js_escape "${INTEGRAL_IMG_PUBLIC_URL:-}")',
|
||||
H5_URL: '$(js_escape "${INTEGRAL_H5_PUBLIC_URL:-}")',
|
||||
sn_id: ${INTEGRAL_SN_ID:-0},
|
||||
appStr: '$(js_escape "${INTEGRAL_APP_STR:-}")'
|
||||
}
|
||||
EOF
|
||||
SH
|
||||
|
||||
EXPOSE 80
|
||||
20
deploy/docker/integral-resell/houtai.Dockerfile
Normal file
20
deploy/docker/integral-resell/houtai.Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
# =============================================================
|
||||
# 寄卖商城 Webman 后端运行时镜像
|
||||
# 应用目录通过 bind-mount 挂入 /app,镜像只提供基础运行环境
|
||||
# =============================================================
|
||||
|
||||
FROM alpine:3.19
|
||||
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
||||
&& apk add --no-cache bash curl tzdata ca-certificates \
|
||||
&& cp /usr/share/zoneinfo/$TZ /etc/localtime \
|
||||
&& echo $TZ > /etc/timezone \
|
||||
&& rm -f /etc/apk/cache/*.apk
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
EXPOSE 8785
|
||||
|
||||
CMD ["sh", "-c", "chmod +x /app/webman.bin && exec /app/webman.bin start"]
|
||||
54
deploy/docker/nginx/admin.lehoo6.com.conf
Normal file
54
deploy/docker/nginx/admin.lehoo6.com.conf
Normal file
@@ -0,0 +1,54 @@
|
||||
upstream resell_api {
|
||||
server 127.0.0.1:18085;
|
||||
keepalive 10240;
|
||||
}
|
||||
|
||||
server
|
||||
{
|
||||
listen 80;
|
||||
listen 443 ssl http2;
|
||||
server_name admin.lehoo6.com;
|
||||
index index.html index.htm default.htm default.html;
|
||||
root /www/wwwroot/admin.lehoo6.com;
|
||||
include /www/server/panel/vhost/nginx/extension/admin.lehoo6.com/*.conf;
|
||||
#CERT-APPLY-CHECK--START
|
||||
include /www/server/panel/vhost/nginx/well-known/admin.lehoo6.com.conf;
|
||||
#CERT-APPLY-CHECK--END
|
||||
|
||||
#SSL-START
|
||||
set $isRedcert 1;
|
||||
if ($server_port != 443) {
|
||||
set $isRedcert 2;
|
||||
}
|
||||
if ( $uri ~ /\.well-known/ ) {
|
||||
set $isRedcert 1;
|
||||
}
|
||||
if ($isRedcert != 1) {
|
||||
rewrite ^(/.*)$ https://$host$1 permanent;
|
||||
}
|
||||
ssl_certificate /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.pem;
|
||||
ssl_certificate_key /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.key;
|
||||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_tickets on;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
error_page 497 https://$host$request_uri;
|
||||
#SSL-END
|
||||
|
||||
location / {
|
||||
proxy_pass http://resell_api;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
access_log /www/wwwlogs/admin.lehoo6.com.log;
|
||||
error_log /www/wwwlogs/admin.lehoo6.com.error.log;
|
||||
}
|
||||
92
deploy/docker/nginx/jf.lehoo6.com.conf
Normal file
92
deploy/docker/nginx/jf.lehoo6.com.conf
Normal file
@@ -0,0 +1,92 @@
|
||||
upstream jifenmall_h5 {
|
||||
server 127.0.0.1:18082;
|
||||
keepalive 10240;
|
||||
}
|
||||
|
||||
server
|
||||
{
|
||||
listen 80;
|
||||
listen 443 ssl http2;
|
||||
server_name jf.lehoo6.com;
|
||||
index index.html index.htm default.htm default.html;
|
||||
root /www/wwwroot/jf.lehoo6.com;
|
||||
include /www/server/panel/vhost/nginx/extension/jf.lehoo6.com/*.conf;
|
||||
#CERT-APPLY-CHECK--START
|
||||
include /www/server/panel/vhost/nginx/well-known/jf.lehoo6.com.conf;
|
||||
#CERT-APPLY-CHECK--END
|
||||
|
||||
#SSL-START
|
||||
set $isRedcert 1;
|
||||
if ($server_port != 443) {
|
||||
set $isRedcert 2;
|
||||
}
|
||||
if ( $uri ~ /\.well-known/ ) {
|
||||
set $isRedcert 1;
|
||||
}
|
||||
if ($isRedcert != 1) {
|
||||
rewrite ^(/.*)$ https://$host$1 permanent;
|
||||
}
|
||||
ssl_certificate /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.pem;
|
||||
ssl_certificate_key /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.key;
|
||||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_tickets on;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
error_page 497 https://$host$request_uri;
|
||||
#SSL-END
|
||||
|
||||
#REWRITE-START
|
||||
include /www/server/panel/vhost/rewrite/html_jf.lehoo6.com.conf;
|
||||
#REWRITE-END
|
||||
|
||||
location /api/front {
|
||||
proxy_pass http://127.0.0.1:30033/api/front;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
location /api/admin {
|
||||
proxy_pass http://127.0.0.1:30032/api/admin;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
location /api/external {
|
||||
proxy_pass http://127.0.0.1:30032/api/external;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 120s;
|
||||
client_max_body_size 50m;
|
||||
}
|
||||
|
||||
location ^~ / {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
if (!-f $request_filename) {
|
||||
proxy_pass http://jifenmall_h5;
|
||||
}
|
||||
}
|
||||
|
||||
access_log /www/wwwlogs/jf.lehoo6.com.log;
|
||||
error_log /www/wwwlogs/jf.lehoo6.com.error.log;
|
||||
}
|
||||
59
deploy/docker/nginx/jfadmin.lehoo6.com.conf
Normal file
59
deploy/docker/nginx/jfadmin.lehoo6.com.conf
Normal file
@@ -0,0 +1,59 @@
|
||||
upstream jifenmall_admin {
|
||||
server 127.0.0.1:18081;
|
||||
keepalive 10240;
|
||||
}
|
||||
|
||||
server
|
||||
{
|
||||
listen 80;
|
||||
listen 443 ssl http2;
|
||||
server_name jfadmin.lehoo6.com;
|
||||
index index.html index.htm default.htm default.html;
|
||||
root /www/wwwroot/jfadmin.lehoo6.com;
|
||||
include /www/server/panel/vhost/nginx/extension/jfadmin.lehoo6.com/*.conf;
|
||||
#CERT-APPLY-CHECK--START
|
||||
include /www/server/panel/vhost/nginx/well-known/jfadmin.lehoo6.com.conf;
|
||||
#CERT-APPLY-CHECK--END
|
||||
|
||||
#SSL-START
|
||||
set $isRedcert 1;
|
||||
if ($server_port != 443) {
|
||||
set $isRedcert 2;
|
||||
}
|
||||
if ( $uri ~ /\.well-known/ ) {
|
||||
set $isRedcert 1;
|
||||
}
|
||||
if ($isRedcert != 1) {
|
||||
rewrite ^(/.*)$ https://$host$1 permanent;
|
||||
}
|
||||
ssl_certificate /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.pem;
|
||||
ssl_certificate_key /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.key;
|
||||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_tickets on;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
error_page 497 https://$host$request_uri;
|
||||
#SSL-END
|
||||
|
||||
#REWRITE-START
|
||||
include /www/server/panel/vhost/rewrite/html_jfadmin.lehoo6.com.conf;
|
||||
#REWRITE-END
|
||||
|
||||
location ^~ / {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
if (!-f $request_filename) {
|
||||
proxy_pass http://jifenmall_admin;
|
||||
}
|
||||
}
|
||||
|
||||
access_log /www/wwwlogs/jfadmin.lehoo6.com.log;
|
||||
error_log /www/wwwlogs/jfadmin.lehoo6.com.error.log;
|
||||
}
|
||||
55
deploy/docker/nginx/lehoo6.com.conf
Normal file
55
deploy/docker/nginx/lehoo6.com.conf
Normal file
@@ -0,0 +1,55 @@
|
||||
upstream resell_h5 {
|
||||
server 127.0.0.1:18080;
|
||||
keepalive 10240;
|
||||
}
|
||||
|
||||
server
|
||||
{
|
||||
listen 80;
|
||||
listen 443 ssl http2;
|
||||
server_name lehoo6.com;
|
||||
index index.html index.htm default.htm default.html;
|
||||
root /www/wwwroot/lehoo6.com;
|
||||
include /www/server/panel/vhost/nginx/extension/lehoo6.com/*.conf;
|
||||
#CERT-APPLY-CHECK--START
|
||||
include /www/server/panel/vhost/nginx/well-known/lehoo6.com.conf;
|
||||
#CERT-APPLY-CHECK--END
|
||||
|
||||
#SSL-START
|
||||
set $isRedcert 1;
|
||||
if ($server_port != 443) {
|
||||
set $isRedcert 2;
|
||||
}
|
||||
if ( $uri ~ /\.well-known/ ) {
|
||||
set $isRedcert 1;
|
||||
}
|
||||
if ($isRedcert != 1) {
|
||||
rewrite ^(/.*)$ https://$host$1 permanent;
|
||||
}
|
||||
ssl_certificate /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.pem;
|
||||
ssl_certificate_key /www/wwwroot/integral-shop/deploy/docker/ssl-cert/lehoo6.com_cert/nginx/lehoo6.com.key;
|
||||
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_tickets on;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
add_header Strict-Transport-Security "max-age=31536000";
|
||||
error_page 497 https://$host$request_uri;
|
||||
#SSL-END
|
||||
|
||||
location ^~ / {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
if (!-f $request_filename) {
|
||||
proxy_pass http://resell_h5;
|
||||
}
|
||||
}
|
||||
|
||||
access_log /www/wwwlogs/lehoo6.com.log;
|
||||
error_log /www/wwwlogs/lehoo6.com.error.log;
|
||||
}
|
||||
@@ -8,7 +8,8 @@ server:
|
||||
port: ${SERVER_PORT:-30032}
|
||||
|
||||
crmeb:
|
||||
imagePath: /usr/local/crmeb/crmebimage/
|
||||
imagePath: /usr/local/crmeb/
|
||||
domain: https://h5y2c.com
|
||||
captchaOn: false
|
||||
asyncConfig: true
|
||||
demoSite: false
|
||||
|
||||
31
deploy/docker/step1-integral-byhlc112/.env.example
Normal file
31
deploy/docker/step1-integral-byhlc112/.env.example
Normal file
@@ -0,0 +1,31 @@
|
||||
# =============================================================
|
||||
# 步骤一:寄卖商城环境变量 — 宝应宏煜春商贸 byhlc112
|
||||
# cp .env.example .env 并填入真实密码
|
||||
# .env 不入库
|
||||
# =============================================================
|
||||
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
# ---------- Redis(容器内) ----------
|
||||
REDIS_PASSWORD=change-me-redis
|
||||
|
||||
# ---------- H5 对外域名(浏览器可达) ----------
|
||||
INTEGRAL_TITLE=宝应宏煜春商贸
|
||||
INTEGRAL_API_PUBLIC_URL=https://admin.h5y2c.com
|
||||
INTEGRAL_IMG_PUBLIC_URL=https://admin.h5y2c.com
|
||||
INTEGRAL_H5_PUBLIC_URL=https://h5y2c.com/
|
||||
INTEGRAL_SN_ID=17533260260529
|
||||
INTEGRAL_APP_STR=ZFyTNQTWEkCBbyhlc1120529
|
||||
INTEGRAL_CONTRACT_PAGE=10012
|
||||
|
||||
# ---------- 宿主机暴露端口 ----------
|
||||
INTEGRAL_H5_PORT=18080
|
||||
# webman API 直连端口(宝塔 Nginx admin.h5y2c.com → 此端口)
|
||||
RESELL_API_PORT=18085
|
||||
|
||||
# ---------- 宿主机目录映射(bind mount,与原部署路径一致)----------
|
||||
# 寄卖商城 H5 静态文件目录(手动改 JS/configs.js 直接生效,无需重建镜像)
|
||||
RESELL_H5_DIR=/www/wwwroot/h5y2c.com
|
||||
# webman 后台完整应用目录(FTP 上传新 webman.bin/public/ 后 restart 容器即可更新)
|
||||
# 上传图片、public/upload 等均包含在此目录内,无需单独挂载
|
||||
RESELL_HOUTAI_DIR=/www/wwwroot/admin.h5y2c.com
|
||||
2
deploy/docker/step1-integral-byhlc112/.gitignore
vendored
Normal file
2
deploy/docker/step1-integral-byhlc112/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.env
|
||||
houtai.env
|
||||
99
deploy/docker/step1-integral-byhlc112/README.md
Normal file
99
deploy/docker/step1-integral-byhlc112/README.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# 步骤一:寄卖商城 Docker 部署(宝应宏煜春商贸 byhlc112)
|
||||
|
||||
项目:`integral-resell`(寄卖商城)
|
||||
服务:`redis` · `integral-houtai`(Webman PHP 8.0)· `integral-h5`(Nginx 静态站)· `edge-nginx`(Docker HTTPS 入口)
|
||||
|
||||
步骤二(积分商城)与本步骤完全独立,可以单独部署、单独重启。
|
||||
|
||||
> 这套目录结构与 `deploy/docker/step1-integral` 保持一致,按 `czleilei240` 已验证方案复制而来。
|
||||
> 当前默认域名假设为:
|
||||
> - 寄卖商城 H5:`h5y2c.com`
|
||||
> - 寄卖商城后台/API:`admin.h5y2c.com`
|
||||
|
||||
---
|
||||
|
||||
## 快速部署
|
||||
|
||||
```bash
|
||||
cd deploy/docker/step1-integral-byhlc112
|
||||
|
||||
# 1. 准备环境变量
|
||||
cp .env.example .env
|
||||
cp houtai.env.example houtai.env
|
||||
vim .env
|
||||
vim houtai.env
|
||||
|
||||
# 2. 首次部署:在服务器上确保宿主机目录存在
|
||||
mkdir -p /www/wwwroot/h5y2c.com
|
||||
mkdir -p /www/wwwroot/admin.h5y2c.com/public/upload
|
||||
|
||||
# 3. 将 H5 静态文件同步到宿主机目录(首次 / 每次前端更新后)
|
||||
rsync -av integral-resell/h5/ /www/wwwroot/h5y2c.com/
|
||||
|
||||
# 4. 构建并启动,edge-nginx 会在宿主机监听 80/443
|
||||
docker compose --env-file .env up -d --build
|
||||
|
||||
# 5. 查看状态
|
||||
docker compose --env-file .env ps
|
||||
docker compose --env-file .env logs -f integral-houtai
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 目录映射
|
||||
|
||||
| 宿主机路径 | 容器路径 | 用途 |
|
||||
|---|---|---|
|
||||
| `/www/wwwroot/h5y2c.com` | `/usr/share/nginx/html` | H5 静态文件,手动改 JS 即时生效 |
|
||||
| `/www/wwwroot/admin.h5y2c.com` | `/app` | webman 后台完整应用目录 |
|
||||
| `./houtai.env` | `/app/.env` | 运行时配置,只读挂入 |
|
||||
| `integral-runtime`(named vol)| `/app/runtime` | webman PID、session 等运行时数据 |
|
||||
|
||||
| 域名 | 用途 | Docker 容器端口 | 宿主机端口 | Docker 入口 |
|
||||
|---|---|---|---|---|
|
||||
| `h5y2c.com` | 寄卖商城 H5 | integral-h5:80 | **80/443**,直连测试 **18080** | `edge-nginx` |
|
||||
| `admin.h5y2c.com` | 寄卖商城 API / 后台 | integral-houtai:**8785** | **80/443**,直连测试 **18085** | `edge-nginx` |
|
||||
|
||||
---
|
||||
|
||||
## 验证
|
||||
|
||||
| 地址 | 预期 |
|
||||
|------|------|
|
||||
| `https://h5y2c.com/` | 寄卖商城 H5 首页 |
|
||||
| `https://admin.h5y2c.com/api/...` | 寄卖商城 API |
|
||||
| `http://39.97.236.112:18080/` | H5 直连测试 |
|
||||
| `ss -lntp \| grep -E ':(80\|443)'` | 看到 Docker Nginx 监听宿主机 80/443 |
|
||||
|
||||
---
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
docker compose --env-file .env restart integral-houtai
|
||||
docker compose --env-file .env restart edge-nginx
|
||||
docker compose --env-file .env logs -f integral-houtai
|
||||
docker compose --env-file .env logs -f edge-nginx
|
||||
docker compose --env-file .env exec integral-houtai bash
|
||||
docker compose --env-file .env down
|
||||
docker compose --env-file .env down -v
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 关键一致性检查
|
||||
|
||||
| 位置 | 值 |
|
||||
|---|---|
|
||||
| `.env` INTEGRAL_API_PUBLIC_URL | `https://admin.h5y2c.com` |
|
||||
| `.env` INTEGRAL_H5_PUBLIC_URL | `https://h5y2c.com/` |
|
||||
| `.env` INTEGRAL_APP_STR | `ZFyTNQTWEkCBbyhlc1120529` |
|
||||
| `houtai.env` APP_SECRET | 同上 |
|
||||
| `.env` INTEGRAL_SN_ID | `17533260260529` |
|
||||
|
||||
---
|
||||
|
||||
## 待确认项
|
||||
|
||||
- 短信当前使用阿里云签名 `宝应宏煜春商贸`、模板 `SMS_334545236`,如更换短信账号需同步更新 `houtai.env`
|
||||
- 如果寄卖后台域名不是 `admin.h5y2c.com`,请统一替换 `.env.example`、README 和入口 Nginx 配置
|
||||
102
deploy/docker/step1-integral-byhlc112/docker-compose.yml
Normal file
102
deploy/docker/step1-integral-byhlc112/docker-compose.yml
Normal file
@@ -0,0 +1,102 @@
|
||||
# =============================================================
|
||||
# 步骤一:寄卖商城(integral-resell)独立部署
|
||||
# 客户:宝应宏煜春商贸 byhlc112
|
||||
# 包含服务:redis · integral-houtai(webman) · integral-h5(Nginx) · edge-nginx(HTTPS入口)
|
||||
# =============================================================
|
||||
|
||||
name: resell-byhlc112
|
||||
|
||||
x-common: &common
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "20m"
|
||||
max-file: "5"
|
||||
|
||||
networks:
|
||||
integral-net:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
integral-redis-data:
|
||||
integral-runtime:
|
||||
|
||||
services:
|
||||
redis:
|
||||
<<: *common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: redis.Dockerfile
|
||||
image: resell-byhlc112/redis:local
|
||||
container_name: integral-redis-byhlc112
|
||||
command: ["--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
|
||||
volumes:
|
||||
- integral-redis-data:/data
|
||||
networks: [integral-net]
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
|
||||
integral-houtai:
|
||||
<<: *common
|
||||
build:
|
||||
context: ../integral-resell
|
||||
dockerfile: houtai.Dockerfile
|
||||
image: resell-byhlc112/houtai:latest
|
||||
container_name: integral-houtai-byhlc112
|
||||
networks: [integral-net]
|
||||
ports:
|
||||
- "${RESELL_API_PORT:-18085}:8785"
|
||||
volumes:
|
||||
- ${RESELL_HOUTAI_DIR}:/app
|
||||
- ./houtai.env:/app/.env:ro
|
||||
- integral-runtime:/app/runtime
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
|
||||
integral-h5:
|
||||
<<: *common
|
||||
build:
|
||||
context: ../integral-resell
|
||||
dockerfile: h5.Dockerfile
|
||||
image: resell-byhlc112/h5:latest
|
||||
container_name: integral-h5-byhlc112
|
||||
networks: [integral-net]
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
INTEGRAL_TITLE: ${INTEGRAL_TITLE}
|
||||
INTEGRAL_API_PUBLIC_URL: ${INTEGRAL_API_PUBLIC_URL}
|
||||
INTEGRAL_IMG_PUBLIC_URL: ${INTEGRAL_IMG_PUBLIC_URL}
|
||||
INTEGRAL_H5_PUBLIC_URL: ${INTEGRAL_H5_PUBLIC_URL}
|
||||
INTEGRAL_SN_ID: ${INTEGRAL_SN_ID}
|
||||
INTEGRAL_APP_STR: ${INTEGRAL_APP_STR}
|
||||
INTEGRAL_CONTRACT_PAGE: ${INTEGRAL_CONTRACT_PAGE}
|
||||
volumes:
|
||||
- ${RESELL_H5_DIR}:/usr/share/nginx/html
|
||||
ports:
|
||||
- "${INTEGRAL_H5_PORT:-18080}:80"
|
||||
depends_on:
|
||||
- integral-houtai
|
||||
|
||||
edge-nginx:
|
||||
<<: *common
|
||||
image: nginx:1.25-alpine
|
||||
container_name: edge-nginx-byhlc112
|
||||
networks: [integral-net]
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./nginx-edge.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
- ../ssl-cert/h5y2c.com_cert/nginx:/etc/nginx/ssl/h5y2c.com_cert:ro
|
||||
depends_on:
|
||||
- integral-h5
|
||||
- integral-houtai
|
||||
37
deploy/docker/step1-integral-byhlc112/houtai.env.example
Normal file
37
deploy/docker/step1-integral-byhlc112/houtai.env.example
Normal file
@@ -0,0 +1,37 @@
|
||||
# =============================================================
|
||||
# Webman 后端运行时配置 — 宝应宏煜春商贸 byhlc112(寄卖商城)
|
||||
# cp houtai.env.example houtai.env 并填入真实密码
|
||||
# houtai.env 不入库,由 docker-compose volumes: 挂入 /app/.env
|
||||
# =============================================================
|
||||
|
||||
# MySQL(阿里云 RDS)
|
||||
DB_HOST = 'rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com'
|
||||
DB_PORT = 3306
|
||||
DB_DATABASE = 'byhlc112'
|
||||
DB_USERNAME = 'yangtangyoupin'
|
||||
DB_PASSWORD = 'change-me'
|
||||
|
||||
# Redis(指向同 compose 内的 redis 容器)
|
||||
REDIS_HOST = 'redis'
|
||||
REDIS_PORT = 6379
|
||||
REDIS_PASSWORD = 'change-me-redis'
|
||||
|
||||
# 短信(需按该项目实际通道填写)
|
||||
SMS_CHANNEL = 'alibaba'
|
||||
SMS_SIGNNAME = '宝应宏煜春商贸'
|
||||
SMS_TEMPLATE = 'SMS_334545236'
|
||||
SMS_KEYID = 'change-me'
|
||||
SMS_KEYSECRET = 'change-me'
|
||||
SMS_SDKAPPID = ''
|
||||
|
||||
# OSS(不启用则走本地 public/upload)
|
||||
FILE_STORAGE = 'public'
|
||||
OSS_ACCESS_ID = ''
|
||||
OSS_ACCESS_SECRET = ''
|
||||
OSS_BUCKET = ''
|
||||
OSS_ENDPOINT = ''
|
||||
OSS_URL = ''
|
||||
|
||||
# 业务标识(须与 H5 configs.js 的 sn_id / appStr 以及积分商城 admin 后台一致)
|
||||
APP_SIGN = '1'
|
||||
APP_SECRET = 'ZFyTNQTWEkCBbyhlc1120529'
|
||||
102
deploy/docker/step1-integral-byhlc112/nginx-edge.conf
Normal file
102
deploy/docker/step1-integral-byhlc112/nginx-edge.conf
Normal file
@@ -0,0 +1,102 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name h5y2c.com admin.h5y2c.com jf.h5y2c.com jfadmin.h5y2c.com;
|
||||
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name jf.h5y2c.com;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
client_max_body_size 50m;
|
||||
|
||||
location / {
|
||||
proxy_pass http://host.docker.internal:18082;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name jfadmin.h5y2c.com;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
client_max_body_size 50m;
|
||||
|
||||
location / {
|
||||
proxy_pass http://host.docker.internal:18081;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name h5y2c.com;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
client_max_body_size 50m;
|
||||
|
||||
location / {
|
||||
proxy_pass http://integral-h5:80;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name admin.h5y2c.com;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/h5y2c.com_cert/h5y2c.com.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_timeout 10m;
|
||||
|
||||
client_max_body_size 50m;
|
||||
|
||||
location / {
|
||||
proxy_pass http://integral-houtai:8785;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
13
deploy/docker/step1-integral-byhlc112/redis.Dockerfile
Normal file
13
deploy/docker/step1-integral-byhlc112/redis.Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
# 使用 Alpine 通过 apk 安装 Redis,绕过镜像源问题
|
||||
FROM alpine:3.19
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
||||
&& apk add --no-cache redis tzdata \
|
||||
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||
&& echo "Asia/Shanghai" > /etc/timezone
|
||||
|
||||
VOLUME /data
|
||||
WORKDIR /data
|
||||
EXPOSE 6379
|
||||
|
||||
ENTRYPOINT ["redis-server"]
|
||||
41
deploy/docker/step2-single-shop-byhlc112/.env.example
Normal file
41
deploy/docker/step2-single-shop-byhlc112/.env.example
Normal file
@@ -0,0 +1,41 @@
|
||||
# =============================================================
|
||||
# 步骤二:积分商城环境变量 — 宝应宏煜春商贸 byhlc112
|
||||
# 使用方法:cp .env.example .env 然后填入真实密码
|
||||
# .env 不入库(已加入 .gitignore)
|
||||
# =============================================================
|
||||
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
# ---------- Redis(容器内,与步骤一独立) ----------
|
||||
REDIS_PASSWORD=change-me-redis
|
||||
|
||||
# ---------- 阿里云 RDS ----------
|
||||
RDS_HOST=rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com
|
||||
RDS_DB=byhlc112
|
||||
RDS_USER=yangtangyoupin
|
||||
RDS_PASSWORD=change-me
|
||||
|
||||
# ---------- 订单同步(多商户 source / target) ----------
|
||||
SYNC_SOURCE_ID=shop_16
|
||||
SYNC_TARGET_MER_ID=16
|
||||
|
||||
# ---------- Java JAR 宿主机路径(FTP 更新后 restart 容器即可) ----------
|
||||
SINGLE_FRONT_JAR=/www/wwwroot/javaapi/miao-front-2.2.jar
|
||||
SINGLE_ADMIN_JAR=/www/wwwroot/javaapi/miao-admin-2.2.jar
|
||||
|
||||
# ---------- Java 日志目录(bind-mount 到宿主机,直接 tail -f 查看) ----------
|
||||
SINGLE_FRONT_LOG_DIR=/www/wwwroot/javaapi/logs/front
|
||||
SINGLE_ADMIN_LOG_DIR=/www/wwwroot/javaapi/logs/admin
|
||||
|
||||
# ---------- 图片/PDF 目录(与步骤一 H5 Nginx 共享宿主机路径) ----------
|
||||
CRMEB_IMAGE_DIR=/www/wwwroot/h5y2c.com
|
||||
|
||||
# ---------- 前端静态目录(bind-mount,rsync 更新后立即生效) ----------
|
||||
# 积分商城 H5(uni-app SPA),对应域名 jf.h5y2c.com
|
||||
SINGLE_H5_DIR=/www/wwwroot/jf.h5y2c.com
|
||||
# 积分商城管理后台(Vue SPA),对应域名 jfadmin.h5y2c.com
|
||||
SINGLE_ADMIN_WEB_DIR=/www/wwwroot/jfadmin.h5y2c.com
|
||||
|
||||
# ---------- 宿主机暴露端口(供宝塔 Nginx 反代) ----------
|
||||
SINGLE_ADMIN_PORT=18081
|
||||
SINGLE_H5_PORT=18082
|
||||
1
deploy/docker/step2-single-shop-byhlc112/.gitignore
vendored
Normal file
1
deploy/docker/step2-single-shop-byhlc112/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
123
deploy/docker/step2-single-shop-byhlc112/README.md
Normal file
123
deploy/docker/step2-single-shop-byhlc112/README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 步骤二:积分商城 Docker 部署(宝应宏煜春商贸 byhlc112)
|
||||
|
||||
项目:`single-shop-22`(积分商城)
|
||||
服务:`redis` · `single-front-api`(Spring Boot)· `single-admin-api`(Spring Boot)
|
||||
`single-admin-web`(Vue 管理后台)· `single-h5`(uni-app H5)
|
||||
|
||||
步骤一(寄卖商城)与本步骤完全独立,可以单独部署、单独重启。
|
||||
|
||||
> 这套方案参考 `deploy/docker/step2-single-shop`,按 `czleilei240` 已验证结构复制。
|
||||
> 当前默认域名假设为:
|
||||
> - 积分商城 H5:`jf.h5y2c.com`
|
||||
> - 积分商城管理后台:`jfadmin.h5y2c.com`
|
||||
|
||||
---
|
||||
|
||||
## 部署前提:宿主机文件准备
|
||||
|
||||
### 1. Java JAR(Spring Boot API)
|
||||
|
||||
```bash
|
||||
mkdir -p /www/wwwroot/javaapi/logs/front
|
||||
mkdir -p /www/wwwroot/javaapi/logs/admin
|
||||
|
||||
scp single-shop-22/backend/crmeb-front/target/miao-front-2.2.jar root@39.97.236.112:/www/wwwroot/javaapi/
|
||||
scp single-shop-22/backend/crmeb-admin/target/miao-admin-2.2.jar root@39.97.236.112:/www/wwwroot/javaapi/
|
||||
```
|
||||
|
||||
### 2. 前端静态文件
|
||||
|
||||
```bash
|
||||
mkdir -p /www/wwwroot/jf.h5y2c.com
|
||||
rsync -a --delete single-shop-22/single_uniapp22miao/unpackage/dist/build/web/ \
|
||||
root@39.97.236.112:/www/wwwroot/jf.h5y2c.com/
|
||||
chmod -R 755 /www/wwwroot/jf.h5y2c.com/
|
||||
|
||||
mkdir -p /www/wwwroot/jfadmin.h5y2c.com
|
||||
rsync -a --delete single-shop-22/backend-adminend/dist/ \
|
||||
root@39.97.236.112:/www/wwwroot/jfadmin.h5y2c.com/
|
||||
chmod -R 755 /www/wwwroot/jfadmin.h5y2c.com/
|
||||
```
|
||||
|
||||
### 3. 图片/PDF 目录
|
||||
|
||||
```bash
|
||||
mkdir -p /www/wwwroot/h5y2c.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 快速部署
|
||||
|
||||
```bash
|
||||
cd deploy/docker/step2-single-shop-byhlc112
|
||||
|
||||
cp .env.example .env
|
||||
vim .env
|
||||
|
||||
docker compose --env-file .env build
|
||||
docker compose --env-file .env up -d
|
||||
|
||||
docker compose --env-file .env ps
|
||||
docker compose --env-file .env logs -f single-front-api
|
||||
docker compose --env-file .env logs -f single-admin-api
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 域名与端口
|
||||
|
||||
| 域名 | 用途 | 宿主机端口 |
|
||||
|---|---|---|
|
||||
| `jf.h5y2c.com` | 积分商城 H5(uni-app) | **18082** |
|
||||
| `jfadmin.h5y2c.com` | 积分商城管理后台(Vue) | **18081** |
|
||||
|
||||
> Spring Boot API 端口(30032 / 30033)仅容器内监听,不对外暴露。
|
||||
> 宝塔 Nginx 通过域名反代到 `127.0.0.1:18081 / 18082`,再由容器内 Nginx 转发到 API。
|
||||
> 图片/PDF 实际落盘路径为宿主机 `/www/wwwroot/h5y2c.com/crmebimage/public/...`。
|
||||
|
||||
---
|
||||
|
||||
## 验证
|
||||
|
||||
| 地址 | 预期 |
|
||||
|------|------|
|
||||
| `https://jf.h5y2c.com/` | 积分商城 H5 |
|
||||
| `https://jfadmin.h5y2c.com/` | 积分商城管理后台 |
|
||||
| `http://39.97.236.112:18082/` | H5 直连测试 |
|
||||
| `http://39.97.236.112:18081/` | 管理后台直连测试 |
|
||||
|
||||
---
|
||||
|
||||
## bind-mount 目录总览
|
||||
|
||||
| 宿主机路径 | 挂入容器路径 | 说明 |
|
||||
|---|---|---|
|
||||
| `/www/wwwroot/javaapi/miao-front-2.2.jar` | `/app/app.jar` | 用户端 API JAR |
|
||||
| `/www/wwwroot/javaapi/miao-admin-2.2.jar` | `/app/app.jar` | 管理端 API JAR |
|
||||
| `/www/wwwroot/javaapi/logs/front/` | `/app/log` | 用户端 API 日志 |
|
||||
| `/www/wwwroot/javaapi/logs/admin/` | `/app/log` | 管理端 API 日志 |
|
||||
| `/www/wwwroot/h5y2c.com/` | `/usr/local/crmeb/` | 图片/PDF 写入目录 |
|
||||
| `/www/wwwroot/jf.h5y2c.com/` | `/usr/share/nginx/html` | H5 静态文件 |
|
||||
| `/www/wwwroot/jfadmin.h5y2c.com/` | `/usr/share/nginx/html` | 管理后台静态文件 |
|
||||
| `../single-shop/application-docker.yml` | `/config/application-docker.yml` | Spring Boot 配置 |
|
||||
|
||||
---
|
||||
|
||||
## byhlc112 关键配置对照
|
||||
|
||||
| 配置项 | 值 |
|
||||
|---|---|
|
||||
| RDS Host | `rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com` |
|
||||
| DB / User | `byhlc112` / `yangtangyoupin` |
|
||||
| imagePath 宿主机目录 | `/www/wwwroot/h5y2c.com/` |
|
||||
| SYNC_SOURCE_ID | `shop_16` |
|
||||
| SYNC_TARGET_MER_ID | `16` |
|
||||
| Spring profile | `docker`(通过 `application-docker.yml` 注入) |
|
||||
|
||||
---
|
||||
|
||||
## 待确认项
|
||||
|
||||
- 如果积分管理后台域名不是 `jfadmin.h5y2c.com`,需要同步替换 `.env.example`、README 和宝塔 Nginx 配置
|
||||
- Redis 仍按 Docker 内置实例方案生成;若你想接外部 Redis,可以再帮你补一版外部 Redis 配置
|
||||
161
deploy/docker/step2-single-shop-byhlc112/docker-compose.yml
Normal file
161
deploy/docker/step2-single-shop-byhlc112/docker-compose.yml
Normal file
@@ -0,0 +1,161 @@
|
||||
# =============================================================
|
||||
# 步骤二:积分商城(single-shop-22)独立部署
|
||||
# 客户:宝应宏煜春商贸 byhlc112
|
||||
# 包含服务:redis · single-admin-api · single-front-api
|
||||
# single-admin-web(Vue) · single-h5(uni-app)
|
||||
# =============================================================
|
||||
|
||||
name: jifenmall-byhlc112
|
||||
|
||||
x-common: &common
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "20m"
|
||||
max-file: "5"
|
||||
|
||||
x-spring-common: &spring-common
|
||||
<<: *common
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
MYSQL_HOST: ${RDS_HOST}
|
||||
MYSQL_DATABASE: ${RDS_DB}
|
||||
MYSQL_USERNAME: ${RDS_USER}
|
||||
MYSQL_PASSWORD: ${RDS_PASSWORD}
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_16}
|
||||
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-16}
|
||||
|
||||
networks:
|
||||
single-net:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
single-redis-data:
|
||||
|
||||
services:
|
||||
redis:
|
||||
<<: *common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: redis.Dockerfile
|
||||
image: jifenmall-byhlc112/redis:local
|
||||
container_name: single-redis-byhlc112
|
||||
command: ["--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
|
||||
volumes:
|
||||
- single-redis-data:/data
|
||||
networks: [single-net]
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
|
||||
single-front-api:
|
||||
<<: *spring-common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ../single-shop/front-api.Dockerfile
|
||||
image: jifenmall-byhlc112/front-api:local
|
||||
container_name: single-front-api-byhlc112
|
||||
networks: [single-net]
|
||||
ports:
|
||||
- "127.0.0.1:30033:30033"
|
||||
volumes:
|
||||
- ${SINGLE_FRONT_JAR}:/app/app.jar:ro
|
||||
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb
|
||||
- ${SINGLE_FRONT_LOG_DIR}:/app/log
|
||||
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
MYSQL_HOST: ${RDS_HOST}
|
||||
MYSQL_DATABASE: ${RDS_DB}
|
||||
MYSQL_USERNAME: ${RDS_USER}
|
||||
MYSQL_PASSWORD: ${RDS_PASSWORD}
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_16}
|
||||
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-16}
|
||||
SERVER_PORT: 30033
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -sf http://localhost:30033/actuator/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 90s
|
||||
|
||||
single-admin-api:
|
||||
<<: *spring-common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ../single-shop/admin-api.Dockerfile
|
||||
image: jifenmall-byhlc112/admin-api:local
|
||||
container_name: single-admin-api-byhlc112
|
||||
networks: [single-net]
|
||||
ports:
|
||||
- "127.0.0.1:30032:30032"
|
||||
volumes:
|
||||
- ${SINGLE_ADMIN_JAR}:/app/app.jar:ro
|
||||
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb
|
||||
- ${SINGLE_ADMIN_LOG_DIR}:/app/log
|
||||
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
||||
environment:
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
MYSQL_HOST: ${RDS_HOST}
|
||||
MYSQL_DATABASE: ${RDS_DB}
|
||||
MYSQL_USERNAME: ${RDS_USER}
|
||||
MYSQL_PASSWORD: ${RDS_PASSWORD}
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
SYNC_SOURCE_ID: ${SYNC_SOURCE_ID:-shop_16}
|
||||
SYNC_TARGET_MER_ID: ${SYNC_TARGET_MER_ID:-16}
|
||||
SERVER_PORT: 30032
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -sf http://localhost:30032/actuator/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 90s
|
||||
|
||||
single-admin-web:
|
||||
<<: *common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ../single-shop/admin-web.Dockerfile
|
||||
image: jifenmall-byhlc112/admin-web:local
|
||||
container_name: single-admin-web-byhlc112
|
||||
networks: [single-net]
|
||||
ports:
|
||||
- "${SINGLE_ADMIN_PORT:-18081}:80"
|
||||
volumes:
|
||||
- ${SINGLE_ADMIN_WEB_DIR}:/usr/share/nginx/html
|
||||
depends_on:
|
||||
- single-admin-api
|
||||
|
||||
single-h5:
|
||||
<<: *common
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ../single-shop/h5.Dockerfile
|
||||
image: jifenmall-byhlc112/h5:local
|
||||
container_name: single-h5-byhlc112
|
||||
networks: [single-net]
|
||||
ports:
|
||||
- "${SINGLE_H5_PORT:-18082}:80"
|
||||
volumes:
|
||||
- ${SINGLE_H5_DIR}:/usr/share/nginx/html
|
||||
depends_on:
|
||||
- single-front-api
|
||||
18
deploy/docker/step2-single-shop-byhlc112/redis.Dockerfile
Normal file
18
deploy/docker/step2-single-shop-byhlc112/redis.Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
# =============================================================
|
||||
# Redis(Alpine + apk 安装,绕过 Docker Hub 镜像拉取问题)
|
||||
# 与 step1 方案一致:不依赖 docker.io,只需 registry-1.docker.io 拉 alpine:3.19
|
||||
# =============================================================
|
||||
|
||||
FROM alpine:3.19
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
||||
&& apk add --no-cache redis tzdata \
|
||||
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
||||
&& echo "Asia/Shanghai" > /etc/timezone \
|
||||
&& rm -f /etc/apk/cache/*.apk
|
||||
|
||||
VOLUME /data
|
||||
WORKDIR /data
|
||||
EXPOSE 6379
|
||||
|
||||
ENTRYPOINT ["redis-server"]
|
||||
BIN
deploy/ssl/h5y2c.com_cert.zip
Normal file
BIN
deploy/ssl/h5y2c.com_cert.zip
Normal file
Binary file not shown.
BIN
deploy/ssl/lehoo6.com_cert.zip
Normal file
BIN
deploy/ssl/lehoo6.com_cert.zip
Normal file
Binary file not shown.
549
docs/com-bosenyuan-miao80-data-cleanup-260604.md
Normal file
549
docs/com-bosenyuan-miao80-data-cleanup-260604.md
Normal file
@@ -0,0 +1,549 @@
|
||||
# 宝应博森元 miao80 用户数据清理方案
|
||||
|
||||
## 基本信息
|
||||
|
||||
- 公司:宝应博森元
|
||||
- Spring profile:`miao80`
|
||||
- MySQL:`123.56.214.80:3306`
|
||||
- 数据库:`yangtangyoupin`
|
||||
- 任务日期:2026-06-04
|
||||
- 方案目的:删除指定会员及其寄卖、订单、奖金、积分、地址、提现等关联数据。
|
||||
|
||||
## 数据来源
|
||||
|
||||
1. Excel 清除名单:`/Users/mac/Works26/miao-july/bosenyuan清除名单260604.xlsx`
|
||||
2. 手工补充名单:此前核查出的 30 个有隐藏未售寄卖商品的会员。
|
||||
|
||||
## 清理范围
|
||||
|
||||
### Excel 清除名单
|
||||
|
||||
| 用户ID | 昵称 | 联系方式 | 上级ID |
|
||||
| --- | --- | --- | --- |
|
||||
| 93320 | 崔龙云 | 18921916448 | 93315 |
|
||||
| 93317 | 杨长霞 | 13852763959 | 93212 |
|
||||
| 93312 | 成成 | 13905238633 | 93296 |
|
||||
| 93311 | 袁月 | 18932311595 | 93303 |
|
||||
| 93310 | 范明中 | 18915115858 | 93303 |
|
||||
| 93308 | 138****0239 | 13813100239 | 93248 |
|
||||
| 93304 | 卢红 | 13905235316 | 93303 |
|
||||
| 93302 | 周顺芹 | 13511707356 | 93250 |
|
||||
| 93298 | 顾善道 | 15005253578 | 93120 |
|
||||
| 93293 | 朱梅芳 | 13801441506 | 93136 |
|
||||
| 93292 | 蔡宛序 | 17625471367 | 93213 |
|
||||
| 93291 | 130****3522 | 13092023522 | 93254 |
|
||||
| 93288 | 于桂平 | 13305239833 | 93249 |
|
||||
| 93286 | 陆哓明 | 13952753228 | 93250 |
|
||||
| 93285 | 仲妮妮 | 17351389708 | 93212 |
|
||||
| 93282 | 张伏顺 | 13016592366 | 93254 |
|
||||
| 93281 | 189****9338 | 18951269338 | 93213 |
|
||||
| 93280 | 韩国林 | 15861304478 | 93248 |
|
||||
| 93278 | 陈文青 | 15062891641 | 92775 |
|
||||
| 93277 | 许良会 | 18260691419 | 93239 |
|
||||
| 93275 | 黄丽辉 | 15262265025 | 93147 |
|
||||
| 93269 | 吴发 | 18360337533 | 92687 |
|
||||
| 93268 | 马猛宏 | 13921912348 | 93250 |
|
||||
| 93267 | 卢玉凤 | 17558780051 | 93212 |
|
||||
| 93266 | 周同 | 13115254379 | 93265 |
|
||||
| 93265 | 王彬 | 18915131699 | 93254 |
|
||||
| 93263 | 陈斌 | 18012324636 | 93019 |
|
||||
| 93262 | 徐猫猫 | 13390629258 | 93161 |
|
||||
| 93261 | 潘年庆 | 13773341597 | 93251 |
|
||||
| 93260 | 纪开东 | 13179766726 | 93251 |
|
||||
| 93256 | 卢玉芬 | 18012323088 | 93161 |
|
||||
| 93253 | 刘加良 | 15298672227 | 93239 |
|
||||
| 93252 | 夏宝华 | 15262250561 | 93214 |
|
||||
| 93241 | 孙万万 | 13951441675 | 93214 |
|
||||
| 93238 | 戴向英 | 15189893800 | 93136 |
|
||||
| 93233 | 严登文 | 15995116338 | 93214 |
|
||||
| 93228 | 苗永粉 | 13773321176 | 92688 |
|
||||
| 93217 | 邹华 | 18796681777 | 93206 |
|
||||
| 93200 | 戴增中 | 13813104768 | 93193 |
|
||||
| 93194 | 姚焕桂 | 13773330344 | 93075 |
|
||||
| 93190 | 姜红爱 | 17715862910 | 93075 |
|
||||
| 93160 | 季安红 | 13913432863 | 93107 |
|
||||
| 93153 | 王祥 | 15380316138 | 92973 |
|
||||
| 93143 | 郑娟 | 17751330452 | 93075 |
|
||||
| 93142 | 李德荣 | 13813104919 | 93109 |
|
||||
|
||||
### 手工补充名单
|
||||
|
||||
| 用户ID | 昵称 | 联系方式 | 待清理未售商品数 |
|
||||
| --- | --- | --- | --- |
|
||||
| 92801 | 成宏梅 | 18751483086 | 3 |
|
||||
| 93011 | 李迎春 | 13505270568 | 3 |
|
||||
| 93032 | 沈宝军 | 13348149448 | 2 |
|
||||
| 93073 | 陈海霞 | 15152714200 | 1 |
|
||||
| 93078 | 顾晓燕 | 13151600166 | 1 |
|
||||
| 93120 | 于秀梅 | 13348140510 | 1 |
|
||||
| 93136 | 戴玉山 | 13813100018 | 1 |
|
||||
| 93147 | 陈小燕 | 18066016798 | 1 |
|
||||
| 93155 | 王锐 | 18952581561 | 1 |
|
||||
| 93185 | 王学梅 | 15150886020 | 1 |
|
||||
| 93193 | 相荣 | 18796692299 | 1 |
|
||||
| 93216 | 张萍 | 18252750442 | 1 |
|
||||
| 93218 | 李润芝 | 15050708588 | 1 |
|
||||
| 93248 | 董鲜 | 19533096227 | 1 |
|
||||
| 93284 | 仇云 | 17317753117 | 1 |
|
||||
| 93287 | 王珏 | 19741771099 | 1 |
|
||||
| 93290 | 段玉香 | 17751370387 | 1 |
|
||||
| 93295 | 季爱玲 | 18932366911 | 1 |
|
||||
| 93297 | 蔡先生 | 13952533248 | 1 |
|
||||
| 93301 | 毛天梅 | 18012327099 | 1 |
|
||||
| 93305 | 王素琴 | 13092025465 | 1 |
|
||||
| 93306 | 殷先生 | 15262252218 | 1 |
|
||||
| 93307 | 董先生 | 15252737658 | 1 |
|
||||
| 93315 | 朱继英 | 15800764854 | 1 |
|
||||
| 93318 | 王琴 | 15150881748 | 1 |
|
||||
| 93321 | 爱之香 | 15951439818 | 1 |
|
||||
| 93322 | 邓学美 | 13505254585 | 1 |
|
||||
| 93323 | 梁鹤贵 | 15050701288 | 1 |
|
||||
| 93325 | 李杰 | 15050708139 | 1 |
|
||||
| 93327 | 刘正娟 | 15062896288 | 1 |
|
||||
|
||||
### 合并后用户ID
|
||||
|
||||
- Excel:45 人
|
||||
- 手工补充:30 人
|
||||
- 重叠:0 人
|
||||
- 合并后:75 人
|
||||
|
||||
```sql
|
||||
SET @cleanup_user_ids = '92801,93011,93032,93073,93078,93120,93136,93142,93143,93147,93153,93155,93160,93185,93190,93193,93194,93200,93216,93217,93218,93228,93233,93238,93241,93248,93252,93253,93256,93260,93261,93262,93263,93265,93266,93267,93268,93269,93275,93277,93278,93280,93281,93282,93284,93285,93286,93287,93288,93290,93291,93292,93293,93295,93297,93298,93301,93302,93304,93305,93306,93307,93308,93310,93311,93312,93315,93317,93318,93320,93321,93322,93323,93325,93327';
|
||||
```
|
||||
|
||||
实际执行建议使用临时表承载 ID:
|
||||
|
||||
```sql
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_bosenyuan_cleanup_users;
|
||||
CREATE TEMPORARY TABLE tmp_bosenyuan_cleanup_users (
|
||||
id INT PRIMARY KEY
|
||||
);
|
||||
|
||||
INSERT INTO tmp_bosenyuan_cleanup_users (id) VALUES
|
||||
(92801),(93011),(93032),(93073),(93078),(93120),(93136),(93142),(93143),(93147),
|
||||
(93153),(93155),(93160),(93185),(93190),(93193),(93194),(93200),(93216),(93217),
|
||||
(93218),(93228),(93233),(93238),(93241),(93248),(93252),(93253),(93256),(93260),
|
||||
(93261),(93262),(93263),(93265),(93266),(93267),(93268),(93269),(93275),(93277),
|
||||
(93278),(93280),(93281),(93282),(93284),(93285),(93286),(93287),(93288),(93290),
|
||||
(93291),(93292),(93293),(93295),(93297),(93298),(93301),(93302),(93304),(93305),
|
||||
(93306),(93307),(93308),(93310),(93311),(93312),(93315),(93317),(93318),(93320),
|
||||
(93321),(93322),(93323),(93325),(93327);
|
||||
```
|
||||
|
||||
## 当前库只读统计
|
||||
|
||||
统计时间:2026-06-04,库:`miao80 / yangtangyoupin`。
|
||||
|
||||
| 表 / 范围 | 命中行数 |
|
||||
| --- | ---: |
|
||||
| `wa_users` | 75 |
|
||||
| `eb_user` | 74 |
|
||||
| `wa_merchandise` | 1698 |
|
||||
| `wa_order` seller 或 buyer 命中 | 2609 |
|
||||
| `wa_selfbonus_log` | 1627 |
|
||||
| `wa_sharebonus_log` | 1545 |
|
||||
| `wa_coupon_log` | 198 |
|
||||
| `wa_withdraw` | 44 |
|
||||
| `wa_money_log` | 0 |
|
||||
| `wa_address` | 80 |
|
||||
| `wa_alipay` | 65 |
|
||||
| `wa_bank` | 1 |
|
||||
| `eb_user_integral_record` | 1666 |
|
||||
| `eb_user_address` | 73 |
|
||||
| `eb_user_bill` | 47 |
|
||||
| `eb_user_brokerage_record` | 0 |
|
||||
| `eb_user_experience_record` | 47 |
|
||||
| `eb_user_extract` | 0 |
|
||||
| `eb_user_level` | 0 |
|
||||
| `eb_user_recharge` | 0 |
|
||||
| `eb_user_sign` | 0 |
|
||||
| `eb_user_token` | 0 |
|
||||
| `eb_user_visit_record` | 12 |
|
||||
| `eb_store_cart` | 0 |
|
||||
| `eb_store_coupon_user` | 0 |
|
||||
| `eb_store_order` | 47 |
|
||||
| `eb_sms_record` | 0 |
|
||||
|
||||
## 特殊检查
|
||||
|
||||
### `wa_users` 与 `eb_user` 不一致
|
||||
|
||||
`wa_users` 命中 75 人,`eb_user` 命中 74 人。缺失的 `eb_user`:
|
||||
|
||||
| 用户ID | 昵称 | 联系方式 |
|
||||
| --- | --- | --- |
|
||||
| 93305 | 王素琴 | 13092025465 |
|
||||
|
||||
### 删除名单外仍指向待删用户的推荐关系
|
||||
|
||||
删除前需要决定是否置空为 `0`,或改挂到指定上级。
|
||||
|
||||
`wa_users.pid` 外部引用 1 条:
|
||||
|
||||
| 用户ID | 昵称 | 联系方式 | 当前上级ID |
|
||||
| --- | --- | --- | --- |
|
||||
| 93036 | 赵玉文 | 18091856709 | 92801 |
|
||||
|
||||
`eb_user.spread_uid` 外部引用 14 条:
|
||||
|
||||
| uid | account | nickname | phone | spread_uid |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 92881 | 18115115512 | 成明强 | 18115115512 | 92801 |
|
||||
| 92903 | 18036263863 | 徐丹 | 18036263863 | 92801 |
|
||||
| 92940 | 13773342930 | 朱友华 | 13773342930 | 92801 |
|
||||
| 92976 | 13773334985 | 何军健 | 13773334985 | 92801 |
|
||||
| 92983 | 15052568923 | 柴秉丹 | 15052568923 | 92801 |
|
||||
| 93009 | 13092025465 | 王素琴 | 13092025465 | 92801 |
|
||||
| 93030 | 15298470085 | 张琴 | 15298470085 | 93011 |
|
||||
| 93036 | 18091856709 | 赵玉文 | 18091856709 | 92801 |
|
||||
| 93094 | 15952533800 | 朱鹤峰 | 15952533800 | 92801 |
|
||||
| 93105 | 18626221249 | 姚春峰 | 18626221249 | 93078 |
|
||||
| 93133 | 19352900319 | 193****0319 | 19352900319 | 93011 |
|
||||
| 93138 | 18952533228 | 189****3228 | 18952533228 | 93011 |
|
||||
| 93146 | 15252502175 | 艾保兄 | 15252502175 | 93011 |
|
||||
| 93148 | 13601446282 | 许梅 | 13601446282 | 93011 |
|
||||
|
||||
建议处理方式:
|
||||
|
||||
```sql
|
||||
UPDATE wa_users
|
||||
SET pid = 0
|
||||
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
UPDATE eb_user
|
||||
SET spread_uid = 0, spread_time = NULL
|
||||
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
```
|
||||
|
||||
如业务要求保留推荐关系,需要先确认新的承接上级 ID,再把上面 SQL 的 `0` 替换为指定 ID。
|
||||
|
||||
## 执行前校验 SQL
|
||||
|
||||
```sql
|
||||
SELECT 'wa_users', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_merchandise', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_order_seller_or_buyer', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_selfbonus_log', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_sharebonus_log', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_coupon_log', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_withdraw', COUNT(*) FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_address', COUNT(*) FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_alipay', COUNT(*) FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_bank', COUNT(*) FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_integral_record', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_address', COUNT(*) FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_bill', COUNT(*) FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_experience_record', COUNT(*) FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_visit_record', COUNT(*) FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_store_order', COUNT(*) FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
```
|
||||
|
||||
## 备份方案
|
||||
|
||||
执行删除前,先在同库创建带日期后缀的备份表。备份表名建议固定使用本次任务时间戳:`20260604`。
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_users AS
|
||||
SELECT * FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user AS
|
||||
SELECT * FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_merchandise AS
|
||||
SELECT * FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_order AS
|
||||
SELECT * FROM wa_order
|
||||
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_selfbonus_log AS
|
||||
SELECT * FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_sharebonus_log AS
|
||||
SELECT * FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_coupon_log AS
|
||||
SELECT * FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_withdraw AS
|
||||
SELECT * FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_address AS
|
||||
SELECT * FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_alipay AS
|
||||
SELECT * FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_bank AS
|
||||
SELECT * FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_integral_record AS
|
||||
SELECT * FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_address AS
|
||||
SELECT * FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_bill AS
|
||||
SELECT * FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_experience_record AS
|
||||
SELECT * FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_visit_record AS
|
||||
SELECT * FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_store_order AS
|
||||
SELECT * FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
```
|
||||
|
||||
## 删除执行方案
|
||||
|
||||
建议用事务执行;执行前确认业务低峰,并暂停相关同步任务或后台定时任务。
|
||||
|
||||
```sql
|
||||
START TRANSACTION;
|
||||
|
||||
-- 1. 先解除删除名单外用户对待删用户的推荐引用
|
||||
UPDATE wa_users
|
||||
SET pid = 0
|
||||
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
UPDATE eb_user
|
||||
SET spread_uid = 0, spread_time = NULL
|
||||
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
-- 2. 删除寄卖业务关联数据
|
||||
DELETE FROM wa_order
|
||||
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_merchandise
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_selfbonus_log
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_sharebonus_log
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_coupon_log
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_withdraw
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_money_log
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_address
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_alipay
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_bank
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
-- 3. 删除积分商城用户关联数据
|
||||
DELETE FROM eb_user_integral_record
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_address
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_bill
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_brokerage_record
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_experience_record
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_extract
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_level
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_recharge
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_sign
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_token
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_user_visit_record
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_store_cart
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_store_coupon_user
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_store_order
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM eb_sms_record
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
-- 4. 最后删除用户主表
|
||||
DELETE FROM eb_user
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
DELETE FROM wa_users
|
||||
WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
-- 5. 事务内复核,确认结果符合预期后再提交
|
||||
SELECT 'wa_users_remaining', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_remaining', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_merchandise_remaining', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_order_remaining', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_selfbonus_log_remaining', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_sharebonus_log_remaining', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'wa_coupon_log_remaining', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'eb_user_integral_record_remaining', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'external_wa_pid_refs_remaining', COUNT(*) FROM wa_users WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
UNION ALL SELECT 'external_eb_spread_refs_remaining', COUNT(*) FROM eb_user WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
-- 确认无误后:
|
||||
COMMIT;
|
||||
|
||||
-- 如结果异常:
|
||||
-- ROLLBACK;
|
||||
```
|
||||
|
||||
## 执行后复核
|
||||
|
||||
```sql
|
||||
SELECT COUNT(*) AS wa_users_remaining
|
||||
FROM wa_users
|
||||
WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
SELECT COUNT(*) AS eb_user_remaining
|
||||
FROM eb_user
|
||||
WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
SELECT COUNT(*) AS merchandise_remaining
|
||||
FROM wa_merchandise
|
||||
WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
SELECT COUNT(*) AS order_remaining
|
||||
FROM wa_order
|
||||
WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users)
|
||||
OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
SELECT COUNT(*) AS wa_pid_refs_remaining
|
||||
FROM wa_users
|
||||
WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
|
||||
SELECT COUNT(*) AS eb_spread_refs_remaining
|
||||
FROM eb_user
|
||||
WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users);
|
||||
```
|
||||
|
||||
## 回滚思路
|
||||
|
||||
如果已经 `COMMIT`,只能通过备份表恢复。恢复时应优先恢复用户主表,再恢复关联表:
|
||||
|
||||
1. `wa_users`
|
||||
2. `eb_user`
|
||||
3. `wa_*` 业务表
|
||||
4. `eb_user_*` / `eb_store_*` 关联表
|
||||
|
||||
示例:
|
||||
|
||||
```sql
|
||||
INSERT INTO wa_users
|
||||
SELECT * FROM bak_20260604_bsy_wa_users;
|
||||
|
||||
INSERT INTO eb_user
|
||||
SELECT * FROM bak_20260604_bsy_eb_user;
|
||||
```
|
||||
|
||||
恢复前需要先确认目标主键是否已经被重新占用。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 本文档仅为清理方案,尚未执行删除。
|
||||
- `wa_merchandise` 中手工补充名单此前核查到的 35 条未售商品均为隐藏状态:`status = 1`、`is_show = 0`。
|
||||
- `wa_order` 删除条件必须同时覆盖 `seller_id` 和 `buyer_id`。
|
||||
- 删除主表前必须先处理名单外用户对待删用户的 `pid` / `spread_uid` 引用。
|
||||
- 执行完成后,如系统使用 Redis 缓存用户、配置或统计数据,需要按线上运维流程清理相关缓存或重启服务。
|
||||
|
||||
## 执行结果
|
||||
|
||||
- 执行时间:2026-06-04
|
||||
- 执行库:`miao80 / yangtangyoupin`
|
||||
- 清理 ID 表:`bak_20260604_bsy_cleanup_users`
|
||||
- 清理用户数:75
|
||||
- 状态:已执行并 `COMMIT`
|
||||
|
||||
### 备份表实际行数
|
||||
|
||||
| 备份表 | 行数 |
|
||||
| --- | ---: |
|
||||
| `bak_20260604_bsy_cleanup_users` | 75 |
|
||||
| `bak_20260604_bsy_wa_users` | 75 |
|
||||
| `bak_20260604_bsy_eb_user` | 74 |
|
||||
| `bak_20260604_bsy_wa_merchandise` | 1698 |
|
||||
| `bak_20260604_bsy_wa_order` | 2609 |
|
||||
| `bak_20260604_bsy_wa_selfbonus_log` | 1627 |
|
||||
| `bak_20260604_bsy_wa_sharebonus_log` | 1545 |
|
||||
| `bak_20260604_bsy_wa_coupon_log` | 198 |
|
||||
| `bak_20260604_bsy_wa_withdraw` | 44 |
|
||||
| `bak_20260604_bsy_wa_address` | 80 |
|
||||
| `bak_20260604_bsy_wa_alipay` | 65 |
|
||||
| `bak_20260604_bsy_wa_bank` | 1 |
|
||||
| `bak_20260604_bsy_wa_money_log` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_integral_record` | 1666 |
|
||||
| `bak_20260604_bsy_eb_user_address` | 73 |
|
||||
| `bak_20260604_bsy_eb_user_bill` | 47 |
|
||||
| `bak_20260604_bsy_eb_user_brokerage_record` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_experience_record` | 47 |
|
||||
| `bak_20260604_bsy_eb_user_extract` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_level` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_recharge` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_sign` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_token` | 0 |
|
||||
| `bak_20260604_bsy_eb_user_visit_record` | 12 |
|
||||
| `bak_20260604_bsy_eb_store_cart` | 0 |
|
||||
| `bak_20260604_bsy_eb_store_coupon_user` | 0 |
|
||||
| `bak_20260604_bsy_eb_store_order` | 47 |
|
||||
| `bak_20260604_bsy_eb_sms_record` | 0 |
|
||||
|
||||
### 独立复核结果
|
||||
|
||||
| 复核项 | 剩余行数 |
|
||||
| --- | ---: |
|
||||
| `wa_users` | 0 |
|
||||
| `eb_user` | 0 |
|
||||
| `wa_merchandise` | 0 |
|
||||
| `wa_order` seller 或 buyer 命中 | 0 |
|
||||
| `wa_selfbonus_log` | 0 |
|
||||
| `wa_sharebonus_log` | 0 |
|
||||
| `wa_coupon_log` | 0 |
|
||||
| `wa_withdraw` | 0 |
|
||||
| `wa_address` | 0 |
|
||||
| `wa_alipay` | 0 |
|
||||
| `wa_bank` | 0 |
|
||||
| `eb_user_integral_record` | 0 |
|
||||
| `eb_user_address` | 0 |
|
||||
| `eb_user_bill` | 0 |
|
||||
| `eb_user_experience_record` | 0 |
|
||||
| `eb_user_visit_record` | 0 |
|
||||
| `eb_store_order` | 0 |
|
||||
| 删除名单外 `wa_users.pid` 指向待删用户 | 0 |
|
||||
| 删除名单外 `eb_user.spread_uid` 指向待删用户 | 0 |
|
||||
|
||||
说明:`information_schema.TABLES.TABLE_ROWS` 对 InnoDB 表可能是估算值;本节备份行数以执行时 `COUNT(*)` 输出为准。
|
||||
61
docs/com-byhlc112-data-imgration.md
Normal file
61
docs/com-byhlc112-data-imgration.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# 公司名称:宝应宏煜春商贸
|
||||
|
||||
host ip: 39.97.236.112
|
||||
|
||||
## mysql数据库配置信息
|
||||
|
||||
datasource:
|
||||
rds: rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com
|
||||
name: byhlc112
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
|
||||
## 数据清理任务
|
||||
|
||||
- **数据范围**:`wa_users.id` / `eb_user.uid` 保留名单:
|
||||
`92801, 93011, 93032, 93073, 93076, 93078, 93094, 93120, 93136, 93147, 93155, 93185, 93193, 93216, 93218, 93248, 93284, 93287, 93290, 93295, 93297, 93301, 93305, 93306, 93307, 93315, 93318, 93321, 93322, 93323, 93325, 93327, 93328, 93329`
|
||||
|
||||
- 保留wa_users表中id在用户id数据范围的 ,删除其余用户数据
|
||||
- 保留eb_user表中uid在用户id数据范围的 ,删除其余用户数据
|
||||
|
||||
- wa_order
|
||||
清空wa_order表中数据
|
||||
|
||||
- wa_merchandise
|
||||
从源数据dump文件中提取“created_at >= 2026-05-28”并且seller_id或buyer_id在用户id数据范围的寄售商品,删除其余数据
|
||||
(当前库表字段为 `user_id` 表示卖家,实现时按 `user_id` 与日期条件过滤。)
|
||||
|
||||
- wa_selfbonus_log
|
||||
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||
|
||||
- wa_sharebonus_log
|
||||
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||
|
||||
- wa_coupon_log
|
||||
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||
|
||||
- wa_withdraw
|
||||
清空wa_withdraw表中数据
|
||||
|
||||
- eb_store_order
|
||||
清空eb_store_order表中数据
|
||||
|
||||
- eb_user_integral_record
|
||||
只保留用户在名单内的记录;表字段为 `uid`(与 `wa_users.id` / `eb_user.uid` 对应),实现按 `uid` 过滤。
|
||||
|
||||
## 执行结果
|
||||
|
||||
- 已于 **2026-05-30** 按当前保留名单执行清理并 `COMMIT`。
|
||||
- 结果:`wa_order`、`wa_withdraw`、`eb_store_order` 已清空。
|
||||
- 保留后行数:
|
||||
- `wa_users`:32
|
||||
- `eb_user`:32
|
||||
- `wa_selfbonus_log`:1285
|
||||
- `wa_sharebonus_log`:1536
|
||||
- `wa_coupon_log`:180
|
||||
- `eb_user_integral_record`:1321
|
||||
- `wa_merchandise`:35
|
||||
|
||||
## 相关文件
|
||||
|
||||
- 新公司初始会员信息: '/Users/mac/Works26/miao-july/byhlc/新团队成员名单.xlsx'
|
||||
59
docs/com-byhlc112.md
Normal file
59
docs/com-byhlc112.md
Normal file
@@ -0,0 +1,59 @@
|
||||
## 公司名称: 宝应宏煜春商贸, host ip: 39.97.236.112
|
||||
|
||||
|
||||
### **修改任务**
|
||||
|
||||
- 新建分支byhlc112,合并byhlc112分支的最新代码到该分支,并根据上述信息修改相关需要变更项,使符合该新公司项目环境
|
||||
- 在新建分支下修改
|
||||
|
||||
---
|
||||
|
||||
### mysql数据库配置
|
||||
|
||||
- mysql数据库使用阿里云rds:rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com
|
||||
- rds中项目数据库名:byhlc112
|
||||
|
||||
---
|
||||
|
||||
### backend/crmeb-front模块变更
|
||||
|
||||
- 1. profile: byhlc112
|
||||
- 2. profile file: application-byhlc112.yml, mysql连接信息修改,redis主机ip修改。
|
||||
- 3. **PDF合同模板文件路径**:pdf/sign_contract_byhlc112.pdf
|
||||
- 4. 用户PDF合同url地址前缀/落库域名:https://h5y2c.com/
|
||||
- 5. imagePath: /www/wwwroot/h5y2c.com/
|
||||
|
||||
### uniapp前端配置变更
|
||||
|
||||
- 1. 积分商城domain:https://jf.h5y2c.com
|
||||
- 2. 抢购页面跳转地址:https://h5y2c.com
|
||||
- 3. **PDF合同预览文件路径**: /static/sign_contract_byhlc112.pdf
|
||||
|
||||
|
||||
---
|
||||
|
||||
### backend/crmeb-admin模块变更
|
||||
|
||||
- 1. profile: byhlc112
|
||||
- 2. profile file: application-byhlc112.yml, mysql和redis主机ip修改,sync: source-id: shop_16, target-mer-id: 16
|
||||
|
||||
### 积分商城后台backend-adminend配置变更
|
||||
|
||||
- 1. backend-adminend/.env.development文件中VUE_APP_BASE_API改为https://jf.h5y2c.com
|
||||
- 2. backend-adminend/.env.production文件中VUE_APP_BASE_API改为https://jf.h5y2c.com
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 相关文件
|
||||
|
||||
、、、启动积分商城api服务
|
||||
cd /www/wwwroot/javaapi
|
||||
nohup java -Xms128m -Xmx256m -jar miao-front-2.2.jar > front.log & tail -f front.log
|
||||
、、、
|
||||
|
||||
、、、启动积分商城后台api服务
|
||||
cd /www/wwwroot/javaapi
|
||||
nohup java -Xms128m -Xmx256m -jar miao-admin-2.2.jar > admin.log & tail -f admin.log
|
||||
、、、
|
||||
121
docs/com-czcf82-data-delete-0601.md
Normal file
121
docs/com-czcf82-data-delete-0601.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# 公司名称:池州春芳商贸
|
||||
|
||||
## mysql数据库配置信息
|
||||
|
||||
host ip: 121.43.134.82
|
||||
datasource:
|
||||
name: yangtangyoupin
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
|
||||
|
||||
## 数据清理任务
|
||||
|
||||
- **数据范围**:用户 id 集(`eb_user.uid` 与 `wa_users.id` 一致):92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251
|
||||
|
||||
- 说明:之前截图中的 C/D/E 层级用户已与本次 H/K 层级名单按 `uid` 合并,当前范围为唯一 `uid` 集。
|
||||
|
||||
| 姓名 | 层级 | 用户ID | 上级ID | 账号 |
|
||||
| --- | --- | ---: | ---: | --- |
|
||||
| 徐圣方 | H | 93106 | 93092 | 15249924088 |
|
||||
| 周祥 | H | 93210 | 93106 | 18095665910 |
|
||||
| 江玲 | H | 93217 | 93092 | 18156673857 |
|
||||
| 江燕 | H | 93216 | 93092 | 18056699143 |
|
||||
| 周松琴 | H | 93248 | 93210 | 13395663023 |
|
||||
| 黄秀珍 | H | 93185 | 93169 | 13801810233 |
|
||||
| 袁清弟 | H | 93182 | 93169 | 18016367923 |
|
||||
| 张本汉 | H | 93205 | 93124 | 13965915911 |
|
||||
| 吴兆燕 | H | 93204 | 93124 | 13615660918 |
|
||||
| 吴海根 | H | 93200 | 93171 | 15655976789 |
|
||||
| 陈巧玲 | H | 93207 | 93124 | 18855619191 |
|
||||
| 吴美云 | H | 93213 | 93203 | 18056682196 |
|
||||
| 朱华兵 | H | 93242 | 93203 | 17356611916 |
|
||||
| 王传 | H | 93251 | 93124 | 18956675871 |
|
||||
| 汪占云 | H | 93227 | 93167 | 15249909910 |
|
||||
| 潘运生 | H | 93222 | 93167 | 18656668096 |
|
||||
| 陆惊蕾 | H | 93119 | 93105 | 15905662876 |
|
||||
| 徐池英 | H | 93134 | 93119 | 18715478619 |
|
||||
| 董金权 | H | 93156 | 93119 | 13905663559 |
|
||||
| 吴可佳 | H | 93173 | 93134 | 15715669883 |
|
||||
| 薛丽萍 | H | 93187 | 93119 | 18905666240 |
|
||||
| 陶会丽 | H | 93188 | 93119 | 18056643607 |
|
||||
| 朱向东 | H | 93196 | 93119 | 18956692810 |
|
||||
| 李华 | H | 93198 | 93119 | 13865669670 |
|
||||
| 胡贵宾 | H | 93190 | 93133 | 13866451818 |
|
||||
| 纪贞凤 | H | 93214 | 93156 | 13856695745 |
|
||||
| 曹四清 | H | 93220 | 93134 | 15955660777 |
|
||||
| 舒妍 | H | 93212 | 93187 | 17730497790 |
|
||||
| 陶丽芳 | H | 93221 | 93188 | 15385460258 |
|
||||
| 余绍光 | H | 93226 | 93173 | 13956891985 |
|
||||
| 方云云 | H | 93233 | 93198 | 13965929979 |
|
||||
| 刘根枝 | H | 93235 | 93190 | 17756625293 |
|
||||
| 汪能学 | H | 93245 | 93119 | 13965941820 |
|
||||
| 何小伍 | H | 93240 | 93119 | 13093492768 |
|
||||
| 王芳 | H | 93132 | 93119 | 15956625685 |
|
||||
| 章旭东 | H | 93166 | 93132 | 13365666600 |
|
||||
| 张乔林 | H | 93183 | 93132 | 18156617167 |
|
||||
| 许恩情 | H | 93172 | 93132 | 15856641370 |
|
||||
| 芮爱梅 | H | 93197 | 93132 | 13905669269 |
|
||||
| 宁东梅 | H | 93195 | 93132 | 18056647260 |
|
||||
| 王珍 | H | 93193 | 93132 | 13355668168 |
|
||||
| 胡春曲 | H | 93209 | 93172 | 15856637686 |
|
||||
| 郑雁 | H | 93211 | 93132 | 18956692260 |
|
||||
| 汤亚丽 | H | 93218 | 93193 | 18056635288 |
|
||||
| 金花鸡 | H | 93215 | 93193 | 18005663869 |
|
||||
| 宁美琴 | H | 93224 | 93195 | 13645665392 |
|
||||
| 张晓玲 | H | 93239 | 93183 | 18256624325 |
|
||||
| 杨艳霞 | H | 93230 | 93215 | 18856611108 |
|
||||
| 邓本琼 | H | 93133 | 93119 | 13868989499 |
|
||||
| 张丽 | H | 93163 | 93133 | 15805662996 |
|
||||
| 洪安荣 | H | 93191 | 93133 | 18005666645 |
|
||||
| 章丽君 | H | 93225 | 93163 | 13645665392 |
|
||||
| 侯美枝 | H | 93199 | 93133 | 19855762520 |
|
||||
| 胡红琴 | K | 93171 | 93105 | 15212465866 |
|
||||
| 钟真发 | K | 93208 | 93171 | 15305599997 |
|
||||
| 洪军 | K | 93231 | 93208 | 18955917212 |
|
||||
| 王兵启 | K | 92827 | 93195 | 18956691177 |
|
||||
| 胡晓彩 | K | 92738 | 92544 | 17756627812 |
|
||||
| 柯美燕 | K | 93140 | 92827 | 13635661721 |
|
||||
| 王珍华 | K | 93150 | 92738 | 13856372733 |
|
||||
|
||||
- 删除用户数据范围内的如下表的相关数据,同时做好数据备份
|
||||
- wa_users表中id在用户id数据范围的
|
||||
- eb_user表中uid在用户id数据范围的
|
||||
- wa_order
|
||||
- wa_merchandise
|
||||
- wa_selfbonus_log
|
||||
- wa_sharebonus_log
|
||||
- wa_coupon_log
|
||||
- wa_withdraw
|
||||
- eb_store_order
|
||||
- eb_user_integral_record
|
||||
|
||||
|
||||
|
||||
## 执行脚本
|
||||
|
||||
- `docs/sql/com-czcf82-data-delete-0601.sql`
|
||||
- `docs/sql/com-czcf82-data-delete-0601-2.sql`
|
||||
|
||||
## 执行结果
|
||||
|
||||
- 已于 2026-06-01 执行完成(首次截图范围 31 人;当前数据范围已按后续截图合并,旧 C/D/E 与新 H/K 以唯一 `uid` 口径汇总)。
|
||||
- 清理后回查结果:各目标表中对应用户数据均为 0 条。
|
||||
- 备份表已创建,行数分别为:
|
||||
- `wa_users_bak_20260601_170641`:31
|
||||
- `eb_user_bak_20260601_170641`:31
|
||||
- `wa_order_bak_20260601_170641`:975
|
||||
- `wa_merchandise_bak_20260601_170641`:675
|
||||
- `wa_selfbonus_log_bak_20260601_170641`:818
|
||||
- `wa_sharebonus_log_bak_20260601_170641`:793
|
||||
- `wa_coupon_log_bak_20260601_170641`:194
|
||||
- `wa_withdraw_bak_20260601_170641`:9
|
||||
- `eb_store_order_bak_20260601_170641`:88
|
||||
- `eb_user_integral_record_bak_20260601_170641`:932
|
||||
- 已于 2026-06-01 完成第二轮清理,新增范围对应数据回查也均为 0 条。
|
||||
- 第二轮备份表已创建,后缀为 `20260601_210625`。
|
||||
|
||||
|
||||
## 相关文件
|
||||
|
||||
-
|
||||
@@ -1,47 +0,0 @@
|
||||
# 积分商城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` | 池州瑞棠商贸 |
|
||||
| `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` |
|
||||
| `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` |
|
||||
|
||||
|
||||
|
||||
|
||||
50
docs/sql/com-czcf82-data-delete-0601-2.sql
Normal file
50
docs/sql/com-czcf82-data-delete-0601-2.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- 池州春芳商贸二次数据清理
|
||||
-- 执行时间:2026-06-01 21:06:25
|
||||
-- 数据范围:92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_users_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_users WHERE id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_user_bak_20260601_210625 AS
|
||||
SELECT * FROM eb_user WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_order_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_order
|
||||
WHERE seller_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251)
|
||||
OR buyer_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_merchandise_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_merchandise WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_selfbonus_log_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_selfbonus_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_sharebonus_log_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_sharebonus_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_coupon_log_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_coupon_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_withdraw_bak_20260601_210625 AS
|
||||
SELECT * FROM wa_withdraw WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_store_order_bak_20260601_210625 AS
|
||||
SELECT * FROM eb_store_order WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_user_integral_record_bak_20260601_210625 AS
|
||||
SELECT * FROM eb_user_integral_record WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
DELETE FROM wa_users WHERE id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM eb_user WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_order WHERE seller_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251) OR buyer_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_merchandise WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_selfbonus_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_sharebonus_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_coupon_log WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM wa_withdraw WHERE user_id IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM eb_store_order WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
DELETE FROM eb_user_integral_record WHERE uid IN (92738,92827,93106,93119,93132,93133,93134,93140,93150,93156,93163,93166,93171,93172,93173,93182,93183,93185,93187,93188,93190,93191,93193,93195,93196,93197,93198,93199,93200,93204,93205,93207,93208,93209,93210,93211,93212,93213,93214,93215,93216,93217,93218,93220,93221,93222,93224,93225,93226,93227,93230,93231,93233,93235,93239,93240,93242,93245,93248,93251);
|
||||
|
||||
COMMIT;
|
||||
52
docs/sql/com-czcf82-data-delete-0601.sql
Normal file
52
docs/sql/com-czcf82-data-delete-0601.sql
Normal file
@@ -0,0 +1,52 @@
|
||||
-- 池州春芳商贸数据清理
|
||||
-- 执行时间:2026-06-01 17:06:41
|
||||
-- 数据范围:93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245
|
||||
|
||||
SET @scope_sql := '93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245';
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_users_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_users WHERE id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_user_bak_20260601_170641 AS
|
||||
SELECT * FROM eb_user WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_order_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_order
|
||||
WHERE seller_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245)
|
||||
OR buyer_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_merchandise_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_merchandise WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_selfbonus_log_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_selfbonus_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_sharebonus_log_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_sharebonus_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_coupon_log_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_coupon_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS wa_withdraw_bak_20260601_170641 AS
|
||||
SELECT * FROM wa_withdraw WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_store_order_bak_20260601_170641 AS
|
||||
SELECT * FROM eb_store_order WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS eb_user_integral_record_bak_20260601_170641 AS
|
||||
SELECT * FROM eb_user_integral_record WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
DELETE FROM wa_users WHERE id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM eb_user WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_order WHERE seller_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245) OR buyer_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_merchandise WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_selfbonus_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_sharebonus_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_coupon_log WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM wa_withdraw WHERE user_id IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM eb_store_order WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
DELETE FROM eb_user_integral_record WHERE uid IN (93119,93132,93133,93134,93156,93163,93172,93173,93183,93187,93188,93190,93191,93193,93195,93197,93198,93199,93209,93212,93214,93215,93220,93221,93224,93226,93230,93235,93239,93240,93245);
|
||||
|
||||
COMMIT;
|
||||
68
outputs/screenshot_process_table/build_process_excel.py
Normal file
68
outputs/screenshot_process_table/build_process_excel.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from openpyxl import Workbook, load_workbook
|
||||
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
|
||||
from openpyxl.utils import get_column_letter
|
||||
|
||||
|
||||
OUTPUT = "outputs/screenshot_process_table/小程序上线流程表.xlsx"
|
||||
|
||||
headers = ["阶段", "任务", "产出物", "负责人", "建议时长"]
|
||||
rows = [
|
||||
["需求与原型", "需求澄清、功能清单、原型评审", "PRD、原型图", "产品", "2~3天"],
|
||||
["UI设计", "界面设计、切图标注", "设计稿、切图", "UI", "3~4天"],
|
||||
["开发", "前端+后端联调、自测", "代码包", "前端/后端", "6~8天"],
|
||||
["测试与修复", "功能测试、兼容性、回归", "测试报告", "测试", "3~4天"],
|
||||
["小程序提审", "提交代码、填写审核信息", "审核中", "产品/运营", "1~7天(官方不等)"],
|
||||
["发布上线", "审核通过后全量/灰度发布", "线上版本", "产品/运营", "1天"],
|
||||
]
|
||||
|
||||
wb = Workbook()
|
||||
ws = wb.active
|
||||
ws.title = "流程表"
|
||||
|
||||
ws.append(headers)
|
||||
for row in rows:
|
||||
ws.append(row)
|
||||
|
||||
header_fill = PatternFill("solid", fgColor="F3F6FA")
|
||||
grid = Side(style="thin", color="D9DEE7")
|
||||
border = Border(bottom=grid)
|
||||
|
||||
for cell in ws[1]:
|
||||
cell.font = Font(name="Arial", bold=True, size=12, color="111827")
|
||||
cell.fill = header_fill
|
||||
cell.alignment = Alignment(horizontal="left", vertical="center")
|
||||
cell.border = border
|
||||
|
||||
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
|
||||
for cell in row:
|
||||
cell.font = Font(name="Arial", size=11, color="111827")
|
||||
cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)
|
||||
cell.border = border
|
||||
|
||||
widths = {
|
||||
"A": 16,
|
||||
"B": 34,
|
||||
"C": 22,
|
||||
"D": 16,
|
||||
"E": 22,
|
||||
}
|
||||
|
||||
for col, width in widths.items():
|
||||
ws.column_dimensions[col].width = width
|
||||
|
||||
for row_idx in range(1, ws.max_row + 1):
|
||||
ws.row_dimensions[row_idx].height = 28
|
||||
|
||||
ws.freeze_panes = "A2"
|
||||
ws.auto_filter.ref = f"A1:{get_column_letter(ws.max_column)}{ws.max_row}"
|
||||
|
||||
wb.save(OUTPUT)
|
||||
|
||||
check = load_workbook(OUTPUT)
|
||||
sheet = check["流程表"]
|
||||
assert sheet.max_row == 7
|
||||
assert sheet.max_column == 5
|
||||
assert sheet["A2"].value == "需求与原型"
|
||||
assert sheet["E6"].value == "1~7天(官方不等)"
|
||||
|
||||
print(OUTPUT)
|
||||
@@ -454,7 +454,7 @@ export function uploadFile(filePath, uploadUrl = 'upload/image') {
|
||||
});
|
||||
}
|
||||
|
||||
export function uploadUserImage(filePath, pid, model = 'user') {
|
||||
export function uploadUserImage(filePath, userId, model = 'user') {
|
||||
return new Promise((resolve, reject) => {
|
||||
const token = uni.getStorageSync('token');
|
||||
uni.uploadFile({
|
||||
@@ -466,7 +466,7 @@ export function uploadUserImage(filePath, pid, model = 'user') {
|
||||
},
|
||||
formData: {
|
||||
model,
|
||||
pid
|
||||
userId
|
||||
},
|
||||
success: (res) => {
|
||||
try {
|
||||
@@ -560,4 +560,3 @@ export default {
|
||||
uploadFile,
|
||||
uploadUserImage
|
||||
};
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
// let domain = 'https://jfanyue.szxingming.com'
|
||||
// let domain = 'https://jf.wenjinhui.com'
|
||||
// let domain = 'https://jjy-jf.fwxgpt.com'
|
||||
// czleilei240 项目
|
||||
let domain = 'https://leilei-jf.czchunfang.com'
|
||||
// byhlc112 项目
|
||||
let domain = 'https://jf.h5y2c.com'
|
||||
// let domain = 'https://jf.jinyawen.com'
|
||||
// let domain = 'https://jf.hapengran.com'
|
||||
// let domain = 'https://jjy-jf.uj345.com'
|
||||
@@ -19,7 +19,7 @@ module.exports = {
|
||||
// HTTP_REQUEST_URL:'',
|
||||
HTTP_REQUEST_URL: domain,
|
||||
// H5商城地址
|
||||
HTTP_H5_URL: 'https://leilei-jf.czchunfang.com',
|
||||
HTTP_H5_URL: 'https://jf.h5y2c.com',
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
HTTP_REQUEST_URL:domain,
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
pdfUrl: '/static/sign_contract_czleilei240.pdf',
|
||||
pdfUrl: '/static/sign_contract_byhlc112.pdf',
|
||||
userId: '',
|
||||
isMobile: false,
|
||||
usePdfJs: false,
|
||||
@@ -436,4 +436,3 @@ export default {
|
||||
box-shadow: 0 8rpx 20rpx rgba(255, 45, 45, 0.25);
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -343,12 +343,12 @@ export default {
|
||||
// window.location.href = 'https://shop.wenjinhui.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://leilei.czchunfang.com/?#/pages/personal/index'
|
||||
window.location.href = 'https://h5y2c.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://leilei.czchunfang.com/?#/pages/personal/index')
|
||||
url: '/pages/web-view/index?url=' + encodeURIComponent('https://h5y2c.com/?#/pages/personal/index')
|
||||
})
|
||||
// #endif
|
||||
},
|
||||
@@ -921,4 +921,3 @@ export default {
|
||||
line-height: 48rpx;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ export default {
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
const url = options && options.url ? decodeURIComponent(options.url) : '/static/sign_contract_czleilei240.pdf'
|
||||
const url = options && options.url ? decodeURIComponent(options.url) : '/static/sign_contract_byhlc112.pdf'
|
||||
this.pdfUrl = url
|
||||
},
|
||||
|
||||
@@ -70,4 +70,3 @@ export default {
|
||||
box-shadow: 0 8rpx 20rpx rgba(255, 45, 45, 0.25);
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@ export default {
|
||||
// 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://leilei.czchunfang.com/?#/pages/rushing/index' + (this.userId ? ('?user_id=' + this.userId) : '')
|
||||
window.location.href = 'https://h5y2c.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)
|
||||
// 返回签名信息给上一页面
|
||||
@@ -498,4 +498,3 @@ export default {
|
||||
.btn.primary { background: #FF2D2D; }
|
||||
.btn-text { color: #fff; font-size: 28rpx; }
|
||||
</style>
|
||||
|
||||
|
||||
BIN
single_uniapp22miao/static/sign_contract_byhlc112.pdf
Normal file
BIN
single_uniapp22miao/static/sign_contract_byhlc112.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user