Explorar o código

调整消息推送后成功状态设置

wangyc %!s(int64=7) %!d(string=hai) anos
pai
achega
6b147fc39d

+ 75 - 46
src/main/java/com/uas/ps/message/service/impl/MessageServiceImpl.java

@@ -414,21 +414,36 @@ public class MessageServiceImpl implements MessageService {
                         message.getReceiverEnuu());
                     if (receiver.getName() != null) {
                         logger.info("接收人:" + receiver.getName());
-                        message.setReceiver(FastjsonUtils.toJson(receiver));
-                        // 发送邮件
-//                    if (message.getSmsType().contains(SMSType.MAIL)) {
-//                        sendMail(message, receiver);
-//                    }
-
-                        // 发送短息
-                        if (message.getSmsType().contains(SMSType.SM)) {
-                            logger.info("发短信");
-                            sendSM(message, receiver);
-                        }
 
-                        // 发送IM
-                        if (message.getSmsType().contains(SMSType.IM)) {
-                            sendIM(message, receiver, consumerApp);
+                        UserView sender = AccountUtils.getImUserByUserUU(message.getSenderUu(),
+                            message.getSenderEnuu());
+                        if (sender != null && sender.getName() != null && sender.getSpaceName() != null) {
+                            logger.info("发送人:" + sender.getName());
+
+                            boolean sendSuccess = false;
+                            // 发送邮件
+//                            if (message.getSmsType().contains(SMSType.MAIL)) {
+//                                sendMail(message, receiver);
+//                            }
+
+                            // 发送短息
+                            if (message.getSmsType().contains(SMSType.SM)) {
+                                logger.info("开始推送短信");
+                                sendSuccess = sendSM(message, receiver, sender);
+                            }
+
+                            // 发送IM
+                            if (message.getSmsType().contains(SMSType.IM)) {
+                                logger.info("开始推送IM");
+                                sendSuccess = sendIM(message, receiver, consumerApp);
+                            }
+
+                            // 推送成功
+                            if (sendSuccess) {
+                                pushSuccess(message, receiver, sender);
+                            }
+                        } else {
+                            logger.info("发送人信息为空,uu:" + message.getSenderUu() + ",enuu:" + message.getSenderEnuu());
                         }
                     } else {
                         logger.info("接收人姓名为空,uu:" + message.getReceiverUu() + ",enuu:" + message.getReceiverEnuu());
@@ -475,44 +490,41 @@ public class MessageServiceImpl implements MessageService {
      * 发送短信
      * @param message 消息
      * @param receiver 接收人
+     * @param sender 发送人
+     * @return 推送成功状态
      */
-    private void sendSM(Message message, UserView receiver) {
+    private boolean sendSM(Message message, UserView receiver, UserView sender) {
         if (!StringUtils.isEmpty(message.getSmTemplate()) && !StringUtils.isEmpty(receiver.getUid())) {
-            logger.info("验证通过");
             try {
                 SmsMessage sms = new SmsMessage();
                 List<Object> obj = new ArrayList<Object>();
 
-                UserView sender = AccountUtils.getImUserByUserUU(message.getSenderUu(), message.getSenderEnuu());
-
-                if (sender != null && sender.getName() != null && sender.getSpaceName() != null) {
-                        logger.info("发送人:" + sender.getName());
-                    switch (message.getSmTemplate()) {
-                        // 公共询价单,普通短信
-                        case "e14d502a-25b8-40a0-8acf-5c61ae38d763" :
-                            obj.add(receiver.getName());
-                            obj.add(sender.getSpaceName());
-                            obj.add(message.getRemark());
-                            pushSm(sms, message, obj, receiver, sender);
-                            break;
-                        // 公共询价单,UU互联
-                        case "6e094dcf-f2c7-462a-9686-b2d32d684a78" :
-                            obj.add(message.getSourceId());
-                            obj.add(message.getReceiverEnuu());
-                            obj.add(receiver.getUid());
-                            pushSm(sms, message, obj, receiver, sender);
-                            break;
-                        default:
-                            break;
-                    }
-                } else {
-                    logger.info("发送人信息为空,uu:" + message.getSenderUu() + ",enuu:" + message.getSenderEnuu());
+                switch (message.getSmTemplate()) {
+                    // 公共询价单,普通短信
+                    case "e14d502a-25b8-40a0-8acf-5c61ae38d763" :
+                        obj.add(receiver.getName());
+                        obj.add(sender.getSpaceName());
+                        obj.add(message.getRemark());
+                        pushSm(sms, message, obj, receiver, sender);
+                        break;
+                    // 公共询价单,UU互联
+                    case "6e094dcf-f2c7-462a-9686-b2d32d684a78" :
+                        obj.add(message.getSourceId());
+                        obj.add(message.getReceiverEnuu());
+                        obj.add(receiver.getUid());
+                        pushSm(sms, message, obj, receiver, sender);
+                        break;
+                    default:
+                        break;
                 }
+                return true;
             } catch (Exception e) {
-                logger.info("发送短信异常:" + e.getMessage());
+                logger.info("短信推送异常:" + e.getMessage());
                 e.printStackTrace();
+                return false;
             }
         }
+        return false;
     }
 
     /**
@@ -529,8 +541,18 @@ public class MessageServiceImpl implements MessageService {
         sms.setTemplateId(message.getSmTemplate());
         String response = com.uas.ps.message.util.HttpUtil
             .sendPost(messageUrl, FastjsonUtils.toJson(sms));
-        logger.info("发送短信:" + response);
+        logger.info("短信推送成功:" + response);
+    }
+
+    /**
+     * 设置推送送成功
+     * @param message 消息
+     * @param receiver 接收人
+     * @param sender 发送人
+     */
+    private void pushSuccess(Message message, UserView receiver, UserView sender) {
         message.setIsSent(Constant.YES);
+        message.setReceiver(FastjsonUtils.toJson(receiver));
         message.setSender(FastjsonUtils.toJson(sender));
     }
 
@@ -539,8 +561,9 @@ public class MessageServiceImpl implements MessageService {
      * @param message 消息
      * @param receiver 接收人
      * @param consumerApp 消费app
+     * @return 推送成功状态
      */
-    private void sendIM(Message message, UserView receiver, String consumerApp) {
+    private boolean sendIM(Message message, UserView receiver, String consumerApp) {
         Map<String, Object> params = new HashMap<>();
         if (!StringUtils.isEmpty(receiver.getDialectUID())) {
             params.put("master", receiver.getSpaceName()); // 账套 公司名称
@@ -549,17 +572,23 @@ public class MessageServiceImpl implements MessageService {
             params.put("content", message.getContent()); // 正文
             params.put("enUU", message.getReceiverEnuu()); // UU号
             params.put("masterId", null);
-            params.put("url", String.format(PUBLIC_INQUIRY_IM_URL, message.getSourceId(), message.getReceiverEnuu(), receiver.getUid())); // 跳转链接地址
+            params.put("url", String.format(PUBLIC_INQUIRY_IM_URL, message.getSourceId(),
+                message.getReceiverEnuu(), receiver.getUid())); // 跳转链接地址
             params.put("pageTitle", message.getType() == null ? "" : message.getType());
             params.put("platform", "B2B"); // 系统名称,ERP或B2B
             try {
                 ResponseWrap res = HttpUtil.doPost(PROD_URL, params);
-                if (!res.isSuccess()) {
-                    throw new Exception(res.getContent());
+                if (res.isSuccess()) {
+                    logger.info("IM推送成功");
+                    return true;
+                } else {
+                    logger.info("IM推送失败:" + res.getContent());
                 }
             } catch (Exception e) {
                 e.printStackTrace();
+                return false;
             }
         }
+        return false;
     }
 }