Browse Source

CRM系统升级优化

kaick 1 year ago
parent
commit
9a0fd2d88e

+ 26 - 25
src/main/java/com/caimei/modules/baike/service/CmBaikeProductService.java

@@ -12,6 +12,7 @@ import com.caimei.modules.basesetting.dao.KeywordDao;
 import com.caimei.modules.hehe.util.UploadPicUtils;
 import com.caimei.modules.info.entity.Info;
 import com.caimei.modules.order.utils.OSSUtils;
+import com.caimei.modules.utils.MessageUtil;
 import com.caimei.modules.utils.RequestUtil;
 import com.caimei.modules.utils.message.InsideMessage;
 import com.caimei.modules.utils.message.MessageModel;
@@ -178,7 +179,7 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
                                 .reasonContent(cmBaikeProduct.getFailReason()));
 
             }
-            sendExamine(insideMessageMessageModel);
+            MessageUtil.sendMessage(insideMessageMessageModel);
         }
         // 标签
         String[] labelIds = StringUtils.split(cmBaikeProduct.getLabelIds(), ",");
@@ -280,29 +281,29 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
 //		});
     }
 
-    private void sendExamine(MessageModel<InsideMessage> model) {
-        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
-                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
-                "\"info\": ");
-        map.append("{ \"content\": \"" + model.info().content() + "\"" +
-                ",\"shopMessType\":" + model.info().shopMessType() +
-                ",\"userType\":" + model.info().userType() +
-                ",\"messageType\":" + model.info().messageType());
-        map.append(",\"shopId\": " + model.info().shopId());
-        if (6 != model.info().shopMessType()) {
-            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
-        }
-        map.append("}}");
-        try {
-            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
-            if (null==post){
-                throw new Exception();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("审批消息推送失败>>>"+e);
-        }
-    }
+//    private void sendExamine(MessageModel<InsideMessage> model) {
+//        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
+//                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
+//                "\"info\": ");
+//        map.append("{ \"content\": \"" + model.info().content() + "\"" +
+//                ",\"shopMessType\":" + model.info().shopMessType() +
+//                ",\"userType\":" + model.info().userType() +
+//                ",\"messageType\":" + model.info().messageType());
+//        map.append(",\"shopId\": " + model.info().shopId());
+//        if (6 != model.info().shopMessType()) {
+//            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
+//        }
+//        map.append("}}");
+//        try {
+//            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
+//            if (null==post){
+//                throw new Exception();
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            logger.error("审批消息推送失败>>>"+e);
+//        }
+//    }
 
     private void saveTime(CmBaikeProduct cmBaikeProduct) {
         Integer marketYear = cmBaikeProduct.getMarketYear();
@@ -530,4 +531,4 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
             }
         }
     }
-}
+}

+ 2 - 24
src/main/java/com/caimei/modules/info/service/InfoService.java

@@ -9,6 +9,7 @@ import com.caimei.modules.basesetting.dao.KeywordDao;
 import com.caimei.modules.hehe.entity.cmHeHeUserActivity;
 import com.caimei.modules.live.entity.NewPageLive;
 import com.caimei.modules.sys.utils.UploadImageUtils;
+import com.caimei.modules.utils.MessageUtil;
 import com.caimei.modules.utils.RequestUtil;
 import com.caimei.modules.utils.message.InsideMessage;
 import com.caimei.modules.utils.message.MessageModel;
@@ -246,7 +247,7 @@ public class InfoService extends CrudService<InfoDao, Info> {
                                 .reasonContent(info.getFailReason()));
 
             }
-            sendExamine(insideMessageMessageModel);
+            MessageUtil.sendMessage(insideMessageMessageModel);
         }
         super.save(info);
 
@@ -261,29 +262,6 @@ public class InfoService extends CrudService<InfoDao, Info> {
         infoDao.insertInfoPage(info.getId(), sp);
     }
 
-    private void sendExamine(MessageModel<InsideMessage> model) {
-        StringBuilder map = new StringBuilder("{ \"code\": \"WEB_INSIDE_MESSAGE\"," +
-                "\"mqInfo\": {\"topic\": \"MessageLine\",\"delay\": 3,\"async\":0}," +
-                "\"info\": ");
-        map.append("{ \"content\": \"" + model.info().content() + "\"" +
-                ",\"shopMessType\":" + model.info().shopMessType() +
-                ",\"userType\":" + model.info().userType() +
-                ",\"messageType\":" + model.info().messageType());
-        map.append(",\"shopId\": " + model.info().shopId());
-        if (8 != model.info().shopMessType()) {
-            map.append(",\"reasonContent\":\"" + model.info().reasonContent() + "\"");
-        }
-        map.append("}}");
-        try {
-            String post = RequestUtil.httpPost(Global.getConfig("caimei.core") + "/tools/message/send", String.valueOf(map));
-            if (null==post){
-                throw new Exception();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("审批消息推送失败>>>"+e);
-        }
-    }
 
     @Transactional(readOnly = false)
     public void delete(Info info) {

+ 67 - 8
src/main/java/com/caimei/modules/user/web/newUser/SpController.java

@@ -1,5 +1,6 @@
 package com.caimei.modules.user.web.newUser;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.constants.ServiceProviderStatus;
 import com.caimei.constants.UserIdentity;
 import com.caimei.constants.UserType;
@@ -15,10 +16,13 @@ import com.caimei.modules.user.aop.OperationLogAnnotation;
 import com.caimei.modules.user.dao.NewCmClubDao;
 import com.caimei.modules.user.entity.*;
 import com.caimei.modules.user.service.*;
-import com.caimei.utils.AppKeys;
-import com.caimei.utils.DateUtils;
-import com.caimei.utils.MD5Utils;
-import com.caimei.utils.MathUtil;
+import com.caimei.modules.utils.MessageUtil;
+import com.caimei.modules.utils.RequestUtil;
+import com.caimei.modules.utils.message.InsideMessage;
+import com.caimei.modules.utils.message.MessageModel;
+import com.caimei.modules.utils.message.MqInfo;
+import com.caimei.modules.utils.message.enums.MessageType;
+import com.caimei.utils.*;
 import com.google.common.collect.Maps;
 import com.thinkgem.jeesite.common.config.Global;
 import com.thinkgem.jeesite.common.persistence.Page;
@@ -186,9 +190,64 @@ public class SpController extends BaseController {
                         if (StringUtils.isNotEmpty(serviceProvider.getContractMobile())) {
                             NewCmClub newCmClub = newCmClubService.get(clubId.toString());
                             ServiceProviderModel oldServiceprovider = serviceProviderDao.getServiceproviderById(cssp.getOldSpID()).get(0);
-                            SMSUtils.sendSms(4, serviceProvider.getContractMobile(), "【采美365】系统已为你分配机构客户,请及时跟进。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,上一任销售【" + oldServiceprovider.getName() + "】。微信小程序https://....com,退订回T。");
-                            SMSUtils.sendSms(4, newCmClub.getContractMobile(), "【采美365】因公司内部人员调整需要,采美平台已为您更换客户经理。客户经理【" + serviceProvider.getName() + "】,手机号【" + serviceProvider.getContractMobile() + "】。微信小程序https://....com,退订回T。");
-                            SMSUtils.sendSms(4, oldServiceprovider.getContractMobile(), "【采美365】系统已将你的机构客户转移给其他销售人员,你已无权管理该客户。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,下一任销售【" + serviceProvider.getName() + "】。微信小程序https://....com,退订回T。");
+
+                            //站内信
+                            MessageModel<InsideMessage> insideMessageMessageModel = new MessageModel<>();
+                            insideMessageMessageModel.code(MessageType.WEB_INSIDE_MESSAGE)
+                                    .mqInfo(new MqInfo().topic("MessageLine").delay(1).async(1))
+                                    .info(new InsideMessage()
+                                            .userType(3)
+                                            .messageType(3)
+                                            .shopTieredType(2)
+                                            .name(newCmClub.getName())
+                                            .userName(newCmClub.getLinkMan())
+                                            .mobile(newCmClub.getContractMobile())
+                                            .superUserName(oldServiceprovider.getName())
+                                            .thisId(serviceProvider.getServiceProviderID())
+                                            .clubId(newCmClub.getClubID())
+                                    );
+                            MessageUtil.sendMessage(insideMessageMessageModel);
+                            if(1342!=serviceProvider.getServiceProviderID()){
+                                insideMessageMessageModel.info(new InsideMessage()
+                                        .userType(3)
+                                        .messageType(3)
+                                        .shopTieredType(3)
+                                        .name(newCmClub.getName())
+                                        .userName(newCmClub.getLinkMan())
+                                        .mobile(newCmClub.getContractMobile())
+                                        .superUserName(serviceProvider.getName())
+                                        .thisId(oldServiceprovider.getServiceProviderID())
+                                        .clubId(newCmClub.getClubID())
+                                );
+                                MessageUtil.sendMessage(insideMessageMessageModel);
+                            }else {
+                                insideMessageMessageModel.info(new InsideMessage()
+                                        .userType(3)
+                                        .messageType(3)
+                                        .shopTieredType(8)
+                                        .name(newCmClub.getName())
+                                        .userName(newCmClub.getLinkMan())
+                                        .mobile(newCmClub.getContractMobile())
+                                        .thisId(oldServiceprovider.getServiceProviderID())
+                                        .clubId(newCmClub.getClubID())
+                                );
+                                MessageUtil.sendMessage(insideMessageMessageModel);
+                            }
+
+
+                            insideMessageMessageModel.info(new InsideMessage()
+                                    .userType(1)
+                                    .messageType(3)
+                                    .shopTieredType(6)
+                                    .userName(serviceProvider.getName())
+                                    .mobile(serviceProvider.getContractMobile())
+                                    .clubId(newCmClub.getClubID())
+                            );
+                            MessageUtil.sendMessage(insideMessageMessageModel);
+
+                            SMSUtils.sendSms(4, serviceProvider.getContractMobile(), "【采美365】系统已为你分配机构客户,请及时跟进。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,上一任销售【" + oldServiceprovider.getName() + "】。");
+                            SMSUtils.sendSms(4, newCmClub.getContractMobile(), "【采美365】因公司内部人员调整需要,采美平台已为您更换客户经理。客户经理【" + serviceProvider.getName() + "】,手机号【" + serviceProvider.getContractMobile() + "】。");
+                            SMSUtils.sendSms(4, oldServiceprovider.getContractMobile(), "【采美365】系统已将你的机构客户转移给其他销售人员,你已无权管理该客户。机构名称【" + newCmClub.getName() + "】,联系人【" + newCmClub.getLinkMan() + "】,手机号【" + newCmClub.getContractMobile() + "】,下一任销售【" + serviceProvider.getName() + "】。");
                         }
                     } else {
                         map.put("success", false);
@@ -289,7 +348,6 @@ public class SpController extends BaseController {
     /**
      * 功能描述: 机构活跃分析查看详情
      *
-     * @param NewCmClub
      * @param request
      * @param response
      * @param model
@@ -562,4 +620,5 @@ public class SpController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/serviceteam/cmServiceteamRole/?repage";
     }
 
+
 }

+ 62 - 0
src/main/java/com/caimei/modules/utils/MessageUtil.java

@@ -0,0 +1,62 @@
+package com.caimei.modules.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.caimei.modules.utils.message.InsideMessage;
+import com.caimei.modules.utils.message.MessageModel;
+import com.caimei.modules.utils.message.MqInfo;
+import com.caimei.modules.utils.message.enums.MessageType;
+import com.caimei.utils.HttpRequest;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.thinkgem.jeesite.common.config.Global;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MessageUtil {
+    protected static Logger logger = LoggerFactory.getLogger(MessageUtil.class);
+
+    public static void sendMessage(MessageModel<InsideMessage> model) {
+        try {
+            String coreServer = Global.getConfig("caimei.core");
+            String url = coreServer + "/tools/message/send";
+            logger.info("url>>>>" + url);
+            String result = RequestUtil.sendPost(url, new ObjectMapper().writeValueAsString(model),"application/json");
+            JSONObject parseObject = JSONObject.parseObject(result);
+            System.out.println(parseObject);
+            Integer code = parseObject.getInteger("code");
+            if (code != 0) {
+                logger.info("审批消息推送失败>>>>" + model.info());
+            }else {
+                logger.info("审批消息推送成功>>>>" + model.info());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("审批消息推送失败>>>" + e);
+        }
+    }
+
+    public static void main(String[] args) {
+        //站内信
+        MessageModel<InsideMessage> insideMessageMessageModel = new MessageModel<>();
+        insideMessageMessageModel.code(MessageType.WEB_INSIDE_MESSAGE)
+                .mqInfo(new MqInfo().topic("MessageLine").delay(3).async(0))
+                .info(new InsideMessage()
+                        .userType(3)
+                        .messageType(3)
+                        .shopTieredType(7)
+                        .name("机构名称")
+                        .content("pageLabel")
+                        .couponFee(new Double(5))
+                        .thisId(1381)
+                );
+        sendMessage(insideMessageMessageModel);
+
+    }
+
+}

+ 58 - 0
src/main/java/com/caimei/modules/utils/RequestUtil.java

@@ -175,6 +175,64 @@ public class RequestUtil {
         return result.toString();
     }
 
+    public static String sendPost(String url, String param, String contentType) {
+        OutputStreamWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        try {
+            URL realUrl = new URL(url);
+            // 打开和URL之间的连接
+            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
+            // 设置通用的请求属性
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Content-Type", contentType);
+            // 发送POST请求必须设置如下两行
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            /*************************************************************************/
+            // 获取URLConnection对象对应的输出流
+            // out = new PrintWriter(conn.getOutputStream());
+            out = new OutputStreamWriter(conn.getOutputStream(), "utf-8"); // 8859_1
+            /*************************************************************************/
+
+            out.write(param); // post的关键所在
+            // 发送请求参数
+            // out.print(param);
+            // flush输出流的缓冲
+            out.flush();
+            // 定义BufferedReader输入流来读取URL的响应
+            int code = conn.getResponseCode();
+            if(code == 200) {
+                in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            }else{
+                in = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
+            }
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送 POST 请求出现异常!" + e);
+            e.printStackTrace();
+        }
+        // 使用finally块来关闭输出流、输入流
+        finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
     /**
      * 向指定 URL 发送请求
      * @param requestUrl 发送请求的 URL

+ 64 - 1
src/main/java/com/caimei/modules/utils/message/InsideMessage.java

@@ -12,7 +12,7 @@ import java.io.Serializable;
 @Data
 @Accessors(fluent = true)
 public class InsideMessage implements Serializable {
-
+    private static final long serialVersionUID = 1L;
     /**
      * 消息id
      */
@@ -116,6 +116,21 @@ public class InsideMessage implements Serializable {
      */
     private String shopName;
 
+    /** 手机号 */
+    private String mobile;
+
+    /** 名称 */
+    private String name;
+
+    /** 用户名称 */
+    private String userName;
+
+    /** 前用户名称 */
+    private String superUserName;
+
+    /** 当前id */
+    private Integer thisId;
+
     public Integer getId() {
         return id;
     }
@@ -172,6 +187,14 @@ public class InsideMessage implements Serializable {
         this.content = content;
     }
 
+    public String getReasonContent() {
+        return reasonContent;
+    }
+
+    public void setReasonContent(String reasonContent) {
+        this.reasonContent = reasonContent;
+    }
+
     public String getTime() {
         return time;
     }
@@ -307,4 +330,44 @@ public class InsideMessage implements Serializable {
     public void setShopName(String shopName) {
         this.shopName = shopName;
     }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getSuperUserName() {
+        return superUserName;
+    }
+
+    public void setSuperUserName(String superUserName) {
+        this.superUserName = superUserName;
+    }
+
+    public Integer getThisId() {
+        return thisId;
+    }
+
+    public void setThisId(Integer thisId) {
+        this.thisId = thisId;
+    }
 }

+ 2 - 1
src/main/resources/config/dev/caimei.properties

@@ -189,7 +189,8 @@ export.template=export
 
 # SPI-server\uFF08CKEditor5\u56FE\u7247\u4E0A\u4F20API\uFF0C\u641C\u7D22\u66F4\u65B0\u7D22\u5F15\uFF09
 caimei.spi=http://localhost:8008
-caimei.core=http://localhost:18002
+#caimei.core=http://localhost:18002
+caimei.core=https://core-b.caimei365.com
 caimei.manager=http://localhost:9527
 #\u963F\u91CC\u4E91oss\u5B58\u50A8
 aliyun.accessKeyId=LTAI4GBL3o4YkWnbKYgf2Xia

+ 32 - 13
src/main/webapp/WEB-INF/views/modules/userNew/cmSpClubTrackList.jsp

@@ -41,6 +41,19 @@
 	</style>
 	<script type="text/javascript">
 		$(document).ready(function () {
+			let date = new Date().getTime()
+			let date0 = formatDate(date)
+			let date1 = formatDate(date - 24 * 60 * 60 * 1000)
+			let date2 = formatDate(date - 24 * 60 * 60 * 1000 * 2)
+			let date3 = formatDate(${newCmClub.providerTime.getTime()})
+			if (date0 == date3) {
+				$("#conlog").text("(今天)")
+			} else if (date1 == date3) {
+				$("#conlog").text("(昨天)")
+			} else if (date2 == date3) {
+				$("#conlog").text("(前天)")
+			}
+
 		})
 
 		function formatDate(date) {
@@ -52,19 +65,24 @@
 			var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
 			var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
 			var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
-			return Y + M + D + " " + h + m + s;
+			return Y + M + D;
 		}
 
 		function checkProviderTime(type) {
-			var date= new Date($("#providerTime").val()).getTime()
-			$("#providerTime").val(formatDate(date))
-			if(type!=1){
-				date =date+ 24 * 60 * 60 * 1000
+			var date = new Date($("#providerTime").val()).getTime()
+			if (formatDate(new Date()) != formatDate(date)||type == 1) {
+				if (type != 1) {
+					date = date + 24 * 60 * 60 * 1000
+				} else {
+					date = date - 24 * 60 * 60 * 1000
+				}
+
+				$("#providerTime").val(formatDate(date))
+				$("#searchForm").submit()
 			}else {
-				date =date- 24 * 60 * 60 * 1000
+				$.jBox.tip("当前已经是最新的记录了!", 'info');
 			}
-			$("#providerTime").val(formatDate(date))
-			$("#searchForm").submit()
+
 		}
 
 		function page(n, s) {
@@ -88,22 +106,23 @@
 <ul class="breadcrumb livelyProportion">
 	<li>
 		<div>
-			<img  src="/static/images/left.gif" border="none" onclick="checkProviderTime(1)">
+			<img src="/static/images/left.gif" border="none" onclick="checkProviderTime(1)">
 			<span><fmt:formatDate value="${Date(newCmClub.providerTime.getTime()- 24 * 60 * 60 * 1000)}"
 								  pattern="yyyy年M月dd日 "></fmt:formatDate></span>
 		</div>
 	</li>
 	<li>
-		<div style="font-size: 40px;"><fmt:formatDate value="${newCmClub.providerTime}"
-													  pattern="yyyy年M月dd日 "></fmt:formatDate>
-			<span style="font-size: 20px;color:#0bbbee;position: relative;bottom: 5px">(昨天)</span>
+		<div style="font-size: 40px;">
+			<fmt:formatDate value="${newCmClub.providerTime}"
+							pattern="yyyy年M月dd日 "></fmt:formatDate>
+			<span style="font-size: 20px;color:#0bbbee;position: relative;bottom: 5px" id="conlog"></span>
 		</div>
 	</li>
 	<li>
 		<div>
 			<span><fmt:formatDate value="${Date(newCmClub.providerTime.getTime()+ 24 * 60 * 60 * 1000)}"
 								  pattern="yyyy年M月dd日 "></fmt:formatDate></span>
-			<img  src="/static/images/left.gif" border="none"  onclick="checkProviderTime(0)">
+			<img src="/static/images/left.gif" border="none" onclick="checkProviderTime(0)">
 		</div>
 	</li>
 </ul>