WeComThirdPartyApiClient.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. package com.tzld.piaoquan.api.component;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.tzld.piaoquan.api.model.param.wecom.thirdpart.*;
  4. import lombok.extern.slf4j.Slf4j;
  5. import okhttp3.*;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.stereotype.Component;
  8. import java.io.IOException;
  9. @Slf4j
  10. @Component
  11. public class WeComThirdPartyApiClient {
  12. private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
  13. private final OkHttpClient client = new OkHttpClient();
  14. @Value("${wecom.thirdpart.baseUrl:http://47.96.102.58:8083}")
  15. private String baseUrl;
  16. /**
  17. * 初始化
  18. *
  19. * @param request 请求体
  20. * @return 响应结果
  21. */
  22. public String init(InitRequest request) {
  23. return postRequest("/wxwork/init", request);
  24. }
  25. /**
  26. * 设置回调地址
  27. *
  28. * @param request 请求体
  29. * @return 响应结果
  30. */
  31. public String setCallbackUrl(SetCallbackUrlRequest request) {
  32. return postRequest("/wxwork/SetCallbackUrl", request);
  33. }
  34. /**
  35. * 获取登录二维码
  36. *
  37. * @param request 请求体
  38. * @return 响应结果
  39. */
  40. public String getQrCode(UuidRequest request) {
  41. return postRequest("/wxwork/getQrCode", request);
  42. }
  43. /**
  44. * 设置验证码
  45. *
  46. * @param request 请求体
  47. * @return 响应结果
  48. */
  49. public String checkCode(CheckCodeRequest request) {
  50. return postRequest("/wxwork/CheckCode", request);
  51. }
  52. /**
  53. * 获取二次验证二维码接口
  54. *
  55. * @param request 请求体
  56. * @return 响应结果
  57. */
  58. public String secondaryValidation(UuidRequest request) {
  59. return postRequest("/wxwork/SecondaryValidation", request);
  60. }
  61. /**
  62. * 获取当前登录详情
  63. *
  64. * @param request 请求体
  65. * @return 响应结果
  66. */
  67. public String getRunClientByUuid(UuidRequest request) {
  68. return postRequest("/wxwork/GetRunClientByUuid", request);
  69. }
  70. /**
  71. * 获取内部联系人列表
  72. *
  73. * @param request 请求体
  74. * @return 响应结果
  75. */
  76. public String getInnerContacts(GetInnerContactsRequest request) {
  77. return postRequest("/wxwork/GetInnerContacts", request);
  78. }
  79. /**
  80. * 获取外部联系人列表
  81. *
  82. * @param request 请求体
  83. * @return 响应结果
  84. */
  85. public String getExternalContacts(GetExternalContactsRequest request) {
  86. return postRequest("/wxwork/GetExternalContacts", request);
  87. }
  88. /**
  89. * 自动登录
  90. *
  91. * @param request 请求体
  92. * @return 响应结果
  93. */
  94. public String automaticLogin(UuidRequest request) {
  95. return postRequest("/wxwork/automaticLogin", request);
  96. }
  97. /**
  98. * 创建群
  99. *
  100. * @param request 请求体
  101. * @return 响应结果
  102. */
  103. public String createRoomWx(CreateRoomWxRequest request) {
  104. return postRequest("/wxwork/CreateRoomWx", request);
  105. }
  106. /**
  107. * 添加群管理员
  108. *
  109. * @param request 请求体
  110. * @return 响应结果
  111. */
  112. public String addRoomAdmins(AddRoomAdminsRequest request) {
  113. return postRequest("/wxwork/AddRoomAdmins", request);
  114. }
  115. /**
  116. * 群邀请确认
  117. *
  118. * @param request 请求体
  119. * @return 响应结果
  120. */
  121. public String setChatroomInvite(SetChatroomInviteRequest request) {
  122. return postRequest("/wxwork/SetChatroomInvite", request);
  123. }
  124. /**
  125. * 修改群名
  126. *
  127. * @param request 请求体
  128. * @return 响应结果
  129. */
  130. public String updateRoomName(UpdateRoomNameRequest request) {
  131. return postRequest("/wxwork/UpdateRoomName", request);
  132. }
  133. /**
  134. * 禁止群内添加和禁止修改群名
  135. *
  136. * @param request 请求体
  137. * @return 响应结果
  138. */
  139. public String setRoomManagement(SetRoomManagementRequest request) {
  140. return postRequest("/wxwork/setRoomManagement", request);
  141. }
  142. /**
  143. * 禁止修改群名
  144. *
  145. * @param request 请求体
  146. * @return 响应结果
  147. */
  148. public String disableRenameChatroom(DisableRenameChatroomRequest request) {
  149. return postRequest("/wxwork/DisableRenameChatroom", request);
  150. }
  151. /**
  152. * 获取群防骚扰规则列表
  153. *
  154. * @param request 请求体
  155. * @return 响应结果
  156. */
  157. public String queryCRMAntiSpamRule(QueryCRMAntiSpamRuleRequest request) {
  158. return postRequest("/wxwork/queryCRMAntiSpamRule", request);
  159. }
  160. /**
  161. * 设置或者移除群防骚扰规则
  162. *
  163. * @param request 请求体
  164. * @return 响应结果
  165. */
  166. public String setRoomAnti(SetRoomAntiRequest request) {
  167. return postRequest("/wxwork/setRoomAnti", request);
  168. }
  169. /**
  170. * 直接邀请进群
  171. *
  172. * @param request 请求体
  173. * @return 响应结果
  174. */
  175. public String invitationToRoom(InvitationToRoomRequest request) {
  176. return postRequest("/wxwork/InvitationToRoom", request);
  177. }
  178. /**
  179. * 获取客户群列表
  180. * @param request
  181. * @return
  182. */
  183. public String getChatroomMembers(GetChatroomMembersRequest request) {
  184. return postRequest("/wxwork/GetChatroomMembers", request);
  185. }
  186. /**
  187. * 获取群成员列表
  188. * @param request
  189. * @return
  190. */
  191. public String getRoomUserList(GetRoomUserListRequest request) {
  192. return postRequest("/wxwork/GetRoomUserList", request);
  193. }
  194. /**
  195. * 转让群主
  196. *
  197. * @param request 请求体
  198. * @return 响应结果
  199. */
  200. public String transferChatroomOwner(TransferChatroomOwnerRequest request) {
  201. return postRequest("/wxwork/TransferChatroomOwner", request);
  202. }
  203. /**
  204. * 发送文本消息
  205. *
  206. * @param request 请求体
  207. * {
  208. * "uuid":"1753cdff-0501-42fe-bb5a-2a4b9629f7fb",
  209. * "kf_id":0, //用来客服消息回复,正常发送忽略这个字段。
  210. * "send_userid":7881302555913738,
  211. * "isRoom":false,
  212. * "content":"ddddddd"
  213. * }
  214. * @return 响应结果
  215. */
  216. public String sendTextMsg(SendTextMsgRequest request) {
  217. return postRequest("/wxwork/SendTextMsg", request);
  218. }
  219. /**
  220. * 发送小程序消息
  221. *
  222. * @param request 请求体
  223. * {
  224. * "uuid":"543ed7f3-6ec1-4b1a-9e47-db8339a140f7",
  225. * "send_userid":7881302555913738,
  226. * "desc":"内容",
  227. * "appName":"小程序名称头像右边的",
  228. * "title":"小程序标题头像下边的",
  229. * "weappIconUrl":"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",//小程序头像
  230. * "pagepath":"pages/train/index/index.html",//小程序跳转地址
  231. * "username":"gh_c4a2a98a7366@app", //账号原始id
  232. * "appid":"wx45dff5234240ad90",//小程序appid
  233. * "cdnkey":"30680201020461305f750bed0b3c7d089fa7d55720d6cf0201010201000400", //小程序封面图 cdn上传获取
  234. * "md5":"d9c8750bed0b3c7d089fa7d55720d6cf",//封面图md5
  235. * "aeskey":"34323235376238666264636630663166",//封面图 返回的aeskey
  236. * "fileSize":15444,//封面图大小
  237. * "isRoom":false
  238. * }
  239. * @return 响应结果
  240. */
  241. public String sendAppMsg(SendAppMsgRequest request) {
  242. return postRequest("/wxwork/SendAppMsg", request);
  243. }
  244. /**
  245. * CDN上传网络图片
  246. * @param request
  247. * @return
  248. */
  249. public String cdnUploadImgLink(CdnUploadImgLinkRequest request) {
  250. return postRequest("/wxwork/CdnUploadImgLink", request);
  251. }
  252. /**
  253. * 退出登录
  254. *
  255. * @param request 请求体
  256. * @return 响应结果
  257. */
  258. public String loginOut(UuidRequest request) {
  259. return postRequest("/wxwork/LoginOut", request);
  260. }
  261. private String postRequest(String path, Object requestBody) {
  262. String url = baseUrl + path;
  263. String json = JSONObject.toJSONString(requestBody);
  264. RequestBody body = RequestBody.create(JSON, json);
  265. Request request = new Request.Builder()
  266. .url(url)
  267. .post(body)
  268. .build();
  269. try (Response response = client.newCall(request).execute()) {
  270. if (response.isSuccessful() && response.body() != null) {
  271. String responseStr = response.body().string();
  272. log.info("企微三方平台 请求成功, url: {}, body: {}, response: {}", url, json, responseStr);
  273. return responseStr;
  274. } else {
  275. log.error("企微三方平台 请求失败, url: {}, body: {}, response: {}", url, json, response);
  276. throw new IOException("Unexpected code " + response);
  277. }
  278. } catch (IOException e) {
  279. log.error("请求失败", e);
  280. }
  281. return null;
  282. }
  283. }