5 Commits

Author SHA1 Message Date
danaisuiyuan
01e373faf6 docs: add bosenyuan miao80 cleanup record 2026-06-04 22:52:38 +08:00
danaisuiyuan
6b940e424c chore: update byhlc112 deployment domains 2026-06-04 09:01:52 +08:00
danaisuiyuan
5762f4e762 docs: add czcf82 cleanup records 2026-06-01 21:17:19 +08:00
danaisuiyuan
718d8c5a3c fix byhlc112 contract upload flow 2026-05-30 20:08:25 +08:00
danaisuiyuan
9eac385378 feat(byhlc112): add project deployment configuration 2026-05-29 09:19:30 +08:00
48 changed files with 2233 additions and 91 deletions

View File

@@ -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'

View File

@@ -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'

View File

@@ -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 {
}

View File

@@ -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的密码

View File

@@ -38,7 +38,7 @@ server:
spring:
profiles:
active: czleilei240
active: byhlc112
servlet:
multipart:
max-file-size: 50MB #设置单个文件大小
@@ -172,4 +172,4 @@ aj:
# local定时清除过期缓存(单位秒),设置为0代表不执行
timing-clear: 3600
history-data-clear-enable: false
history-data-clear-enable: false

View File

@@ -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));
}
}

View File

@@ -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,9 +66,9 @@ 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,
@RequestParam(value = "model") String model,
@RequestParam(value = "pid") Integer pid) throws IOException {
public CommonResult<FileResultVo> imageOuter(@RequestParam("multipart") MultipartFile multipart,
@RequestParam(value = "model") String model,
@RequestParam(value = "pid") Integer pid) throws IOException {
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
}
@@ -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 {
}

View File

@@ -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);
@@ -265,4 +286,4 @@ public class WaUserController {
public CommonResult<Boolean> changePassword(@RequestBody @Validated PasswordRequest request) {
return CommonResult.success(waUserService.changePassword(request));
}
}
}

View File

@@ -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的密码

View File

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

View File

@@ -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 模式则任何依赖都不需要。

View 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

View 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"]

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View File

@@ -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

View 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

View File

@@ -0,0 +1,2 @@
.env
houtai.env

View 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 配置

View 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

View 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'

View 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;
}
}

View 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"]

View 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-mountrsync 更新后立即生效) ----------
# 积分商城 H5uni-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

View File

@@ -0,0 +1 @@
.env

View 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 JARSpring 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` | 积分商城 H5uni-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 配置

View 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

View File

@@ -0,0 +1,18 @@
# =============================================================
# RedisAlpine + 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"]

Binary file not shown.

Binary file not shown.

View 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
- Excel45 人
- 手工补充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(*)` 输出为准。

View 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
View File

@@ -0,0 +1,59 @@
## 公司名称: 宝应宏煜春商贸, host ip: 39.97.236.112
### **修改任务**
- 新建分支byhlc112合并byhlc112分支的最新代码到该分支并根据上述信息修改相关需要变更项使符合该新公司项目环境
- 在新建分支下修改
---
### mysql数据库配置
- mysql数据库使用阿里云rdsrm-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. 积分商城domainhttps://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
、、、

View 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`
## 相关文件
-

View File

@@ -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` |

View 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;

View 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;

View 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)

View File

@@ -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
};

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

Binary file not shown.