diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/controller/VenueController.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/controller/VenueController.java index 711d795..b74c8aa 100644 --- a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/controller/VenueController.java +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/controller/VenueController.java @@ -1,7 +1,7 @@ package com.xiang.xservice.application.script.jntyzx.controller; -import com.xiang.xservice.application.script.jntyzx.entity.dto.VenueListDTO; -import com.xiang.xservice.application.script.jntyzx.service.JntyzxService; +import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList; +import com.xiang.xservice.application.script.jntyzx.service.IVenueServiceHttp; import com.xiang.xservice.basic.common.resp.Result; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; @@ -17,11 +17,15 @@ import java.util.List; @RequiredArgsConstructor public class VenueController { - private final JntyzxService jntyzxService; + private final IVenueServiceHttp venueServiceHttp; + + private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk"; @PostMapping("/queryVenue") - public Result queryVenue() { - List venueListDTOS = jntyzxService.queryAvailable(); + public Result queryVenue() { + List venueListDTOS = venueServiceHttp.queryAvailable("1", STATIC_TOKEN); return Result.success(venueListDTOS); } + + } diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/entity/dto/VenueListDTO.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/entity/dto/VenueListDTO.java index 7e7309a..df7c74e 100644 --- a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/entity/dto/VenueListDTO.java +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/entity/dto/VenueListDTO.java @@ -17,6 +17,11 @@ public class VenueListDTO { */ private String date; + /** + * 时间 + */ + private String sjName; + /** * 场地名称 */ diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/schedule/VenueQuerySchedule.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/schedule/VenueQuerySchedule.java new file mode 100644 index 0000000..17ce6eb --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/schedule/VenueQuerySchedule.java @@ -0,0 +1,98 @@ +package com.xiang.xservice.application.script.jntyzx.schedule; + +import com.aliyun.core.utils.StringUtils; +import com.google.common.collect.Maps; +import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList; +import com.xiang.xservice.application.script.jntyzx.service.DingTalkScriptVenueService; +import com.xiang.xservice.application.script.jntyzx.service.IVenueServiceHttp; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * @Author: xiang + * @Date: 2025-12-15 15:02 + */ +@Component +@RequiredArgsConstructor +public class VenueQuerySchedule { + + private final static String STATIC_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk"; + private final IVenueServiceHttp venueServiceHttp; + private final DingTalkScriptVenueService dingTalkScriptVenueService; + + @Scheduled(cron = "0 0/5 9-15 * * ?") + public void venueQueryTask4Free() { + venueQuery(); + } + + @Scheduled(cron = "0 0/5 15-17 * * ?") + public void venueQueryTask4Normal() { + venueQuery(); + } + @Scheduled(cron = "0 0/5 17-20 * * ?") + public void venueQueryTask4Urgency() { + venueQuery(); + } + + private void venueQuery() { + List sitePositionLists = venueServiceHttp.queryAvailable("1", STATIC_TOKEN); + if (CollectionUtils.isEmpty(sitePositionLists)) { + return; + } + // 6-8场地 + Map> map1 = Maps.newHashMap(); + // 8-10场地 + Map> map2 = Maps.newHashMap(); + sitePositionLists.stream() + .filter(item -> StringUtils.equals(item.getSjName(), "18:00-19:00") || StringUtils.equals(item.getSjName(), "19:00-20:00") + || StringUtils.equals(item.getSjName(), "20:00-21:00") || StringUtils.equals(item.getSjName(), "21:00-22:00")) + .forEach(item -> { + if (StringUtils.equals(item.getSjName(), "18:00-19:00")) { + putIntoMap(item, map1); + } + if (StringUtils.equals(item.getSjName(), "19:00-20:00")) { + putIntoMap(item, map1); + } + if (StringUtils.equals(item.getSjName(), "20:00-21:00")) { + putIntoMap(item, map2); + } + if (StringUtils.equals(item.getSjName(), "21:00-22:00")) { + putIntoMap(item, map2); + } + }); + StringBuffer sb1 = new StringBuffer("查询江体小程序场地信息【18:00-20:00】\n"); + buildMsg(map1, sb1); + StringBuffer sb2 = new StringBuffer("查询江体小程序场地信息【20:00-22:00】\n"); + buildMsg(map2, sb2); + dingTalkScriptVenueService.sendScriptMsg(sb1.toString()); + dingTalkScriptVenueService.sendScriptMsg(sb2.toString()); + } + + private static void buildMsg(Map> map1, StringBuffer sb1) { + map1.forEach((k, v) -> { + SitePositionList sitePositionList1 = v.get(0); + SitePositionList sitePositionList2 = v.get(1); + String contacts = sitePositionList1.getContacts(); + if (StringUtils.equals(sitePositionList1.getContacts(), sitePositionList2.getContacts())) { + contacts = sitePositionList1.getContacts() + "," + sitePositionList2.getContacts(); + } + sb1.append(k).append("场地,订购人:").append(contacts); + }); + } + + private static void putIntoMap(SitePositionList item, Map> map1) { + if (map1.containsKey(item.getPlaceName())) { + List positionLists = map1.get(item.getPlaceName()); + positionLists.add(item); + map1.put(item.getPlaceName(), positionLists); + } else { + map1.put(item.getPlaceName(), Collections.singletonList(item)); + } + } +} diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/DingTalkScriptVenueService.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/DingTalkScriptVenueService.java new file mode 100644 index 0000000..ac8edf3 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/DingTalkScriptVenueService.java @@ -0,0 +1,33 @@ +package com.xiang.xservice.application.script.jntyzx.service; + +import com.xiang.xmc.service.message.dingTalk.service.DingTalkService; +import com.xiang.xservice.config.DingTalkRobotVenueConfig; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: xiang + * @Date: 2025-08-07 10:30 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class DingTalkScriptVenueService { + + private final DingTalkService dingTalkService; + private final DingTalkRobotVenueConfig dingTalkRobotVenueConfig; + + /** + * 发送脚本消息 + * @param msg 消息 + */ + public void sendScriptMsg(String msg) { + try { + dingTalkService.sendRobotMessage(dingTalkRobotVenueConfig.getSecret(), dingTalkRobotVenueConfig.getToken(), + dingTalkRobotVenueConfig.getUsers(), msg); + } catch (Exception e) { + log.error("信息发送异常, 信息:{}", msg, e); + } + } +} diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/IVenueServiceHttp.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/IVenueServiceHttp.java new file mode 100644 index 0000000..eb7cedd --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/IVenueServiceHttp.java @@ -0,0 +1,17 @@ +package com.xiang.xservice.application.script.jntyzx.service; + +import com.xiang.xservice.application.script.jntyzx.entity.resp.query.SitePositionList; + +import java.util.List; + +/** + * @Author: xiang + * @Date: 2025-12-15 14:47 + */ +public interface IVenueServiceHttp { + + /** + * 查询今日6-10可用场地 + */ + List queryAvailable(String isWeekend, String token); +} diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxService.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxService.java deleted file mode 100644 index c77c162..0000000 --- a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.xiang.xservice.application.script.jntyzx.service; - -import com.xiang.xservice.application.script.jntyzx.entity.dto.VenueListDTO; - -import java.util.List; - -/** - * @Author: xiang - * @Date: 2025-05-14 14:06 - */ -public interface JntyzxService { - - /** - * 查询可用场地 - */ - List queryAvailable(); -} diff --git a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxServiceImpl.java b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/VenueServiceHttpImpl.java similarity index 78% rename from script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxServiceImpl.java rename to script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/VenueServiceHttpImpl.java index 05009e0..42b2c64 100644 --- a/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/JntyzxServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/application/script/jntyzx/service/VenueServiceHttpImpl.java @@ -28,17 +28,17 @@ import java.util.Objects; @Service @RequiredArgsConstructor @Slf4j -public class JntyzxServiceImpl implements JntyzxService{ +public class VenueServiceHttpImpl implements IVenueServiceHttp { @Override - public List queryAvailable() { + public List queryAvailable(String isWeekend, String token) { String url = UrlConstant.QUERY_SUBSCRIBE_URL; Map header = Maps.newHashMap(); - header.put("X-Access-Token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjU3ODQ1NjMsInVzZXJuYW1lIjoid3hfb3Blbl9pZF9vMjFNWDR5N3doWENHanZVVEdQNkNUejJIYkQ4In0.QBzNQNvJZQPZZnzmbU8K5Liz0piHwercrDIq3kirUJk"); + header.put("X-Access-Token", token); String resp = null; Map params = Maps.newHashMap(); params.put("gid", "03"); - params.put("isWeekend", "1"); + params.put("isWeekend", isWeekend); try { resp = HttpHelper.doGet(url, header, params); } catch (Exception e) { @@ -69,22 +69,13 @@ public class JntyzxServiceImpl implements JntyzxService{ if (CollectionUtils.isEmpty(venueLists)) { return Lists.newArrayList(); } - List res = Lists.newArrayList(); + List res = Lists.newArrayList(); for (VenueList venueList : venueLists) { List sitePositionList = venueList.getSitePosition(); if (CollectionUtils.isEmpty(sitePositionList)) { continue; } - for (SitePositionList sitePosition : sitePositionList) { - if (!filterTime(sitePosition)) { - continue; - } - VenueListDTO venueListDTO = new VenueListDTO(); - venueListDTO.setDate(DateUtils.getDateFromDate(LocalDate.now()) + " " + sitePosition.getSjName()); - venueListDTO.setPlaceName(sitePosition.getPlaceName()); - venueListDTO.setContacts(sitePosition.getContacts()); - res.add(venueListDTO); - } + res.addAll(sitePositionList); } return res; } diff --git a/script/src/main/java/com/xiang/xservice/config/DingTalkRobotVenueConfig.java b/script/src/main/java/com/xiang/xservice/config/DingTalkRobotVenueConfig.java new file mode 100644 index 0000000..8e30a73 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/config/DingTalkRobotVenueConfig.java @@ -0,0 +1,20 @@ +package com.xiang.xservice.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.List; + +/** + * @Author: xiang + * @Date: 2025-12-15 15:20 + */ +@ConfigurationProperties(prefix = "dingtalk.robot.venue") +@Getter +@Setter +public class DingTalkRobotVenueConfig { + private String token; + private String secret; + private List users; +} diff --git a/script/src/main/resources/application-local.yml b/script/src/main/resources/application-local.yml index 56dfcff..eb4a678 100644 --- a/script/src/main/resources/application-local.yml +++ b/script/src/main/resources/application-local.yml @@ -49,5 +49,10 @@ dingtalk: xb: token: ad21ead99f0fdc63aa00d6732b7b0888c17590f7612c68297edfcb71844d1437 secret: SECc09d8aad6635f1a4cbadb7c0ab365523c46299f138438cd885e445e0f5f4d730 + users: + - 450841600726084717 + venue: + token: 6a218646972c684c75832b0229ea93a234778af537d7469ce96bef290faf530e + secret: SEC9018755ba86d3e5c1ed2fbfa1d6953d84bb2a6c8ebe7ed4e318457bfed5e0465 users: - 450841600726084717 \ No newline at end of file