perf:fwd钉钉群消息发送

This commit is contained in:
Zhujx
2025-08-07 10:36:20 +08:00
parent 443267a51b
commit df1e58eb9d
10 changed files with 87 additions and 23 deletions

View File

@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>
<artifactId>xservice-message-starter</artifactId> <artifactId>xservice-message-starter</artifactId>
<version>1.1</version> <version>1.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>

View File

@@ -11,7 +11,7 @@
</parent> </parent>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>
<version>1.0-SNAPSHOT</version> <version>1.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<artifactId>script</artifactId> <artifactId>script</artifactId>

View File

@@ -5,16 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.basic.utils.PrimaryKeyUtils; import com.xiang.xservice.basic.utils.PrimaryKeyUtils;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam; import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo;
import com.xiang.xservice.fwd.entity.resp.http.perform.*; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.PerformDetail;
import com.xiang.xservice.fwd.entity.resp.http.perform.PerformInfo;
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlan;
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus;
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper; import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper; import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.fwd.service.DingTalkFWDMsgService;
import com.xiang.xservice.fwd.service.IPerformService; import com.xiang.xservice.fwd.service.IPerformService;
import com.xiang.xservice.fwd.service.IPerformServiceHttp; import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import com.xiang.xservice.schedule.core.DynamicTaskScheduler; import com.xiang.xservice.schedule.core.DynamicTaskScheduler;
@@ -58,7 +62,7 @@ public class FwdImportantMsgJob {
private final FwdPerformProjectInfoMapper performProjectInfoMapper; private final FwdPerformProjectInfoMapper performProjectInfoMapper;
private final FwdPerformConfigMapper performConfigMapper; private final FwdPerformConfigMapper performConfigMapper;
private final DynamicTaskScheduler dynamicTaskScheduler; private final DynamicTaskScheduler dynamicTaskScheduler;
private final DingTalkService dingTalkService; private final DingTalkFWDMsgService dingTalkFWDMsgService;
private final FwdUserConfigMapper fwdUserConfigMapper; private final FwdUserConfigMapper fwdUserConfigMapper;
private final FwdAudienceConfigMapper fwdAudienceConfigMapper; private final FwdAudienceConfigMapper fwdAudienceConfigMapper;
private final IPerformService iPerformService; private final IPerformService iPerformService;
@@ -128,7 +132,7 @@ public class FwdImportantMsgJob {
savaTask(data, taskId, params); savaTask(data, taskId, params);
} }
msg.append("请注意进行数据库配置的更改!"); msg.append("请注意进行数据库配置的更改!");
dingTalkService.sendRobotMessage(msg.toString()); dingTalkFWDMsgService.sendFWDMsg(msg.toString());
log.info("【芬玩岛】演唱会预售定时任务结束time:{}", System.currentTimeMillis()); log.info("【芬玩岛】演唱会预售定时任务结束time:{}", System.currentTimeMillis());
} }
@@ -225,12 +229,7 @@ public class FwdImportantMsgJob {
} }
} }
}); });
try { dingTalkFWDMsgService.sendFWDMsg(msg.toString());
dingTalkService.sendRobotMessage(msg.toString());
} catch (Exception e) {
log.error("信息发送异常, 信息:{}", msg, e);
}
} }
private void savaTask(FPerformProjectInfo data, long taskId, Map<String, Object> params) { private void savaTask(FPerformProjectInfo data, long taskId, Map<String, Object> params) {

View File

@@ -0,0 +1,35 @@
package com.xiang.xservice.fwd.service;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author: xiang
* @Date: 2025-08-07 10:30
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class DingTalkFWDMsgService {
private final DingTalkService dingTalkService;
private static final String SECRET = "SEC768ed578c0fb31a9aec84b1c1db4f195f5aca203985bbb9d549e23e41c8874d1";
private static final String TOKEN = "4709b708d961846e0aee523c5abc3b67e8fa424ee292501d85efd4e504f15a8b";
private static final String USER_ID = "450841600726084717";
/**
* 发送芬玩岛消息
* @param msg 消息
*/
public void sendFWDMsg(String msg) {
try {
dingTalkService.sendRobotMessage(SECRET, TOKEN, List.of(USER_ID), msg);
} catch (Exception e) {
log.error("信息发送异常, 信息:{}", msg, e);
}
}
}

View File

@@ -2,7 +2,6 @@ package com.xiang.xservice.fwd.service.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.xiang.xservice.basic.config.MyThreadFactory; import com.xiang.xservice.basic.config.MyThreadFactory;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo;
@@ -13,6 +12,7 @@ import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.fwd.service.DingTalkFWDMsgService;
import com.xiang.xservice.fwd.service.IPerformService; import com.xiang.xservice.fwd.service.IPerformService;
import com.xiang.xservice.fwd.service.IPerformServiceHttp; import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import com.xiang.xservice.http.helper.HttpRequestHelper; import com.xiang.xservice.http.helper.HttpRequestHelper;
@@ -45,7 +45,7 @@ public class PerformServiceImpl implements IPerformService {
private final FwdPerformProjectInfoMapper fwdPerformProjectInfoMapper; private final FwdPerformProjectInfoMapper fwdPerformProjectInfoMapper;
private final FwdPerformConfigMapper fwdPerformConfigMapper; private final FwdPerformConfigMapper fwdPerformConfigMapper;
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final DingTalkService dingTalkService; private final DingTalkFWDMsgService dingTalkService;
private final FwdUserConfigMapper fwdUserConfigMapper; private final FwdUserConfigMapper fwdUserConfigMapper;
@Value("${DingTalk.chatId}") @Value("${DingTalk.chatId}")
private String chatId; private String chatId;
@@ -110,7 +110,7 @@ public class PerformServiceImpl implements IPerformService {
if (Objects.nonNull(projectOrder)) { if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder)); log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款"; String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款";
dingTalkService.sendRobotMessage(msg); dingTalkService.sendFWDMsg(msg);
return Boolean.TRUE; return Boolean.TRUE;
} }
} }

View File

@@ -19,6 +19,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@@ -136,6 +137,8 @@ public class FundMsgReportJob {
} }
private static void buildMsg(List<FundList> funds, Map<String, XbFundList> fundMap, StringBuilder msg) { private static void buildMsg(List<FundList> funds, Map<String, XbFundList> fundMap, StringBuilder msg) {
funds = funds.stream().sorted(Comparator.comparing(FundList::getChange).reversed())
.collect(Collectors.toList());
for (FundList fund : funds) { for (FundList fund : funds) {
if (fundMap.containsKey(fund.getCode())) { if (fundMap.containsKey(fund.getCode())) {
XbFundList fundList = fundMap.get(fund.getCode()); XbFundList fundList = fundMap.get(fund.getCode());

View File

@@ -21,3 +21,14 @@ aliyun:
dns: dns:
RR: RR:
- local - local
DingTalk:
# 钉钉消息用户,用逗号隔开
userList: "450841600726084717"
# 钉钉消息群ID需要调用/chat/create api创建群返回
chatId: "chatd16d8daeea33b36b73588c676d508096"
robot:
token: ad21ead99f0fdc63aa00d6732b7b0888c17590f7612c68297edfcb71844d1437
secret: SECc09d8aad6635f1a4cbadb7c0ab365523c46299f138438cd885e445e0f5f4d730
userIds:
- 450841600726084717

View File

@@ -21,4 +21,15 @@ aliyun:
dns: dns:
RR: RR:
- client - client
- file - file
DingTalk:
# 钉钉消息用户,用逗号隔开
userList: "450841600726084717"
# 钉钉消息群ID需要调用/chat/create api创建群返回
chatId: "chatd16d8daeea33b36b73588c676d508096"
robot:
token: 340a9d39a5b0b6a52ba2262f9c27179cf50e3c8cfe6883ca082649d306038f41
secret: SECe10ade3058880b84df5c6f46ab072c11f4ac2a5ef9f134d684705c2a3b004de2
userIds:
- 450841600726084717

View File

@@ -20,4 +20,15 @@ spring:
aliyun: aliyun:
dns: dns:
RR: RR:
- test - test
DingTalk:
# 钉钉消息用户,用逗号隔开
userList: "450841600726084717"
# 钉钉消息群ID需要调用/chat/create api创建群返回
chatId: "chatd16d8daeea33b36b73588c676d508096"
robot:
token: ad21ead99f0fdc63aa00d6732b7b0888c17590f7612c68297edfcb71844d1437
secret: SECc09d8aad6635f1a4cbadb7c0ab365523c46299f138438cd885e445e0f5f4d730
userIds:
- 450841600726084717

View File

@@ -5,12 +5,6 @@ mybatis:
configuration: configuration:
map-underscore-to-camel-case: true map-underscore-to-camel-case: true
DingTalk:
# 钉钉消息用户,用逗号隔开
userList: "450841600726084717"
# 钉钉消息群ID需要调用/chat/create api创建群返回
chatId: "chatd16d8daeea33b36b73588c676d508096"
xiaobei: xiaobei:
unionId: o896o5y8bJZYMh2gdKhDdmUKc0Wk unionId: o896o5y8bJZYMh2gdKhDdmUKc0Wk
codeArr: "010364, 022150, 013224, 008960, 013841, 015528, 012414, 020412, 014662, 016814, 014422, 015596, 007844, codeArr: "010364, 022150, 013224, 008960, 013841, 015528, 012414, 020412, 014662, 016814, 014422, 015596, 007844,