Explorar o código

添加获取CID联系人信息接口

cgp hai 1 mes
pai
achega
0631a1d64a

+ 38 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/AgreeAddRequest.java

@@ -0,0 +1,38 @@
+package com.fs.wxcid.dto.friend;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 同意好友请求 或 验证添加好友 的请求参数
+ * 对应接口:/friend/AgreeAdd 和 /friend/VerifyUser
+ */
+@Data
+public class AgreeAddRequest {
+    /** 通过群来添加好友 需要设置此值为群id */
+    @JsonProperty("ChatRoomUserName")
+    private String ChatRoomUserName;
+
+    /** 操作类型: 1(免验证发送请求) 2(添加好友/发送验证申请) 3(同意好友/通过好友验证) 4(拒绝好友) */
+    @JsonProperty("OpCode")
+    private Integer OpCode;
+
+    /** 添加来源, 同意添加好友时传回调消息xml中的scene值.
+     添加好友时的枚举值如下:
+     1(QQ) 2(邮箱) 3(微信号) 4(QQ好友) 8(来自群聊) 13(通讯录)
+     14(群聊) 15(手机号) 18(附近的人) 25(漂流瓶) 29(摇一摇) 30(二维码) */
+    @JsonProperty("Scene")
+    private Integer Scene;
+
+    /** V3用户名数据(SearchContact请求返回的UserValue) */
+    @JsonProperty("V3")
+    private String V3;
+
+    /** V4校验数据(SearchContact请求返回的AntispamTicket) */
+    @JsonProperty("V4")
+    private String V4;
+
+    /** 添加好友时的(招呼语/验证信息) */
+    @JsonProperty("VerifyContent")
+    private String VerifyContent;
+}

+ 47 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/ContactItem.java

@@ -0,0 +1,47 @@
+package com.fs.wxcid.dto.friend;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fs.wxcid.dto.message.UserNameWrapper;
+import lombok.Data;
+
+/**
+ * 单个联系人详细信息
+ */
+@Data
+public class ContactItem {
+
+    @JSONField(name = "userName")
+    private UserNameWrapper userName;
+
+    @JSONField(name = "nickName")
+    private UserNameWrapper nickName;
+
+    @JSONField(name = "alias")
+    private String alias;
+
+    @JSONField(name = "sex")
+    private int sex;
+
+    @JSONField(name = "province")
+    private String province;
+
+    @JSONField(name = "country")
+    private String country;
+
+    @JSONField(name = "bigHeadImgUrl")
+    private String bigHeadImgUrl;
+
+    @JSONField(name = "smallHeadImgUrl")
+    private String smallHeadImgUrl;
+
+    @JSONField(name = "headImgMd5")
+    private String headImgMd5;
+
+    @JSONField(name = "quanPin")
+    private UserNameWrapper quanPin;
+
+    @JSONField(name = "pyinitial")
+    private UserNameWrapper pyinitial;
+
+    // 可根据需要补充其他字段...
+}

+ 22 - 0
fs-service/src/main/java/com/fs/wxcid/dto/friend/GetContactDetailsResponseData.java

@@ -0,0 +1,22 @@
+package com.fs.wxcid.dto.friend;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * GetContactDetailsList 接口的 data 部分
+ */
+@Data
+public class GetContactDetailsResponseData {
+
+    @JSONField(name = "ret")
+    private String ret; // Base64 或状态标识
+
+    @JSONField(name = "contactCount")
+    private int contactCount;
+
+    @JSONField(name = "contactList")
+    private List<ContactItem> contactList;
+}

+ 12 - 0
fs-service/src/main/java/com/fs/wxcid/service/FriendService.java

@@ -16,6 +16,18 @@ import com.fs.wxcid.dto.friend.*;
  */
 public interface FriendService {
 
+    /**
+     * 批量获取联系人详细信息
+     * <p>
+     * 对应接口:POST /friend/GetContactDetailsList
+     * 可同时查询多个用户或群聊的详细资料。
+     * </p>
+     *
+     * @param authKey    账号唯一标识
+     * @param request 查询参数(支持 UserNames 和 RoomWxIDList)
+     * @return 统一响应结果
+     */
+    ApiResponseCommon<GetContactDetailsResponseData> getContactDetailsList(String authKey, GetContactDetailsListRequest request);
     /**
      * 分页获取全部联系人(包括好友和群聊)
      * <p>

+ 19 - 0
fs-service/src/main/java/com/fs/wxcid/service/impl/FriendServiceImpl.java

@@ -24,6 +24,25 @@ public class FriendServiceImpl implements FriendService {
     /** 微信接口基础 URL */
     private static final String BASE_URL = "http://114.117.215.244:7006";
 
+    @Override
+    public ApiResponseCommon<GetContactDetailsResponseData> getContactDetailsList(
+            String authKey, GetContactDetailsListRequest request) {
+
+        String url = BASE_URL + "/friend/GetContactDetailsList?key=" + authKey;
+        ApiResponseCommon<GetContactDetailsResponseData> response = WxWorkHttpUtil.postWithType(
+                url,
+                request,
+                new TypeReference<ApiResponseCommon<GetContactDetailsResponseData>>() {}
+        );
+
+        //异常处理
+        if (response.getCode() != 200 || response.getData() == null) {
+            String errorMsg = response.getText() != null ? response.getText() : "获取联系人详情失败";
+            throw new CustomException("获取联系人列表失败: " + errorMsg);
+        }
+
+        return response;
+    }
     @Override
     public ApiResponseCommon<ContactListResponse> getContactList(String authKey, GetContactListRequest request) {
         log.info("开始获取联系人列表");