From f9c648bc0e17d984af76be6fad946803373070eb Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Wed, 5 Mar 2025 15:57:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=AE=B6=E5=85=A5=E9=A9=BB=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=A2=9E=E5=8A=A0=20=20=E6=97=A0=E6=95=88=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=92=8C=E5=90=88=E5=90=8C=E7=AD=BE=E7=BD=B2=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/merch/ShopMerchEntry.java | 6 ++ .../mall/common/utils/StringUtils.java | 56 +++++++++++-------- .../service/EsignPlatformInfoService.java | 12 ++++ .../impl/EsignPlatformInfoServiceImpl.java | 25 +++++++++ .../impl/ShopMessageTemplateServiceImpl.java | 22 ++++---- .../admin/ShopMerchEntryAdminController.java | 2 +- .../mobile/ShopMerchEntryController.java | 10 ++-- .../store/service/ShopMerchEntryService.java | 7 ++- .../impl/ShopMerchEntryServiceImpl.java | 48 ++++++++++++---- 9 files changed, 132 insertions(+), 56 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/merch/ShopMerchEntry.java b/mall-common/src/main/java/com/suisung/mall/common/modules/merch/ShopMerchEntry.java index 4c85e768..bf6d08c3 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/merch/ShopMerchEntry.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/merch/ShopMerchEntry.java @@ -146,6 +146,12 @@ public class ShopMerchEntry implements Serializable { @ApiModelProperty(value = "入驻商家审批时的备注信息") private String approval_remark; + @ApiModelProperty(value = "审核时无效字段集合,如:[`bank_name`,`license_number`,…]") + private String approval_invalid_col; + + @ApiModelProperty(value = "合同签署状态:0-无任何签署;1-一方签署;2-双方已签署;") + private Integer signed_status; + @ApiModelProperty(value = "该商家入驻记录是否有效,0:无效,1:有效") private Integer status; diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/StringUtils.java b/mall-common/src/main/java/com/suisung/mall/common/utils/StringUtils.java index 2126fb77..9de7ca9a 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/StringUtils.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/StringUtils.java @@ -1,6 +1,5 @@ package com.suisung.mall.common.utils; -import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.*; import org.slf4j.Logger; @@ -37,6 +36,14 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils { private static final Random RANDOM = new Random(); private static final Logger logger = LoggerFactory.getLogger(StringUtils.class); private static final ObjectMapper objectMapper = new ObjectMapper(); + /** + * 全地址去除省市区,保留详细地址 + * + * @param fullAddress 比如:广西壮族自治区贵港市桂平市西山镇新安街粤桂花城1102号 -> 西山镇新安街粤桂花城1102号 + * @return + */ + private static final String PROVINCE_CITY_DISTRICT_REGEX = + "(?(\\w+省|\\w+自治区))?(?(\\w+市|\\w+自治州))?(?(\\w+区|\\w+县|\\w+市辖区|\\w+市))?"; public static void main(String[] args) { // System.out.println(removeProvinceCityDistrict("广西壮族自治区贵港市桂平市西山镇新安街粤桂花城1102号")); @@ -277,37 +284,38 @@ public final class StringUtils extends org.apache.commons.lang3.StringUtils { return base64.substring(0, length); } - /** - * 全地址去除省市区,保留详细地址 - * - * @param fullAddress 比如:广西壮族自治区贵港市桂平市西山镇新安街粤桂花城1102号 -> 西山镇新安街粤桂花城1102号 - * @return - */ public static String removeProvinceCityDistrict(String fullAddress) { - if (StrUtil.isBlank(fullAddress)) { + if (StringUtils.isBlank(fullAddress)) { return ""; } - // 使用正则表达式匹配省市区信息 - Pattern pattern = Pattern.compile("(.*?省|.*?自治区)?(.*?市|.*?自治州)?(.*?区|.*?县|.*?市辖区|.*?市)?"); - Matcher matcher = pattern.matcher(fullAddress); - if (!matcher.find()) { - return fullAddress; - } + try { + Pattern pattern = Pattern.compile(PROVINCE_CITY_DISTRICT_REGEX); + Matcher matcher = pattern.matcher(fullAddress); - if (matcher.group(1) != null) { - fullAddress = fullAddress.replace(matcher.group(1), ""); - } + if (!matcher.find()) { + return fullAddress; + } - if (matcher.group(2) != null) { - fullAddress = fullAddress.replace(matcher.group(2), ""); - } + StringBuilder result = new StringBuilder(fullAddress); - if (matcher.group(3) != null) { - fullAddress = fullAddress.replace(matcher.group(3), ""); - } + // Remove matched groups in reverse order to avoid index shifting issues + if (matcher.group("district") != null) { + result.replace(matcher.start("district"), matcher.end("district"), ""); + } + if (matcher.group("city") != null) { + result.replace(matcher.start("city"), matcher.end("city"), ""); + } + if (matcher.group("province") != null) { + result.replace(matcher.start("province"), matcher.end("province"), ""); + } - return fullAddress; + return result.toString().trim(); + } catch (Exception e) { + // Log the exception for debugging purposes + System.err.println("Error processing address: " + e.getMessage()); + return fullAddress; // Return original address on failure + } } /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/EsignPlatformInfoService.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/EsignPlatformInfoService.java index 8b7ff5db..092b6c23 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/EsignPlatformInfoService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/EsignPlatformInfoService.java @@ -9,7 +9,11 @@ package com.suisung.mall.shop.esign.service; import com.suisung.mall.common.modules.esign.EsignPlatformInfo; +import org.springframework.data.util.Pair; +/** + * 平台方详细信息接口 + */ public interface EsignPlatformInfoService { /** @@ -20,4 +24,12 @@ public interface EsignPlatformInfoService { * @return */ EsignPlatformInfo getEsignPlatformInfo(Integer type, String licenseNumber); + + + /** + * 获取平台方手机号和营业执照号 + * + * @return + */ + Pair getEsignPlatformMobileAndLicenseNumber(); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java index f02e3aab..ed8be048 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignPlatformInfoServiceImpl.java @@ -12,9 +12,11 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.suisung.mall.common.modules.esign.EsignPlatformInfo; +import com.suisung.mall.common.utils.phone.PhoneNumberUtils; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.esign.mapper.EsignPlatformInfoMapper; import com.suisung.mall.shop.esign.service.EsignPlatformInfoService; +import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -47,4 +49,27 @@ public class EsignPlatformInfoServiceImpl extends BaseServiceImpl getEsignPlatformMobileAndLicenseNumber() { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("type", 0).select("mobile", "license_number", "legal_person_mobile"); + List esignPlatformInfos = list(queryWrapper); + if (CollectionUtil.isEmpty(esignPlatformInfos)) { + return null; + } + + EsignPlatformInfo esignPlatformInfo = esignPlatformInfos.get(0); + String mobile = esignPlatformInfo.getTelephone(); + if (!PhoneNumberUtils.checkPhoneNumber(mobile) && StrUtil.isNotBlank(esignPlatformInfo.getLegal_person_mobile())) { + mobile = esignPlatformInfo.getLegal_person_mobile(); + } + + return Pair.of(mobile, esignPlatformInfo.getLicense_number()); + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/message/service/impl/ShopMessageTemplateServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/message/service/impl/ShopMessageTemplateServiceImpl.java index 4247e4e5..051c5e30 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/message/service/impl/ShopMessageTemplateServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/message/service/impl/ShopMessageTemplateServiceImpl.java @@ -28,7 +28,6 @@ import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.wechat.ShopWechatTplmsg; import com.suisung.mall.common.pojo.dto.ErrorTypeEnum; import com.suisung.mall.common.pojo.dto.SmsDto; -import com.suisung.mall.common.service.impl.AliServiceImpl; import com.suisung.mall.common.utils.EmailUtil; import com.suisung.mall.common.utils.LogUtil; import com.suisung.mall.common.utils.ThirdUtil; @@ -45,10 +44,10 @@ import com.suisung.mall.shop.store.service.ShopStoreBaseService; import com.suisung.mall.shop.wechat.service.ShopWechatTplmsgService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.text.StringSubstitutor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; @@ -68,22 +67,19 @@ import static com.suisung.mall.common.utils.I18nUtil._; * @author Xinze * @since 2021-08-17 */ +@EnableAsync @Service @Slf4j public class ShopMessageTemplateServiceImpl extends BaseServiceImpl implements ShopMessageTemplateService { + @Autowired + ShopStoreBaseService shopStoreBaseService; @Autowired private AccountBaseConfigService accountBaseConfigService; - @Autowired private AccountService accountService; - @Autowired private SnsService snsService; - - @Autowired - ShopStoreBaseService shopStoreBaseService; - @Autowired private GeTuiUtil geTuiUtil; @@ -311,7 +307,7 @@ public class ShopMessageTemplateServiceImpl extends BaseServiceImpl tmplParams) { + public Boolean aliyunSmsSend(String mobile, String tmplCode, Map tmplParams) { if (StrUtil.isBlank(mobile) || StrUtil.isBlank(tmplCode)) { LogUtil.error("阿里云发送短信时,缺少必要参数!"); return false; @@ -647,11 +644,14 @@ public class ShopMessageTemplateServiceImpl extends BaseServiceImpl mobiles, String tmplCode, Map tmplParams) { int successCnt = 0; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopMerchEntryAdminController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopMerchEntryAdminController.java index d4605fb3..3cc33e93 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopMerchEntryAdminController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopMerchEntryAdminController.java @@ -51,6 +51,6 @@ public class ShopMerchEntryAdminController extends BaseControllerImpl { @RequestMapping(value = "/approval", method = RequestMethod.POST) public CommonResult shopMerchEntryApproval(@RequestBody JSONObject jsonParam) { // approvalStatus 入驻商家的审批状态:1-已通过;2-未通过;3-待审核; - return shopMerchEntryService.shopMerchEntryApproval(jsonParam.getLong("id"), jsonParam.getInt("approvalStatus"), jsonParam.getStr("approvalRemark")); + return shopMerchEntryService.shopMerchEntryApproval(jsonParam.getLong("id"), jsonParam.getInt("approvalStatus"), jsonParam.getStr("approvalRemark"), jsonParam.getStr("approvalInvalidCol")); } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/ShopMerchEntryController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/ShopMerchEntryController.java index 535eddb4..d5711fc0 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/ShopMerchEntryController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/ShopMerchEntryController.java @@ -21,8 +21,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; @Api(tags = "店铺基础信息表") @RestController @@ -59,10 +57,10 @@ public class ShopMerchEntryController extends BaseControllerImpl { @RequestMapping(value = "/detail", method = RequestMethod.POST) public CommonResult shopMerchEntryDetail(@RequestBody JSONObject jsonParam) { // approvalStatus 入驻商家的审批状态:1-已通过;2-未通过;3-待审核; - List approvalStatusList = new ArrayList(); - approvalStatusList.add(2); - approvalStatusList.add(3); - return shopMerchEntryService.shopMerchEntryDetail(null, jsonParam.getStr("mobile"), approvalStatusList); +// List approvalStatusList = new ArrayList(); +// approvalStatusList.add(2); +// approvalStatusList.add(3); + return shopMerchEntryService.shopMerchEntryDetail(null, jsonParam.getStr("mobile"), null); } @ApiOperation(value = "通过手机号mobile获取商家入驻审核状态", notes = "通过手机号获取商家入驻审核状态") diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopMerchEntryService.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopMerchEntryService.java index bdda3ef9..f1adbc10 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopMerchEntryService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopMerchEntryService.java @@ -55,11 +55,12 @@ public interface ShopMerchEntryService { * 商家入驻审批 * * @param id - * @param approvalStatus - * @param approvalRemark + * @param approvalStatus 入驻商家的审批状态:1-已通过;2-未通过;3-待审核;4-未申请; + * @param approvalRemark 审批备注 + * @param approvalInvalidCol 审批无效字段 * @return */ - CommonResult shopMerchEntryApproval(Long id, Integer approvalStatus, String approvalRemark); + CommonResult shopMerchEntryApproval(Long id, Integer approvalStatus, String approvalRemark, String approvalInvalidCol); /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMerchEntryServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMerchEntryServiceImpl.java index 05d0c94c..1fa4b87d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMerchEntryServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMerchEntryServiceImpl.java @@ -24,13 +24,18 @@ import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.common.utils.phone.PhoneNumberUtils; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.base.service.AccountBaseConfigService; +import com.suisung.mall.shop.esign.service.EsignPlatformInfoService; +import com.suisung.mall.shop.message.service.ShopMessageTemplateService; import com.suisung.mall.shop.store.mapper.ShopMerchEntryMapper; import com.suisung.mall.shop.store.service.ShopMerchEntryService; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @Service @@ -39,6 +44,12 @@ public class ShopMerchEntryServiceImpl extends BaseServiceImpl mobileAndLicenseNumber = esignPlatformInfoService.getEsignPlatformMobileAndLicenseNumber(); + if (mobileAndLicenseNumber != null) { + Map tmplArgs = new HashMap<>(1); + tmplArgs.put("name", record.getBiz_license_company()); // 商家公司名称 + // 所有店铺管理员的发送邮件, 提醒商家:您有一笔新的订单 ${order_id},请及时处理。 + shopMessageTemplateService.aliyunSmsSend(mobileAndLicenseNumber.getFirst(), "SMS_479760276", tmplArgs);//SMS_475836097 + } return CommonResult.success(); } @@ -246,12 +265,13 @@ public class ShopMerchEntryServiceImpl extends BaseServiceImpl updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("id", id).set("approval_status", approvalStatus) + updateWrapper.eq("id", id) + .set("approval_status", approvalStatus) .set("approval_remark", approvalRemark) .set("updated_by", userId); + // 指定哪些字段无效字段的审批细节 + if (StrUtil.isNotBlank(approvalInvalidCol)) { + updateWrapper.set("approval_invalid_col", approvalInvalidCol); + } + if (!update(updateWrapper)) { - return CommonResult.failed("审批出错,请联系管理员!"); + return CommonResult.failed("系统处理审批出错,请联系管理员!"); } // TODO 审核通过后,去拉卡拉进件,即时发送短信给商家,通知去签电子合同