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