Selaa lähdekoodia

个微SOP发消息完善

吴树波 2 päivää sitten
vanhempi
commit
211c241300
24 muutettua tiedostoa jossa 309 lisäystä ja 116 poistoa
  1. 31 8
      fs-service/src/main/java/com/fs/company/service/impl/CompanyWxServiceImpl.java
  2. 13 0
      fs-service/src/main/java/com/fs/wxcid/dto/common/BaseAccountRequest.java
  3. 16 0
      fs-service/src/main/java/com/fs/wxcid/dto/friend/AddContactParam.java
  4. 16 0
      fs-service/src/main/java/com/fs/wxcid/dto/friend/GetContactDetailsListParam.java
  5. 13 0
      fs-service/src/main/java/com/fs/wxcid/dto/friend/GetContactListParam.java
  6. 14 0
      fs-service/src/main/java/com/fs/wxcid/dto/friend/SearchContactParam.java
  7. 19 0
      fs-service/src/main/java/com/fs/wxcid/dto/friend/VerifyUserParam.java
  8. 13 0
      fs-service/src/main/java/com/fs/wxcid/dto/login/AccountIdParam.java
  9. 14 0
      fs-service/src/main/java/com/fs/wxcid/dto/login/GetLoginQrCodeParam.java
  10. 21 12
      fs-service/src/main/java/com/fs/wxcid/dto/message/RevokeMsgRequest.java
  11. 15 0
      fs-service/src/main/java/com/fs/wxcid/dto/message/SendImageMessageParam.java
  12. 14 0
      fs-service/src/main/java/com/fs/wxcid/dto/message/SendTextMessageParam.java
  13. 5 11
      fs-service/src/main/java/com/fs/wxcid/service/FriendService.java
  14. 8 9
      fs-service/src/main/java/com/fs/wxcid/service/LoginService.java
  15. 2 2
      fs-service/src/main/java/com/fs/wxcid/service/MessageCallbackService.java
  16. 3 3
      fs-service/src/main/java/com/fs/wxcid/service/MessageService.java
  17. 2 6
      fs-service/src/main/java/com/fs/wxcid/service/UserService.java
  18. 32 28
      fs-service/src/main/java/com/fs/wxcid/service/impl/FriendServiceImpl.java
  19. 20 14
      fs-service/src/main/java/com/fs/wxcid/service/impl/LoginServiceImpl.java
  20. 4 3
      fs-service/src/main/java/com/fs/wxcid/service/impl/MessageCallbackServiceImpl.java
  21. 12 12
      fs-service/src/main/java/com/fs/wxcid/service/impl/MessageServiceImpl.java
  22. 3 5
      fs-service/src/main/java/com/fs/wxcid/service/impl/UserServiceImpl.java
  23. 6 1
      fs-wx-task/src/main/java/com/fs/app/controller/CommonController.java
  24. 13 2
      fs-wx-task/src/main/java/com/fs/app/service/WxTaskService.java

+ 31 - 8
fs-service/src/main/java/com/fs/company/service/impl/CompanyWxServiceImpl.java

@@ -20,7 +20,11 @@ import com.fs.wxcid.domain.CidIpadServerUser;
 import com.fs.wxcid.domain.WxContact;
 import com.fs.wxcid.dto.friend.ContactItem;
 import com.fs.wxcid.dto.friend.ContactListResponse;
+import com.fs.wxcid.dto.friend.GetContactDetailsListParam;
 import com.fs.wxcid.dto.friend.GetContactDetailsResponseData;
+import com.fs.wxcid.dto.friend.GetContactListParam;
+import com.fs.wxcid.dto.login.AccountIdParam;
+import com.fs.wxcid.dto.login.GetLoginQrCodeParam;
 import com.fs.wxcid.dto.login.LoginStatusResponseData;
 import com.fs.wxcid.dto.message.ChatroomMember;
 import com.fs.wxcid.dto.message.UserNameWrapper;
@@ -202,14 +206,19 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
             account.setAuthKey(token);
             updateById(account);
         }
-        return loginService.getLoginQrCodeNewDirect(accountId, ipadOrMac);
+        GetLoginQrCodeParam param = new GetLoginQrCodeParam();
+        param.setAccountId(accountId);
+        param.setIpadOrMac(ipadOrMac);
+        return loginService.getLoginQrCodeNewDirect(param);
     }
 
     @Override
     public boolean getLoginStatus(Long accountId) {
         CompanyWxAccount account = getById(accountId);
         try {
-            LoginStatusResponseData login = loginService.checkLoginStatus(accountId);
+            AccountIdParam param = new AccountIdParam();
+            param.setAccountId(accountId);
+            LoginStatusResponseData login = loginService.checkLoginStatus(param);
             if(login.getRet() == 0){
                 account.setLoginStatus(1);
                 account.setLoginTime(LocalDateTime.now());
@@ -268,13 +277,17 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
 
     @Override
     public void wakeUpLogin(Long accountId) {
-        loginService.wakeUpLogin(accountId);
+        AccountIdParam param = new AccountIdParam();
+        param.setAccountId(accountId);
+        loginService.wakeUpLogin(param);
     }
 
     @Override
     public void updateWxInfo(Long accountId) {
         CompanyWxAccount account = getById(accountId);
-        UserProfileData profile = userService.getProfile(accountId);
+        AccountIdParam param = new AccountIdParam();
+        param.setAccountId(accountId);
+        UserProfileData profile = userService.getProfile(param);
         UserInfo userInfo = profile.getUserInfo();
         UserInfoExt userInfoExt = profile.getUserInfoExt();
         account.setWxNickName(userInfo.getNickName().getStr());
@@ -291,7 +304,9 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
         account.setOutTime(LocalDateTime.now());
         account.setOutRemark("手动退出");
         updateById(account);
-        loginService.logOut(accountId);
+        AccountIdParam param = new AccountIdParam();
+        param.setAccountId(accountId);
+        loginService.logOut(param);
     }
 
     @Override
@@ -317,7 +332,9 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
             friendListRedis.deleteObject(key);
 
             // 4. 获取好友列表并过滤
-            ContactListResponse response = friendService.getContactListNotKey(accountId);
+            GetContactListParam param = new GetContactListParam();
+            param.setAccountId(accountId);
+            ContactListResponse response = friendService.getContactListNotKey(param);
             List<String> friendList = getFilteredFriendList(response);
             if (CollectionUtils.isEmpty(friendList)) {
                 log.info("账号暂无需要同步的微信好友/群聊,accountId={}", accountId);
@@ -365,7 +382,10 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
         for (String username : friendList) {
             try {
                 // 获取联系人详情
-                GetContactDetailsResponseData contactDetails = friendService.getContactDetailsList(accountId, Collections.singletonList(username));
+                GetContactDetailsListParam param = new GetContactDetailsListParam();
+                param.setAccountId(accountId);
+                param.setWxIdList(Collections.singletonList(username));
+                GetContactDetailsResponseData contactDetails = friendService.getContactDetailsList(param);
                 if (contactDetails == null || CollectionUtils.isEmpty(contactDetails.getContactList())) {
                     log.warn("联系人详情为空,username={},accountId={}", username, accountId);
                     continue;
@@ -519,7 +539,10 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
 
     @Override
     public void isCheckContact(String formUser, Long accountId) {
-        GetContactDetailsResponseData details = friendService.getContactDetailsList(accountId, Collections.singletonList(formUser));
+        GetContactDetailsListParam param = new GetContactDetailsListParam();
+        param.setAccountId(accountId);
+        param.setWxIdList(Collections.singletonList(formUser));
+        GetContactDetailsResponseData details = friendService.getContactDetailsList(param);
         details.getContactList().forEach(e -> {
             String v3 = e.getEncryptUserName();
 //            String v4 = null;

+ 13 - 0
fs-service/src/main/java/com/fs/wxcid/dto/common/BaseAccountRequest.java

@@ -0,0 +1,13 @@
+package com.fs.wxcid.dto.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+/**
+ * 业务层请求基类,包含账号ID
+ */
+@Data
+public class BaseAccountRequest {
+    @JsonIgnore
+    private Long accountId;
+}

+ 16 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/AddContactParam.java

@@ -0,0 +1,16 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 添加联系人业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AddContactParam extends BaseAccountRequest {
+    private String mobile;
+    private String txt;
+    private Long clientId;
+}

+ 16 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/GetContactDetailsListParam.java

@@ -0,0 +1,16 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 批量获取联系人详情业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GetContactDetailsListParam extends BaseAccountRequest {
+    private List<String> wxIdList;
+}

+ 13 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/GetContactListParam.java

@@ -0,0 +1,13 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 获取联系人列表业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GetContactListParam extends BaseAccountRequest {
+}

+ 14 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/SearchContactParam.java

@@ -0,0 +1,14 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 搜索联系人业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SearchContactParam extends BaseAccountRequest {
+    private String phone;
+}

+ 19 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/VerifyUserParam.java

@@ -0,0 +1,19 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 发起好友验证业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VerifyUserParam extends BaseAccountRequest {
+    private String v3;
+    private String v4;
+    private Integer scene;
+    private Integer opCode;
+    private String chatRoomUserName;
+    private String content;
+}

+ 13 - 0
fs-service/src/main/java/com/fs/wxcid/dto/login/AccountIdParam.java

@@ -0,0 +1,13 @@
+package com.fs.wxcid.dto.login;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 仅含账号ID的请求参数(登录、退出、获取资料等)
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AccountIdParam extends BaseAccountRequest {
+}

+ 14 - 0
fs-service/src/main/java/com/fs/wxcid/dto/login/GetLoginQrCodeParam.java

@@ -0,0 +1,14 @@
+package com.fs.wxcid.dto.login;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 获取登录二维码业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GetLoginQrCodeParam extends BaseAccountRequest {
+    private String ipadOrMac;
+}

+ 21 - 12
fs-service/src/main/java/com/fs/wxcid/dto/message/RevokeMsgRequest.java

@@ -1,23 +1,32 @@
 package com.fs.wxcid.dto.message;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import com.fs.wxcid.dto.common.BaseAccountRequest;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 撤回消息请求参数(RevokeMsgNew 接口)
  */
 @Data
-public class RevokeMsgRequest {
-
-    /**
-     * 要撤回的消息 ID(发送消息时返回的 msgId 或 newMsgId)
-     */
-    @JSONField(name = "msgId")
-    private Long msgId;
-
-    /**
-     * 接收方 wxid(单聊)或群 id(群聊)
-     */
-    @JSONField(name = "toUserName")
+@EqualsAndHashCode(callSuper = true)
+public class RevokeMsgRequest extends BaseAccountRequest {
+
+    @JSONField(name = "ClientImgIdStr")
+    private String clientImgIdStr;
+
+    @JSONField(name = "ClientMsgId")
+    private Long clientMsgId;
+
+    @JSONField(name = "CreateTime")
+    private Long createTime;
+
+    @JSONField(name = "IsImage")
+    private boolean isImage;
+
+    @JSONField(name = "NewMsgId")
+    private String newMsgId;
+
+    @JSONField(name = "ToUserName")
     private String toUserName;
 }

+ 15 - 0
fs-service/src/main/java/com/fs/wxcid/dto/message/SendImageMessageParam.java

@@ -0,0 +1,15 @@
+package com.fs.wxcid.dto.message;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 发送图片消息业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SendImageMessageParam extends BaseAccountRequest {
+    private String imgUrl;
+    private String toUser;
+}

+ 14 - 0
fs-service/src/main/java/com/fs/wxcid/dto/message/SendTextMessageParam.java

@@ -0,0 +1,14 @@
+package com.fs.wxcid.dto.message;
+
+import com.fs.wxcid.dto.common.BaseAccountRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 发送文本消息业务请求参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SendTextMessageParam extends BaseAccountRequest {
+    private String txt;
+}

+ 5 - 11
fs-service/src/main/java/com/fs/wxcid/service/FriendService.java

@@ -5,7 +5,6 @@ package com.fs.wxcid.service;
 import com.fs.wxcid.dto.common.BaseResponse;
 import com.fs.wxcid.dto.friend.*;
 import com.fs.wxcid.vo.AddContactVo;
-import com.fs.wxcid.vo.VerifyUserVo;
 
 import java.util.List;
 
@@ -27,7 +26,7 @@ public interface FriendService {
      * </p>
      * @return 统一响应结果
      */
-    GetContactDetailsResponseData getContactDetailsList(Long accountId, List<String> wxIdList);
+    GetContactDetailsResponseData getContactDetailsList(GetContactDetailsListParam param);
     /**
      * 搜索联系人
      * <p>
@@ -37,7 +36,7 @@ public interface FriendService {
      *
      * @return 统一响应结果
      */
-    SearchContactResponse searchContact(Long accountId, String phone);
+    SearchContactResponse searchContact(SearchContactParam param);
 
     /**
      * 发起好友验证或添加请求
@@ -49,16 +48,11 @@ public interface FriendService {
      *
      * @return 统一响应结果
      */
-    BaseResponse verifyUser(Long accountId, VerifyUserVo vo);
-    ContactListResponse getContactListNotKey(Long accountId);
+    BaseResponse verifyUser(VerifyUserParam param);
+    ContactListResponse getContactListNotKey(GetContactListParam param);
 
     /**
      * 添加联系人
-     *
-     * @param id       账号ID
-     * @param mobile   手机号
-     * @param txt      招呼内容
-     * @param clientId
      */
-    AddContactVo addContact(Long id, String mobile, String txt, Long clientId);
+    AddContactVo addContact(AddContactParam param);
 }

+ 8 - 9
fs-service/src/main/java/com/fs/wxcid/service/LoginService.java

@@ -1,20 +1,19 @@
 package com.fs.wxcid.service;
 
 import com.fs.wxcid.dto.common.ApiResponseCommon;
+import com.fs.wxcid.dto.login.AccountIdParam;
+import com.fs.wxcid.dto.login.GetLoginQrCodeParam;
 import com.fs.wxcid.dto.login.LoginStatusData;
 import com.fs.wxcid.dto.login.LoginStatusResponseData;
-import com.fs.wxcid.dto.login.QrCodeRequest;
+
 /**
  * 微信登录服务接口
  * <p>封装所有 /login/* 接口,支持多种登录方式</p>
  */
 public interface LoginService {
-    // 检测扫码是否完成
-    LoginStatusResponseData checkLoginStatus(Long accountId);
-
-    // 退出登录
-    ApiResponseCommon<Void> logOut(Long accountId);
-
-    /// 唤醒登录
-    ApiResponseCommon<Void> wakeUpLogin(Long authKey);
+    String getLoginQrCodeNewDirect(GetLoginQrCodeParam param);
+    LoginStatusResponseData checkLoginStatus(AccountIdParam param);
+    LoginStatusData getLoginStatus(AccountIdParam param);
+    ApiResponseCommon<Void> logOut(AccountIdParam param);
+    ApiResponseCommon<Void> wakeUpLogin(AccountIdParam param);
 }

+ 2 - 2
fs-service/src/main/java/com/fs/wxcid/service/MessageCallbackService.java

@@ -2,8 +2,8 @@ package com.fs.wxcid.service;
 
 import com.fs.wxcid.dto.callback.CallbackConfigResponse;
 import com.fs.wxcid.dto.callback.ReturnMessage;
-import com.fs.wxcid.dto.callback.CallbackConfigRequest;
 import com.fs.wxcid.dto.common.ApiResponseCommon;
+import com.fs.wxcid.dto.login.AccountIdParam;
 
 import java.util.Map;
 
@@ -25,7 +25,7 @@ public interface MessageCallbackService {
      * @param config 回调配置(URL + 启用状态)
      * @return 统一响应结果
      */
-    ApiResponseCommon<Void> setCallback(Long accountId);
+    ApiResponseCommon<Void> setCallback(AccountIdParam param);
 
     /**
      * 获取当前账号的消息回调配置

+ 3 - 3
fs-service/src/main/java/com/fs/wxcid/service/MessageService.java

@@ -6,8 +6,8 @@ import com.fs.wxcid.dto.message.*;
 import java.util.List;
 
 public interface MessageService {
-    List<SendMessageResult> sendTextMessage(Long accountId, String txt);
-    List<SendImageMessageResult> sendImageMessage(Long accountId, String imgUrl, String toUser);
-    RevokeMsgResult revokeMessage(Long accountId, Long msgId, String toUserName);
+    List<SendMessageResult> sendTextMessage(SendTextMessageParam param);
+    List<SendImageMessageResult> sendImageMessage(SendImageMessageParam param);
+    RevokeMsgResult revokeMessage(RevokeMsgRequest request);
 
 }

+ 2 - 6
fs-service/src/main/java/com/fs/wxcid/service/UserService.java

@@ -1,16 +1,12 @@
 package com.fs.wxcid.service;
 
-
-import com.fs.wxcid.dto.common.ApiResponseCommon;
+import com.fs.wxcid.dto.login.AccountIdParam;
 import com.fs.wxcid.dto.user.UserProfileData;
 
 public interface UserService {
     /**
      * 获取个人资料
      * <p>对应接口:POST /user/GetProfile</p>
-     *
-     * @param accountId     账号唯一标识
-     * @return 统一响应结果
      */
-    UserProfileData getProfile(Long accountId);
+    UserProfileData getProfile(AccountIdParam param);
 }

+ 32 - 28
fs-service/src/main/java/com/fs/wxcid/service/impl/FriendServiceImpl.java

@@ -30,10 +30,10 @@ public class FriendServiceImpl implements FriendService {
     private static final String BASE_URL = "/friend/";
 
     @Override
-    public GetContactDetailsResponseData getContactDetailsList(Long accountId, List<String> wxIdList) {
+    public GetContactDetailsResponseData getContactDetailsList(GetContactDetailsListParam param) {
         GetContactDetailsListRequest request = new GetContactDetailsListRequest();
-        request.setUserNames(wxIdList);
-        ApiResponseCommon<GetContactDetailsResponseData> response = serviceUtils.sendPost(BASE_URL + "GetContactDetailsList", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<GetContactDetailsResponseData>>() {});
+        request.setUserNames(param.getWxIdList());
+        ApiResponseCommon<GetContactDetailsResponseData> response = serviceUtils.sendPost(BASE_URL + "GetContactDetailsList", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<GetContactDetailsResponseData>>() {});
         return response.getData();
     }
 
@@ -43,13 +43,13 @@ public class FriendServiceImpl implements FriendService {
         });
     }
     @Override
-    public SearchContactResponse searchContact(Long accountId, String phone) {
+    public SearchContactResponse searchContact(SearchContactParam param) {
         SearchContactRequest request = new SearchContactRequest();
         request.setFromScene(0);
         request.setOpCode(2);
         request.setSearchScene(1);
-        request.setUserName(phone);
-        ApiResponseCommon<SearchContactResponse> response = serviceUtils.sendPost(BASE_URL + "SearchContact", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<SearchContactResponse>>() {});
+        request.setUserName(param.getPhone());
+        ApiResponseCommon<SearchContactResponse> response = serviceUtils.sendPost(BASE_URL + "SearchContact", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<SearchContactResponse>>() {});
         SearchContactResponse data = response.getData();
         String userNameStr = data.getUserNameStr();
         String antispamTicket = data.getAntispamTicket();
@@ -61,42 +61,46 @@ public class FriendServiceImpl implements FriendService {
     }
 
     @Override
-    public BaseResponse verifyUser(Long accountId, VerifyUserVo vo) {
+    public BaseResponse verifyUser(VerifyUserParam param) {
         AgreeAddRequest request = new AgreeAddRequest();
-        request.setChatRoomUserName(vo.getChatRoomUserName());
-        request.setOpCode(vo.getOpCode());
-        request.setScene(vo.getScene());
-        request.setV3(vo.getV3());
-        request.setV4(vo.getV4());
-        request.setVerifyContent(vo.getContent());
-        ApiResponseCommon<BaseResponse> response = serviceUtils.sendPost(BASE_URL + "VerifyUser", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<BaseResponse>>() {});
+        request.setChatRoomUserName(param.getChatRoomUserName());
+        request.setOpCode(param.getOpCode());
+        request.setScene(param.getScene());
+        request.setV3(param.getV3());
+        request.setV4(param.getV4());
+        request.setVerifyContent(param.getContent());
+        ApiResponseCommon<BaseResponse> response = serviceUtils.sendPost(BASE_URL + "VerifyUser", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<BaseResponse>>() {});
         log.info("好友验证请求已成功发送");
         return response.getData();
     }
 
     @Override
-    public ContactListResponse getContactListNotKey(Long accountId) {
+    public ContactListResponse getContactListNotKey(GetContactListParam param) {
         GetContactListRequest request = new GetContactListRequest();
         request.setCurrentChatRoomContactSeq(0);
         request.setCurrentWxcontactSeq(0);
-        ApiResponseCommon<ContactListResponse> response = serviceUtils.sendPost(BASE_URL + "GetContactList", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<ContactListResponse>>() {});
+        ApiResponseCommon<ContactListResponse> response = serviceUtils.sendPost(BASE_URL + "GetContactList", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<ContactListResponse>>() {});
         return response.getData();
     }
 
     @Override
-    public AddContactVo addContact(Long id, String mobile, String txt, Long clientId) {
+    public AddContactVo addContact(AddContactParam param) {
         AddContactVo resultVo = new AddContactVo();
         try {
-            SearchContactResponse searchContactResponse = searchContact(id, mobile);
-            VerifyUserVo vo = new VerifyUserVo();
-            vo.setV3(searchContactResponse.getUserNameStr());
-            vo.setV4(searchContactResponse.getAntispamTicket());
-            resultVo.setV3(vo.getV3());
-            resultVo.setV4(vo.getV4());
-            vo.setScene(15);
-            vo.setOpCode(2);
-            vo.setContent(txt);
-            BaseResponse response = verifyUser(id, vo);
+            SearchContactParam searchParam = new SearchContactParam();
+            searchParam.setAccountId(param.getAccountId());
+            searchParam.setPhone(param.getMobile());
+            SearchContactResponse searchContactResponse = searchContact(searchParam);
+            VerifyUserParam verifyParam = new VerifyUserParam();
+            verifyParam.setAccountId(param.getAccountId());
+            verifyParam.setV3(searchContactResponse.getUserNameStr());
+            verifyParam.setV4(searchContactResponse.getAntispamTicket());
+            resultVo.setV3(verifyParam.getV3());
+            resultVo.setV4(verifyParam.getV4());
+            verifyParam.setScene(15);
+            verifyParam.setOpCode(2);
+            verifyParam.setContent(param.getTxt());
+            BaseResponse response = verifyUser(verifyParam);
             if(response.getRet() != 0){
                 log.error("添加失败,非系统错误!:{}", JSON.toJSONString(response.getErrMsg()));
             }
@@ -104,7 +108,7 @@ public class FriendServiceImpl implements FriendService {
             resultVo.setSuccess(true);
             return resultVo;
         }catch (Exception e){
-            log.error("CLIENT-ID:{}添加好友失败:{}-手机号:{}", clientId, id, mobile, e);
+            log.error("CLIENT-ID:{}添加好友失败:{}-手机号:{}", param.getClientId(), param.getAccountId(), param.getMobile(), e);
             return  resultVo;
         }
     }

+ 20 - 14
fs-service/src/main/java/com/fs/wxcid/service/impl/LoginServiceImpl.java

@@ -4,7 +4,13 @@ import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.CustomException;
 import com.fs.wxcid.ServiceUtils;
 import com.fs.wxcid.dto.common.ApiResponseCommon;
-import com.fs.wxcid.dto.login.*;
+import com.fs.wxcid.dto.login.AccountIdParam;
+import com.fs.wxcid.dto.login.GetLoginQrCodeParam;
+import com.fs.wxcid.dto.login.LoginQrCodeResponseData;
+import com.fs.wxcid.dto.login.LoginStatusData;
+import com.fs.wxcid.dto.login.LoginStatusResponseData;
+import com.fs.wxcid.dto.login.QrCodeRequest;
+import com.fs.wxcid.dto.login.RequestBaseVo;
 import com.fs.wxcid.service.AdminLicenseService;
 import com.fs.wxcid.service.LoginService;
 import com.fs.wxwork.utils.WxWorkHttpUtil;
@@ -26,19 +32,19 @@ public class LoginServiceImpl implements LoginService {
     private ServiceUtils serviceUtils;
     private static final String BASE_URL = "/login/";
 
-    public String getLoginQrCodeNewDirect(Long accountId, String ipadOrMac) {
+    public String getLoginQrCodeNewDirect(GetLoginQrCodeParam param) {
         QrCodeRequest request = new QrCodeRequest();
         request.setCheck(false);
-        request.setIpadOrmac(ipadOrMac);
-        request.setProxy(serviceUtils.getProxy(accountId));
-        ApiResponseCommon<LoginQrCodeResponseData> response = serviceUtils.sendPost(BASE_URL + "GetLoginQrCodeNewDirect", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<LoginQrCodeResponseData>>() {});
+        request.setIpadOrmac(param.getIpadOrMac());
+        request.setProxy(serviceUtils.getProxy(param.getAccountId()));
+        ApiResponseCommon<LoginQrCodeResponseData> response = serviceUtils.sendPost(BASE_URL + "GetLoginQrCodeNewDirect", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<LoginQrCodeResponseData>>() {});
         //安全访问 data
         log.info("二维码照片url: {}", response.getData().getQrCodeUrl());
         return response.getData().getQrCodeUrl();
     }
     @Override
-    public LoginStatusResponseData checkLoginStatus(Long accountId) {
-        ApiResponseCommon<LoginStatusResponseData> response = serviceUtils.sendGet(BASE_URL + "CheckLoginStatus", RequestBaseVo.builder().accountId(accountId).build(), new TypeReference<ApiResponseCommon<LoginStatusResponseData>>() {});
+    public LoginStatusResponseData checkLoginStatus(AccountIdParam param) {
+        ApiResponseCommon<LoginStatusResponseData> response = serviceUtils.sendGet(BASE_URL + "CheckLoginStatus", RequestBaseVo.builder().accountId(param.getAccountId()).build(), new TypeReference<ApiResponseCommon<LoginStatusResponseData>>() {});
         // 只认 text == "账号已登录"
         if ("账号已登录".equals(response.getText()) || "登录成功".equals(response.getText())) {
             if (response.getData() == null) {
@@ -51,17 +57,17 @@ public class LoginServiceImpl implements LoginService {
         }
     }
 
-    public LoginStatusData getLoginStatus(Long accountId) {
+    public LoginStatusData getLoginStatus(AccountIdParam param) {
         try {
-            ApiResponseCommon<LoginStatusData> response = serviceUtils.sendGet(BASE_URL + "GetLoginStatus", RequestBaseVo.builder().accountId(accountId).data(null).build(), new TypeReference<ApiResponseCommon<LoginStatusData>>() {});
+            ApiResponseCommon<LoginStatusData> response = serviceUtils.sendGet(BASE_URL + "GetLoginStatus", RequestBaseVo.builder().accountId(param.getAccountId()).data(null).build(), new TypeReference<ApiResponseCommon<LoginStatusData>>() {});
             return response.getData();
         }catch (Exception e){
             return new LoginStatusData();
         }
     }
 
-    public ApiResponseCommon<Void> logOut(Long accountId) {
-        ApiResponseCommon<Void> response = serviceUtils.sendGet(BASE_URL + "LogOut", RequestBaseVo.builder().accountId(accountId).build(), new TypeReference<ApiResponseCommon<Void>>() {});
+    public ApiResponseCommon<Void> logOut(AccountIdParam param) {
+        ApiResponseCommon<Void> response = serviceUtils.sendGet(BASE_URL + "LogOut", RequestBaseVo.builder().accountId(param.getAccountId()).build(), new TypeReference<ApiResponseCommon<Void>>() {});
         String text = response.getText();
         int code = response.getCode();
         //真正的成功退出
@@ -80,12 +86,12 @@ public class LoginServiceImpl implements LoginService {
     }
 
     @Override
-    public ApiResponseCommon<Void> wakeUpLogin(Long accountId) {
+    public ApiResponseCommon<Void> wakeUpLogin(AccountIdParam param) {
         QrCodeRequest request = new QrCodeRequest();
         request.setCheck(false);
         request.setIpadOrmac("ipad");
-        request.setProxy(serviceUtils.getProxy(accountId));
-        ApiResponseCommon<Void> response = serviceUtils.sendPost(BASE_URL + "WakeUpLogin", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<Void>>() {});
+        request.setProxy(serviceUtils.getProxy(param.getAccountId()));
+        ApiResponseCommon<Void> response = serviceUtils.sendPost(BASE_URL + "WakeUpLogin", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<Void>>() {});
         String text = response.getText();
         int code = response.getCode();
         if (code == 200) {

+ 4 - 3
fs-service/src/main/java/com/fs/wxcid/service/impl/MessageCallbackServiceImpl.java

@@ -3,10 +3,11 @@ package com.fs.wxcid.service.impl;
 
 import com.fs.common.exception.CustomException;
 import com.fs.wxcid.ServiceUtils;
+import com.fs.wxcid.dto.callback.CallbackConfigRequest;
 import com.fs.wxcid.dto.callback.CallbackConfigResponse;
 import com.fs.wxcid.dto.callback.ReturnMessage;
 import com.fs.wxcid.dto.common.ApiResponse;
-import com.fs.wxcid.dto.callback.CallbackConfigRequest;
+import com.fs.wxcid.dto.login.AccountIdParam;
 import com.fs.wxcid.dto.common.ApiResponseCommon;
 import com.fs.wxcid.dto.login.LoginQrCodeResponseData;
 import com.fs.wxcid.dto.login.RequestBaseVo;
@@ -96,11 +97,11 @@ public class MessageCallbackServiceImpl implements MessageCallbackService {
     }
 
     @Override
-    public ApiResponseCommon<Void> setCallback(Long accountId) {
+    public ApiResponseCommon<Void> setCallback(AccountIdParam param) {
         CallbackConfigRequest request = new CallbackConfigRequest();
         request.setCallbackURL(wxIpadUrl);
         request.setEnabled(true);
-        ApiResponseCommon<Void> response = serviceUtils.sendPost(BASE_URL + "SetCallback", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<Void>>() {});
+        ApiResponseCommon<Void> response = serviceUtils.sendPost(BASE_URL + "SetCallback", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<Void>>() {});
         String text = response.getText();
         int code = response.getCode();
         if (code == 200) {

+ 12 - 12
fs-service/src/main/java/com/fs/wxcid/service/impl/MessageServiceImpl.java

@@ -8,6 +8,8 @@ import com.fs.wxcid.dto.common.ApiResponseCommon;
 import com.fs.wxcid.dto.login.RequestBaseVo;
 import com.fs.wxcid.dto.message.MsgItem;
 import com.fs.wxcid.dto.message.RevokeMsgRequest;
+import com.fs.wxcid.dto.message.SendImageMessageParam;
+import com.fs.wxcid.dto.message.SendTextMessageParam;
 import com.fs.wxcid.dto.message.RevokeMsgResult;
 import com.fs.wxcid.dto.message.SendImageMessageResult;
 import com.fs.wxcid.dto.message.SendMessageResult;
@@ -27,13 +29,14 @@ public class MessageServiceImpl implements MessageService {
     private ServiceUtils serviceUtils;
 
     @Override
-    public List<SendMessageResult> sendTextMessage(Long accountId, String txt) {
+    public List<SendMessageResult> sendTextMessage(SendTextMessageParam param) {
         SendTextMessageRequest request = new SendTextMessageRequest();
         List<MsgItem> list = new ArrayList<>();
         MsgItem msgItem = new MsgItem();
-        msgItem.setTextContent(txt);
+        msgItem.setTextContent(param.getTxt());
+        list.add(msgItem);
         request.setMsgItem(list);
-        ApiResponseCommon<List<SendMessageResult>> response = serviceUtils.sendPost(BASE_URL + "SendTextMessage", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<List<SendMessageResult>>>() {});
+        ApiResponseCommon<List<SendMessageResult>> response = serviceUtils.sendPost(BASE_URL + "SendTextMessage", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<List<SendMessageResult>>>() {});
         // 第二层:检查每条消息是否真正发送成功
         List<SendMessageResult> results = response.getData();
         List<String> failedRecipients = new ArrayList<>();
@@ -50,21 +53,21 @@ public class MessageServiceImpl implements MessageService {
     }
 
     @Override
-    public List<SendImageMessageResult> sendImageMessage(Long accountId, String imgUrl, String toUser) {
+    public List<SendImageMessageResult> sendImageMessage(SendImageMessageParam param) {
         SendTextMessageRequest request = new SendTextMessageRequest();
         List<MsgItem> list = new ArrayList<>();
         MsgItem msgItem = new MsgItem();
         try {
             msgItem.setMsgType(0);
-            msgItem.setImageContent(ImageToBase64Util.convertImageUrlToBase64(imgUrl));
-            msgItem.setToUserName(toUser);
+            msgItem.setImageContent(ImageToBase64Util.convertImageUrlToBase64(param.getImgUrl()));
+            msgItem.setToUserName(param.getToUser());
         }catch (Exception e){
             log.error("发送消息时,图片转换base64错误", e);
             throw new CustomException("图片消息发送失败");
         }
         list.add(msgItem);
         request.setMsgItem(list);
-        ApiResponseCommon<List<SendImageMessageResult>> response = serviceUtils.sendPost(BASE_URL + "SendImageNewMessage", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<List<SendImageMessageResult>>>() {});
+        ApiResponseCommon<List<SendImageMessageResult>> response = serviceUtils.sendPost(BASE_URL + "SendImageNewMessage", RequestBaseVo.builder().accountId(param.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<List<SendImageMessageResult>>>() {});
         // 第二层:检查每条消息是否真正发送成功(根据 resp.baseResponse.ret == 0 判断)
         List<SendImageMessageResult> results = response.getData();
         List<String> failedRecipients = new ArrayList<>();
@@ -81,11 +84,8 @@ public class MessageServiceImpl implements MessageService {
     }
 
     @Override
-    public RevokeMsgResult revokeMessage(Long accountId, Long msgId, String toUserName) {
-        RevokeMsgRequest request = new RevokeMsgRequest();
-        request.setMsgId(msgId);
-        request.setToUserName(toUserName);
-        ApiResponseCommon<RevokeMsgResult> response = serviceUtils.sendPost(BASE_URL + "RevokeMsgNew", RequestBaseVo.builder().accountId(accountId).data(request).build(), new TypeReference<ApiResponseCommon<RevokeMsgResult>>() {});
+    public RevokeMsgResult revokeMessage(RevokeMsgRequest request) {
+        ApiResponseCommon<RevokeMsgResult> response = serviceUtils.sendPost(BASE_URL + "RevokeMsgNew", RequestBaseVo.builder().accountId(request.getAccountId()).data(request).build(), new TypeReference<ApiResponseCommon<RevokeMsgResult>>() {});
         RevokeMsgResult result = response.getData();
         if (result != null && !result.isSuccess()) {
             String errorMsg = result.getSysWording() != null ? result.getSysWording() : "消息撤回失败";

+ 3 - 5
fs-service/src/main/java/com/fs/wxcid/service/impl/UserServiceImpl.java

@@ -4,9 +4,7 @@ import com.alibaba.fastjson.TypeReference;
 import com.fs.common.exception.CustomException;
 import com.fs.wxcid.ServiceUtils;
 import com.fs.wxcid.dto.common.ApiResponseCommon;
-import com.fs.wxcid.dto.login.LoginQrCodeResponseData;
-import com.fs.wxcid.dto.login.LoginStatusData;
-import com.fs.wxcid.dto.login.QrCodeRequest;
+import com.fs.wxcid.dto.login.AccountIdParam;
 import com.fs.wxcid.dto.login.RequestBaseVo;
 import com.fs.wxcid.dto.user.UserProfileData;
 import com.fs.wxcid.service.UserService;
@@ -23,9 +21,9 @@ public class UserServiceImpl implements UserService {
     @Autowired
     private ServiceUtils serviceUtils;
     @Override
-    public UserProfileData getProfile(Long accountId) {
+    public UserProfileData getProfile(AccountIdParam param) {
         try {
-            ApiResponseCommon<UserProfileData> response = serviceUtils.sendGet(BASE_URL + "GetProfile", RequestBaseVo.builder().accountId(accountId).data(null).build(), new TypeReference<ApiResponseCommon<UserProfileData>>() {});
+            ApiResponseCommon<UserProfileData> response = serviceUtils.sendGet(BASE_URL + "GetProfile", RequestBaseVo.builder().accountId(param.getAccountId()).data(null).build(), new TypeReference<ApiResponseCommon<UserProfileData>>() {});
             return response.getData();
         }catch (Exception e){
             return new UserProfileData();

+ 6 - 1
fs-wx-task/src/main/java/com/fs/app/controller/CommonController.java

@@ -5,6 +5,7 @@ import com.fs.app.service.WxTaskService;
 import com.fs.common.core.domain.R;
 import com.fs.company.service.ICompanyWxAccountService;
 import com.fs.company.service.impl.CompanyWxServiceImpl;
+import com.fs.wxcid.dto.message.SendImageMessageParam;
 import com.fs.wxcid.service.MessageService;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
@@ -81,7 +82,11 @@ public class CommonController {
 
     @GetMapping("sendImg")
     public void mockAddWxSuccess(Long accountId, String imgUrl, String toUser) {
-        messageService.sendImageMessage(accountId, imgUrl, toUser);
+        SendImageMessageParam param = new SendImageMessageParam();
+        param.setAccountId(accountId);
+        param.setImgUrl(imgUrl);
+        param.setToUser(toUser);
+        messageService.sendImageMessage(param);
     }
 
 

+ 13 - 2
fs-wx-task/src/main/java/com/fs/app/service/WxTaskService.java

@@ -30,6 +30,7 @@ import com.fs.course.config.WxConfig;
 import com.fs.crm.domain.CrmCustomer;
 import com.fs.crm.service.ICrmCustomerService;
 import com.fs.system.service.ISysConfigService;
+import com.fs.wxcid.dto.friend.AddContactParam;
 import com.fs.wxcid.service.FriendService;
 import com.fs.wxcid.vo.AddContactVo;
 import lombok.AllArgsConstructor;
@@ -142,7 +143,12 @@ public class WxTaskService {
                     CompanyWxDialog dialog = companyWxDialogService.getById(client.getDialogId());
                     CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(client.getCustomerId());
                     String newTxt = objectPlaceholderResolver.resolvePlaceholders(crmCustomer, dialog.getTemplateDetails());
-                    AddContactVo vo = friendService.addContact(e.getId(), crmCustomer.getMobile(), newTxt, client.getId());
+                    AddContactParam addParam = new AddContactParam();
+                    addParam.setAccountId(e.getId());
+                    addParam.setMobile(crmCustomer.getMobile());
+                    addParam.setTxt(newTxt);
+                    addParam.setClientId(client.getId());
+                    AddContactVo vo = friendService.addContact(addParam);
                     JSONObject runParam = new JSONObject();
                     runParam.put("id", e.getId());
                     runParam.put("mobile", crmCustomer.getMobile());
@@ -259,7 +265,12 @@ public class WxTaskService {
                     CompanyWxDialog dialog = companyWxDialogService.getById(client.getDialogId());
                     CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(client.getCustomerId());
                     String newTxt = objectPlaceholderResolver.resolvePlaceholders(crmCustomer, dialog.getTemplateDetails());
-                    AddContactVo vo = friendService.addContact(e.getId(), crmCustomer.getMobile(), newTxt, client.getId());
+                    AddContactParam addParam = new AddContactParam();
+                    addParam.setAccountId(e.getId());
+                    addParam.setMobile(crmCustomer.getMobile());
+                    addParam.setTxt(newTxt);
+                    addParam.setClientId(client.getId());
+                    AddContactVo vo = friendService.addContact(addParam);
                     JSONObject runParam = new JSONObject();
                     runParam.put("id", e.getId());
                     runParam.put("mobile", crmCustomer.getMobile());