商家入驻,方法优化, fix bug
This commit is contained in:
parent
83792e4222
commit
003e1b8d86
@ -4,9 +4,13 @@ import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.DateTimeException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeFormatterBuilder;
|
||||
import java.time.temporal.ChronoField;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
@ -23,7 +27,6 @@ public class DateTimeUtils {
|
||||
return zonedDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
|
||||
}
|
||||
|
||||
|
||||
public static Date parseDate(String dateString, String pattern) {
|
||||
SimpleDateFormat format = new SimpleDateFormat(pattern);
|
||||
try {
|
||||
@ -37,4 +40,112 @@ public class DateTimeUtils {
|
||||
return calendar.getTime();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将多种日期格式转换为 yyyy-MM-dd
|
||||
* 支持格式:
|
||||
* - yyyy.MM.dd / yyyy/MM/dd / yyyy年MM月dd日
|
||||
* - yyyy.M.d / yyyy/M/d / yyyy年M月d日
|
||||
* - yy.MM.dd / yy.M.d
|
||||
* 特殊值:空值、"长期"、"永久" 转9999-12-31
|
||||
*/
|
||||
public static String convertLklDate(String dateStr) {
|
||||
String DEFAULT_FUTURE_DATE = "9999-12-31";
|
||||
if (dateStr == null || dateStr.trim().isEmpty()) {
|
||||
return DEFAULT_FUTURE_DATE;
|
||||
}
|
||||
|
||||
dateStr = dateStr.trim();
|
||||
|
||||
// 处理特殊值
|
||||
if ("长期".equals(dateStr) || "永久".equals(dateStr)) {
|
||||
return DEFAULT_FUTURE_DATE;
|
||||
}
|
||||
|
||||
int length = dateStr.length();
|
||||
|
||||
// 快速判断格式并解析
|
||||
try {
|
||||
// 中文格式(yyyy年MM月dd日 或 yyyy年M月d日)
|
||||
if (dateStr.contains("年")) {
|
||||
if (length >= 10) {
|
||||
return LocalDate.parse(dateStr,
|
||||
DateTimeFormatter.ofPattern("yyyy年MM月dd日")).toString();
|
||||
} else {
|
||||
return LocalDate.parse(dateStr,
|
||||
new DateTimeFormatterBuilder()
|
||||
.appendPattern("yyyy'年'M'月'd'日'")
|
||||
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
|
||||
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
|
||||
.toFormatter()).toString();
|
||||
}
|
||||
}
|
||||
|
||||
// 检查分隔符
|
||||
char separator = ' ';
|
||||
if (dateStr.contains(".")) {
|
||||
separator = '.';
|
||||
} else if (dateStr.contains("/")) {
|
||||
separator = '/';
|
||||
} else {
|
||||
return DEFAULT_FUTURE_DATE; // 无效格式
|
||||
}
|
||||
|
||||
// 判断年份位数
|
||||
boolean isFourDigitYear = length >= 4 &&
|
||||
Character.isDigit(dateStr.charAt(0)) &&
|
||||
Character.isDigit(dateStr.charAt(1)) &&
|
||||
Character.isDigit(dateStr.charAt(2)) &&
|
||||
Character.isDigit(dateStr.charAt(3));
|
||||
|
||||
// 4位年份格式
|
||||
if (isFourDigitYear) {
|
||||
if (length >= 10) {
|
||||
return LocalDate.parse(dateStr,
|
||||
DateTimeFormatter.ofPattern("yyyy" + separator + "MM" + separator + "dd")).toString();
|
||||
} else {
|
||||
return LocalDate.parse(dateStr,
|
||||
new DateTimeFormatterBuilder()
|
||||
.appendPattern("yyyy" + separator + "M" + separator + "d")
|
||||
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
|
||||
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
|
||||
.toFormatter()).toString();
|
||||
}
|
||||
}
|
||||
// 2位年份格式
|
||||
else {
|
||||
if (length >= 8) {
|
||||
return LocalDate.parse(dateStr,
|
||||
new DateTimeFormatterBuilder()
|
||||
.appendValueReduced(ChronoField.YEAR, 2, 2, 2000)
|
||||
.appendPattern("." + "MM" + "." + "dd")
|
||||
.toFormatter()).toString();
|
||||
} else {
|
||||
return LocalDate.parse(dateStr,
|
||||
new DateTimeFormatterBuilder()
|
||||
.appendValueReduced(ChronoField.YEAR, 2, 2, 2000)
|
||||
.appendPattern(separator + "M" + separator + "d")
|
||||
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
|
||||
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
|
||||
.toFormatter()).toString();
|
||||
}
|
||||
}
|
||||
} catch (DateTimeException e) {
|
||||
// 解析失败,返回默认值
|
||||
return DEFAULT_FUTURE_DATE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(convertLklDate("2025.01.02")); // 2025-01-02
|
||||
System.out.println(convertLklDate("2025/1/2")); // 2025-01-02
|
||||
System.out.println(convertLklDate("2025年1月2日")); // 2025-01-02
|
||||
System.out.println(convertLklDate("25.1.2")); // 2025-01-02
|
||||
System.out.println(convertLklDate("25.01.02")); // 2025-01-02
|
||||
System.out.println(convertLklDate("长期")); // 9999-12-31
|
||||
System.out.println(convertLklDate(null)); // 9999-12-31
|
||||
System.out.println(convertLklDate("2025.2.30")); // 9999-12-31(无效日期)
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// System.out.println(removeProvinceCityDistrict("广西壮族自治区贵港市桂平市西山镇新安街粤桂花城1102号"));
|
||||
System.out.println(verifyBusinessLicense("99365484C3GKUAU964"));
|
||||
System.out.println(validateIDCard("45088119970105771X"));
|
||||
}
|
||||
|
||||
public static String encode(String str) {
|
||||
|
||||
@ -53,8 +53,8 @@ public class LakalaController extends BaseControllerImpl {
|
||||
// return "";
|
||||
|
||||
List<String> tags = new ArrayList<>();
|
||||
tags.add("纯净水");
|
||||
tags.add("放心");
|
||||
// tags.add("纯净水");
|
||||
// tags.add("放心");
|
||||
return libraryProductService.matchLibraryProducts(paramsJSON.getStr("barcode"), paramsJSON.getStr("productName"), tags);
|
||||
|
||||
}
|
||||
|
||||
@ -516,6 +516,9 @@ public class LklTkServiceImpl {
|
||||
logger.debug("进件返回结果:{}", respBody);
|
||||
if (response.getStatusCode() != HttpStatus.OK && ObjectUtil.isNotEmpty(respBody)) {
|
||||
String errMsg = respBody.getStr("message") == null ? "未知错误" : respBody.getStr("message");
|
||||
|
||||
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + errMsg);
|
||||
|
||||
return Pair.of(false, "进件失败:" + errMsg);
|
||||
}
|
||||
|
||||
@ -524,11 +527,16 @@ public class LklTkServiceImpl {
|
||||
// 表中的内部外部商户号暂时都传同一个内部商户号,以便异步通知更改记录
|
||||
Boolean success = shopMchEntryService.updateMerchEntryLklMerCupNo(mchMobile, CommonConstant.Disable2, lklMerInnerNo, lklMerInnerNo, formData.toString(), respBody.toString());
|
||||
if (!success) {
|
||||
|
||||
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "请求进件成功,但更新商户号失败!");
|
||||
|
||||
return Pair.of(false, "请求进件成功,但更新商户号失败!");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("拉卡拉进件异常:{}", e.getMessage());
|
||||
shopMchEntryService.updateMerchEntryApprovalByMchId(shopMchEntry.getId(), "", CommonConstant.MCH_APPR_STA_LKL_NOPASS, "进件失败:" + e.getMessage());
|
||||
|
||||
return Pair.of(false, "进件失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@ import com.suisung.mall.common.api.CommonResult;
|
||||
import com.suisung.mall.common.constant.CommonConstant;
|
||||
import com.suisung.mall.common.modules.store.ShopMchEntry;
|
||||
import com.suisung.mall.common.utils.BankUtil;
|
||||
import com.suisung.mall.common.utils.DateTimeUtils;
|
||||
import com.suisung.mall.common.utils.StringUtils;
|
||||
import com.suisung.mall.common.utils.phone.PhoneNumberUtils;
|
||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||
@ -249,7 +250,6 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
return CommonResult.failed("店铺名已被使用!");
|
||||
}
|
||||
|
||||
|
||||
// 营业执照经营范围内容
|
||||
if (ObjectUtil.isEmpty(record.getSales_info())) {
|
||||
record.setSales_info(record.getBiz_license_content());
|
||||
@ -262,6 +262,10 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
record.setApproval_status(CommonConstant.MCH_APPR_STA_PADDING);
|
||||
record.setApproval_remark("您的申请入驻平台材料已提交,待审中,请耐心等待!");
|
||||
record.setStatus(CommonConstant.Enable);
|
||||
|
||||
// 转换拉卡拉的日期格式 yyyy-MM-dd
|
||||
record = convLklDateFormat(record);
|
||||
|
||||
if (!add(record)) {
|
||||
return CommonResult.failed("入驻信息提交失败!");
|
||||
}
|
||||
@ -321,7 +325,7 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
|
||||
Boolean isQy = true;
|
||||
// 检查企业、法人或个人的营业执照或身份证
|
||||
if (ObjectUtil.isNotEmpty(oldRecord.getEntity_type()) && oldRecord.getEntity_type().equals(2)) {
|
||||
if (ObjectUtil.isNotEmpty(oldRecord.getEntity_type()) && !oldRecord.getEntity_type().equals(CommonConstant.MCH_ENTITY_TYPE_QY)) {
|
||||
// 个人
|
||||
// if (StrUtil.isBlank(record.getIndividual_id_number()) || StrUtil.isBlank(record.getIndividual_id_images()) || StrUtil.isBlank(record.getIndividual_id_images2())) {
|
||||
// return CommonResult.failed("缺少个人身份证信息!");
|
||||
@ -385,8 +389,12 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
record.setApproval_invalid_col("[]"); // 清除历史审核无效字段
|
||||
record.setUpdated_by(userId);
|
||||
record.setUpdated_at(new Date());
|
||||
record.setStatus(CommonConstant.Enable);
|
||||
record.setSigned_status(CommonConstant.CONTRACT_SIGN_STA_ING); // 重置合同签署状态
|
||||
// 重置审核状态,合同等相关字段
|
||||
record = resetAuditColumns(record);
|
||||
|
||||
// 转换拉卡拉的日期格式 yyyy-MM-dd
|
||||
record = convLklDateFormat(record);
|
||||
|
||||
if (!updateById(record)) {
|
||||
return CommonResult.failed("重新申请入驻提交失败!");
|
||||
}
|
||||
@ -404,6 +412,61 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
return CommonResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回或重新申请入驻时,重置入驻申请的合同信息
|
||||
*
|
||||
* @param record
|
||||
* @return
|
||||
*/
|
||||
private ShopMchEntry resetAuditColumns(ShopMchEntry record) {
|
||||
if (record == null) {
|
||||
return null;
|
||||
}
|
||||
record.setStatus(CommonConstant.Enable);
|
||||
record.setSigned_status(CommonConstant.CONTRACT_SIGN_STA_ING); // 重置合同签署状态
|
||||
record.setApproval_status(CommonConstant.MCH_APPR_STA_PADDING);
|
||||
record.setApproval_remark("");
|
||||
record.setLkl_ec_file_path("");
|
||||
record.setLkl_ec_name("");
|
||||
record.setLkl_ec_no("");
|
||||
record.setLkl_ec_result_url("");
|
||||
record.setApproval_invalid_col("[]");
|
||||
record.setHas_ec_signed(CommonConstant.Disable2);
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换拉卡拉的日期格式 yyyy-MM-dd
|
||||
*
|
||||
* @param record
|
||||
* @return
|
||||
*/
|
||||
private ShopMchEntry convLklDateFormat(ShopMchEntry record) {
|
||||
if (record == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (CommonConstant.MCH_ENTITY_TYPE_QY.equals(record.getEntity_type())) {
|
||||
if (StrUtil.isNotBlank(record.getBiz_license_period_begin())) {
|
||||
record.setBiz_license_period_begin(DateTimeUtils.convertLklDate(record.getBiz_license_period_begin()));
|
||||
}
|
||||
record.setBiz_license_period_end(DateTimeUtils.convertLklDate(record.getBiz_license_period_end()));
|
||||
|
||||
if (StrUtil.isNotBlank(record.getLegal_person_id_period_begin())) {
|
||||
record.setLegal_person_id_period_begin(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_begin()));
|
||||
}
|
||||
record.setLegal_person_id_period_end(DateTimeUtils.convertLklDate(record.getLegal_person_id_period_end()));
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(record.getIndividual_id_period_begin())) {
|
||||
record.setIndividual_id_period_begin(DateTimeUtils.convertLklDate(record.getIndividual_id_period_begin()));
|
||||
}
|
||||
record.setIndividual_id_period_end(DateTimeUtils.convertLklDate(record.getIndividual_id_period_end()));
|
||||
}
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
/**
|
||||
* 商家入驻申请列表
|
||||
*
|
||||
@ -573,6 +636,12 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
approvalInvalidCol = "[]";
|
||||
}
|
||||
|
||||
// 如果是驳回状态,直接返回成功消息
|
||||
if (approvalStatus.equals(CommonConstant.MCH_APPR_STA_NOPASS)) {
|
||||
// 重置审核状态,合同等相关字段
|
||||
record = resetAuditColumns(record);
|
||||
}
|
||||
|
||||
|
||||
// 自动计算商家分成比例
|
||||
BigDecimal splitRatio = shopBaseStoreCategoryService.getStoreCategoryRatio(record.getBiz_category());
|
||||
@ -580,16 +649,21 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
|
||||
splitRatio = new BigDecimal("100");
|
||||
}
|
||||
|
||||
// 构建更新参数
|
||||
updateWrapper
|
||||
.set("approval_status", approvalStatus)
|
||||
.set("approval_remark", approvalRemark)
|
||||
.set("split_ratio", splitRatio)
|
||||
.set("approval_invalid_col", approvalInvalidCol)
|
||||
.set("updated_by", userId);
|
||||
|
||||
record.setApproval_status(approvalStatus);
|
||||
record.setApproval_remark(approvalRemark);
|
||||
record.setSplit_ratio(splitRatio);
|
||||
record.setUpdated_by(userId);
|
||||
// // 构建更新参数
|
||||
// updateWrapper
|
||||
// .set("approval_status", approvalStatus)
|
||||
// .set("approval_remark", approvalRemark)
|
||||
// .set("split_ratio", splitRatio)
|
||||
// .set("approval_invalid_col", approvalInvalidCol)
|
||||
// .set("updated_by", userId);
|
||||
|
||||
// 执行更新操作
|
||||
if (!update(updateWrapper)) {
|
||||
if (!updateById(record)) {
|
||||
log.error("系统处理审批出错,请联系管理员!当前记录ID: {}", id);
|
||||
return CommonResult.failed("系统处理审批出错,请联系管理员!");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user