提交 ce513b52 authored 作者: douxy's avatar douxy

修改同步价格时单位转换关系异常的消息推送由单点发送转换为群机器人发送,便于查看异常

上级 957fd5e5
......@@ -24,9 +24,6 @@ import com.lark.oapi.service.corehr.v1.model.SearchOffboardingReq;
import com.lark.oapi.service.corehr.v1.model.SearchOffboardingReqBody;
import com.lark.oapi.service.corehr.v1.model.SearchOffboardingResp;
import com.lark.oapi.service.corehr.v2.model.*;
import com.lark.oapi.service.im.v1.model.CreateMessageReq;
import com.lark.oapi.service.im.v1.model.CreateMessageReqBody;
import com.lark.oapi.service.im.v1.model.CreateMessageResp;
import com.sfa.common.core.enums.ECode;
import com.sfa.common.core.exception.ServiceException;
import com.sfa.common.core.exception.auth.NotLoginException;
......@@ -37,7 +34,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -72,15 +68,14 @@ public class FeiShuUtil {
private String lbxyRedirectUri;
/**
* 推送异常信息给指定用户
* 飞书群机器人推送,此机器人为勤策消息通知机器人
*/
@Value("${feishu.message.user_open_id}")
private String receiveId;
public static String qinceWebhook;
/**
* 飞书群机器人推送,此机器人为勤策消息通知机器人
* 飞书群机器人推送,此机器人为syncprice消息通知机器人
*/
public static String qinceWebhook;
public static String syncpriceWebhook;
/*链路中心*/
public static final String APP_LUZX = "luzx";
/*卤币学院*/
......@@ -96,8 +91,6 @@ public class FeiShuUtil {
private static final String VALUES = "/values";
private static final String STYLE = "/style";
private static final String RECEIVE_ID_TYPE = "open_id";
/**
* 根据用户的登录临时code获取useraccessToken
......@@ -576,83 +569,10 @@ public class FeiShuUtil {
return formValueMap;
}
/**
* 飞书机器人推送单聊消息给指定工号的用户
* @param message 推送的消息内容
* @return 是否推送成功
*/
public boolean sendMessageToUserByEmployeeId(String message) {
Client client = getClientLUZX();
try {
// 构建消息发送请求(SDK封装的请求对象)
CreateMessageReq req = CreateMessageReq.newBuilder()
// 核心:指定ID类型(对应open_id/user_id等)
.receiveIdType(RECEIVE_ID_TYPE)
// 消息体配置
.createMessageReqBody(CreateMessageReqBody.newBuilder()
// 接收者ID(如open_id)
.receiveId(receiveId)
// 消息类型:文本
.msgType("text")
// 消息内容:需封装为JSON字符串(SDK要求)
.content("{\"text\":\"" + message.replace("\"", "\\\"") + "\"}")
.build())
.build();
// 4. 调用SDK的消息发送接口(无需手动处理token,SDK自动维护)
CreateMessageResp resp = client.im().v1().message().create(req);
// 5. 结果校验
if (!resp.success()) {
// 失败时打印详细错误信息
log.error("SDK发消息失败:code={}, msg={}, reqId={}, 错误详情={}",
resp.getCode(), resp.getMsg(), resp.getRequestId(),
new String(resp.getRawResponse().getBody(), UTF_8));
return false;
}
// 6. 成功返回,可获取消息ID
log.info("SDK发消息成功:receiveId={}, 消息ID={}", receiveId, resp.getData().getMessageId());
return true;
} catch (Exception e) {
log.error("SDK发消息异常:receiveIdType={}, receiveId={}", RECEIVE_ID_TYPE, receiveId, e);
return false;
@Value("${feishu.group_robot.syncprice_webhook}")
public void setSyncpriceWebhook(String syncpriceWebhook) {
FeiShuUtil.syncpriceWebhook = syncpriceWebhook;
}
}
/**
* 获取luzx应用的tenant_access_token
* 链路中心应用专用,用于审批接口调用
*/
public String getLuzxTenantToken() {
try {
Map<String, Object> bodyMap = new HashMap<>();
bodyMap.put("app_id", appId);
bodyMap.put("app_secret", appSecret);
String bodyJson = JSONObject.toJSONString(bodyMap);
// 调用飞书tenant_token获取接口
String result = HttpUtil.createPost(TENANT_ACCESS_TOKEN_URL)
.contentType(CONTENT_TYPE)
.body(bodyJson)
.execute().body();
JSONObject resultJson = JSONObject.parseObject(result);
int code = resultJson.getInteger("code");
if (code != 0) {
throw new RuntimeException("获取luzx应用tenant_token失败:" + resultJson.getString("msg"));
}
String luzxToken = resultJson.getString("tenant_access_token");
log.info("成功获取luzx应用tenant_token:{}(脱敏后:{})",
luzxToken, luzxToken.substring(0, 10) + "****" + luzxToken.substring(luzxToken.length()-10));
return luzxToken;
} catch (Exception e) {
log.error("获取luzx应用tenant_token异常", e);
throw new RuntimeException("获取luzx token失败,无法调用审批接口");
}
}
@Value("${feishu.group_robot.qince_webhook}")
public void setQinceWebhook(String qinceWebhook) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论