From f89bbbc55161c8310a2f60bc1bdc7ed7a11d5b18 Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Fri, 19 Apr 2024 16:19:15 +0800 Subject: [PATCH] Update CallService.java --- .../com/kimgo/wepush/service/CallService.java | 68 ++++++++++++++++--- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/kimgo/wepush/service/CallService.java b/src/main/java/com/kimgo/wepush/service/CallService.java index bf4ed45..20f797e 100644 --- a/src/main/java/com/kimgo/wepush/service/CallService.java +++ b/src/main/java/com/kimgo/wepush/service/CallService.java @@ -30,37 +30,67 @@ public class CallService { this.tokenService = tokenService; } - public ServerResponseEntity getPhoneNumber(String accessToken, CallInfo callInfo){ + /** + * 根据提供的accessToken和呼叫信息获取电话号码。 + * 首先验证提供的accessToken的有效性,然后通过调用信息(电话号码和呼叫时间)向企业微信发送消息, + * 并根据企业微信的响应返回成功或失败的服务器响应。 + * + * @param accessToken 用户提供的accessToken用于身份验证。 + * @param callInfo 呼叫信息,包含电话号码和呼叫时间。 + * @return 返回一个服务器响应实体,如果成功则包含消息ID,如果失败则包含错误信息。 + */ + public ServerResponseEntity getPhoneNumber(String accessToken, CallInfo callInfo) { + // 通过token服务获取正确的accessToken String correctAccessToken = tokenService.getApiAccessToken(); - logger.info("accessToken: {} correctAccessToken: {}",accessToken,correctAccessToken); - if (!correctAccessToken.equals(accessToken)){ + logger.info("accessToken: {} correctAccessToken: {}", accessToken, correctAccessToken); + // 验证提供的accessToken是否有效 + if (!correctAccessToken.equals(accessToken)) { return ServerResponseEntity.fail("Invalid accessToken"); } + // 从呼叫信息中获取电话号码和呼叫时间 String phoneNumber = callInfo.getPhoneNumber(); String callTime = callInfo.getCallTime(); + // 获取企业微信的访问令牌 String qyAccessToken = tokenService.getAccessToken(); - QyWeChatSendMessageApiResponse qyWeChatSendMessageApiResponse = requestWithOkhttp(qyAccessToken,phoneNumber,callTime); + // 使用企业微信的accessToken、电话号码和呼叫时间发送消息,并获取响应 + QyWeChatSendMessageApiResponse qyWeChatSendMessageApiResponse = requestWithOkhttp(qyAccessToken, phoneNumber, callTime); + // 检查发送消息的响应代码 int code = qyWeChatSendMessageApiResponse.getErrcode(); - if (code == 0){ + if (code == 0) { + // 如果消息发送成功,构建并返回成功的服务器响应 SendMessageResonse sendMessageResonse = new SendMessageResonse(); sendMessageResonse.setMsgid(qyWeChatSendMessageApiResponse.getMsgid()); return ServerResponseEntity.success(sendMessageResonse); } else { + // 如果消息发送失败,返回失败的服务器响应 return ServerResponseEntity.fail("request qyWeChat error,please check server error log."); } } + + /** + * 设置文本卡片消息的内容。 + * + * @param phoneNumber 来电电话号码 + * @param callTime 来电时间 + * @return TextCardMessage 文本卡片消息对象,包含了设置好的内容 + */ public TextCardMessage setTextCardMessage(String phoneNumber, String callTime) { TextCardMessage textCardMessage = new TextCardMessage(); + // 从api设置中获取用户信息,并设置到textCardMessage中 textCardMessage.setTouser(apiSettingService.getApiSetting().getTouser()); textCardMessage.setMsgtype(apiSettingService.getApiSetting().getMsgtype()); textCardMessage.setAgentid(apiSettingService.getApiSetting().getAgentid()); textCardMessage.setEnable_duplicate_check(apiSettingService.getApiSetting().getEnableDuplicateCheck()); textCardMessage.setDuplicate_check_interval(apiSettingService.getApiSetting().getDuplicateCheckInterval()); + + // 创建TextCard对象,并设置其内容 TextCardMessage.TextCard textCard = new TextCardMessage.TextCard(); textCard.setTitle("新来电通知"); + // 设置描述信息,包含来电号码和来电时间 textCard.setDescription("