fix byhlc112 contract upload flow
This commit is contained in:
@@ -50,7 +50,7 @@ public class UploadController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
@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]")
|
@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 = "model") String model,
|
||||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
|
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 = "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]")
|
@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 = "model") String model,
|
||||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
||||||
@@ -75,4 +75,3 @@ public class UploadController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -48,11 +48,11 @@ public class UploadFrontController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
@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]")
|
@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 {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
|
return CommonResult.success(uploadService.imageUpload(multipart, model, pid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class UserUploadController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
@ApiImplicitParam(name = "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]")
|
@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 = "model") String model,
|
||||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public class UserUploadController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
@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]")
|
@ApiImplicitParam(name = "pid", value = "分类ID 0编辑器,1商品图片,2拼团图片,3砍价图片,4秒杀图片,5文章图片,6组合数据图,7前台用户,8微信系列 ", allowableValues = "range[0,1,2,3,4,5,6,7,8]")
|
||||||
})
|
})
|
||||||
public CommonResult<FileResultVo> imageOuter(MultipartFile multipart,
|
public CommonResult<FileResultVo> imageOuter(@RequestParam("multipart") MultipartFile multipart,
|
||||||
@RequestParam(value = "model") String model,
|
@RequestParam(value = "model") String model,
|
||||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ public class UserUploadController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,news文章"),
|
@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]")
|
@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 = "model") String model,
|
||||||
@RequestParam(value = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "pid") Integer pid) throws IOException {
|
||||||
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
return CommonResult.success(uploadService.fileUpload(multipart, model, pid));
|
||||||
@@ -92,4 +92,3 @@ public class UserUploadController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.zbkj.common.response.WaLoginResponse;
|
|||||||
import com.zbkj.common.response.WaUserInfoResponse;
|
import com.zbkj.common.response.WaUserInfoResponse;
|
||||||
import com.zbkj.common.result.CommonResult;
|
import com.zbkj.common.result.CommonResult;
|
||||||
import com.zbkj.common.token.FrontTokenComponent;
|
import com.zbkj.common.token.FrontTokenComponent;
|
||||||
|
import com.zbkj.common.config.CrmebConfig;
|
||||||
import com.zbkj.common.vo.FileResultVo;
|
import com.zbkj.common.vo.FileResultVo;
|
||||||
import com.zbkj.front.service.WaUserService;
|
import com.zbkj.front.service.WaUserService;
|
||||||
import com.zbkj.service.dao.consignment.WaUsersDao;
|
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.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
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.PDFont;
|
||||||
import org.apache.pdfbox.pdmodel.font.PDType0Font;
|
import org.apache.pdfbox.pdmodel.font.PDType0Font;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
@@ -44,12 +47,13 @@ import java.util.Date;
|
|||||||
* |
|
* |
|
||||||
* +----------------------------------------------------------------------
|
* +----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("api/front/wa/user")
|
@RequestMapping("api/front/wa/user")
|
||||||
@Api(tags = "寄卖服务 -- 用户认证")
|
@Api(tags = "寄卖服务 -- 用户认证")
|
||||||
public class WaUserController {
|
public class WaUserController {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(WaUserController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WaUserService waUserService;
|
private WaUserService waUserService;
|
||||||
|
|
||||||
@@ -62,6 +66,17 @@ public class WaUserController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WaUsersDao waUsersDao;
|
private WaUsersDao waUsersDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CrmebConfig crmebConfig;
|
||||||
|
|
||||||
|
private String buildPublicFileUrl(String relativeUrl) {
|
||||||
|
String domain = StringUtils.defaultString(crmebConfig.getDomain(), "https://lehoo6.com").trim();
|
||||||
|
if (!StringUtils.startsWithAny(domain, "http://", "https://")) {
|
||||||
|
domain = "https://" + domain;
|
||||||
|
}
|
||||||
|
return StringUtils.removeEnd(domain, "/") + "/" + StringUtils.removeStart(relativeUrl, "/");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理PDF文件,添加用户签名和签署日期
|
* 处理PDF文件,添加用户签名和签署日期
|
||||||
* @param signatureImage 用户签名图片
|
* @param signatureImage 用户签名图片
|
||||||
@@ -185,21 +200,27 @@ public class WaUserController {
|
|||||||
@ApiImplicitParam(name = "model", value = "模块 用户user,商品product,微信wechat,新闻文章"),
|
@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]")
|
@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 = "pid") Integer pid) throws IOException {
|
@RequestParam(value = "model") String model,
|
||||||
|
@RequestParam(value = "pid", required = false) Integer pid,
|
||||||
|
@RequestParam(value = "userId", required = false) Integer userId) throws IOException {
|
||||||
// 如果是用户模型且上传的是图片,则先处理PDF文件
|
// 如果是用户模型且上传的是图片,则先处理PDF文件
|
||||||
if ("user".equals(model) && multipart != null) {
|
if ("user".equals(model) && multipart != null) {
|
||||||
// 处理PDF文件,添加用户签名和签署日期
|
// 处理PDF文件,添加用户签名和签署日期
|
||||||
FileResultVo pdfResultVo = processPdfWithSignature(multipart);
|
FileResultVo pdfResultVo = processPdfWithSignature(multipart);
|
||||||
if (pdfResultVo != null) {
|
if (pdfResultVo != null) {
|
||||||
// 更新用户contract字段
|
// 更新用户contract字段
|
||||||
if (pid != null) {
|
Integer targetUserId = userId != null ? userId : pid;
|
||||||
|
if (targetUserId == null) {
|
||||||
|
targetUserId = frontTokenComponent.getUserId();
|
||||||
|
}
|
||||||
|
if (targetUserId != null) {
|
||||||
WaUsers user = new WaUsers();
|
WaUsers user = new WaUsers();
|
||||||
user.setId(pid);
|
user.setId(targetUserId);
|
||||||
// user.setContract("https://anyue.szxingming.com/"+pdfResultVo.getUrl());
|
// user.setContract("https://anyue.szxingming.com/"+pdfResultVo.getUrl());
|
||||||
// user.setContract("https://xiashengjun.com/"+pdfResultVo.getUrl());
|
// user.setContract("https://xiashengjun.com/"+pdfResultVo.getUrl());
|
||||||
// user.setContract("https://ccd.cichude.com/"+pdfResultVo.getUrl());
|
// user.setContract("https://ccd.cichude.com/"+pdfResultVo.getUrl());
|
||||||
user.setContract("https://lehoo6.com/"+pdfResultVo.getUrl());
|
user.setContract(buildPublicFileUrl(pdfResultVo.getUrl()));
|
||||||
waUsersDao.updateById(user);
|
waUsersDao.updateById(user);
|
||||||
}
|
}
|
||||||
return CommonResult.success(pdfResultVo);
|
return CommonResult.success(pdfResultVo);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
crmeb:
|
crmeb:
|
||||||
imagePath: /www/wwwroot/lehoo6.com/ # 服务器图片路径配置 斜杠结尾
|
imagePath: /www/wwwroot/lehoo6.com/ # 服务器图片路径配置 斜杠结尾
|
||||||
|
domain: lehoo6.com # 当前项目域名,合同/PDF 等公开地址拼接使用
|
||||||
asyncConfig: true #是否同步config表数据到redis
|
asyncConfig: true #是否同步config表数据到redis
|
||||||
|
|
||||||
server:
|
server:
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ server:
|
|||||||
port: ${SERVER_PORT:-30032}
|
port: ${SERVER_PORT:-30032}
|
||||||
|
|
||||||
crmeb:
|
crmeb:
|
||||||
imagePath: /usr/local/crmeb/crmebimage/
|
imagePath: /usr/local/crmeb/
|
||||||
|
domain: https://lehoo6.com
|
||||||
captchaOn: false
|
captchaOn: false
|
||||||
asyncConfig: true
|
asyncConfig: true
|
||||||
demoSite: false
|
demoSite: false
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ services:
|
|||||||
image: nginx:1.25-alpine
|
image: nginx:1.25-alpine
|
||||||
container_name: edge-nginx-byhlc112
|
container_name: edge-nginx-byhlc112
|
||||||
networks: [integral-net]
|
networks: [integral-net]
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
|
|||||||
@@ -1,10 +1,58 @@
|
|||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name lehoo6.com admin.lehoo6.com;
|
server_name lehoo6.com admin.lehoo6.com jf.lehoo6.com jfadmin.lehoo6.com;
|
||||||
|
|
||||||
return 301 https://$host$request_uri;
|
return 301 https://$host$request_uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
http2 on;
|
||||||
|
server_name jf.lehoo6.com;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/lehoo6.com_cert/lehoo6.com.pem;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/lehoo6.com_cert/lehoo6.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.lehoo6.com;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/lehoo6.com_cert/lehoo6.com.pem;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/lehoo6.com_cert/lehoo6.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 {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
http2 on;
|
http2 on;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ SINGLE_FRONT_LOG_DIR=/www/wwwroot/javaapi/logs/front
|
|||||||
SINGLE_ADMIN_LOG_DIR=/www/wwwroot/javaapi/logs/admin
|
SINGLE_ADMIN_LOG_DIR=/www/wwwroot/javaapi/logs/admin
|
||||||
|
|
||||||
# ---------- 图片/PDF 目录(与步骤一 H5 Nginx 共享宿主机路径) ----------
|
# ---------- 图片/PDF 目录(与步骤一 H5 Nginx 共享宿主机路径) ----------
|
||||||
CRMEB_IMAGE_DIR=/www/wwwroot/lehoo6.com/crmebimage
|
CRMEB_IMAGE_DIR=/www/wwwroot/lehoo6.com
|
||||||
|
|
||||||
# ---------- 前端静态目录(bind-mount,rsync 更新后立即生效) ----------
|
# ---------- 前端静态目录(bind-mount,rsync 更新后立即生效) ----------
|
||||||
# 积分商城 H5(uni-app SPA),对应域名 jf.lehoo6.com
|
# 积分商城 H5(uni-app SPA),对应域名 jf.lehoo6.com
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ chmod -R 755 /www/wwwroot/jfadmin.lehoo6.com/
|
|||||||
### 3. 图片/PDF 目录
|
### 3. 图片/PDF 目录
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p /www/wwwroot/lehoo6.com/crmebimage
|
mkdir -p /www/wwwroot/lehoo6.com
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -74,6 +74,7 @@ docker compose --env-file .env logs -f single-admin-api
|
|||||||
|
|
||||||
> Spring Boot API 端口(30032 / 30033)仅容器内监听,不对外暴露。
|
> Spring Boot API 端口(30032 / 30033)仅容器内监听,不对外暴露。
|
||||||
> 宝塔 Nginx 通过域名反代到 `127.0.0.1:18081 / 18082`,再由容器内 Nginx 转发到 API。
|
> 宝塔 Nginx 通过域名反代到 `127.0.0.1:18081 / 18082`,再由容器内 Nginx 转发到 API。
|
||||||
|
> 图片/PDF 实际落盘路径为宿主机 `/www/wwwroot/lehoo6.com/crmebimage/public/...`。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -96,7 +97,7 @@ docker compose --env-file .env logs -f single-admin-api
|
|||||||
| `/www/wwwroot/javaapi/miao-admin-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/front/` | `/app/log` | 用户端 API 日志 |
|
||||||
| `/www/wwwroot/javaapi/logs/admin/` | `/app/log` | 管理端 API 日志 |
|
| `/www/wwwroot/javaapi/logs/admin/` | `/app/log` | 管理端 API 日志 |
|
||||||
| `/www/wwwroot/lehoo6.com/crmebimage/` | `/usr/local/crmeb/crmebimage/` | 图片/PDF 写入目录 |
|
| `/www/wwwroot/lehoo6.com/` | `/usr/local/crmeb/` | 图片/PDF 写入目录 |
|
||||||
| `/www/wwwroot/jf.lehoo6.com/` | `/usr/share/nginx/html` | H5 静态文件 |
|
| `/www/wwwroot/jf.lehoo6.com/` | `/usr/share/nginx/html` | H5 静态文件 |
|
||||||
| `/www/wwwroot/jfadmin.lehoo6.com/` | `/usr/share/nginx/html` | 管理后台静态文件 |
|
| `/www/wwwroot/jfadmin.lehoo6.com/` | `/usr/share/nginx/html` | 管理后台静态文件 |
|
||||||
| `../single-shop/application-docker.yml` | `/config/application-docker.yml` | Spring Boot 配置 |
|
| `../single-shop/application-docker.yml` | `/config/application-docker.yml` | Spring Boot 配置 |
|
||||||
@@ -109,7 +110,7 @@ docker compose --env-file .env logs -f single-admin-api
|
|||||||
|---|---|
|
|---|---|
|
||||||
| RDS Host | `rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com` |
|
| RDS Host | `rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com` |
|
||||||
| DB / User | `byhlc112` / `yangtangyoupin` |
|
| DB / User | `byhlc112` / `yangtangyoupin` |
|
||||||
| imagePath 宿主机目录 | `/www/wwwroot/lehoo6.com/crmebimage` |
|
| imagePath 宿主机目录 | `/www/wwwroot/lehoo6.com/` |
|
||||||
| SYNC_SOURCE_ID | `shop_16` |
|
| SYNC_SOURCE_ID | `shop_16` |
|
||||||
| SYNC_TARGET_MER_ID | `16` |
|
| SYNC_TARGET_MER_ID | `16` |
|
||||||
| Spring profile | `docker`(通过 `application-docker.yml` 注入) |
|
| Spring profile | `docker`(通过 `application-docker.yml` 注入) |
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ services:
|
|||||||
- "127.0.0.1:30033:30033"
|
- "127.0.0.1:30033:30033"
|
||||||
volumes:
|
volumes:
|
||||||
- ${SINGLE_FRONT_JAR}:/app/app.jar:ro
|
- ${SINGLE_FRONT_JAR}:/app/app.jar:ro
|
||||||
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb/crmebimage
|
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb
|
||||||
- ${SINGLE_FRONT_LOG_DIR}:/app/log
|
- ${SINGLE_FRONT_LOG_DIR}:/app/log
|
||||||
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
||||||
environment:
|
environment:
|
||||||
@@ -105,7 +105,7 @@ services:
|
|||||||
- "127.0.0.1:30032:30032"
|
- "127.0.0.1:30032:30032"
|
||||||
volumes:
|
volumes:
|
||||||
- ${SINGLE_ADMIN_JAR}:/app/app.jar:ro
|
- ${SINGLE_ADMIN_JAR}:/app/app.jar:ro
|
||||||
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb/crmebimage
|
- ${CRMEB_IMAGE_DIR}:/usr/local/crmeb
|
||||||
- ${SINGLE_ADMIN_LOG_DIR}:/app/log
|
- ${SINGLE_ADMIN_LOG_DIR}:/app/log
|
||||||
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
- ../single-shop/application-docker.yml:/config/application-docker.yml:ro
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
61
docs/com-byhlc112-data-imgration.md
Normal file
61
docs/com-byhlc112-data-imgration.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# 公司名称:宝应宏煜春商贸
|
||||||
|
|
||||||
|
host ip: 39.97.236.112
|
||||||
|
|
||||||
|
## mysql数据库配置信息
|
||||||
|
|
||||||
|
datasource:
|
||||||
|
rds: rm-bp1a178eq62lxba9xbo.mysql.rds.aliyuncs.com
|
||||||
|
name: byhlc112
|
||||||
|
username: yangtangyoupin
|
||||||
|
password: 5Fn8eWrbYFtAhCZw
|
||||||
|
|
||||||
|
## 数据清理任务
|
||||||
|
|
||||||
|
- **数据范围**:`wa_users.id` / `eb_user.uid` 保留名单:
|
||||||
|
`92801, 93011, 93032, 93073, 93076, 93078, 93094, 93120, 93136, 93147, 93155, 93185, 93193, 93216, 93218, 93248, 93284, 93287, 93290, 93295, 93297, 93301, 93305, 93306, 93307, 93315, 93318, 93321, 93322, 93323, 93325, 93327, 93328, 93329`
|
||||||
|
|
||||||
|
- 保留wa_users表中id在用户id数据范围的 ,删除其余用户数据
|
||||||
|
- 保留eb_user表中uid在用户id数据范围的 ,删除其余用户数据
|
||||||
|
|
||||||
|
- wa_order
|
||||||
|
清空wa_order表中数据
|
||||||
|
|
||||||
|
- wa_merchandise
|
||||||
|
从源数据dump文件中提取“created_at >= 2026-05-28”并且seller_id或buyer_id在用户id数据范围的寄售商品,删除其余数据
|
||||||
|
(当前库表字段为 `user_id` 表示卖家,实现时按 `user_id` 与日期条件过滤。)
|
||||||
|
|
||||||
|
- wa_selfbonus_log
|
||||||
|
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||||
|
|
||||||
|
- wa_sharebonus_log
|
||||||
|
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||||
|
|
||||||
|
- wa_coupon_log
|
||||||
|
只保留 `user_id` 在用户id数据范围内的记录,删除其余数据
|
||||||
|
|
||||||
|
- wa_withdraw
|
||||||
|
清空wa_withdraw表中数据
|
||||||
|
|
||||||
|
- eb_store_order
|
||||||
|
清空eb_store_order表中数据
|
||||||
|
|
||||||
|
- eb_user_integral_record
|
||||||
|
只保留用户在名单内的记录;表字段为 `uid`(与 `wa_users.id` / `eb_user.uid` 对应),实现按 `uid` 过滤。
|
||||||
|
|
||||||
|
## 执行结果
|
||||||
|
|
||||||
|
- 已于 **2026-05-30** 按当前保留名单执行清理并 `COMMIT`。
|
||||||
|
- 结果:`wa_order`、`wa_withdraw`、`eb_store_order` 已清空。
|
||||||
|
- 保留后行数:
|
||||||
|
- `wa_users`:32
|
||||||
|
- `eb_user`:32
|
||||||
|
- `wa_selfbonus_log`:1285
|
||||||
|
- `wa_sharebonus_log`:1536
|
||||||
|
- `wa_coupon_log`:180
|
||||||
|
- `eb_user_integral_record`:1321
|
||||||
|
- `wa_merchandise`:35
|
||||||
|
|
||||||
|
## 相关文件
|
||||||
|
|
||||||
|
- 新公司初始会员信息: '/Users/mac/Works26/miao-july/byhlc/新团队成员名单.xlsx'
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
### backend/crmeb-front模块变更
|
### backend/crmeb-front模块变更
|
||||||
|
|
||||||
- 1. profile: byhlc112
|
- 1. profile: byhlc112
|
||||||
- 2. profile file: application-byhlc112.yml, mysql和redis主机ip修改
|
- 2. profile file: application-byhlc112.yml, mysql连接信息修改,redis主机ip修改。
|
||||||
- 3. **PDF合同模板文件路径**:pdf/sign_contract_byhlc112.pdf
|
- 3. **PDF合同模板文件路径**:pdf/sign_contract_byhlc112.pdf
|
||||||
- 4. 用户PDF合同url地址前缀/落库域名:https://lehoo6.com/
|
- 4. 用户PDF合同url地址前缀/落库域名:https://lehoo6.com/
|
||||||
- 5. imagePath: /www/wwwroot/lehoo6.com/
|
- 5. imagePath: /www/wwwroot/lehoo6.com/
|
||||||
|
|||||||
@@ -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` |
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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) => {
|
return new Promise((resolve, reject) => {
|
||||||
const token = uni.getStorageSync('token');
|
const token = uni.getStorageSync('token');
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
@@ -466,7 +466,7 @@ export function uploadUserImage(filePath, pid, model = 'user') {
|
|||||||
},
|
},
|
||||||
formData: {
|
formData: {
|
||||||
model,
|
model,
|
||||||
pid
|
userId
|
||||||
},
|
},
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
try {
|
try {
|
||||||
@@ -560,4 +560,3 @@ export default {
|
|||||||
uploadFile,
|
uploadFile,
|
||||||
uploadUserImage
|
uploadUserImage
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user