入驻流程优化流程
This commit is contained in:
parent
58998d62b9
commit
5ea8fb658c
@ -72,6 +72,7 @@ public class DateTimeUtils {
|
|||||||
* - yyyy.MM.dd / yyyy/MM/dd / yyyy年MM月dd日
|
* - yyyy.MM.dd / yyyy/MM/dd / yyyy年MM月dd日
|
||||||
* - yyyy.M.d / yyyy/M/d / yyyy年M月d日
|
* - yyyy.M.d / yyyy/M/d / yyyy年M月d日
|
||||||
* - yy.MM.dd / yy.M.d
|
* - yy.MM.dd / yy.M.d
|
||||||
|
* - yyyyMMdd
|
||||||
* 特殊值:空值、"长期"、"永久" 转9999-12-31
|
* 特殊值:空值、"长期"、"永久" 转9999-12-31
|
||||||
*/
|
*/
|
||||||
public static String convertLklDate(String dateStr) {
|
public static String convertLklDate(String dateStr) {
|
||||||
@ -97,6 +98,11 @@ public class DateTimeUtils {
|
|||||||
|
|
||||||
// 快速判断格式并解析
|
// 快速判断格式并解析
|
||||||
try {
|
try {
|
||||||
|
// 处理纯数字格式 yyyyMMdd
|
||||||
|
if (length == 8 && dateStr.matches("\\d{8}")) {
|
||||||
|
return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyyMMdd")).toString();
|
||||||
|
}
|
||||||
|
|
||||||
// 处理连字符格式(yyyy-MM-dd 或 yyyy-M-d)
|
// 处理连字符格式(yyyy-MM-dd 或 yyyy-M-d)
|
||||||
if (dateStr.contains("-")) {
|
if (dateStr.contains("-")) {
|
||||||
if (length == 10 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-') {
|
if (length == 10 && dateStr.charAt(4) == '-' && dateStr.charAt(7) == '-') {
|
||||||
@ -243,7 +249,9 @@ public class DateTimeUtils {
|
|||||||
// System.out.println(convertLklDate("永久")); // 9999-12-31
|
// System.out.println(convertLklDate("永久")); // 9999-12-31
|
||||||
// System.out.println(convertLklDate(null)); // 9999-12-31
|
// System.out.println(convertLklDate(null)); // 9999-12-31
|
||||||
// System.out.println(convertLklDate("2025.2.30")); // 9999-12-31(无效日期)
|
// System.out.println(convertLklDate("2025.2.30")); // 9999-12-31(无效日期)
|
||||||
|
System.out.println(convertLklDate("2045-01-10")); // 2025-01-10
|
||||||
|
|
||||||
System.out.println(formatLocalDate(LocalDate.now(), "yyyy-MM-dd"));
|
|
||||||
|
// System.out.println(formatLocalDate(LocalDate.now(), "yyyy-MM-dd"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,6 +62,7 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// System.out.println(validateIDCard("45088119970105771X"));
|
// System.out.println(validateIDCard("45088119970105771X"));
|
||||||
|
System.out.println(getFileExt("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/media/media/store/10073/20250807/41408657c5c84a758f5d0eca2b652cac.jpg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String encode(String str) {
|
public static String encode(String str) {
|
||||||
@ -711,25 +712,6 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成的随机数类型
|
|
||||||
*/
|
|
||||||
public enum RandomType {
|
|
||||||
/**
|
|
||||||
* 整数
|
|
||||||
*/
|
|
||||||
INT,
|
|
||||||
/**
|
|
||||||
* 字符串
|
|
||||||
*/
|
|
||||||
STRING,
|
|
||||||
/**
|
|
||||||
* 所有类型
|
|
||||||
*/
|
|
||||||
ALL
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断字符串是否为有效的经度值
|
* 判断字符串是否为有效的经度值
|
||||||
* 经度范围:-180° ~ 180°
|
* 经度范围:-180° ~ 180°
|
||||||
@ -767,4 +749,22 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成的随机数类型
|
||||||
|
*/
|
||||||
|
public enum RandomType {
|
||||||
|
/**
|
||||||
|
* 整数
|
||||||
|
*/
|
||||||
|
INT,
|
||||||
|
/**
|
||||||
|
* 字符串
|
||||||
|
*/
|
||||||
|
STRING,
|
||||||
|
/**
|
||||||
|
* 所有类型
|
||||||
|
*/
|
||||||
|
ALL
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,12 +1,13 @@
|
|||||||
package com.suisung.mall.shop.base.service.impl;
|
package com.suisung.mall.shop.base.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.captcha.CaptchaUtil;
|
||||||
|
import cn.hutool.captcha.LineCaptcha;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.suisung.mall.common.constant.RedisConstant;
|
import com.suisung.mall.common.constant.RedisConstant;
|
||||||
import com.suisung.mall.common.modules.base.ShopBaseConfig;
|
import com.suisung.mall.common.modules.base.ShopBaseConfig;
|
||||||
import com.suisung.mall.common.utils.CaptchaUtil;
|
|
||||||
import com.suisung.mall.core.web.service.RedisService;
|
import com.suisung.mall.core.web.service.RedisService;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.shop.base.mapper.ShopBaseConfigMapper;
|
import com.suisung.mall.shop.base.mapper.ShopBaseConfigMapper;
|
||||||
@ -96,110 +97,104 @@ public class ShopBaseConfigServiceImpl extends BaseServiceImpl<ShopBaseConfigMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取验证码
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void image(HttpServletResponse response) {
|
|
||||||
// 设置响应头,确保浏览器正确处理图片
|
|
||||||
response.setContentType("image/png");
|
|
||||||
response.setHeader("Pragma", "no-cache");
|
|
||||||
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
||||||
response.setDateHeader("Expires", 0);
|
|
||||||
response.setHeader("Content-Disposition", "inline; filename=captcha.png");
|
|
||||||
|
|
||||||
// 添加防止代理缓存的头
|
|
||||||
response.setHeader("Proxy-Connection", "close");
|
|
||||||
response.setHeader("Connection", "close");
|
|
||||||
|
|
||||||
OutputStream os = null;
|
|
||||||
try {
|
|
||||||
// 获取verify_token参数
|
|
||||||
String verify_token = getParameter("verify_token", String.class);
|
|
||||||
if (StrUtil.isBlank(verify_token)) {
|
|
||||||
logger.warn("验证码请求缺少verify_token参数");
|
|
||||||
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建一个不依赖字体的简单数字验证码
|
|
||||||
String captchaCode = CaptchaUtil.generateSimpleCaptcha(4);
|
|
||||||
|
|
||||||
// 手动创建简单的验证码图片
|
|
||||||
BufferedImage image = CaptchaUtil.createSimpleCaptchaImage(captchaCode);
|
|
||||||
|
|
||||||
// 保存验证码到Redis
|
|
||||||
String code = RedisConstant.Verifycode_NameSpace + verify_token + captchaCode;
|
|
||||||
redisService.set(code, "", 60); // 有效期一分钟
|
|
||||||
|
|
||||||
// 输出图片到响应流
|
|
||||||
os = response.getOutputStream();
|
|
||||||
if (image != null) {
|
|
||||||
ImageIO.write(image, "png", os);
|
|
||||||
} else {
|
|
||||||
logger.error("生成验证码图片失败,image为null");
|
|
||||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
os.flush();
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("获取验证码响应异常: " + e.getMessage(), e);
|
|
||||||
try {
|
|
||||||
// 确保即使出错也返回一个错误图片或空白图片
|
|
||||||
response.setContentType("image/png");
|
|
||||||
CaptchaUtil.createErrorImage(response.getOutputStream());
|
|
||||||
} catch (Exception ex) {
|
|
||||||
logger.error("设置错误响应状态异常: " + ex.getMessage(), ex);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
if (os != null) {
|
|
||||||
try {
|
|
||||||
os.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.error("关闭输出流异常: " + e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 获取验证码
|
// * 获取验证码
|
||||||
// */
|
// */
|
||||||
// @Override
|
// @Override
|
||||||
// public void image(HttpServletResponse response) {
|
// public void image(HttpServletResponse response) {
|
||||||
|
// // 设置响应头,确保浏览器正确处理图片
|
||||||
// response.setContentType("image/png");
|
// response.setContentType("image/png");
|
||||||
// response.setHeader("Pragma", "no-cache");
|
// response.setHeader("Pragma", "no-cache");
|
||||||
// response.setHeader("Cache-Control", "no-cache");
|
// response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||||
// response.setDateHeader("Expires", 0);
|
// response.setDateHeader("Expires", 0);
|
||||||
// // 产生验证码图片的。图片的宽是116,高是36,验证码的长度是4,干扰线的条数是20
|
// response.setHeader("Content-Disposition", "inline; filename=captcha.png");
|
||||||
// LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(120, 40, 4, 20);
|
|
||||||
//
|
//
|
||||||
// // 可选:设置自定义字体(如果需要)
|
// // 添加防止代理缓存的头
|
||||||
//// lineCaptcha.setFont(new Font("Arial", Font.BOLD, 16));
|
// response.setHeader("Proxy-Connection", "close");
|
||||||
|
// response.setHeader("Connection", "close");
|
||||||
//
|
//
|
||||||
// // 拼接时间戳
|
|
||||||
// String verify_token = getParameter("verify_token", String.class);
|
|
||||||
//
|
|
||||||
// //获取验证码图片中的字符串
|
|
||||||
// String code = RedisConstant.Verifycode_NameSpace + verify_token + lineCaptcha.getCode();
|
|
||||||
// redisService.set(code, "", 60); // 有效期一分钟
|
|
||||||
//
|
|
||||||
// //获取到response的响应流。
|
|
||||||
// BufferedImage image = lineCaptcha.getImage();
|
|
||||||
// OutputStream os = null;
|
// OutputStream os = null;
|
||||||
// try {
|
// try {
|
||||||
|
// // 获取verify_token参数
|
||||||
|
// String verify_token = getParameter("verify_token", String.class);
|
||||||
|
// if (StrUtil.isBlank(verify_token)) {
|
||||||
|
// logger.warn("验证码请求缺少verify_token参数");
|
||||||
|
// response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // 创建一个不依赖字体的简单数字验证码
|
||||||
|
// String captchaCode = CaptchaUtil.generateSimpleCaptcha(4);
|
||||||
|
//
|
||||||
|
// // 手动创建简单的验证码图片
|
||||||
|
// BufferedImage image = CaptchaUtil.createSimpleCaptchaImage(captchaCode);
|
||||||
|
//
|
||||||
|
// // 保存验证码到Redis
|
||||||
|
// String code = RedisConstant.Verifycode_NameSpace + verify_token + captchaCode;
|
||||||
|
// redisService.set(code, "", 60); // 有效期一分钟
|
||||||
|
//
|
||||||
|
// // 输出图片到响应流
|
||||||
// os = response.getOutputStream();
|
// os = response.getOutputStream();
|
||||||
// ImageIO.write(image, "png", os);
|
// if (image != null) {
|
||||||
// } catch (IOException e) {
|
// ImageIO.write(image, "png", os);
|
||||||
// logger.error("获取验证码响应异常!" + e.getMessage(), e);
|
// } else {
|
||||||
// } finally {
|
// logger.error("生成验证码图片失败,image为null");
|
||||||
|
// response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
// }
|
||||||
|
// os.flush();
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// logger.error("获取验证码响应异常: " + e.getMessage(), e);
|
||||||
// try {
|
// try {
|
||||||
// assert os != null;
|
// // 确保即使出错也返回一个错误图片或空白图片
|
||||||
// os.close();
|
// response.setContentType("image/png");
|
||||||
// } catch (IOException e) {
|
// CaptchaUtil.createErrorImage(response.getOutputStream());
|
||||||
// logger.error("获取验证码响应异常!" + e.getMessage(), e);
|
// } catch (Exception ex) {
|
||||||
|
// logger.error("设置错误响应状态异常: " + ex.getMessage(), ex);
|
||||||
|
// }
|
||||||
|
// } finally {
|
||||||
|
// if (os != null) {
|
||||||
|
// try {
|
||||||
|
// os.close();
|
||||||
|
// } catch (IOException e) {
|
||||||
|
// logger.error("关闭输出流异常: " + e.getMessage(), e);
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void image(HttpServletResponse response) {
|
||||||
|
response.setContentType("image/png");
|
||||||
|
response.setHeader("Pragma", "no-cache");
|
||||||
|
response.setHeader("Cache-Control", "no-cache");
|
||||||
|
response.setDateHeader("Expires", 0);
|
||||||
|
// 产生验证码图片的。图片的宽是116,高是36,验证码的长度是4,干扰线的条数是20
|
||||||
|
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(120, 40, 4, 20);
|
||||||
|
|
||||||
|
// 拼接时间戳
|
||||||
|
String verify_token = getParameter("verify_token", String.class);
|
||||||
|
|
||||||
|
//获取验证码图片中的字符串
|
||||||
|
String code = RedisConstant.Verifycode_NameSpace + verify_token + lineCaptcha.getCode();
|
||||||
|
redisService.set(code, "", 60); // 有效期一分钟
|
||||||
|
|
||||||
|
//获取到response的响应流。
|
||||||
|
BufferedImage image = lineCaptcha.getImage();
|
||||||
|
OutputStream os = null;
|
||||||
|
try {
|
||||||
|
os = response.getOutputStream();
|
||||||
|
ImageIO.write(image, "png", os);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("获取验证码响应异常!" + e.getMessage(), e);
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
assert os != null;
|
||||||
|
os.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.error("获取验证码响应异常!" + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1081,7 +1081,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
req.setLegalPersonCertificateType(paramsJSON.getStr("legalPersonCertificateType"));
|
req.setLegalPersonCertificateType(paramsJSON.getStr("legalPersonCertificateType"));
|
||||||
req.setLegalPersonCertificateNo(paramsJSON.getStr("legalPersonCertificateNo"));
|
req.setLegalPersonCertificateNo(paramsJSON.getStr("legalPersonCertificateNo"));
|
||||||
req.setAcctNo(paramsJSON.getStr("acctNo"));
|
req.setAcctNo(paramsJSON.getStr("acctNo"));
|
||||||
req.setAcctName(paramsJSON.getStr("acctName"));
|
req.setAcctName(paramsJSON.getStr("licenseName"));
|
||||||
req.setAcctTypeCode(paramsJSON.getStr("acctTypeCode"));
|
req.setAcctTypeCode(paramsJSON.getStr("acctTypeCode"));
|
||||||
req.setAcctCertificateType(paramsJSON.getStr("acctCertificateType"));
|
req.setAcctCertificateType(paramsJSON.getStr("acctCertificateType"));
|
||||||
req.setAcctCertificateNo(paramsJSON.getStr("acctCertificateNo"));
|
req.setAcctCertificateNo(paramsJSON.getStr("acctCertificateNo"));
|
||||||
@ -1109,10 +1109,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
String fileBase64 = UploadUtil.fileUrlToBase64(fileUrl);
|
String fileBase64 = UploadUtil.fileUrlToBase64(fileUrl);
|
||||||
|
String fileExt = StringUtils.getFileExt(fileUrl);
|
||||||
|
fileExt = StrUtil.isBlank(fileExt) ? "jpg" : fileExt;
|
||||||
JSONObject uploadResponse = uploadFile(
|
JSONObject uploadResponse = uploadFile(
|
||||||
StringUtils.genLklOrderNo(8),
|
StringUtils.genLklOrderNo(8),
|
||||||
attachType,
|
attachType,
|
||||||
StringUtils.getFileExt(fileName),
|
fileExt,
|
||||||
fileBase64
|
fileBase64
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -357,12 +357,10 @@ public class LklTkServiceImpl {
|
|||||||
Boolean isQy = CommonConstant.MCH_ENTITY_TYPE_QY.equals(shopMchEntry.getEntity_type());
|
Boolean isQy = CommonConstant.MCH_ENTITY_TYPE_QY.equals(shopMchEntry.getEntity_type());
|
||||||
reqJsonBody.put("merType", isQy ? "TP_MERCHANT" : "TP_PERSONAL");
|
reqJsonBody.put("merType", isQy ? "TP_MERCHANT" : "TP_PERSONAL");
|
||||||
|
|
||||||
|
|
||||||
reqJsonBody.put("longtude", shopMchEntry.getStore_longitude()); //longitude 经度
|
reqJsonBody.put("longtude", shopMchEntry.getStore_longitude()); //longitude 经度
|
||||||
reqJsonBody.put("latitude", shopMchEntry.getStore_latitude());
|
reqJsonBody.put("latitude", shopMchEntry.getStore_latitude());
|
||||||
reqJsonBody.put("source", "H5");
|
reqJsonBody.put("source", "H5");
|
||||||
|
|
||||||
|
|
||||||
reqJsonBody.put("larIdType", "01"); // 01 身份证 ,02 护照,03 港澳通行证,04 台胞证,10 外国人永久居留身份证,11 港妨澳居民居住证,12 台湾居民居住证,13 执行事务合伙人,99 其它证件
|
reqJsonBody.put("larIdType", "01"); // 01 身份证 ,02 护照,03 港澳通行证,04 台胞证,10 外国人永久居留身份证,11 港妨澳居民居住证,12 台湾居民居住证,13 执行事务合伙人,99 其它证件
|
||||||
String larName = isQy ? shopMchEntry.getLegal_person_name() : shopMchEntry.getContact_name();
|
String larName = isQy ? shopMchEntry.getLegal_person_name() : shopMchEntry.getContact_name();
|
||||||
String larIdCard = isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number();
|
String larIdCard = isQy ? shopMchEntry.getLegal_person_id_number() : shopMchEntry.getIndividual_id_number();
|
||||||
@ -401,12 +399,12 @@ public class LklTkServiceImpl {
|
|||||||
reqJsonBody.put("accountName", shopMchEntry.getAccount_holder_name()); //结算人账户名称
|
reqJsonBody.put("accountName", shopMchEntry.getAccount_holder_name()); //结算人账户名称
|
||||||
reqJsonBody.put("accountIdCard", larIdCard);//结算⼈(法人或小微个人)证件号码(身份证)
|
reqJsonBody.put("accountIdCard", larIdCard);//结算⼈(法人或小微个人)证件号码(身份证)
|
||||||
|
|
||||||
Integer SettlementMethod = shopMchEntry.getSettlement_method();
|
// Integer SettlementMethod = shopMchEntry.getSettlement_method();
|
||||||
if (SettlementMethod == null || SettlementMethod < 0 || SettlementMethod > 1) {
|
// if (SettlementMethod == null || SettlementMethod < 0 || SettlementMethod > 1) {
|
||||||
SettlementMethod = 0; // 结算类型: 0-秒到;1-次日结算
|
// SettlementMethod = 1; // 结算类型:0-秒到(不分账);1-次日结算(需要分账)
|
||||||
}
|
// }
|
||||||
String settleType = String.format("D%d", SettlementMethod);
|
String settleType = String.format("D%d", 1);
|
||||||
reqJsonBody.put("settleType", settleType); //结算类型,D0秒到,D1次日结算
|
reqJsonBody.put("settleType", settleType); //结算类型:0-秒到(不分账);1-次日结算(需要分账)
|
||||||
// formData.put("settlementType", "AUTOMATIC"); // 结算方式:MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算到银行卡,REGULAR:定时结算(仅企业商户支持)
|
// formData.put("settlementType", "AUTOMATIC"); // 结算方式:MANUAL:手动结算(结算至拉卡拉APP钱包),AUTOMATIC:自动结算到银行卡,REGULAR:定时结算(仅企业商户支持)
|
||||||
|
|
||||||
// 店铺省市区信息
|
// 店铺省市区信息
|
||||||
|
|||||||
@ -116,6 +116,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
try {
|
try {
|
||||||
// 1. 验证必要参数
|
// 1. 验证必要参数
|
||||||
if (CheckUtil.isEmpty(storeId) || StringUtils.isAnyBlank(shopName, shopAddress, contactName, contactPhone)) {
|
if (CheckUtil.isEmpty(storeId) || StringUtils.isAnyBlank(shopName, shopAddress, contactName, contactPhone)) {
|
||||||
|
logger.error("创建顺丰店铺,缺少必要参数!storeId:{},shopName:{},shopAddress:{},contactName:{},contactPhone:{}", storeId, shopName, shopAddress, contactName, contactPhone);
|
||||||
return Pair.of(false, "创建顺丰店铺,缺少必要参数!");
|
return Pair.of(false, "创建顺丰店铺,缺少必要参数!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +128,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
// 如果没有商家配送运费设置,则初始化
|
// 如果没有商家配送运费设置,则初始化
|
||||||
Pair<Boolean, String> initResult = shopStoreSameCityTransportBaseService.initDefaultSameCityTransport(storeId);
|
Pair<Boolean, String> initResult = shopStoreSameCityTransportBaseService.initDefaultSameCityTransport(storeId);
|
||||||
if (!initResult.getFirst()) {
|
if (!initResult.getFirst()) {
|
||||||
logger.error("初始化商家配送运费设置失败!");
|
logger.error("初始化商家配送运费设置失败:{}", initResult.getSecond());
|
||||||
return initResult;
|
return initResult;
|
||||||
}
|
}
|
||||||
transportBase = shopStoreSameCityTransportBaseService.getShopStoreSameCityTransportBaseById(Long.valueOf(storeId));
|
transportBase = shopStoreSameCityTransportBaseService.getShopStoreSameCityTransportBaseById(Long.valueOf(storeId));
|
||||||
|
|||||||
@ -778,11 +778,11 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
|||||||
|
|
||||||
// 转换拉卡拉的日期格式 yyyy-MM-dd
|
// 转换拉卡拉的日期格式 yyyy-MM-dd
|
||||||
record = convLklDateFormat(record);
|
record = convLklDateFormat(record);
|
||||||
if (record.getSettlement_method() == null
|
// if (record.getSettlement_method() == null
|
||||||
|| record.getSettlement_method() < 0
|
// || record.getSettlement_method() < 0
|
||||||
|| record.getSettlement_method() > 1) {
|
// || record.getSettlement_method() > 1) {
|
||||||
record.setSettlement_method(0); // 结算类型:0-秒到;1-次日结算
|
record.setSettlement_method(1); // 结算类型:0-秒到(不分账);1-次日结算(需要分账)
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 执行更新操作
|
// 执行更新操作
|
||||||
if (!updateById(record)) {
|
if (!updateById(record)) {
|
||||||
|
|||||||
@ -3094,10 +3094,11 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
|
|||||||
return Pair.of(0, "该商家申请人手机未注册账号!");
|
return Pair.of(0, "该商家申请人手机未注册账号!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isExistsByStoreName(shopMchEntry.getStore_name())) {
|
// 入驻时已经检查过店铺名称了,此处忽略
|
||||||
logger.error("生成店铺:店铺名称已存在");
|
// if (isExistsByStoreName(shopMchEntry.getStore_name())) {
|
||||||
return Pair.of(0, "店铺名称已存在,请使用另一名称");
|
// logger.error("生成店铺:店铺名称已存在");
|
||||||
}
|
// return Pair.of(0, "店铺名称已存在,请使用另一名称");
|
||||||
|
// }
|
||||||
|
|
||||||
// 校验店铺状态,
|
// 校验店铺状态,
|
||||||
if (CommonConstant.Enable.equals(shopMchEntry.getStore_status())) {
|
if (CommonConstant.Enable.equals(shopMchEntry.getStore_status())) {
|
||||||
|
|||||||
@ -36,6 +36,7 @@ import com.suisung.mall.shop.store.mapper.ShopStoreSameCityTransportBaseMapper;
|
|||||||
import com.suisung.mall.shop.store.service.ShopStoreBaseService;
|
import com.suisung.mall.shop.store.service.ShopStoreBaseService;
|
||||||
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
|
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
|
||||||
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
|
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -52,6 +53,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser;
|
import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Lazy
|
@Lazy
|
||||||
@Service
|
@Service
|
||||||
public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<ShopStoreSameCityTransportBaseMapper, ShopStoreSameCityTransportBase> implements ShopStoreSameCityTransportBaseService {
|
public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<ShopStoreSameCityTransportBaseMapper, ShopStoreSameCityTransportBase> implements ShopStoreSameCityTransportBaseService {
|
||||||
@ -362,30 +364,36 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
|
|||||||
try {
|
try {
|
||||||
// 校验店铺ID
|
// 校验店铺ID
|
||||||
if (storeId == null || storeId <= 0) {
|
if (storeId == null || storeId <= 0) {
|
||||||
|
log.error("初始化店铺默认配置:缺少店铺Id必要参数!");
|
||||||
return Pair.of(false, "缺少店铺Id必要参数!");
|
return Pair.of(false, "缺少店铺Id必要参数!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取预设配置
|
// 获取预设配置
|
||||||
String sameCityDeliverySetting = accountBaseConfigService.getConfig("same_city_delivery_setting", "");
|
String sameCityDeliverySetting = accountBaseConfigService.getConfig("same_city_delivery_setting", "");
|
||||||
if (StrUtil.isBlank(sameCityDeliverySetting)) {
|
if (StrUtil.isBlank(sameCityDeliverySetting)) {
|
||||||
return Pair.of(false, "缺少同城配送预设设置!");
|
return Pair.of(false, "缺少同城配送预设设置,请先配置好!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.info("同城配送预设设置:{}", sameCityDeliverySetting);
|
||||||
|
|
||||||
// 转换为 DTO 对象
|
// 转换为 DTO 对象
|
||||||
ShopStoreSameCityTransportBaseDTO transportDTO = JSONUtil.toBean(sameCityDeliverySetting, ShopStoreSameCityTransportBaseDTO.class);
|
ShopStoreSameCityTransportBaseDTO transportDTO = JSONUtil.toBean(sameCityDeliverySetting, ShopStoreSameCityTransportBaseDTO.class);
|
||||||
if (transportDTO == null) {
|
if (transportDTO == null) {
|
||||||
return Pair.of(false, "同城配送预设设置格式错误!");
|
log.error("初始化店铺默认配置:同城配送预设设置数据格式错误!");
|
||||||
|
return Pair.of(false, "同城配送预设设置数据格式错误!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询店铺信息
|
// 查询店铺信息
|
||||||
ShopStoreBase storeBase = shopStoreBaseService.get(storeId);
|
ShopStoreBase storeBase = shopStoreBaseService.get(storeId);
|
||||||
if (storeBase == null) {
|
if (storeBase == null) {
|
||||||
|
log.error("初始化店铺默认配置:店铺不存在!");
|
||||||
return Pair.of(false, "店铺不存在!");
|
return Pair.of(false, "店铺不存在!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置基础配送信息
|
// 设置基础配送信息
|
||||||
ShopStoreSameCityTransportBase transportBase = transportDTO.getTransportBase();
|
ShopStoreSameCityTransportBase transportBase = transportDTO.getTransportBase();
|
||||||
if (transportBase == null) {
|
if (transportBase == null) {
|
||||||
|
log.error("初始化店铺默认配置:缺少同城配送基础设置!");
|
||||||
return Pair.of(false, "缺少同城配送基础设置!");
|
return Pair.of(false, "缺少同城配送基础设置!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,6 +406,7 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
|
|||||||
Pair<Long, String> saveOrUpdateResult = saveOrUpdateShopStoreSameCityTransportBase(transportBase);
|
Pair<Long, String> saveOrUpdateResult = saveOrUpdateShopStoreSameCityTransportBase(transportBase);
|
||||||
Long transportBaseId = saveOrUpdateResult.getFirst();
|
Long transportBaseId = saveOrUpdateResult.getFirst();
|
||||||
if (transportBaseId == null || transportBaseId <= 0) {
|
if (transportBaseId == null || transportBaseId <= 0) {
|
||||||
|
log.error("初始化店铺默认配置:新增同城配送基础设置失败!");
|
||||||
return Pair.of(false, saveOrUpdateResult.getSecond());
|
return Pair.of(false, saveOrUpdateResult.getSecond());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -409,7 +418,8 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
|
|||||||
// 保存扩展配送信息
|
// 保存扩展配送信息
|
||||||
int count = shopStoreSameCityTransportService.saveOrUpdateShopStoreSameCityTransportList(transportDTO.getTransportList());
|
int count = shopStoreSameCityTransportService.saveOrUpdateShopStoreSameCityTransportList(transportDTO.getTransportList());
|
||||||
if (count <= 0) {
|
if (count <= 0) {
|
||||||
return Pair.of(false, "保存同城配送设置部分失败!");
|
log.error("初始化店铺默认配置:保存同城配送设置扩展配送信息失败!更新数:{}", count);
|
||||||
|
// return Pair.of(false, "保存同城配送设置扩展配送信息失败!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Pair.of(true, "初始化成功");
|
return Pair.of(true, "初始化成功");
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import com.suisung.mall.common.api.CommonResult;
|
|||||||
import com.suisung.mall.common.constant.CommonConstant;
|
import com.suisung.mall.common.constant.CommonConstant;
|
||||||
import com.suisung.mall.common.domain.UserDto;
|
import com.suisung.mall.common.domain.UserDto;
|
||||||
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransport;
|
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransport;
|
||||||
|
import com.suisung.mall.common.utils.CheckUtil;
|
||||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||||
import com.suisung.mall.shop.store.mapper.ShopStoreSameCityTransportMapper;
|
import com.suisung.mall.shop.store.mapper.ShopStoreSameCityTransportMapper;
|
||||||
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
|
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
|
||||||
@ -102,9 +103,8 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
for (ShopStoreSameCityTransport transport : transportList) {
|
for (ShopStoreSameCityTransport transport : transportList) {
|
||||||
try {
|
try {
|
||||||
if (transport == null ||
|
if (transport == null || CheckUtil.isEmpty(transport.getTransport_base_id()) ||
|
||||||
transport.getTransport_base_id() == null || transport.getTransport_base_id() <= 0 ||
|
CheckUtil.isEmpty(transport.getStore_id())) {
|
||||||
transport.getStore_id() == null || transport.getStore_id() <= 0) {
|
|
||||||
logger.error("缺少 transport_base_id 或 store_id 必要参数!");
|
logger.error("缺少 transport_base_id 或 store_id 必要参数!");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -114,22 +114,25 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
|
|||||||
transport.setArea_type(1); // 业务分类:1-圆半径;2-多边形
|
transport.setArea_type(1); // 业务分类:1-圆半径;2-多边形
|
||||||
}
|
}
|
||||||
|
|
||||||
if (transport.getMax_delivery_radius() == null || transport.getMax_delivery_radius() <= 0) {
|
if (CheckUtil.isEmpty(transport.getMax_delivery_radius())) {
|
||||||
logger.error("缺少配送范围,忽略保存!");
|
logger.error("缺少配送范围,忽略保存!");
|
||||||
continue;
|
// continue;
|
||||||
|
transport.setMax_delivery_radius(5000); //配送范围半径(米)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (transport.getMin_delivery_amount_type() == null && transport.getMin_delivery_amount() != null) {
|
if (transport.getMin_delivery_amount_type() == null && transport.getMin_delivery_amount() != null) {
|
||||||
|
transport.setMin_delivery_amount_type(CommonConstant.Delivery_Amount_Comput_Type_Payment); //起送金额依据:1-订单原价;2-订单折扣价;3-订单实付金额;
|
||||||
transport.setMin_delivery_amount(BigDecimal.ZERO);
|
transport.setMin_delivery_amount(BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((transport.getDelivery_discount_type() == null || transport.getMin_delivery_discount_amount() == null)
|
if ((transport.getDelivery_discount_type() == null || transport.getMin_delivery_discount_amount() == null)
|
||||||
&& transport.getDelivery_discount() != null) {
|
&& transport.getDelivery_discount() != null) {
|
||||||
|
transport.setDelivery_discount_type(CommonConstant.Delivery_Amount_Comput_Type_Payment);//起送金额依据:1-订单原价;2-订单折扣价;3-订单实付金额;
|
||||||
transport.setDelivery_discount(BigDecimal.ZERO);
|
transport.setDelivery_discount(BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增或更新
|
// 新增或更新
|
||||||
if (transport.getTransport_id() == null || transport.getTransport_id() <= 0) {
|
if (CheckUtil.isEmpty(transport.getTransport_id())) {
|
||||||
if (save(transport)) {
|
if (save(transport)) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@ -139,7 +142,7 @@ public class ShopStoreSameCityTransportServiceImpl extends BaseServiceImpl<ShopS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("处理单条运输信息失败: ", e);
|
logger.error("处理单条运费配置信息失败: ", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user