فهرست منبع

Merge branch 'dev/2024/0529/update-app-Y' of feifan/mall-backend-app into master

修改发送微信消息及同手机号多绑定
Yangzw 10 ماه پیش
والد
کامیت
b6d63949d2

+ 1 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java

@@ -313,7 +313,7 @@ public class AfterSaleServiceImpl implements AfterSaleService {
         for (Long aUserId : adminUsers) {
             //发送信息
             wcChatMessageUtils.sendWcChatMessage(afterSale.getUserId(), WcChatMessageTemplateIdEnum.AFTER_SALE_NO_CHECK2.getTemplateId(),
-                    params, aUserId, null, afterSale.getId());
+                    params, aUserId, afterSale.getId());
         }
     }
 

+ 1 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -1033,7 +1033,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         for (Long aUserId : adminUsers) {
             //发送信息
             wcChatMessageUtils.sendWcChatMessage(order.getUserId(), WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId(),
-                    params, aUserId, order.getUserId(), order.getId());
+                    params, aUserId, order.getId());
         }
     }
 

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

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
+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.dal.dataobject.config.SystemConfigDO;
 import cn.newfeifan.mall.module.system.dal.dataobject.wechatmsgtemplate.WechatMsgTemplateDO;
@@ -85,7 +86,7 @@ public class WcChatMessageUtils {
             stringRedisTemplate.opsForValue().set(WX_TICK_KEY_APPID, accessToken, expireTime, java.util.concurrent.TimeUnit.SECONDS);
         }
 
-        log.info("===========Access_token:{}",accessToken);
+        log.info("===========Access_token:{}", accessToken);
 
         return accessToken;
     }
@@ -93,31 +94,10 @@ public class WcChatMessageUtils {
     /**
      * 发送微信消息
      *
-     * @param userId              接口消息的用户id
-     * @param data                模板参数
-     * @param wechatMsgTemplateId 自定义的消息模板id
+     * @param userId 接口消息的用户id
+     * @param data   模板参数
      */
-    private void sendWxgMessage(Long userId, JsonObject data, String wechatMsgTemplateId, Long systemUserId, Long memberUserId, Long objectId) {
-
-        // 组装消息内容
-        String userOpenId = null;
-        if (wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.AFTER_SALE_NO_CHECK2.getTemplateId()) ||
-                wechatMsgTemplateId.equals(WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY2.getTemplateId())) {
-            //如果该用户没有该消息的权限,则不发送消息
-            if (!isHavePermission(systemUserId, wechatMsgTemplateId)) {
-                return;
-            }
-            userOpenId = getOpenIdBySysTemUserId(systemUserId);
-            memberUserId = memberUserService.getUserIdBySystemUserId(systemUserId);
-        } else {
-            userOpenId = getOpenId(userId);
-        }
-
-        //如果用户没有绑定微信,则不发送消息
-        if (userOpenId == null) {
-            return;
-        }
-
+    private void sendWxgMessage(Long userId, JsonObject data, String wechatMsgTemplateId, Long systemUserId, Long memberUserId, Long objectId, String userOpenId) {
         String templateId = getTemplateId(wechatMsgTemplateId).getWechatMsgTemplateId(); // 模板id
         String url = getDoMain(wechatMsgTemplateId, objectId);       // 跳转路径(小程序之外)
         String client_msg_id = UUID.randomUUID().toString();  // 防重入id
@@ -185,10 +165,9 @@ public class WcChatMessageUtils {
      * @param templateId   自定义消息模板id
      * @param params       消息参数
      * @param systemUserId 系统用户id
-     * @param memberUserId 会员用户id
      * @param objectId     对象id
      */
-    public void sendWcChatMessage(Long userId, String templateId, List<String> params, Long systemUserId, Long memberUserId, Long objectId) {
+    public void sendWcChatMessage(Long userId, String templateId, List<String> params, Long systemUserId, Long objectId) {
         WechatMsgTemplateDO template = getTemplateId(templateId);
         String messageTemplateParameters = template.getMessageTemplateParameters();
 
@@ -202,8 +181,26 @@ public class WcChatMessageUtils {
         List<String> dataParams = Arrays.asList(parts);
         JsonObject templateData = getTemplateData(dataParams, params);
 
-        // 发送微信消息
-        sendWxgMessage(userId, templateData, templateId, systemUserId, memberUserId, objectId);
+        // 组装消息内容
+        String userOpenId;
+        // 判断系统用户是否有接收消息的权限
+        if (!isHavePermission(systemUserId, templateId)) {
+            return;
+        }
+
+        // 获取系统用户绑定的会员用户集
+        List<MemberUserDO> memberUserDOS = getMemberUserBySystemUserId(systemUserId);
+        for (MemberUserDO memberUserDO : memberUserDOS) {
+            userOpenId = getOpenId(memberUserDO.getId());
+
+            //如果用户没有绑定微信,则不发送消息
+            if (userOpenId == null) {
+                return;
+            }
+
+            // 发送微信消息
+            sendWxgMessage(userId, templateData, templateId, systemUserId, memberUserDO.getId(), objectId, userOpenId);
+        }
     }
 
     /**
@@ -262,11 +259,7 @@ public class WcChatMessageUtils {
         return socialUserService.getOpenIdByUserId(userId);
     }
 
-    private String getOpenIdBySysTemUserId(Long systemUserId) {
-        Long memberUserId = memberUserService.getUserIdBySystemUserId(systemUserId);
-        if (memberUserId == null) {
-            return null;
-        }
-        return getOpenId(memberUserId);
+    private List<MemberUserDO> getMemberUserBySystemUserId(Long systemUserId) {
+        return memberUserService.getUserListBySystemUserId(systemUserId);
     }
 }

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

@@ -190,8 +190,6 @@ public interface MemberUserService {
      */
     boolean updateUserPoint(Long userId, Integer point);
 
-    Long getUserIdBySystemUserId(Long systemUserId);
-
     /**
      * 根据用户名查询用户
      * @param username 用户名
@@ -214,4 +212,11 @@ public interface MemberUserService {
     Long getUserCountByMobile(String mobile);
 
     MemberUserDO selectByUsername(String username);
+
+    /**
+     * 根据系统用户ID查询用户
+     * @param systemUserId 系统用户ID
+     * @return 用户
+     */
+    List<MemberUserDO> getUserListBySystemUserId(Long systemUserId);
 }

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

@@ -341,12 +341,6 @@ public class MemberUserServiceImpl implements MemberUserService {
         return true;
     }
 
-    @Override
-    public Long getUserIdBySystemUserId(Long systemUserId) {
-        MemberUserDO memberUserDO = memberUserMapper.selectOne(MemberUserDO::getSystemUsersId, systemUserId);
-        return memberUserDO == null ? null : memberUserDO.getId();
-    }
-
     @Override
     public Long selectCountByUsername(String username) {
         return memberUserMapper.selectCount(MemberUserDO::getUsername, username);
@@ -367,4 +361,9 @@ public class MemberUserServiceImpl implements MemberUserService {
         return memberUserMapper.selectOne(MemberUserDO::getUsername,username);
     }
 
+    @Override
+    public List<MemberUserDO> getUserListBySystemUserId(Long systemUserId) {
+        return memberUserMapper.selectList(MemberUserDO::getSystemUsersId, systemUserId);
+    }
+
 }

+ 4 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/sms/SmsCodeServiceImpl.java

@@ -67,7 +67,10 @@ public class SmsCodeServiceImpl implements SmsCodeService {
         }
 
         // 创建验证码记录
-        String code = String.valueOf(randomInt(smsCodeProperties.getBeginCode(), smsCodeProperties.getEndCode() + 1));
+        String code = "";
+        while (code.length() < 4){
+            code = String.valueOf(randomInt(smsCodeProperties.getBeginCode(), smsCodeProperties.getEndCode() + 1));
+        }
         SmsCodeDO newSmsCode = SmsCodeDO.builder().mobile(mobile).code(code).scene(scene)
                 .todayIndex(lastSmsCode != null && isToday(lastSmsCode.getCreateTime()) ? lastSmsCode.getTodayIndex() + 1 : 1)
                 .createIp(ip).used(false).build();