Browse Source

三方平台群消息发送 fix

wangyunpeng 1 week ago
parent
commit
32b880889b
22 changed files with 282 additions and 57 deletions
  1. 4 1
      api-module/src/main/java/com/tzld/piaoquan/api/component/WeComThirdPartyApiClient.java
  2. 2 2
      api-module/src/main/java/com/tzld/piaoquan/api/controller/WeComThirdPartyController.java
  3. 3 3
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComAccountJob.java
  4. 10 7
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java
  5. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComUserDetailJob.java
  6. 2 2
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/CommonResponse.java
  7. 2 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/GetChatroomMembersRequest.java
  8. 9 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/InitResponse.java
  9. 9 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/LoginInfo.java
  10. 9 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendAppMsgRequest.java
  11. 39 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendAppMsgResponse.java
  12. 9 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendTextMsgRequest.java
  13. 1 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SetChatroomInviteRequest.java
  14. 2 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/UuidRequest.java
  15. 11 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/wecom/thirdpart/ThirdPartWeComMsg.java
  16. 70 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/po/wecom/thirdpart/ThirdPartWeComMsgExample.java
  17. 2 2
      api-module/src/main/java/com/tzld/piaoquan/api/service/WeComThirdPartyService.java
  18. 27 24
      api-module/src/main/java/com/tzld/piaoquan/api/service/impl/WeComThirdPartyServiceImpl.java
  19. 2 0
      api-module/src/main/resources/application-dev.properties
  20. 4 2
      api-module/src/main/resources/mapper/wecom/thirdpart/ThirdPartWeComCorpMapper.xml
  21. 26 9
      api-module/src/main/resources/mapper/wecom/thirdpart/ThirdPartWeComMsgMapper.xml
  22. 38 0
      api-module/src/test/java/com/tzld/piaoquan/api/WeComThirdPartTest.java

+ 4 - 1
api-module/src/main/java/com/tzld/piaoquan/api/component/WeComThirdPartyApiClient.java

@@ -259,8 +259,11 @@ public class WeComThirdPartyApiClient {
                 .build();
         try (Response response = client.newCall(request).execute()) {
             if (response.isSuccessful() && response.body() != null) {
-                return response.body().string();
+                String responseStr = response.body().string();
+                log.info("企微三方平台 请求成功, url: {}, body: {}, response: {}", url, json, responseStr);
+                return responseStr;
             } else {
+                log.error("企微三方平台 请求失败, url: {}, body: {}, response: {}", url, json, response);
                 throw new IOException("Unexpected code " + response);
             }
         } catch (IOException e) {

+ 2 - 2
api-module/src/main/java/com/tzld/piaoquan/api/controller/WeComThirdPartyController.java

@@ -21,7 +21,7 @@ public class WeComThirdPartyController {
     private WeComThirdPartyService service;
 
     @PostMapping("/init")
-    public CommonResponse<String> init() {
+    public CommonResponse<InitResponse> init() {
         return CommonResponse.success(service.init());
     }
 
@@ -32,7 +32,7 @@ public class WeComThirdPartyController {
     }
 
     @PostMapping("/getQrCode")
-    public CommonResponse<String> getQrCode(@RequestBody UuidRequest request) {
+    public CommonResponse<QrCodeResponse> getQrCode(@RequestBody UuidRequest request) {
         return CommonResponse.success(service.getQrCode(request));
     }
 

+ 3 - 3
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComAccountJob.java

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Objects;
 
 @Slf4j
 @Component
@@ -41,9 +42,8 @@ public class WeComAccountJob {
             }
             String response = apiClient.getRunClientByUuid(new UuidRequest(uuid));
             CommonResponse<LoginInfo> commonResponse =
-                    JSONObject.parseObject(response, new TypeReference<CommonResponse<LoginInfo>>() {
-                    });
-            if (commonResponse.getCode() != 0) {
+                    JSONObject.parseObject(response, new TypeReference<CommonResponse<LoginInfo>>() {});
+            if (commonResponse.getErrcode() != 0 && Objects.isNull(commonResponse.getData().getUser_info())) {
                 redisUtils.set(offLineKey, "1", 30 * 60);
                 LarkRobotUtil.sendNotPushMessage(
                         "【账号掉线检测通知】\n" +

+ 10 - 7
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComSendMsgJob.java

@@ -17,6 +17,7 @@ import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
 import com.tzld.piaoquan.growth.common.model.po.Staff;
 import com.tzld.piaoquan.growth.common.service.MessageAttachmentService;
 import com.tzld.piaoquan.growth.common.utils.DateUtil;
+import com.tzld.piaoquan.growth.common.utils.MessageUtil;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
@@ -68,11 +69,11 @@ public class WeComSendMsgJob {
                     SendAppMsgRequest request = new SendAppMsgRequest();
                     request.setUuid(staff.getThirdUuid());
                     request.setSend_userid(Long.valueOf(room.getThirdRoomId()));
-                    request.setRoom(true);
+                    request.setIsRoom(true);
                     request.setAppid("wx89e7eb06478361d7");
-                    request.setUsername("gh_ecd1ea0b84cf");
-                    request.setAppName("票圈Vlog");
-                    request.setTitle("票圈Vlog");
+                    request.setUsername("gh_ecd1ea0b84cf@app");
+                    request.setAppName("票圈 l 3亿人喜欢的视频平台");
+                    request.setTitle("票圈 l 3亿人喜欢的视频平台");
                     request.setWeappIconUrl("http://rescdn.yishihui.com/temp/1755515422185_%E7%A5%A8%E5%9C%88Vlog_logo.jpg");
                     // 选取视频
                     CgiReplyBucketData cgiReplyBucketData = getCgiReplyBucketData(room.getId(), staff);
@@ -81,7 +82,7 @@ public class WeComSendMsgJob {
                     request.setPagepath(cgiReplyBucketData.getMiniPagePath());
                     CdnUploadImgLinkRequest cdnUploadImgLinkRequest = new CdnUploadImgLinkRequest();
                     cdnUploadImgLinkRequest.setUuid(staff.getThirdUuid());
-                    cdnUploadImgLinkRequest.setUrl(cgiReplyBucketData.getMiniPagePath());
+                    cdnUploadImgLinkRequest.setUrl(cgiReplyBucketData.getCoverUrl());
                     CdnUploadImgLinkResponse uploadResponse = weComThirdPartyService.cdnUploadImgLink(cdnUploadImgLinkRequest);
                     request.setCdnkey(uploadResponse.getCdn_key());
                     request.setMd5(uploadResponse.getMd5());
@@ -90,7 +91,7 @@ public class WeComSendMsgJob {
                     // 发送消息
                     weComThirdPartyService.sendAppMsg(request);
                     // 存储消息
-                    saveWeComMsg(staff.getId(), null, request);
+                    saveWeComMsg(staff.getId(), cgiReplyBucketData.getMiniVideoId(), request);
                 }
             }
         }
@@ -120,6 +121,7 @@ public class WeComSendMsgJob {
         String page = messageAttachmentService.getPage(staff, video.getVideoId());
 
         CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
+        cgiReplyBucketData.setMiniVideoId(video.getVideoId());
         cgiReplyBucketData.setTitle(video.getTitle());
         cgiReplyBucketData.setCoverUrl(video.getCover());
         cgiReplyBucketData.setMiniPagePath(page);
@@ -140,13 +142,14 @@ public class WeComSendMsgJob {
         msg.setVideoId(videoId);
         msg.setUuid(request.getUuid());
         msg.setSendUserid(request.getSend_userid());
-        msg.setIsroom(request.isRoom());
+        msg.setIsroom(request.getIsRoom());
         msg.setAppid(request.getAppid());
         msg.setUsername(request.getUsername());
         msg.setAppname(request.getAppName());
         msg.setTitle(request.getTitle());
         msg.setWeappiconurl(request.getWeappIconUrl());
         msg.setPagepath(request.getPagepath());
+        msg.setRootSourceId(MessageUtil.getRootSourceId(msg.getPagepath()));
         msg.setDesc(request.getDesc());
         msg.setCdnkey(request.getCdnkey());
         msg.setMd5(request.getMd5());

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComUserDetailJob.java

@@ -50,7 +50,7 @@ public class WeComUserDetailJob {
             String response = apiClient.getRunClientByUuid(new UuidRequest(uuid));
             CommonResponse<LoginInfo> commonResponse =
                     JSONObject.parseObject(response, new TypeReference<CommonResponse<LoginInfo>>() {});
-            if (commonResponse.getCode() != 0) {
+            if (commonResponse.getErrcode() != 0) {
                 continue;
             } else {
                 LoginInfo loginInfo = commonResponse.getData();

+ 2 - 2
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/CommonResponse.java

@@ -4,7 +4,7 @@ import lombok.Data;
 
 @Data
 public class CommonResponse<T> {
-    private Integer code;
-    private String msg;
+    private Integer errcode;
+    private String errmsg;
     private T data;
 }

+ 2 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/GetChatroomMembersRequest.java

@@ -2,11 +2,13 @@ package com.tzld.piaoquan.api.model.param.wecom.thirdpart;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * 用于请求获取数据的参数对象,包含 UUID、每次查询数量和起始索引。
  */
 @Data
+@NoArgsConstructor
 @AllArgsConstructor
 public class GetChatroomMembersRequest {
     /**

+ 9 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/InitResponse.java

@@ -0,0 +1,9 @@
+package com.tzld.piaoquan.api.model.param.wecom.thirdpart;
+
+import lombok.Data;
+
+@Data
+public class InitResponse {
+    private String uuid;
+    private Boolean is_login;
+}

+ 9 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/LoginInfo.java

@@ -17,7 +17,15 @@ public class LoginInfo {
         private Long updateTime;
         private String uuid;
         private String requrl;
-        private boolean isLogin;
+        private Boolean isLogin;
+
+        public Boolean getIsLogin() {
+            return isLogin;
+        }
+
+        public void setIsLogin(Boolean isLogin) {
+            this.isLogin = isLogin;
+        }
     }
 
     @Data

+ 9 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendAppMsgRequest.java

@@ -17,5 +17,13 @@ public class SendAppMsgRequest {
     private String md5;
     private String aeskey;
     private Integer fileSize;
-    private boolean isRoom;
+    private Boolean isRoom;
+
+    public Boolean getIsRoom() {
+        return isRoom;
+    }
+
+    public void setIsRoom(Boolean isRoom) {
+        this.isRoom = isRoom;
+    }
 }

+ 39 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendAppMsgResponse.java

@@ -0,0 +1,39 @@
+package com.tzld.piaoquan.api.model.param.wecom.thirdpart;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class SendAppMsgResponse {
+    private Integer id;
+    private Integer receiver;
+    private String cdnKey;
+    private String senderName;
+    private Boolean isRoom;
+    private Long serverId;
+    private String title;
+    private String pagepath;
+    private Integer size;
+    private Long sender;
+    private String appid;
+    private String aesKey;
+    private String appInfo;
+    private String roomConversationId;
+    private Integer sendtime;
+    private Integer msgId;
+    private Integer msgtype;
+    private String username;
+    private String weappIconUrl;
+    private String desc;
+    private String md5;
+    private Date createTime;
+
+    public Boolean getIsRoom() {
+        return isRoom;
+    }
+
+    public void setIsRoom(Boolean isRoom) {
+        this.isRoom = isRoom;
+    }
+}

+ 9 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SendTextMsgRequest.java

@@ -6,6 +6,14 @@ import lombok.Data;
 public class SendTextMsgRequest {
     private String uuid;
     private Long send_userid;
-    private boolean isRoom;
+    private Boolean isRoom;
     private String content;
+
+    public Boolean getIsRoom() {
+        return isRoom;
+    }
+
+    public void setIsRoom(Boolean isRoom) {
+        this.isRoom = isRoom;
+    }
 }

+ 1 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/SetChatroomInviteRequest.java

@@ -6,5 +6,5 @@ import lombok.Data;
 public class SetChatroomInviteRequest {
     private String uuid;
     private Long roomid;
-    private boolean status;
+    private Boolean status;
 }

+ 2 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/UuidRequest.java

@@ -2,8 +2,10 @@ package com.tzld.piaoquan.api.model.param.wecom.thirdpart;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
+@NoArgsConstructor
 @AllArgsConstructor
 public class UuidRequest {
     private String uuid;

+ 11 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/po/wecom/thirdpart/ThirdPartWeComMsg.java

@@ -21,6 +21,8 @@ public class ThirdPartWeComMsg {
 
     private String pagepath;
 
+    private String rootSourceId;
+
     private String username;
 
     private String appid;
@@ -111,6 +113,14 @@ public class ThirdPartWeComMsg {
         this.pagepath = pagepath;
     }
 
+    public String getRootSourceId() {
+        return rootSourceId;
+    }
+
+    public void setRootSourceId(String rootSourceId) {
+        this.rootSourceId = rootSourceId;
+    }
+
     public String getUsername() {
         return username;
     }
@@ -198,6 +208,7 @@ public class ThirdPartWeComMsg {
         sb.append(", title=").append(title);
         sb.append(", weappiconurl=").append(weappiconurl);
         sb.append(", pagepath=").append(pagepath);
+        sb.append(", rootSourceId=").append(rootSourceId);
         sb.append(", username=").append(username);
         sb.append(", appid=").append(appid);
         sb.append(", cdnkey=").append(cdnkey);

+ 70 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/po/wecom/thirdpart/ThirdPartWeComMsgExample.java

@@ -706,6 +706,76 @@ public class ThirdPartWeComMsgExample {
             return (Criteria) this;
         }
 
+        public Criteria andRootSourceIdIsNull() {
+            addCriterion("root_source_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdIsNotNull() {
+            addCriterion("root_source_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdEqualTo(String value) {
+            addCriterion("root_source_id =", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdNotEqualTo(String value) {
+            addCriterion("root_source_id <>", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdGreaterThan(String value) {
+            addCriterion("root_source_id >", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdGreaterThanOrEqualTo(String value) {
+            addCriterion("root_source_id >=", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdLessThan(String value) {
+            addCriterion("root_source_id <", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdLessThanOrEqualTo(String value) {
+            addCriterion("root_source_id <=", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdLike(String value) {
+            addCriterion("root_source_id like", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdNotLike(String value) {
+            addCriterion("root_source_id not like", value, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdIn(List<String> values) {
+            addCriterion("root_source_id in", values, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdNotIn(List<String> values) {
+            addCriterion("root_source_id not in", values, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdBetween(String value1, String value2) {
+            addCriterion("root_source_id between", value1, value2, "rootSourceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootSourceIdNotBetween(String value1, String value2) {
+            addCriterion("root_source_id not between", value1, value2, "rootSourceId");
+            return (Criteria) this;
+        }
+
         public Criteria andUsernameIsNull() {
             addCriterion("username is null");
             return (Criteria) this;

+ 2 - 2
api-module/src/main/java/com/tzld/piaoquan/api/service/WeComThirdPartyService.java

@@ -9,11 +9,11 @@ import java.util.List;
 
 public interface WeComThirdPartyService {
 
-    String init();
+    InitResponse init();
 
     void setCallbackUrl(SetCallbackUrlRequest request);
 
-    String getQrCode(UuidRequest request);
+    QrCodeResponse getQrCode(UuidRequest request);
 
     void setCheckCode(CheckCodeRequest request);
 

+ 27 - 24
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/WeComThirdPartyServiceImpl.java

@@ -38,11 +38,18 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
     private CorpMapper corpMapper;
 
     @Override
-    public String init() {
+    public InitResponse init() {
         InitRequest request = new InitRequest();
         request.setProxySituation(0);
         request.setDeverType("ipad");
-        return apiClient.init(request);
+        String response = apiClient.init(request);
+        CommonResponse<InitResponse> commonResponse =
+                JSONObject.parseObject(response, new TypeReference<CommonResponse<InitResponse>>() {});
+        if (commonResponse.getErrcode() != 0) {
+            log.error("init failed, response: {}", response);
+            return null;
+        }
+        return commonResponse.getData();
     }
 
     @Override
@@ -51,15 +58,15 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
     }
 
     @Override
-    public String getQrCode(UuidRequest request) {
+    public QrCodeResponse getQrCode(UuidRequest request) {
         String response = apiClient.getQrCode(request);
         CommonResponse<QrCodeResponse> commonResponse =
                 JSONObject.parseObject(response, new TypeReference<CommonResponse<QrCodeResponse>>() {});
-        if (commonResponse.getCode() != 0) {
+        if (commonResponse.getErrcode() != 0) {
             log.error("get qr code failed, response: {}", response);
             return null;
         }
-        return commonResponse.getData().getQrcode();
+        return commonResponse.getData();
     }
 
     @Override
@@ -72,7 +79,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         String response = apiClient.secondaryValidation(request);
         CommonResponse<SecondaryValidationResponse> commonResponse =
                 JSONObject.parseObject(response, new TypeReference<CommonResponse<SecondaryValidationResponse>>() {});
-        if (commonResponse.getCode() != 0) {
+        if (commonResponse.getErrcode() != 0) {
             log.error("secondary validation failed, response: {}", response);
             return null;
         }
@@ -84,7 +91,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         String response = apiClient.getRunClientByUuid(request);
         CommonResponse<LoginInfo> commonResponse =
                 JSONObject.parseObject(response, new TypeReference<CommonResponse<LoginInfo>>() {});
-        if (commonResponse.getCode() != 0) {
+        if (commonResponse.getErrcode() != 0) {
             log.error("get run client by uuid failed, response: {}", response);
             return null;
         }
@@ -126,9 +133,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         if (Objects.isNull(existStaff)) {
             existStaff = new ThirdPartWeComStaff();
             existStaff.setThirdStaffId(userObject.getUser_id());
-            if (Objects.nonNull(corp)) {
-                existStaff.setCorpId(corp.getId());
-            }
+            existStaff.setCorpId(existCorp.getId());
             existStaff.setName(userObject.getNickname());
             existStaff.setMobile(userObject.getMobile());
             existStaff.setAvatar(userObject.getAvatar());
@@ -136,9 +141,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             existStaff.setThirdUuid(uuid);
             thirdPartWeComStaffMapper.insertSelective(existStaff);
         } else {
-            if (Objects.nonNull(corp)) {
-                existStaff.setCorpId(corp.getId());
-            }
+            existStaff.setCorpId(existCorp.getId());
             existStaff.setName(userObject.getNickname());
             existStaff.setMobile(userObject.getMobile());
             existStaff.setAvatar(userObject.getAvatar());
@@ -183,7 +186,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         List<GetInnerContactsResponse.ContactItem> result = new ArrayList<>();
         String seq = null;
         do {
-            if (StringUtils.isNotBlank(seq)) {
+            if (StringUtils.isBlank(seq)) {
                 request.setStrSeq("");
             } else {
                 request.setStrSeq(seq);
@@ -191,7 +194,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             String response = apiClient.getInnerContacts(request);
             CommonResponse<GetInnerContactsResponse> commonResponse =
                     JSONObject.parseObject(response, new TypeReference<CommonResponse<GetInnerContactsResponse>>() {});
-            if (commonResponse.getCode() != 0) {
+            if (commonResponse.getErrcode() != 0) {
                 log.error("get inner contacts failed, response: {}", response);
                 return result;
             }
@@ -214,7 +217,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             String response = apiClient.getExternalContacts(request);
             CommonResponse<ExternalContactsResponse> commonResponse =
                     JSONObject.parseObject(response, new TypeReference<CommonResponse<ExternalContactsResponse>>() {});
-            if (commonResponse.getCode() != 0) {
+            if (commonResponse.getErrcode() != 0) {
                 log.error("get external contacts failed, response: {}", response);
                 return result;
             }
@@ -237,7 +240,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             String response = apiClient.getChatroomMembers(request);
             CommonResponse<GetChatroomMembersResponse> commonResponse =
                     JSONObject.parseObject(response, new TypeReference<CommonResponse<GetChatroomMembersResponse>>() {});
-            if (commonResponse.getCode() != 0) {
+            if (commonResponse.getErrcode() != 0) {
                 log.error("get chatroom members failed, response: {}", response);
                 return result;
             }
@@ -253,7 +256,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         String response = apiClient.getRoomUserList(request);
         CommonResponse<GetRoomUserListResponse> commonResponse =
                 JSONObject.parseObject(response, new TypeReference<CommonResponse<GetRoomUserListResponse>>() {});
-        if (commonResponse.getCode() != 0) {
+        if (commonResponse.getErrcode() != 0) {
             log.error("get room user list failed, response: {}", response);
             return result;
         }
@@ -266,8 +269,8 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         String response = apiClient.cdnUploadImgLink(request);
         CommonResponse<CdnUploadImgLinkResponse> commonResponse =
                 JSONObject.parseObject(response, new TypeReference<CommonResponse<CdnUploadImgLinkResponse>>() {});
-        if (commonResponse.getCode() != 0) {
-            log.error("get room user list failed, response: {}", response);
+        if (commonResponse.getErrcode() != 0) {
+            log.error("cdn upload img link failed, response: {}", response);
             return null;
         }
         return commonResponse.getData();
@@ -276,10 +279,10 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
     @Override
     public void sendAppMsg(SendAppMsgRequest request) {
         String response = apiClient.sendAppMsg(request);
-        CommonResponse<CdnUploadImgLinkResponse> commonResponse =
-                JSONObject.parseObject(response, new TypeReference<CommonResponse<CdnUploadImgLinkResponse>>() {});
-        if (commonResponse.getCode() != 0) {
-            log.error("get room user list failed, response: {}", response);
+        CommonResponse<SendAppMsgResponse> commonResponse =
+                JSONObject.parseObject(response, new TypeReference<CommonResponse<SendAppMsgResponse>>() {});
+        if (commonResponse.getErrcode() != 0) {
+            log.error("send app msg failed, response: {}", response);
         }
     }
 

+ 2 - 0
api-module/src/main/resources/application-dev.properties

@@ -1,3 +1,5 @@
+server.port=8080
+
 spring.datasource.username=crawler
 spring.datasource.password=crawler123456@
 spring.datasource.url=jdbc:mysql://rm-bp17q95335a99272b.mysql.rds.aliyuncs.com:3306/growth-test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true

+ 4 - 2
api-module/src/main/resources/mapper/wecom/thirdpart/ThirdPartWeComCorpMapper.xml

@@ -104,7 +104,8 @@
       <include refid="Example_Where_Clause" />
     </if>
   </delete>
-  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComCorp">
+  <insert id="insert" parameterType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComCorp"
+          useGeneratedKeys="true" keyProperty="id">
     insert into third_part_we_com_corp (id, `name`, corp_id, 
       third_corp_id, is_delete, create_time, 
       update_time)
@@ -112,7 +113,8 @@
       #{thirdCorpId,jdbcType=BIGINT}, #{isDelete,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 
       #{updateTime,jdbcType=TIMESTAMP})
   </insert>
-  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComCorp">
+  <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComCorp"
+          useGeneratedKeys="true" keyProperty="id">
     insert into third_part_we_com_corp
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">

+ 26 - 9
api-module/src/main/resources/mapper/wecom/thirdpart/ThirdPartWeComMsgMapper.xml

@@ -11,6 +11,7 @@
     <result column="title" jdbcType="VARCHAR" property="title" />
     <result column="weappIconUrl" jdbcType="VARCHAR" property="weappiconurl" />
     <result column="pagepath" jdbcType="VARCHAR" property="pagepath" />
+    <result column="root_source_id" jdbcType="VARCHAR" property="rootSourceId" />
     <result column="username" jdbcType="VARCHAR" property="username" />
     <result column="appid" jdbcType="VARCHAR" property="appid" />
     <result column="cdnkey" jdbcType="VARCHAR" property="cdnkey" />
@@ -83,7 +84,7 @@
   </sql>
   <sql id="Base_Column_List">
     id, uuid, send_userid, staff_id, video_id, appName, title, weappIconUrl, pagepath, 
-    username, appid, cdnkey, md5, aeskey, fileSize, isRoom, create_time
+    root_source_id, username, appid, cdnkey, md5, aeskey, fileSize, isRoom, create_time
   </sql>
   <sql id="Blob_Column_List">
     `desc`
@@ -146,17 +147,17 @@
     insert into third_part_we_com_msg (id, uuid, send_userid, 
       staff_id, video_id, appName, 
       title, weappIconUrl, pagepath, 
-      username, appid, cdnkey, 
-      md5, aeskey, fileSize, 
-      isRoom, create_time, `desc`
-      )
+      root_source_id, username, appid, 
+      cdnkey, md5, aeskey, 
+      fileSize, isRoom, create_time, 
+      `desc`)
     values (#{id,jdbcType=BIGINT}, #{uuid,jdbcType=VARCHAR}, #{sendUserid,jdbcType=BIGINT}, 
       #{staffId,jdbcType=BIGINT}, #{videoId,jdbcType=BIGINT}, #{appname,jdbcType=VARCHAR}, 
       #{title,jdbcType=VARCHAR}, #{weappiconurl,jdbcType=VARCHAR}, #{pagepath,jdbcType=VARCHAR}, 
-      #{username,jdbcType=VARCHAR}, #{appid,jdbcType=VARCHAR}, #{cdnkey,jdbcType=VARCHAR}, 
-      #{md5,jdbcType=VARCHAR}, #{aeskey,jdbcType=VARCHAR}, #{filesize,jdbcType=INTEGER}, 
-      #{isroom,jdbcType=BIT}, #{createTime,jdbcType=TIMESTAMP}, #{desc,jdbcType=LONGVARCHAR}
-      )
+      #{rootSourceId,jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{appid,jdbcType=VARCHAR}, 
+      #{cdnkey,jdbcType=VARCHAR}, #{md5,jdbcType=VARCHAR}, #{aeskey,jdbcType=VARCHAR}, 
+      #{filesize,jdbcType=INTEGER}, #{isroom,jdbcType=BIT}, #{createTime,jdbcType=TIMESTAMP}, 
+      #{desc,jdbcType=LONGVARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComMsg">
     insert into third_part_we_com_msg
@@ -188,6 +189,9 @@
       <if test="pagepath != null">
         pagepath,
       </if>
+      <if test="rootSourceId != null">
+        root_source_id,
+      </if>
       <if test="username != null">
         username,
       </if>
@@ -244,6 +248,9 @@
       <if test="pagepath != null">
         #{pagepath,jdbcType=VARCHAR},
       </if>
+      <if test="rootSourceId != null">
+        #{rootSourceId,jdbcType=VARCHAR},
+      </if>
       <if test="username != null">
         #{username,jdbcType=VARCHAR},
       </if>
@@ -309,6 +316,9 @@
       <if test="record.pagepath != null">
         pagepath = #{record.pagepath,jdbcType=VARCHAR},
       </if>
+      <if test="record.rootSourceId != null">
+        root_source_id = #{record.rootSourceId,jdbcType=VARCHAR},
+      </if>
       <if test="record.username != null">
         username = #{record.username,jdbcType=VARCHAR},
       </if>
@@ -352,6 +362,7 @@
       title = #{record.title,jdbcType=VARCHAR},
       weappIconUrl = #{record.weappiconurl,jdbcType=VARCHAR},
       pagepath = #{record.pagepath,jdbcType=VARCHAR},
+      root_source_id = #{record.rootSourceId,jdbcType=VARCHAR},
       username = #{record.username,jdbcType=VARCHAR},
       appid = #{record.appid,jdbcType=VARCHAR},
       cdnkey = #{record.cdnkey,jdbcType=VARCHAR},
@@ -376,6 +387,7 @@
       title = #{record.title,jdbcType=VARCHAR},
       weappIconUrl = #{record.weappiconurl,jdbcType=VARCHAR},
       pagepath = #{record.pagepath,jdbcType=VARCHAR},
+      root_source_id = #{record.rootSourceId,jdbcType=VARCHAR},
       username = #{record.username,jdbcType=VARCHAR},
       appid = #{record.appid,jdbcType=VARCHAR},
       cdnkey = #{record.cdnkey,jdbcType=VARCHAR},
@@ -415,6 +427,9 @@
       <if test="pagepath != null">
         pagepath = #{pagepath,jdbcType=VARCHAR},
       </if>
+      <if test="rootSourceId != null">
+        root_source_id = #{rootSourceId,jdbcType=VARCHAR},
+      </if>
       <if test="username != null">
         username = #{username,jdbcType=VARCHAR},
       </if>
@@ -455,6 +470,7 @@
       title = #{title,jdbcType=VARCHAR},
       weappIconUrl = #{weappiconurl,jdbcType=VARCHAR},
       pagepath = #{pagepath,jdbcType=VARCHAR},
+      root_source_id = #{rootSourceId,jdbcType=VARCHAR},
       username = #{username,jdbcType=VARCHAR},
       appid = #{appid,jdbcType=VARCHAR},
       cdnkey = #{cdnkey,jdbcType=VARCHAR},
@@ -476,6 +492,7 @@
       title = #{title,jdbcType=VARCHAR},
       weappIconUrl = #{weappiconurl,jdbcType=VARCHAR},
       pagepath = #{pagepath,jdbcType=VARCHAR},
+      root_source_id = #{rootSourceId,jdbcType=VARCHAR},
       username = #{username,jdbcType=VARCHAR},
       appid = #{appid,jdbcType=VARCHAR},
       cdnkey = #{cdnkey,jdbcType=VARCHAR},

+ 38 - 0
api-module/src/test/java/com/tzld/piaoquan/api/WeComThirdPartTest.java

@@ -0,0 +1,38 @@
+package com.tzld.piaoquan.api;
+
+import com.tzld.piaoquan.api.job.wecom.thirdpart.WeComAccountJob;
+import com.tzld.piaoquan.api.job.wecom.thirdpart.WeComSendMsgJob;
+import com.tzld.piaoquan.api.job.wecom.thirdpart.WeComUserDetailJob;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest(classes = GrowthServerApplication.class)
+@Slf4j
+public class WeComThirdPartTest {
+
+    @Autowired
+    WeComSendMsgJob weComSendMsgJob;
+    @Autowired
+    WeComAccountJob weComAccountJob;
+    @Autowired
+    WeComUserDetailJob weComUserDetailJob;
+
+
+    @Test
+    public void checkAccountOnline() {
+        weComAccountJob.checkAccountOnline("");
+    }
+
+    @Test
+    public void syncUserDetail() {
+        weComUserDetailJob.syncUserDetail("");
+    }
+
+    @Test
+    public void autoSendAppMsg() {
+        weComSendMsgJob.autoSendAppMsg("");
+    }
+
+}