Browse Source

商户入驻发送消息

Yangzw 7 months ago
parent
commit
f6b67250c0
13 changed files with 256 additions and 21 deletions
  1. 5 0
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/MessageTemplateConstants.java
  2. 3 1
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/wxmessage/WcChatMessageTemplateIdEnum.java
  3. 13 3
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/utils/wechat/WcChatMessageUtils.java
  4. 36 0
      feifan-module-sale/feifan-module-sale-api/src/main/java/cn/newfeifan/mall/module/enums/MerchantApplyCheckPersonStatusEnum.java
  5. 2 4
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/MerchantApplyController.java
  6. 3 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplyPageReqVO.java
  7. 4 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplyRespVO.java
  8. 3 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplySaveReqVO.java
  9. 5 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/dataobject/merchantapply/MerchantApplyDO.java
  10. 11 1
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/mysql/merchantapply/MerchantApplyMapper.java
  11. 5 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/merchantapply/MerchantApplyService.java
  12. 163 12
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/merchantapply/MerchantApplyServiceImpl.java
  13. 3 0
      sql/mysql/建空库SQL/19_20240801.sql

+ 5 - 0
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/MessageTemplateConstants.java

@@ -27,4 +27,9 @@ public interface MessageTemplateConstants {
      */
     String[] ORDER_NO_DELIVERY_List = Arrays.asList("trade:order:query", "trade:order:update", "trade:order:pick-up").toArray(new String[0]);
 
+    /**
+     * 入驻审核通知需要的权限
+     */
+    String[] MERCHANT_APPLY_CHECK_LIST = Arrays.asList("sale:merchant-apply:query", "sale:merchant-apply:update").toArray(new String[0]);
+
 }

+ 3 - 1
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/wxmessage/WcChatMessageTemplateIdEnum.java

@@ -18,7 +18,9 @@ public enum WcChatMessageTemplateIdEnum {
     ORDER_DELIVERY2("5","订单发货通知"),
     AFTER_SALE_CHECK2("6","售后订单审核通知"),
     AFTER_SALE_NO_CHECK2("7","售后订单待审核通知"),
-    ORDER_NO_DELIVERY2("8","订单出货提醒");
+    ORDER_NO_DELIVERY2("8","订单出货提醒"),
+    MERCHANT_APPLY_CHECK("9","商户入驻申请审批通知"),
+    MERCHANT_APPLY_CHECK_RESULT("10","商户入驻审核结果通知");
 
     private final String templateId;
     private final String name;

+ 13 - 3
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/utils/wechat/WcChatMessageUtils.java

@@ -28,8 +28,7 @@ import java.time.LocalDateTime;
 import java.util.*;
 
 import static cn.newfeifan.mall.module.system.constant.SystemConstants.WX_TICK_KEY_APPID;
-import static cn.newfeifan.mall.module.trade.enums.MessageTemplateConstants.AFTER_SALE_NO_CHECK_List;
-import static cn.newfeifan.mall.module.trade.enums.MessageTemplateConstants.ORDER_NO_DELIVERY_List;
+import static cn.newfeifan.mall.module.trade.enums.MessageTemplateConstants.*;
 
 /**
  * 发送微信消息的工具类
@@ -103,7 +102,9 @@ public class WcChatMessageUtils {
         // 组装消息内容
         String userOpenId = null;
         if (wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.AFTER_SALE_NO_CHECK2.getTemplateId()) ||
-                wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
+                wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId()) ||
+                wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK.getTemplateId())
+        ) {
             userOpenId = getOpenIdBySysTemUserId(systemUserId);
         } else {
             userOpenId = getOpenId(userId);
@@ -317,6 +318,9 @@ public class WcChatMessageUtils {
         } else if (templateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
             // 订单待发货
             return permissionService.hasAnyPermissions(userId, ORDER_NO_DELIVERY_List);
+        } else if (templateId.equals(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK.getTemplateId())) {
+            // 商户入驻审核
+            return permissionService.hasAnyPermissions(userId, MERCHANT_APPLY_CHECK_LIST);
         }
         return false;
     }
@@ -341,6 +345,12 @@ public class WcChatMessageUtils {
         } else if (templateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
             //订单待发货
             return redisConfig.getPlatformDomain() + "/order";
+        } else if(templateId.equals(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK.getTemplateId())){
+            // 商户入驻申请审批通知
+            return redisConfig.getPlatformDomain();
+        } else if(templateId.equals(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK_RESULT.getTemplateId())){
+            // 商户入驻审核结果通知
+            return redisConfig.getMallDomain() + "/#/pages/public/merchant";
         }
         return null;
     }

+ 36 - 0
feifan-module-sale/feifan-module-sale-api/src/main/java/cn/newfeifan/mall/module/enums/MerchantApplyCheckPersonStatusEnum.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 商户申请审核人状态枚举类
+ */
+
+@RequiredArgsConstructor
+@Getter
+public enum MerchantApplyCheckPersonStatusEnum {
+
+    ONE(1, "廖总", 224L),
+    TWO(2, "徐总",225L),
+    THREE(3, "翁总",230L),
+    ZERO(0, "通过",null),
+    ERROR(4, "不通过",null);
+
+    private final Integer status;
+    private final String name;
+    private final Long userid;
+
+    // 审批流程还没有开通,暂时写死账号审批
+    public static Integer getCheckPersonStatus(Long systemUserId){
+        if(systemUserId.equals(224L)){      //170
+            return ONE.getStatus();
+        }else if(systemUserId.equals(225L)){        //218
+            return TWO.getStatus();
+        }else if (systemUserId.equals(230L)){       //219
+            return THREE.getStatus();
+        }else {
+            return -1;
+        }
+    }
+}

+ 2 - 4
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/MerchantApplyController.java

@@ -1,6 +1,5 @@
 package cn.newfeifan.mall.sale.controller.admin.merchantapply;
 
-import cn.newfeifan.mall.module.enums.MerchantApplyCheckStatusEnum;
 import cn.newfeifan.mall.sale.controller.admin.merchantapply.vo.MerchantApplyPageReqVO;
 import cn.newfeifan.mall.sale.controller.admin.merchantapply.vo.MerchantApplyRespVO;
 import cn.newfeifan.mall.sale.controller.admin.merchantapply.vo.MerchantApplySaveReqVO;
@@ -84,9 +83,8 @@ public class MerchantApplyController {
     @GetMapping("/getMerchantApplyCount")
     @Operation(summary = "获得商户申请待审核数量")
     @PreAuthorize("@ss.hasPermission('sale:merchant-apply:query')")
-    public CommonResult<Integer> getMerchantApplyCount(@Valid MerchantApplyPageReqVO pageReqVO) {
-        pageReqVO.setCheckStatus(MerchantApplyCheckStatusEnum.WAIT_AUDIT.getType());
-        return success(merchantApplyService.getMerchantApplyPage(pageReqVO).getList().size());
+    public CommonResult<Integer> getMerchantApplyCount() {
+        return success(merchantApplyService.selectMerchantApplyCount());
     }
 
     @GetMapping("/export-excel")

+ 3 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplyPageReqVO.java

@@ -117,4 +117,7 @@ public class MerchantApplyPageReqVO extends PageParam {
     @Schema(description = "身份证反面")
     private String identityCardReverseSide;
 
+    @Schema(description = "审核人状态:默认1表示廖总,2徐总,3翁总, 0通过", example = "2")
+    private Integer checkPersonStatus;
+
 }

+ 4 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplyRespVO.java

@@ -148,4 +148,8 @@ public class MerchantApplyRespVO {
     @ExcelProperty("身份证反面")
     private String identityCardReverseSide;
 
+    @Schema(description = "审核人状态:默认1表示廖总,2徐总,3翁总, 0通过", example = "2")
+    @ExcelProperty("审核人状态:默认1表示廖总,2徐总,3翁总, 0通过")
+    private Integer checkPersonStatus;
+
 }

+ 3 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/merchantapply/vo/MerchantApplySaveReqVO.java

@@ -110,4 +110,7 @@ public class MerchantApplySaveReqVO {
 
     @Schema(description = "身份证反面", requiredMode = Schema.RequiredMode.REQUIRED)
     private String identityCardReverseSide;
+
+    @Schema(description = "审核人状态:默认1表示廖总,2徐总,3翁总, 0通过", example = "2")
+    private Integer checkPersonStatus;
 }

+ 5 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/dataobject/merchantapply/MerchantApplyDO.java

@@ -156,4 +156,9 @@ public class MerchantApplyDO extends BaseDO {
      */
     private String identityCardReverseSide;
 
+    /**
+     * 审核人状态:默认1表示廖总,2徐总,3翁总, 0通过
+     */
+    private Integer checkPersonStatus;
+
 }

+ 11 - 1
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/mysql/merchantapply/MerchantApplyMapper.java

@@ -19,7 +19,6 @@ public interface MerchantApplyMapper extends BaseMapperX<MerchantApplyDO> {
         return selectPage(reqVO, new LambdaQueryWrapperX<MerchantApplyDO>()
                 .eqIfPresent(MerchantApplyDO::getLogoUrl, reqVO.getLogoUrl())
                 .likeIfPresent(MerchantApplyDO::getName, reqVO.getName())
-                .eqIfPresent(MerchantApplyDO::getStatus, reqVO.getStatus())
                 .eqIfPresent(MerchantApplyDO::getDescription, reqVO.getDescription())
                 .eqIfPresent(MerchantApplyDO::getContact, reqVO.getContact())
                 .eqIfPresent(MerchantApplyDO::getAddress, reqVO.getAddress())
@@ -41,6 +40,17 @@ public interface MerchantApplyMapper extends BaseMapperX<MerchantApplyDO> {
                 .eqIfPresent(MerchantApplyDO::getCheckComment, reqVO.getCheckComment())
                 .eqIfPresent(MerchantApplyDO::getApplyComment, reqVO.getApplyComment())
                 .eqIfPresent(MerchantApplyDO::getCheckStatus, reqVO.getCheckStatus())
+                .likeIfPresent(MerchantApplyDO::getAccountName, reqVO.getAccountName())
+                .eqIfPresent(MerchantApplyDO::getAccountNumber, reqVO.getAccountNumber())
+                .likeIfPresent(MerchantApplyDO::getBankName, reqVO.getBankName())
+                .eqIfPresent(MerchantApplyDO::getBrandLicensing, reqVO.getBrandLicensing())
+                .eqIfPresent(MerchantApplyDO::getOtherCertificate, reqVO.getOtherCertificate())
+                .eqIfPresent(MerchantApplyDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(MerchantApplyDO::getLegalPerson, reqVO.getLegalPerson())
+                .eqIfPresent(MerchantApplyDO::getLegalPersonNumber, reqVO.getLegalPersonNumber())
+                .eqIfPresent(MerchantApplyDO::getIdentityCardFront, reqVO.getIdentityCardFront())
+                .eqIfPresent(MerchantApplyDO::getIdentityCardReverseSide, reqVO.getIdentityCardReverseSide())
+                .eqIfPresent(MerchantApplyDO::getCheckPersonStatus, reqVO.getCheckPersonStatus())
                 .orderByDesc(MerchantApplyDO::getId));
     }
 

+ 5 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/merchantapply/MerchantApplyService.java

@@ -52,4 +52,9 @@ public interface MerchantApplyService {
      */
     PageResult<MerchantApplyDO> getMerchantApplyPage(MerchantApplyPageReqVO pageReqVO);
 
+    /**
+     * 获得商户申请数量
+     * @return 数量
+     */
+    Integer selectMerchantApplyCount();
 }

+ 163 - 12
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/merchantapply/MerchantApplyServiceImpl.java

@@ -1,9 +1,16 @@
 package cn.newfeifan.mall.sale.service.merchantapply;
 
+import cn.hutool.core.lang.Assert;
+import cn.newfeifan.mall.framework.ip.core.Area;
+import cn.newfeifan.mall.framework.ip.core.utils.AreaUtils;
+import cn.newfeifan.mall.module.enums.MerchantApplyCheckPersonStatusEnum;
 import cn.newfeifan.mall.module.enums.MerchantApplyCheckStatusEnum;
 import cn.newfeifan.mall.module.enums.MerchantStatusEnum;
 import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
 import cn.newfeifan.mall.module.member.service.user.MemberUserService;
+import cn.newfeifan.mall.module.system.controller.admin.ip.vo.AreaNodeRespVO;
+import cn.newfeifan.mall.module.trade.enums.wxmessage.WcChatMessageTemplateIdEnum;
+import cn.newfeifan.mall.module.trade.utils.wechat.WcChatMessageUtils;
 import cn.newfeifan.mall.sale.controller.admin.merchant.vo.MerchantSaveReqVO;
 import cn.newfeifan.mall.sale.controller.admin.merchantapply.vo.MerchantApplyPageReqVO;
 import cn.newfeifan.mall.sale.controller.admin.merchantapply.vo.MerchantApplySaveReqVO;
@@ -14,6 +21,7 @@ import cn.newfeifan.mall.sale.dal.dataobject.merchant.MerchantDO;
 import cn.newfeifan.mall.sale.service.merchant.MerchantService;
 import cn.newfeifan.mall.sale.service.merchantapplylog.MerchantApplyLogService;
 import cn.newfeifan.mall.sale.service.shop.ShopService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
@@ -29,6 +37,8 @@ import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
 import cn.newfeifan.mall.sale.dal.mysql.merchantapply.MerchantApplyMapper;
 
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -61,6 +71,9 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
     @Resource
     private MemberUserService memberUserService;
 
+    @Resource
+    private WcChatMessageUtils wcChatMessageUtils;
+
     @Override
     public Long createMerchantApply(MerchantApplySaveReqVO createReqVO) {
         // 插入
@@ -75,23 +88,72 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
     public void updateMerchantApply(MerchantApplySaveReqVO updateReqVO) {
         // 校验存在
         validateMerchantApplyExists(updateReqVO.getId());
+
+        // 登录用户id
+        Long loginUserId = getLoginUserId();
+        assert loginUserId != null : "登录用户ID不能为空";
+
+        MerchantApplyDO updateDO = BeanUtils.toBean(updateReqVO, MerchantApplyDO.class);
+        updateDO.setCheckTime(LocalDateTime.now());
+        updateDO.setCheckSystemUserId(loginUserId);
+
+        // 如果审核不通过
+        if (updateReqVO.getCheckStatus().equals(MerchantApplyCheckStatusEnum.AUDIT_FAIL.getType())) {
+            // 更新
+            updateDO.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.ERROR.getStatus());
+            merchantApplyMapper.updateById(updateDO);
+
+            MerchantApplyLogSaveReqVO build = MerchantApplyLogSaveReqVO.builder()
+                    .status(updateDO.getCheckStatus())
+                    .merchantApplyId(updateDO.getId())
+                    .checkComment(updateDO.getCheckComment())
+                    .build();
+            merchantApplyLogService.createMerchantApplyLog(build);
+
+            // 商户审核不通过向用户发送微信信息
+            sentWxChatMessageToTheMemberUser(updateDO);
+
+            return;
+        } else {
+            // 审核通过
+            // 一级审核人
+            if (MerchantApplyCheckPersonStatusEnum.getCheckPersonStatus(loginUserId).equals(MerchantApplyCheckPersonStatusEnum.ONE.getStatus())) {
+                // 修改为向二级审核人审核,状态不变
+                updateDO.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.TWO.getStatus());
+                updateDO.setCheckStatus(MerchantApplyCheckStatusEnum.WAIT_AUDIT.getType());
+                merchantApplyMapper.updateById(updateDO);
+
+                // todo 商户审核通过向上级发送微信信息
+                sentWxChantMessageToThSystemUser(updateDO,MerchantApplyCheckPersonStatusEnum.TWO.getUserid());
+                return;
+            } else if (MerchantApplyCheckPersonStatusEnum.getCheckPersonStatus(loginUserId).equals(MerchantApplyCheckPersonStatusEnum.TWO.getStatus())) {
+                // 修改为向三级审核人审核,状态不变
+                updateDO.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.THREE.getStatus());
+                updateDO.setCheckStatus(MerchantApplyCheckStatusEnum.WAIT_AUDIT.getType());
+                merchantApplyMapper.updateById(updateDO);
+
+                // todo 商户审核通过向上级发送微信信息
+                sentWxChantMessageToThSystemUser(updateDO,MerchantApplyCheckPersonStatusEnum.THREE.getUserid());
+
+                return;
+            }
+        }
+
+
         // 更新
-        MerchantApplyDO updateObj = BeanUtils.toBean(updateReqVO, MerchantApplyDO.class);
-        updateObj.setCheckTime(LocalDateTime.now());
-        updateObj.setCheckSystemUserId(getLoginUserId());
-        merchantApplyMapper.updateById(updateObj);
+        merchantApplyMapper.updateById(updateDO);
 
         MerchantApplyLogSaveReqVO build = MerchantApplyLogSaveReqVO.builder()
-                .status(updateObj.getCheckStatus())
-                .merchantApplyId(updateObj.getId())
-                .checkComment(updateObj.getCheckComment())
+                .status(updateDO.getCheckStatus())
+                .merchantApplyId(updateDO.getId())
+                .checkComment(updateDO.getCheckComment())
                 .build();
         merchantApplyLogService.createMerchantApplyLog(build);
 
         MerchantSaveReqVO bean = BeanUtils.toBean(updateReqVO, MerchantSaveReqVO.class);
-        MerchantDO merchantDO = merchantService.selectByApplyId(updateObj.getId());
+        MerchantDO merchantDO = merchantService.selectByApplyId(updateDO.getId());
         // 如果审核通过
-        if (Objects.equals(updateObj.getCheckStatus(), MerchantApplyCheckStatusEnum.AUDIT_PASS.getType())) {
+        if (Objects.equals(updateDO.getCheckStatus(), MerchantApplyCheckStatusEnum.AUDIT_PASS.getType())) {
             bean.setStatus(MerchantStatusEnum.USING.getType());
 
             // 创建
@@ -100,7 +162,7 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
                 MemberUserDO user = memberUserService.getUser(updateReqVO.getApplyMemberUserId());
 
                 bean.setId(null);
-                bean.setMerchantApplyId(updateObj.getId());
+                bean.setMerchantApplyId(updateDO.getId());
                 bean.setContactNumber(user.getMobile());
                 merchantService.createMerchant(bean, !user.getMobile().equals(updateReqVO.getContactNumber()) ? updateReqVO.getContactNumber() : null);
             } else {
@@ -117,14 +179,83 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
                     shopService.updateShop(BeanUtils.toBean(shopRespVO, ShopSaveReqVO.class));
                 }
             }
-        } else if (Objects.equals(updateObj.getCheckStatus(), MerchantApplyCheckStatusEnum.AUDIT_FAIL.getType())) {
-            if(merchantDO != null){
+
+            // 商户审核通过向用户发送微信信息
+            sentWxChatMessageToTheMemberUser(updateDO);
+        } else if (Objects.equals(updateDO.getCheckStatus(), MerchantApplyCheckStatusEnum.AUDIT_FAIL.getType())) {
+            if (merchantDO != null) {
                 merchantDO.setStatus(MerchantStatusEnum.STOP.getType());
                 merchantService.updateMerchant(merchantDO);
             }
         }
     }
 
+    /**
+     * 发送微信信息到用户
+     * @param merchantApply 入驻申请
+     */
+    private void sentWxChatMessageToTheMemberUser(MerchantApplyDO merchantApply) {
+        List<String> params = new ArrayList<>();
+
+        params.add(merchantApply.getName());
+        params.add(merchantApply.getCheckStatus().equals(MerchantApplyCheckStatusEnum.AUDIT_PASS.getType()) ? "通过" : "拒绝");
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        params.add(LocalDateTime.now().format(formatter));
+
+        wcChatMessageUtils.sendWcChatMessage(merchantApply.getApplyMemberUserId(), WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK_RESULT.getTemplateId(),
+                params, getLoginUserId(), merchantApply.getApplyMemberUserId(), merchantApply.getId());
+    }
+
+    /**
+     * 发送微信信息到系统用户
+     * @param merchantApply 入驻申请
+     */
+    private void sentWxChantMessageToThSystemUser(MerchantApplyDO merchantApply, Long sentSystemUserId){
+        List<String> params = new ArrayList<>();
+
+        params.add(merchantApply.getName());
+        params.add(merchantApply.getContact());
+        params.add(merchantApply.getContactNumber());
+        params.add(merchantApply.getAddress() == null || merchantApply.getAddress().isEmpty() ? "-" : merchantApply.getAddress());
+        params.add(getAreaById(merchantApply.getAreaId().intValue()));
+
+        wcChatMessageUtils.sendWcChatMessage(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK.getTemplateId(),
+                params, sentSystemUserId, merchantApply.getId());
+    }
+
+    private String getAreaById(Integer id){
+        Area area = AreaUtils.getArea(Area.ID_CHINA);
+        Assert.notNull(area, "获取不到中国");
+        List<AreaNodeRespVO> bean = BeanUtils.toBean(area.getChildren(), AreaNodeRespVO.class);
+
+        for (AreaNodeRespVO areaNode : bean) {
+            if (areaNode.getChildren() != null) {
+                String result = findInSubList(areaNode.getChildren(), id);
+                if (result != null) {
+                    return result;
+                }
+            }
+        }
+        return "未找到对应的省市区";
+    }
+
+    private String findInSubList(List<AreaNodeRespVO> subList, long childId) {
+        for (AreaNodeRespVO areaNode : subList) {
+            if (areaNode.getId() == childId) {
+                return areaNode.getName();
+            }
+            if (areaNode.getChildren() != null) {
+                String result = findInSubList(areaNode.getChildren(), childId);
+                if (result != null) {
+                    // 假设我们想要返回整个路径,例如 "北京市东城区"
+                    return areaNode.getName() + result;
+                }
+            }
+        }
+        return null;
+    }
+
     @Override
     public void deleteMerchantApply(Long id) {
         // 校验存在
@@ -146,7 +277,27 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
 
     @Override
     public PageResult<MerchantApplyDO> getMerchantApplyPage(MerchantApplyPageReqVO pageReqVO) {
+
+        Long loginUserId = getLoginUserId();
+
+        if (loginUserId != null && loginUserId != 1L) {
+            pageReqVO.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.getCheckPersonStatus(loginUserId));
+        }
+
         return merchantApplyMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public Integer selectMerchantApplyCount() {
+
+        LambdaQueryWrapper<MerchantApplyDO> wrapper = new LambdaQueryWrapper<MerchantApplyDO>().eq(MerchantApplyDO::getCheckStatus, MerchantApplyCheckStatusEnum.WAIT_AUDIT.getType());
+
+        Long loginUserId = getLoginUserId();
+        if (loginUserId != null && loginUserId != 1L) {
+            wrapper.eq(MerchantApplyDO::getCheckPersonStatus, MerchantApplyCheckPersonStatusEnum.getCheckPersonStatus(loginUserId));
+        }
+
+        return merchantApplyMapper.selectCount(wrapper).intValue();
+    }
+
 }

+ 3 - 0
sql/mysql/建空库SQL/19_20240801.sql

@@ -34,4 +34,7 @@ ALTER TABLE sale_merchant
 		ADD COLUMN `identity_card_front` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '身份证正面',
 		ADD COLUMN `identity_card_reverse_side` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '身份证反面';
 
+ALTER TABLE sale_merchant_apply
+    ADD COLUMN `check_person_status` tinyint DEFAULT '1' COMMENT '审核人状态:默认1表示廖总,2徐总,3翁总, 0通过';
+