fix:日期工具类修复;
feat:新增更新user token工具
This commit is contained in:
12
pom.xml
12
pom.xml
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-basic</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
</parent>
|
||||
|
||||
<groupId>com.xiang</groupId>
|
||||
@@ -30,27 +30,27 @@
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-common</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-message-starter</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-schedule-starter</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-cache-starter</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-http-starter</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -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<FUserConfig> 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);
|
||||
}
|
||||
|
||||
@@ -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<String, Object> 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<SeatPlan> seatPlans = performDetail.getSeatPlans();
|
||||
Map<Long, SeatPlan> seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
|
||||
@@ -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<FPerformConfig> 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<PerformDetail> info = performInfo.getPerformInfo();
|
||||
if (CollectionUtils.isEmpty(info)) {
|
||||
continue;
|
||||
}
|
||||
for (PerformDetail performDetail : info) {
|
||||
List<SeatPlan> seatPlans = performDetail.getSeatPlans();
|
||||
if (CollectionUtils.isEmpty(seatPlans)) {
|
||||
continue;
|
||||
}
|
||||
Map<Long, SeatPlan> map = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
List<SeatPlanStatus> planStatusFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getSeatPlanStatusFromHttp(new ArrayList<>(map.keySet())), "seat-seat-status");
|
||||
List<FPerformSeatInfo> 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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<Void> updateUserTokenFromHttpProxy(@RequestParam Map<String, String> 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();
|
||||
}
|
||||
}
|
||||
@@ -27,4 +27,6 @@ public interface IPerformService {
|
||||
Boolean updateSeatInfo(FPerformSeatInfo seatInfoBySeatId);
|
||||
|
||||
Boolean addSeatInfo(FPerformSeatInfo fPerformSeatInfo);
|
||||
|
||||
Boolean updateTokenByName(String name, String token);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,22 @@
|
||||
<sql id="Base_Column_List">
|
||||
id, name, token, status
|
||||
</sql>
|
||||
<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="com.xiang.xservice.fwd.entity.pojo.FUserConfig" keyColumn="id">
|
||||
insert into fwd_user_config (name, token, status) values (#{name}, #{token}, #{status});
|
||||
</insert>
|
||||
<update id="updateTokenByName">
|
||||
update fwd_user_config set token = #{token} where name = #{name}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="getAvailableUser" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from fwd_user_config where status = 1
|
||||
</select>
|
||||
|
||||
<select id="getUserByName" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from fwd_user_config where status = 1 and name = #{name}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user