Browse Source

加入入驻消息发送

Yangzw 7 months ago
parent
commit
029915a28d
16 changed files with 212 additions and 4 deletions
  1. 36 0
      feifan-module-mall/feifan-module-sale-api/src/main/java/cn/newfeifan/mall/module/sale/enums/MerchantApplyCheckPersonStatusEnum.java
  2. 6 0
      feifan-module-mall/feifan-module-sale-biz/pom.xml
  3. 2 0
      feifan-module-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/controller/app/merchantapply/vo/MerchantApplyPageReqVO.java
  4. 3 0
      feifan-module-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/controller/app/merchantapply/vo/MerchantApplyRespVO.java
  5. 3 0
      feifan-module-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/controller/app/merchantapply/vo/MerchantApplySaveReqVO.java
  6. 5 0
      feifan-module-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/dal/dataobject/merchantapply/MerchantApplyDO.java
  7. 79 1
      feifan-module-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/service/merchantapply/MerchantApplyServiceImpl.java
  8. 19 0
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/api/wechat/WcChatMessageUtilsApi.java
  9. 5 0
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/MessageTemplateConstants.java
  10. 3 1
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/wxmessage/WcChatMessageTemplateIdEnum.java
  11. 10 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/utils/wechat/WcChatMessageUtils.java
  12. 21 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/utils/wechat/WcChatMessageUtilsApiImpl.java
  13. 8 0
      feifan-module-member/feifan-module-member-api/src/main/java/cn/newfeifan/mall/module/member/api/user/MemberUserApi.java
  14. 5 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/api/user/MemberUserApiImpl.java
  15. 2 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserService.java
  16. 5 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserServiceImpl.java

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

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.sale.enums;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 商户申请审核人状态枚举类
+ */
+
+@RequiredArgsConstructor
+@Getter
+public enum MerchantApplyCheckPersonStatusEnum {
+
+    ONE(1, "廖总", 170L),
+    TWO(2, "徐总",218L),
+    THREE(3, "翁总",219L),
+    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       //224
+            return ONE.getStatus();
+        }else if(systemUserId.equals(225L)){        //218       //225
+            return TWO.getStatus();
+        }else if (systemUserId.equals(230L)){       //219       //230
+            return THREE.getStatus();
+        }else {
+            return -1;
+        }
+    }
+}

+ 6 - 0
feifan-module-mall/feifan-module-sale-biz/pom.xml

@@ -78,6 +78,12 @@
             <version>2.0.0-jdk8-snapshot</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-trade-api</artifactId>
+            <version>2.0.0-jdk8-snapshot</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

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

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

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

@@ -148,4 +148,7 @@ 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-mall/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/module/sale/controller/app/merchantapply/vo/MerchantApplySaveReqVO.java

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

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

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

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

@@ -1,13 +1,20 @@
 package cn.newfeifan.mall.module.sale.service.merchantapply;
 
+import cn.hutool.core.lang.Assert;
 import cn.newfeifan.mall.framework.common.exception.ErrorCode;
+import cn.newfeifan.mall.framework.ip.core.Area;
+import cn.newfeifan.mall.framework.ip.core.utils.AreaUtils;
 import cn.newfeifan.mall.module.member.api.user.MemberUserApi;
 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
 import cn.newfeifan.mall.module.member.enums.DictTypeConstants;
 import cn.newfeifan.mall.module.sale.controller.app.merchantapply.vo.MerchantApplyPageReqVO;
 import cn.newfeifan.mall.module.sale.controller.app.merchantapply.vo.MerchantApplySaveReqVO;
+import cn.newfeifan.mall.module.sale.enums.MerchantApplyCheckPersonStatusEnum;
 import cn.newfeifan.mall.module.sale.enums.MerchantApplyCheckStatusEnum;
+import cn.newfeifan.mall.module.system.controller.admin.ip.vo.AreaNodeRespVO;
 import cn.newfeifan.mall.module.system.service.user.AdminUserService;
+import cn.newfeifan.mall.module.trade.api.wechat.WcChatMessageUtilsApi;
+import cn.newfeifan.mall.module.trade.enums.wxmessage.WcChatMessageTemplateIdEnum;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -21,6 +28,10 @@ import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
 import cn.newfeifan.mall.module.sale.dal.mysql.merchantapply.MerchantApplyMapper;
 
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.newfeifan.mall.module.sale.enums.ErrorCodeConstants.*;
@@ -43,14 +54,22 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
     @Resource
     private MemberUserApi memberUserApi;
 
+    @Resource
+    private WcChatMessageUtilsApi wcChatMessageUtilsApi;
+
     @Override
     public Long createMerchantApply(MerchantApplySaveReqVO createReqVO) {
 
-        if(merchantApplyMapper.selectOne(MerchantApplyDO::getApplyMemberUserId, getLoginUserId()) != null){
+        // 校验商户账号是否已经存在
+        MemberUserRespDTO user = memberUserApi.getUser(getLoginUserId());
+        List<MemberUserRespDTO> users = memberUserApi.getUsersByMobile(user.getMobile());
+        List<MerchantApplyDO> merchantApplyDOS = merchantApplyMapper.selectList(MerchantApplyDO::getApplyMemberUserId, users.stream().map(MemberUserRespDTO::getId).collect(Collectors.toList()));
+        if(merchantApplyDOS != null && merchantApplyDOS.size() >= 1){
             ErrorCode ERROR = new ErrorCode(1_002_029_003, "当前手机号已存在商户账号");
             throw exception(ERROR);
         }
 
+
         // 校验存在
         if (usersService.getUserByMobile(createReqVO.getContactNumber()) != null) {
             ErrorCode ERROR = new ErrorCode(1_002_029_003, "联络人账户已存在");
@@ -60,6 +79,7 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
         // 插入
         MerchantApplyDO merchantApply = BeanUtils.toBean(createReqVO, MerchantApplyDO.class);
         merchantApply.setApplyMemberUserId(getLoginUserId());
+        merchantApply.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.ONE.getStatus());
 
         // 默认log
         if (createReqVO.getLogoUrl() == null || createReqVO.getLogoUrl().isEmpty()) {
@@ -67,10 +87,63 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
         }
 
         merchantApplyMapper.insert(merchantApply);
+
+        // 发送微信信息到系统用户
+        sentWxChantMessageToThSystemUser(merchantApply,MerchantApplyCheckPersonStatusEnum.ONE.getUserid());
+
         // 返回
         return 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()));
+
+        wcChatMessageUtilsApi.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 updateMerchantApply(MerchantApplySaveReqVO updateReqVO) {
 
@@ -95,8 +168,13 @@ public class MerchantApplyServiceImpl implements MerchantApplyService {
 
         // 所有变动都需要重新审核
         updateObj.setCheckStatus(MerchantApplyCheckStatusEnum.WAIT_AUDIT.getType());
+        updateObj.setCheckPersonStatus(MerchantApplyCheckPersonStatusEnum.ONE.getStatus());
+
 
         merchantApplyMapper.updateById(updateObj);
+
+        // 发送微信信息到系统用户
+        sentWxChantMessageToThSystemUser(updateObj,MerchantApplyCheckPersonStatusEnum.ONE.getUserid());
     }
 
     @Override

+ 19 - 0
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/api/wechat/WcChatMessageUtilsApi.java

@@ -0,0 +1,19 @@
+package cn.newfeifan.mall.module.trade.api.wechat;
+
+import java.util.List;
+
+/**
+ * 微信消息 API 接口
+ */
+public interface WcChatMessageUtilsApi {
+
+    /**
+     * 发送微信信息
+     *
+     * @param templateId   自定义消息模板id
+     * @param params       消息参数
+     * @param systemUserId 系统用户id
+     * @param objectId     对象id
+     */
+    public void sendWcChatMessage(String templateId, List<String> params, Long systemUserId, Long objectId) ;
+}

+ 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;

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

@@ -27,8 +27,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.*;
 
 /**
  * 发送微信消息的工具类
@@ -226,6 +225,9 @@ public class WcChatMessageUtils {
         } else if (templateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
             // 订单待发货
             return permissionService.isHavePermission(userId, ORDER_NO_DELIVERY_List);
+        } else if (templateId.equals(WcChatMessageTemplateIdEnum.MERCHANT_APPLY_CHECK.getTemplateId())) {
+            // 商户入驻审核
+            return permissionService.isHavePermission(userId, MERCHANT_APPLY_CHECK_LIST);
         }
         return false;
     }
@@ -250,6 +252,12 @@ public class WcChatMessageUtils {
         } else if (templateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
             //订单待发货
             return redisConfig.getMerchantDomain() + "/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;
     }

+ 21 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/utils/wechat/WcChatMessageUtilsApiImpl.java

@@ -0,0 +1,21 @@
+package cn.newfeifan.mall.module.trade.utils.wechat;
+
+import cn.newfeifan.mall.module.trade.api.wechat.WcChatMessageUtilsApi;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+@Validated
+public class WcChatMessageUtilsApiImpl implements WcChatMessageUtilsApi {
+
+    @Resource
+    private WcChatMessageUtils wcChatMessageUtils;
+
+    @Override
+    public void sendWcChatMessage(String templateId, List<String> params, Long systemUserId, Long objectId) {
+        wcChatMessageUtils.sendWcChatMessage(templateId, params, systemUserId, objectId);
+    }
+}

+ 8 - 0
feifan-module-member/feifan-module-member-api/src/main/java/cn/newfeifan/mall/module/member/api/user/MemberUserApi.java

@@ -57,4 +57,12 @@ public interface MemberUserApi {
      * @return 用户信息
      */
     MemberUserRespDTO getUserByMobile(String mobile);
+
+    /**
+     * 基于手机号,模糊匹配用户列表
+     *
+     * @param mobile 手机号
+     * @return 用户信息的列表
+     */
+    List<MemberUserRespDTO> getUsersByMobile(String mobile);
 }

+ 5 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/api/user/MemberUserApiImpl.java

@@ -44,4 +44,9 @@ public class MemberUserApiImpl implements MemberUserApi {
         return MemberUserConvert.INSTANCE.convert2(userService.getUserByMobile(mobile));
     }
 
+    @Override
+    public List<MemberUserRespDTO> getUsersByMobile(String mobile) {
+        return MemberUserConvert.INSTANCE.convertList2(userService.selectListByMobile(mobile));
+    }
+
 }

+ 2 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserService.java

@@ -242,4 +242,6 @@ public interface MemberUserService {
      * @param reqVO 请求信息
      */
     void updateUserByBankAccount(Long loginUserId, AppMemberUserUpdateBankAccountReqVO reqVO);
+
+    List<MemberUserDO> selectListByMobile(String mobile);
 }

+ 5 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserServiceImpl.java

@@ -428,6 +428,11 @@ public class MemberUserServiceImpl implements MemberUserService {
         memberUserMapper.updateById(user);
     }
 
+    @Override
+    public List<MemberUserDO> selectListByMobile(String mobile) {
+        return memberUserMapper.selectList(MemberUserDO::getMobile,mobile);
+    }
+
     /**
      * 校验手机号码
      * @param phoneNumber 手机号