Browse Source

分配协销消息推送

zhijiezhao 2 năm trước cách đây
mục cha
commit
c01a519369

+ 58 - 0
src/main/java/com/caimei365/user/components/WeChatService.java

@@ -524,6 +524,64 @@ public class WeChatService {
         }
     }
 
+    /**
+     * 分配协销消息
+     *
+     * @param title      消息抬头
+     * @param keyWord1
+     * @param keyWord2
+     * @param keyWord3
+     * @param keyWord4
+     * @param Remark     消息下备注
+     * @param path       跳转链接
+     * @param openId     公众号openId
+     * @param templateId 模板Id
+     */
+    public void sendChoseServiceMessage(String title, String keyWord1, String keyWord2, String keyWord3, String keyWord4, String Remark, String path, String openId, String templateId) {
+        JSONObject first = new JSONObject();
+        first.put("value", title);
+        JSONObject keyword1 = new JSONObject();
+        keyword1.put("value", keyWord1);
+        JSONObject keyword2 = new JSONObject();
+        keyword2.put("value", keyWord2);
+        JSONObject keyword3 = new JSONObject();
+        keyword3.put("value", keyWord3);
+        JSONObject keyword4 = new JSONObject();
+        keyword4.put("value", keyWord4);
+        JSONObject remark = new JSONObject();
+        remark.put("value", Remark);
+
+        JSONObject data = new JSONObject();
+        data.put("first", first);
+        data.put("keyword1", keyword1);
+        data.put("keyword2", keyword2);
+        data.put("keyword3", keyword3);
+        data.put("keyword4", keyword4);
+        data.put("remark", remark);
+
+        JSONObject miniProgram = new JSONObject();
+        miniProgram.put("appid", miniAppId);
+        miniProgram.put("pagepath", path);
+
+        JSONObject json = new JSONObject(new LinkedHashMap());
+        json.put("touser", openId);
+        json.put("template_id", templateId);
+        json.put("url", "https://www.caimei365.com/");
+        json.put("miniprogram", miniProgram);
+        json.put("data", data);
+        // json 字符串
+        String jsonString = json.toJSONString();
+        log.info(">>>>>>>>推送微信模板消息:" + jsonString);
+        try {
+            String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + getAccessToken();
+            // 发送请求
+            String result = RequestUtil.httpRequest(requestUrl, "POST", jsonString);
+            log.info(">>>>>>>>推送结果:" + result);
+        } catch (Exception e) {
+            log.info("推送微信模板消息失败:" + e);
+        }
+    }
+
     /**
      * 获取微信urlscheme
      *

+ 49 - 44
src/main/java/com/caimei365/user/controller/ClubApi.java

@@ -175,17 +175,17 @@ public class ClubApi {
                                                                Integer satisfied,
                                                                Integer followup,
                                                                String extra,
-                                                               Integer groupId,Integer status,Integer newDeal,
+                                                               Integer groupId, Integer status, Integer newDeal,
                                                                @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        return clubService.getRemarksList(serviceProviderId, keyWord, startAddTime, endAddTime, consult, leaderId, manager, clubType, pinceSensitve, satisfied, followup, extra, groupId,status,newDeal, pageNum, pageSize);
+        return clubService.getRemarksList(serviceProviderId, keyWord, startAddTime, endAddTime, consult, leaderId, manager, clubType, pinceSensitve, satisfied, followup, extra, groupId, status, newDeal, pageNum, pageSize);
     }
 
     @ApiOperation("关键词库联想查询")
     @ApiImplicitParam(required = true, name = "remarks", value = "联想词")
     @GetMapping("/remarks/cmremarkslist")
     public ResponseJson getCmRemarksList(String remarks) {
-        if (null == remarks || remarks=="") {
+        if (null == remarks || remarks == "") {
             return ResponseJson.error("参数异常,关键词不能为空!", null);
         }
         return clubService.getCmRemarksList(remarks);
@@ -217,14 +217,14 @@ public class ClubApi {
 
     @ApiOperation("注册机构报备列表")
     @GetMapping("/report/List")
-    public ResponseJson<PaginationVo<ReportVo>> ClubReportList(Integer serviceProviderId,Integer clubId,String keyWord,@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return clubService.ClubReportList(serviceProviderId,clubId,keyWord,pageNum,pageSize);
+    public ResponseJson<PaginationVo<ReportVo>> ClubReportList(Integer serviceProviderId, Integer clubId, String keyWord, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        return clubService.ClubReportList(serviceProviderId, clubId, keyWord, pageNum, pageSize);
     }
 
     @ApiOperation("未注册机构报备列表")
     @GetMapping("/report/visitor/List")
-    public ResponseJson<PaginationVo<ReportVo>> visitorReportList(String questionManId,String keyWord,@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return clubService.visitorReportList(questionManId,keyWord,pageNum,pageSize);
+    public ResponseJson<PaginationVo<ReportVo>> visitorReportList(String questionManId, String keyWord, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        return clubService.visitorReportList(questionManId, keyWord, pageNum, pageSize);
     }
 
 
@@ -249,71 +249,71 @@ public class ClubApi {
 
     @ApiOperation("未机构新建报备")
     @PostMapping("/report/visitor/save")
-    public ResponseJson  addVisitorReport(ReportVo reportVo) {
+    public ResponseJson addVisitorReport(ReportVo reportVo) {
         return clubService.addVisitorReport(reportVo);
     }
 
 
     @ApiOperation("咨询/报备关联商品")
     @GetMapping("/report/productList")
-    public ResponseJson<PaginationVo<ProductItemVo>> getproductList(String keyWord,@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return clubService.getproductList(keyWord,pageNum,pageSize);
+    public ResponseJson<PaginationVo<ProductItemVo>> getproductList(String keyWord, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        return clubService.getproductList(keyWord, pageNum, pageSize);
     }
 
     @ApiOperation("机构报备列表")
     @GetMapping("/report/reportRemarks")
-public ResponseJson<PaginationVo<ReportVo>> reportRemarks(Integer manager,Integer serviceProviderId,String keyWord,@RequestParam(value = "pageNum", defaultValue = "1")int pageNum, @RequestParam(value = "pageSize", defaultValue = "10")int pageSize){
+    public ResponseJson<PaginationVo<ReportVo>> reportRemarks(Integer manager, Integer serviceProviderId, String keyWord, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
 
-        return clubService.reportRemarks(manager,serviceProviderId,keyWord,pageNum,pageSize);
-}
+        return clubService.reportRemarks(manager, serviceProviderId, keyWord, pageNum, pageSize);
+    }
 
     @ApiOperation("未注册机构报备列表")
     @GetMapping("/report/visitor/reportRemarks")
-    public ResponseJson<PaginationVo<ReportVo>> visitorReportRemarks(Integer manager,Integer serviceProviderId,String keyWord,@RequestParam(value = "pageNum", defaultValue = "1")int pageNum, @RequestParam(value = "pageSize", defaultValue = "10")int pageSize){
+    public ResponseJson<PaginationVo<ReportVo>> visitorReportRemarks(Integer manager, Integer serviceProviderId, String keyWord, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
 
-        return  clubService.visitorReportRemarks(manager,serviceProviderId,keyWord,pageNum,pageSize);
+        return clubService.visitorReportRemarks(manager, serviceProviderId, keyWord, pageNum, pageSize);
     }
 
     @ApiOperation("关联咨询记录列表")
     @GetMapping("/report/associatedList")
-    public ResponseJson<PaginationVo<RemarkVo>>associated(Integer manager, Integer serviceProviderId, Integer reportId, String keyWord, String startAddTime,
-                                                          String endAddTime,
-                                                          String consult,
-                                                          Integer leaderId,
-                                                          String clubType,
-                                                          Integer pinceSensitve,
-                                                          Integer satisfied,
-                                                          Integer followup,
-                                                          String extra,
-                                                          Integer groupId,Integer newDeal,Integer status,@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return clubService.associated(manager,serviceProviderId,reportId,keyWord,startAddTime,endAddTime,consult,leaderId,clubType,pinceSensitve,satisfied,followup,extra,groupId,newDeal,status,pageNum,pageSize);
+    public ResponseJson<PaginationVo<RemarkVo>> associated(Integer manager, Integer serviceProviderId, Integer reportId, String keyWord, String startAddTime,
+                                                           String endAddTime,
+                                                           String consult,
+                                                           Integer leaderId,
+                                                           String clubType,
+                                                           Integer pinceSensitve,
+                                                           Integer satisfied,
+                                                           Integer followup,
+                                                           String extra,
+                                                           Integer groupId, Integer newDeal, Integer status, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        return clubService.associated(manager, serviceProviderId, reportId, keyWord, startAddTime, endAddTime, consult, leaderId, clubType, pinceSensitve, satisfied, followup, extra, groupId, newDeal, status, pageNum, pageSize);
     }
 
     @ApiOperation("未注册关联咨询记录列表")
     @GetMapping("/report/visitor/associatedList")
-    public ResponseJson<PaginationVo<RemarkVo>>visitorAssociated(Integer manager, Integer serviceProviderId, Integer reportId, String keyWord, String startAddTime,
-                                                                 String endAddTime,
-                                                                 String consult,
-                                                                 Integer leaderId,
-                                                                 String clubType,
-                                                                 Integer pinceSensitve,
-                                                                 Integer satisfied,
-                                                                 Integer followup,
-                                                                 String extra,
-                                                                 Integer groupId,Integer status,@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize){
-        return clubService.visitorAssociated(manager,serviceProviderId,reportId,keyWord,startAddTime,endAddTime,consult,leaderId,clubType,pinceSensitve,satisfied,followup,extra,groupId,status,pageNum,pageSize);
+    public ResponseJson<PaginationVo<RemarkVo>> visitorAssociated(Integer manager, Integer serviceProviderId, Integer reportId, String keyWord, String startAddTime,
+                                                                  String endAddTime,
+                                                                  String consult,
+                                                                  Integer leaderId,
+                                                                  String clubType,
+                                                                  Integer pinceSensitve,
+                                                                  Integer satisfied,
+                                                                  Integer followup,
+                                                                  String extra,
+                                                                  Integer groupId, Integer status, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        return clubService.visitorAssociated(manager, serviceProviderId, reportId, keyWord, startAddTime, endAddTime, consult, leaderId, clubType, pinceSensitve, satisfied, followup, extra, groupId, status, pageNum, pageSize);
     }
 
 
     @ApiOperation("取消咨询记录和报备的关联")
     @GetMapping("/report/disassociation")
-    public ResponseJson<PaginationVo<RemarksVo>>disassociation(Integer remarksId) {
+    public ResponseJson<PaginationVo<RemarksVo>> disassociation(Integer remarksId) {
         return clubService.disassociation(remarksId);
     }
 
     @ApiOperation("未注册机构取消咨询记录和报备的关联")
     @GetMapping("/report/visitor/disassociation")
-    public ResponseJson<PaginationVo<RemarksVo>>visitorDisassociation(Integer remarksId) {
+    public ResponseJson<PaginationVo<RemarksVo>> visitorDisassociation(Integer remarksId) {
         return clubService.visitorDisassociation(remarksId);
     }
 
@@ -387,7 +387,7 @@ public ResponseJson<PaginationVo<ReportVo>> reportRemarks(Integer manager,Intege
             return ResponseJson.error("参数异常:协销id不能为空!", null);
         }
 //        keyWord, startAddTime, endAddTime, consult, leaderId, groupId,manager,
-        return clubService.getVisitorList(serviceProviderId,pageNum, pageSize);
+        return clubService.getVisitorList(serviceProviderId, pageNum, pageSize);
     }
 
     /**
@@ -469,13 +469,13 @@ public ResponseJson<PaginationVo<ReportVo>> reportRemarks(Integer manager,Intege
                                                                           Integer pinceSensitve,
                                                                           Integer satisfied,
                                                                           Integer followup,
-                                                                          String extra,Integer status,
+                                                                          String extra, Integer status,
                                                                           @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                           @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error("参数异常:协销id不能为空!", null);
         }
-        return clubService.getVisitorRecordList(questionManId, keyWord, serviceProviderId, startAddTime, endAddTime, consult, leaderId, groupId, manager,clubType,pinceSensitve, satisfied,followup,extra,status, pageNum, pageSize);
+        return clubService.getVisitorRecordList(questionManId, keyWord, serviceProviderId, startAddTime, endAddTime, consult, leaderId, groupId, manager, clubType, pinceSensitve, satisfied, followup, extra, status, pageNum, pageSize);
     }
 
     @ApiOperation("删除潜在用户资料备注")
@@ -534,8 +534,13 @@ public ResponseJson<PaginationVo<ReportVo>> reportRemarks(Integer manager,Intege
     }
 
     @ApiOperation("分配协销")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "clubId", value = "机构Id"),
+            @ApiImplicitParam(required = true, name = "spId", value = "协销Id"),
+            @ApiImplicitParam(required = true, name = "choseServiceId", value = "分配人协销Id")
+    })
     @PostMapping("/chose/sales")
-    public ResponseJson choseSales(Integer clubId,Integer spId) {
-        return clubService.changeSales(clubId,spId);
+    public ResponseJson choseSales(Integer clubId, Integer spId, Integer choseServiceId) {
+        return clubService.changeSales(clubId, spId, choseServiceId);
     }
 }

+ 13 - 0
src/main/java/com/caimei365/user/mapper/ClubMapper.java

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -316,4 +317,16 @@ public interface ClubMapper {
     void updateRemarksSp(@Param("clubId") Integer clubId, @Param("oldSpId") Integer oldSpId, @Param("spId") Integer spId, @Param("status") Integer status);
 
     void updateReportSp(@Param("clubId") Integer clubId, @Param("oldSpId") Integer oldSpId, @Param("spId") Integer spId);
+
+    String findOpenIdBySpId(Integer spId);
+
+    List<ClubRemarksPo> findNewRemark(@Param("clubId")Integer clubId,@Param("serviceProviderId") Integer serviceProviderId);
+
+    String findServiceName(Integer spId);
+
+    Date findAllotTime(Integer spId, Integer clubId);
+
+    Date findSubmitTime(Integer remarkId);
+
+    Integer findLeaderIdBySp(Integer spId);
 }

+ 1 - 0
src/main/java/com/caimei365/user/model/po/ClubRemarksPo.java

@@ -39,6 +39,7 @@ public class ClubRemarksPo implements Serializable {
     @ApiModelProperty("同步时间")
     private Date concactTime;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty("添加时间")
     private Date addTime;
 

+ 1 - 0
src/main/java/com/caimei365/user/model/vo/ClubChangeSpVo.java

@@ -16,6 +16,7 @@ public class ClubChangeSpVo implements Serializable {
     private Date applyTime; // 申请时间
     private String checkMark;//审核备注
     private Integer checkUserID;//审核人
+    private Integer choseServiceId;//分配人协销Id
 
     // 会所表中
     private String address;   // 会所地址

+ 6 - 6
src/main/java/com/caimei365/user/service/ClubService.java

@@ -135,9 +135,9 @@ public interface ClubService {
                                                     Integer satisfied,
                                                     Integer followup,
                                                     String extra,
-                                                    Integer groupId,Integer newDeal,Integer status, int pageNum, int pageSize);
+                                                    Integer groupId, Integer newDeal, Integer status, int pageNum, int pageSize);
 
-    ResponseJson<PaginationVo<RemarkVo>> visitorAssociated(Integer manager,Integer serviceProviderId,Integer reportId,String keyWord, String startAddTime,
+    ResponseJson<PaginationVo<RemarkVo>> visitorAssociated(Integer manager, Integer serviceProviderId, Integer reportId, String keyWord, String startAddTime,
                                                            String endAddTime,
                                                            String consult,
                                                            Integer leaderId,
@@ -146,7 +146,7 @@ public interface ClubService {
                                                            Integer satisfied,
                                                            Integer followup,
                                                            String extra,
-                                                           Integer groupId,Integer status, int pageNum,  int pageSize);
+                                                           Integer groupId, Integer status, int pageNum, int pageSize);
 
     ResponseJson disassociation(Integer remarksId);
 
@@ -173,7 +173,7 @@ public interface ClubService {
                                                         Integer satisfied,
                                                         Integer followup,
                                                         String extra,
-                                                        Integer groupId,Integer status,Integer newDeal, int pageNum, int pageSize);
+                                                        Integer groupId, Integer status, Integer newDeal, int pageNum, int pageSize);
 
     /**
      * 获取机构资料备注详情
@@ -247,7 +247,7 @@ public interface ClubService {
      */
     ResponseJson<VisitRemarkVo> getVisitRemark(Integer remarksId);
 
-    ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId, String keyWord, Integer serviceProviderId, String startAddTime, String endAddTime, String consult, Integer leaderId, Integer groupId, Integer manager, String clubType, Integer pinceSensitve, Integer satisfied, Integer followup, String extra,Integer status, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId, String keyWord, Integer serviceProviderId, String startAddTime, String endAddTime, String consult, Integer leaderId, Integer groupId, Integer manager, String clubType, Integer pinceSensitve, Integer satisfied, Integer followup, String extra, Integer status, int pageNum, int pageSize);
 
     ResponseJson deleteVisitRemarks(String remarksId);
 
@@ -276,5 +276,5 @@ public interface ClubService {
 
     ResponseJson<List<ServiceProviderVo>> choseSales(Integer spId);
 
-    ResponseJson changeSales(Integer clubId, Integer spId);
+    ResponseJson changeSales(Integer clubId, Integer spId, Integer choseServiceId);
 }

+ 49 - 1
src/main/java/com/caimei365/user/service/impl/AsyncService.java

@@ -1,13 +1,16 @@
 package com.caimei365.user.service.impl;
 
+import com.caimei365.user.components.WeChatService;
 import com.caimei365.user.mapper.*;
 import com.caimei365.user.model.po.UserBeansHistoryPo;
+import com.caimei365.user.model.vo.ClubVo;
 import com.caimei365.user.model.vo.UserVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -17,6 +20,7 @@ import java.util.Date;
  * 在Async 方法上标注@Transactional是没用的。 在Async 方法调用的方法上标注@Transactional 有效。
  * 调用被@Async标记的方法的调用者不能和被调用的方法在同一类中不然不会起作用!!!!!!!
  * 使用@Async时要求是不能有返回值
+ *
  * @author : Charles
  * @date : 2021/11/12
  */
@@ -31,11 +35,13 @@ public class AsyncService {
     private ClubMapper clubMapper;
     @Resource
     private BaseMapper baseMapper;
+    @Resource
+    private WeChatService weChatService;
 
     @Async("taskExecutor")
     public void loginUpdateBeans(Integer userId, Integer identity) {
         boolean isClub = null != identity && (2 == identity || 4 == identity);
-        if (isClub){
+        if (isClub) {
             // 查询今天是否有登录送豆
             Integer id = clubMapper.findLoginBeans(userId);
             if (id == null) {
@@ -63,4 +69,46 @@ public class AsyncService {
             log.error("【登录】--登录时间记录异常" + e);
         }
     }
+
+    /**
+     * @param status         1,分配 / 更换销售成功后对被分配的销售进行如下微信模板
+     *                       o1nMAIsHAFr0VOu0qEbI1rEFDS14hl40UXbt52I5row
+     *                       新客户跟进提醒
+     *                       你有一个新机构客户,请及时跟进。
+     *                       客户电话:15623569845
+     *                       客户姓名:张总
+     *                       客户地址:广东省深圳市福田区
+     *                       提交时间:2022-9-20
+     *                       点击查看详情,了解更多客户信息。
+     *                       <p>
+     *                       2,当组员对分配的机构填写了第一次咨询记录后,立即对组长进行如下微信模板消息提醒
+     *                       DFkeHJWZsJq_pbk2QFXG5FkaLqhlkN_vqvhTEb6o400
+     *                       组员跟进通知
+     *                       组员已跟进客户,填写完成咨询记录
+     *                       机构名称: 广州多美医疗美容诊所有限公司
+     *                       组员姓名:黄豪
+     *                       分配时间:2022-09-10 12:11:15
+     *                       提交时间:2022-09-12 12:11:15
+     *                       点击查看详情,查看咨询记录详情
+     * @param clubId
+     * @param spId
+     * @param choseServiceId stauts=2时,是remarkId
+     */
+    @Async("taskExecutor")
+    public void sendChoseServiceMessage(Integer status, Integer clubId, Integer spId, Integer choseServiceId) {
+        String openId = clubMapper.findOpenIdBySpId(1 == status ? spId : clubMapper.findLeaderIdBySp(spId));
+        if (null != openId) {
+            String title = 1 == status ? "你有一个新机构客户,请及时跟进。" : "组员已跟进客户,填写完成咨询记录";
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            ClubVo clubById = clubMapper.getClubById(clubId);
+            String keyWord1 = 1 == status ? clubById.getLinkMan() : clubMapper.findServiceName(spId);
+            String keyWord2 = 1 == status ? clubById.getContractMobile() : clubById.getLinkMan();
+            String keyWord3 = 1 == status ? clubById.getAddress() : format.format(clubMapper.findAllotTime(spId, clubId));
+            String keyWord4 = 1 == status ? new SimpleDateFormat("yyyy-MM-dd").format(new Date()) : format.format(clubMapper.findSubmitTime(choseServiceId));
+            String remark = 1 == status ? "点击查看详情,了解更多客户信息。" : "点击查看详情,查看咨询记录详情";
+            String path = 1 == status ? "pages/seller/club/list?type=wechat" : "pages/seller/remarks/details?remarksId=" + choseServiceId;
+            String templateId = 1 == status ? "o1nMAIsHAFr0VOu0qEbI1rEFDS14hl40UXbt52I5row" : "DFkeHJWZsJq_pbk2QFXG5FkaLqhlkN_vqvhTEb6o400";
+            weChatService.sendChoseServiceMessage(title, keyWord1, keyWord2, keyWord3, keyWord4, remark, path, openId, templateId);
+        }
+    }
 }

+ 14 - 3
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -59,6 +59,8 @@ public class ClubServiceImpl implements ClubService {
     private RedisService redisService;
     @Resource
     private SellerService sellerService;
+    @Resource
+    private AsyncService asyncService;
 
     /**
      * 根据用户Id查询机构资料
@@ -441,8 +443,9 @@ public class ClubServiceImpl implements ClubService {
             if (null == serviceProviderId) {
                 return ResponseJson.error("参数异常,协销id不能为空");
             }
-
-
+            List<ClubRemarksPo> remarksPos = clubMapper.findNewRemark(clubId, serviceProviderId);
+            //没有记录本次插入给组长推送消息,否则不推
+            boolean pushMessage = null == remarksPos || remarksPos.size() <= 0;
             log.info("【保存机构资料备注解析关键词1】:", remarks);
 
             boolean newRemarks = null == remarksId;
@@ -505,6 +508,10 @@ public class ClubServiceImpl implements ClubService {
                     clubMapper.insertRemarksFile(remarksId, fileName, ossName);
                 }
             }
+            //新分配的机构并且是第一条记录
+            if (newRemarks && pushMessage) {
+                asyncService.sendChoseServiceMessage(2, clubId, serviceProviderId, clubRemarksPo.getRemarksId());
+            }
             return ResponseJson.success("保存资料备注成功");
         } catch (Exception e) {
             log.info("保存机构资料备注参数:" + jsonParamsDto.toString());
@@ -596,7 +603,7 @@ public class ClubServiceImpl implements ClubService {
     }
 
     @Override
-    public ResponseJson changeSales(Integer clubId, Integer spId) {
+    public ResponseJson changeSales(Integer clubId, Integer spId, Integer choseServiceId) {
         //创建审核记录
         Integer oldSpId = clubMapper.findOldSpId(clubId);
         ClubChangeSpVo clubChangeSpVo = new ClubChangeSpVo();
@@ -606,6 +613,7 @@ public class ClubServiceImpl implements ClubService {
         clubChangeSpVo.setCheckStatus("1");
         clubChangeSpVo.setNewSpID(spId);
         clubChangeSpVo.setOldSpID(oldSpId);
+        clubChangeSpVo.setChoseServiceId(choseServiceId);
         clubMapper.insertChangeRecord(clubChangeSpVo);
         //更换club表协销Id
         clubMapper.updateClubSpId(clubId, spId);
@@ -617,6 +625,9 @@ public class ClubServiceImpl implements ClubService {
         } else {
             clubMapper.updateRemarksSp(clubId, oldSpId, spId, 1);
         }
+        if (!spId.equals(choseServiceId)) {
+            asyncService.sendChoseServiceMessage(1, clubId, spId, choseServiceId);
+        }
         return ResponseJson.success();
     }
 

+ 65 - 11
src/main/resources/mapper/ClubMapper.xml

@@ -41,7 +41,9 @@
         values (#{clubId}, #{serviceProviderId}, #{remarks}, #{addTime}, #{questionMan}, now(), #{consult}, #{clubType},
                 #{pinceSensitve}, #{satisfied}, #{followup}, #{extra}, #{productId}, #{reportId})
     </insert>
-    <insert id="insertChangeRecord">
+    <insert id="insertChangeRecord" parameterType="com.caimei365.user.model.vo.ClubChangeSpVo"
+            keyProperty="clubChangeSpRecordID"
+            useGeneratedKeys="true">
         INSERT INTO clubchangesprecord(clubID,
                                        oldSpID,
                                        newSpID,
@@ -49,7 +51,8 @@
                                        checkTime,
                                        checkStatus,
                                        checkMark,
-                                       checkUserID)
+                                       checkUserID,
+                                       choseServiceId)
         VALUES (#{clubID},
                 #{oldSpID},
                 #{newSpID},
@@ -57,7 +60,8 @@
                 #{checkTime},
                 #{checkStatus},
                 #{checkMark},
-                #{checkUserID})
+                #{checkUserID},
+                #{choseServiceId})
     </insert>
     <update id="updateClubUserByUpdateInfo">
         update user set
@@ -149,7 +153,7 @@
                provinceID                as proviceId,
                cityID                    as cityId,
                townID                    as townId,
-               address,
+               ifnull(address,'暂无')     as address,
                headpic                   as shopPhoto,
                businessLicenseImage      as businessLicense,
                socialCreditCode,
@@ -204,7 +208,8 @@
           AND beansType IN (1, 2, 3, 4, 8, 12)
           AND delFlag = 0
           AND userId = #{userId}
-        ORDER BY ADDTIME DESC LIMIT 1
+        ORDER BY ADDTIME DESC
+        LIMIT 1
     </select>
 
     <select id="findByBeansType" resultType="integer">
@@ -430,11 +435,11 @@
           AND a.userId = #{userId}
           AND if(cc.vipFlag = 1
             , NOW() BETWEEN cc.startDate
-          AND cc.endDate
+                     AND cc.endDate
             , NOW() <![CDATA[ < ]]> IF(cc.usePeriod IS NULL
-            , cc.endDate
-            , DATE_ADD(a.createDate
-            , INTERVAL cc.usePeriod DAY)))
+                    , cc.endDate
+                    , DATE_ADD(a.createDate
+                             , INTERVAL cc.usePeriod DAY)))
     </select>
     <select id="getUserAdvertiseList" resultType="com.caimei365.user.model.vo.AdvertiseVo">
         SELECT image, link, title
@@ -876,7 +881,8 @@
                  LEFT JOIN record_link r ON r.`clubId` = c.`clubID`
                  left join user u on u.clubId = c.clubId
         where c.clubID = #{clubId}
-        ORDER BY r.id DESC LIMIT 1
+        ORDER BY r.id DESC
+        LIMIT 1
 
     </select>
 
@@ -902,5 +908,53 @@
         WHERE clubId = #{clubID}
           AND oldserviceProviderId IS NOT NULL
     </select>
-
+    <select id="findOpenIdBySpId" resultType="java.lang.String">
+        SELECT wu.openId
+        FROM wechat_user wu
+                 LEFT JOIN serviceprovider s ON s.unionId = wu.unionId
+        WHERE serviceProviderID = #{spId}
+    </select>
+    <select id="findNewRemark" resultType="com.caimei365.user.model.po.ClubRemarksPo">
+        SELECT id          as remarksId,
+               clubId,
+               serviceProviderId,
+               consultType as consult,
+               remarks,
+               addTime,
+               questionMan
+        FROM cm_club_remarks
+        WHERE clubId = #{clubId}
+          AND serviceproviderId = #{serviceProviderId}
+          AND ADDTIME >
+              (SELECT checkTime
+               FROM clubchangesprecord c
+               WHERE c.clubId = #{clubId}
+                 AND c.newspId = #{serviceProviderId}
+               ORDER BY checkTime DESC
+               LIMIT 1)
+    </select>
+    <select id="findServiceName" resultType="java.lang.String">
+        select linkMan
+        from serviceprovider
+        where serviceProviderID = #{spId}
+    </select>
+    <select id="findAllotTime" resultType="java.util.Date">
+        select checkTime
+        from clubchangesprecord
+        where clubID = #{clubId}
+          and newSpID = #{spId}
+        ORDER BY checkTime DESC
+        LIMIT 1
+    </select>
+    <select id="findSubmitTime" resultType="java.util.Date">
+        select addTime
+        from cm_club_remarks
+        where id = #{remarkId}
+    </select>
+    <select id="findLeaderIdBySp" resultType="java.lang.Integer">
+        SELECT leaderId
+        FROM cm_serviceteam_role csr
+        LEFT JOIN cm_serviceteam_group csg ON csr.id=csg.teamId
+        WHERE csg.serviceId = #{spId}
+    </select>
 </mapper>