From 3903a38ead8d469788f94767768c6a3a96acb01b Mon Sep 17 00:00:00 2001 From: Zhujx Date: Wed, 6 Aug 2025 11:32:21 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=97=A5=E6=9C=9F=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E4=BF=AE=E5=A4=8D=EF=BC=9B=20feat=EF=BC=9A?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0user=20token=E5=B7=A5?= =?UTF-8?q?=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 +- .../fwd/mapper/FwdUserConfigMapper.java | 23 ++++ .../fwd/schedule/FwdImportantMsgJob.java | 4 +- .../fwd/schedule/PullDataFromFWDJob.java | 110 ++++-------------- .../fwd/server/FwdDataController.java | 2 +- .../fwd/server/FwdUserController.java | 46 ++++++++ .../xservice/fwd/service/IPerformService.java | 2 + .../fwd/service/impl/PerformServiceImpl.java | 14 +++ .../mapper/fwd/FwdUserConfigMapper.xml | 12 ++ 9 files changed, 130 insertions(+), 95 deletions(-) create mode 100644 script/src/main/java/com/xiang/xservice/fwd/server/FwdUserController.java diff --git a/pom.xml b/pom.xml index 833e1f1..47df84c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.xiang xservice-basic - 1.0 + 1.1 com.xiang @@ -30,27 +30,27 @@ com.xiang xservice-common - 1.0 + 1.2 com.xiang xservice-message-starter - 1.0 + 1.1 com.xiang xservice-schedule-starter - 1.0 + 1.1 com.xiang xservice-cache-starter - 1.0 + 1.1 com.xiang xservice-http-starter - 1.0 + 1.1 diff --git a/script/src/main/java/com/xiang/xservice/fwd/mapper/FwdUserConfigMapper.java b/script/src/main/java/com/xiang/xservice/fwd/mapper/FwdUserConfigMapper.java index 85dd40a..45b09e3 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/mapper/FwdUserConfigMapper.java +++ b/script/src/main/java/com/xiang/xservice/fwd/mapper/FwdUserConfigMapper.java @@ -2,6 +2,7 @@ package com.xiang.xservice.fwd.mapper; import com.xiang.xservice.fwd.entity.pojo.FUserConfig; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -15,4 +16,26 @@ public interface FwdUserConfigMapper { * @return */ List getAvailableUser(); + + /** + * 根据用户名查询用户 + * @param name + * @return + */ + FUserConfig getUserByName(String name); + + /** + * 更新用户token + * @param name + * @param token + * @return + */ + int updateTokenByName(@Param("name") String name, @Param("token") String token); + + /** + * 新增用户token + * @param userConfig + * @return + */ + int insert(FUserConfig userConfig); } diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java index dbedf15..0b53927 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java @@ -115,7 +115,7 @@ public class FwdImportantMsgJob { StringBuilder msg = new StringBuilder("今日" + now + "演唱会门票预售信息:\n"); for (FPerformProjectInfo data : saleTodayData) { - msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeStr(data.getPreSaleTime())).append("\n"); + msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeFromDateTime(data.getPreSaleTime())).append("\n"); long taskId = PrimaryKeyUtils.snowflakeId(); Map params = Maps.newHashMap(); params.put("projectId", data.getProjectId()); @@ -163,7 +163,7 @@ public class FwdImportantMsgJob { if (Objects.nonNull(performsByProjectIdFromHttp)) { for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { for (PerformDetail performDetail : performInfo.getPerformInfo()) { - LocalDateTime saleTime = DateUtils.getTimeFromStr(performDetail.getSaleTime()); + LocalDateTime saleTime = DateUtils.getDateTimeFromStr(performDetail.getSaleTime()); if (saleTime.isAfter(todayStartTime) && saleTime.isBefore(todayEndTime)) { List seatPlans = performDetail.getSeatPlans(); Map seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a)); diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java index c31e5f6..96db816 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java @@ -4,10 +4,24 @@ import com.google.common.collect.Lists; import com.xiang.xservice.basic.common.req.BaseRequest; import com.xiang.xservice.basic.config.MyThreadFactory; import com.xiang.xservice.basic.utils.DateUtils; -import com.xiang.xservice.fwd.entity.pojo.*; +import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig; +import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; +import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo; +import com.xiang.xservice.fwd.entity.pojo.FUserConfig; import com.xiang.xservice.fwd.entity.resp.http.audience.AudienceMemberInfo; -import com.xiang.xservice.fwd.entity.resp.http.perform.*; -import com.xiang.xservice.fwd.mapper.*; +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.ProjectInfoResp; +import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectList; +import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp; +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.FwdPerformConfigMapper; +import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; +import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper; +import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.fwd.service.IPerformServiceHttp; import com.xiang.xservice.http.helper.HttpRequestHelper; import lombok.RequiredArgsConstructor; @@ -19,7 +33,6 @@ import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -69,10 +82,10 @@ public class PullDataFromFWDJob { fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { - fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); + fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate(), "yyyy/MM/dd")); } if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { - fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); + fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate(), "yyyy/MM/dd")); } fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); @@ -86,86 +99,11 @@ public class PullDataFromFWDJob { fPerformProjectInfo.setVenueName(project.getVenueName()); fPerformProjectInfo.setLowestPrice(project.getLowestPrice()); if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { - fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); + fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime(), "yyyy/MM/dd HH:mm:ss")); } performProjectInfoMapper.insert(fPerformProjectInfo); } -// @Scheduled(cron = "0 10 8 1/1 * ?") - @PostMapping("/pullSeatDataJob") - public void pullSeatDataJob() { - List availablePerform = performConfigMapper.getAvailablePerform(); - if (CollectionUtils.isEmpty(availablePerform)) { - return; - } - for (FPerformConfig performConfig : availablePerform) { - Perform performs = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getPerformsByProjectIdFromHttp(performConfig.getProjectId()), "seat-perform-info"); - if (Objects.isNull(performs)) { - continue; - } - if (CollectionUtils.isEmpty(performs.getPerformInfos())) { - continue; - } - for (PerformInfo performInfo : performs.getPerformInfos()) { - List info = performInfo.getPerformInfo(); - if (CollectionUtils.isEmpty(info)) { - continue; - } - for (PerformDetail performDetail : info) { - List seatPlans = performDetail.getSeatPlans(); - if (CollectionUtils.isEmpty(seatPlans)) { - continue; - } - Map map = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a)); - List planStatusFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getSeatPlanStatusFromHttp(new ArrayList<>(map.keySet())), "seat-seat-status"); - List seatInfoAddList = Lists.newArrayList(); - for (SeatPlanStatus seatPlanStatus : planStatusFromHttp) { - if (!seatPlanStatus.getSoldOutFlag() && seatPlanStatus.getStandbyStatus() == 10) { - FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(seatPlanStatus.getSeatPlanId(), seatPlanStatus.getPerformId(), performs.getProjectId()); - SeatPlan seatPlan = map.get(seatPlanStatus.getSeatPlanId()); - if (Objects.isNull(seatInfo)) { - if (Objects.nonNull(seatPlan)) { - seatInfo = new FPerformSeatInfo(); - seatInfo.setSeatPlanId(seatPlanStatus.getSeatPlanId()); - seatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); - seatInfo.setPerformId(seatPlanStatus.getPerformId()); - seatInfo.setPerformName(seatPlan.getPerformName()); - seatInfo.setStopSale(seatPlan.getStopSale()); - seatInfo.setShelfStatus(seatPlan.getShelfStatus()); - seatInfo.setPrice(seatPlan.getPrice()); - seatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); - seatInfo.setSubStatus(seatPlan.getSubStatus()); - seatInfo.setQuantity(seatPlan.getQuantity()); - seatInfo.setStatus(seatPlan.getStatus()); - seatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); - seatInfo.setSoldStock(seatPlan.getSoldStock()); - seatInfo.setLeftStock(seatPlan.getLeftStock()); - seatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); - seatInfo.setAshShow(seatPlan.getAshShow()); - seatInfo.setAshShowDesc(seatPlan.getAshShowDesc()); - seatInfo.setSelectable(seatPlan.getSelectable()); - seatInfo.setDisplay(seatPlan.getDisplay()); - seatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); - seatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); - seatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); - seatInfo.setProjectId(performs.getProjectId()); - seatInfo.setSoldOut(0); - seatInfoAddList.add(seatInfo); - } - } else { - seatInfo.setSoldOut(0); - performSeatInfoMapper.update(seatInfo); - } - } - } - if (CollectionUtils.isNotEmpty(seatInfoAddList)) { - performSeatInfoMapper.batchSave(seatInfoAddList); - } - } - } - } - } - /** * 每月拉取观影人数据更新 */ @@ -314,7 +252,7 @@ public class PullDataFromFWDJob { fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { - fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); + fPerformSeatInfo.setSaleTime(DateUtils.getDateTimeFromStr(seatPlan.getSaleTime())); } fPerformSeatInfo.setProjectId(projectList.getProjectId()); if (!seatPlanStatus.getSoldOutFlag() && seatPlanStatus.getStandbyStatus().equals(10)) { @@ -333,10 +271,10 @@ public class PullDataFromFWDJob { projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { - projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); + projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate(), "yyyy/MM/dd")); } if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { - projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); + projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate(), "yyyy/MM/dd")); } projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); projectInfo.setProjectName(projectList.getName()); @@ -348,7 +286,7 @@ public class PullDataFromFWDJob { projectInfo.setVenueName(projectList.getVenueName()); projectInfo.setLowestPrice(projectList.getLowestPrice()); if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { - projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); + projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime(), "yyyy/MM/dd HH:mm:ss")); } } } diff --git a/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java b/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java index 7c486f7..50bbb6c 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java +++ b/script/src/main/java/com/xiang/xservice/fwd/server/FwdDataController.java @@ -83,7 +83,7 @@ public class FwdDataController { fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); - fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); + fPerformSeatInfo.setSaleTime(DateUtils.getDateTimeFromStr(seatPlan.getSaleTime(), "yyyy/MM/dd HH:mm:ss")); fPerformSeatInfo.setProjectId(availablePerform.getProjectId()); fPerformSeatInfo.setSoldOut(seatPlan.getSoldStock()); performService.addSeatInfo(fPerformSeatInfo); diff --git a/script/src/main/java/com/xiang/xservice/fwd/server/FwdUserController.java b/script/src/main/java/com/xiang/xservice/fwd/server/FwdUserController.java new file mode 100644 index 0000000..c3453f8 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/fwd/server/FwdUserController.java @@ -0,0 +1,46 @@ +package com.xiang.xservice.fwd.server; + +import com.alibaba.fastjson.JSON; +import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService; +import com.xiang.xservice.fwd.service.IPerformService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @Author: xiang + * @Date: 2025-08-06 10:41 + */ +@Slf4j +@RestController +@RequestMapping("/open/fwd/user") +@RequiredArgsConstructor +public class FwdUserController { + + private final IPerformService performService; + private final DingTalkService dingTalkService; + + @GetMapping("/token") + public Result updateUserTokenFromHttpProxy(@RequestParam Map params) { + String name = params.get("name"); + String token = params.get("token"); + log.info("接收到的参数有===>{}, name:{}, token:{}", JSON.toJSONString(params), name, token); + Boolean b = performService.updateTokenByName(name, token); + if (b) { + String msg = "用户:" + name + "的token更新成功!"; + try { + dingTalkService.sendRobotMessage(msg); + } catch (Exception e) { + log.error("消息发送失败", e); + return Result.error("消息发送失败"); + } + } + return Result.success(); + } +} diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java b/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java index e7658e9..83c53d7 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java +++ b/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java @@ -27,4 +27,6 @@ public interface IPerformService { Boolean updateSeatInfo(FPerformSeatInfo seatInfoBySeatId); Boolean addSeatInfo(FPerformSeatInfo fPerformSeatInfo); + + Boolean updateTokenByName(String name, String token); } diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java index 308e20b..58977a5 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java @@ -142,4 +142,18 @@ public class PerformServiceImpl implements IPerformService { public Boolean addSeatInfo(FPerformSeatInfo fPerformSeatInfo) { return fwdPerformSeatInfoMapper.batchSave(Collections.singletonList(fPerformSeatInfo)) > 0; } + + @Override + public Boolean updateTokenByName(String name, String token) { + FUserConfig userByName = fwdUserConfigMapper.getUserByName(name); + if (Objects.isNull(userByName)) { + FUserConfig fUserConfig = new FUserConfig(); + fUserConfig.setName(name); + fUserConfig.setToken(token); + fUserConfig.setStatus(1); + return fwdUserConfigMapper.insert(fUserConfig) > 0; + } else { + return fwdUserConfigMapper.updateTokenByName(name, token) > 0; + } + } } diff --git a/script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml b/script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml index 055cca7..3c3913d 100644 --- a/script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml +++ b/script/src/main/resources/mapper/fwd/FwdUserConfigMapper.xml @@ -13,10 +13,22 @@ id, name, token, status + + insert into fwd_user_config (name, token, status) values (#{name}, #{token}, #{status}); + + + update fwd_user_config set token = #{token} where name = #{name} + + + + \ No newline at end of file