feat:场地信息拉取

This commit is contained in:
xiang
2026-01-20 21:49:46 +08:00
parent 1a7569d1a1
commit 8514eac031
6 changed files with 74 additions and 70 deletions

View File

@@ -35,6 +35,7 @@ public class UserTokenInfoManageImpl extends ServiceImpl<JntyzxUserTokenInfoMapp
LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<UserTokenInfoDO> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1); lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1);
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, 1); lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, 1);
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsRestriction, 0);
return baseMapper.selectList(lambdaQueryWrapper); return baseMapper.selectList(lambdaQueryWrapper);
} }
} }

View File

@@ -106,33 +106,41 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService {
return flag; return flag;
} }
private boolean queryMemberCardInfo(UserTokenInfoDO userTokenInfoDO) { /**
* 查询用户信息
*
* @param userTokenInfoDO 用户
*
* @return
*/
private void queryMemberCardInfo(UserTokenInfoDO userTokenInfoDO) {
JntyzxResponse<UserInfoResponse> response = jntyzxHttpService.queryByOpenId(userTokenInfoDO.getToken(), userTokenInfoDO.getOpenId()); JntyzxResponse<UserInfoResponse> response = jntyzxHttpService.queryByOpenId(userTokenInfoDO.getToken(), userTokenInfoDO.getOpenId());
if (Objects.isNull(response)) { if (Objects.isNull(response)) {
return false; return;
} }
if (response.getSuccess()) { if (response.getSuccess()) {
UserInfoResponse userInfoResponse = response.getResult(); UserInfoResponse userInfoResponse = response.getResult();
userTokenInfoDO.setMemberCardNo(userInfoResponse.getConsCard()); userTokenInfoDO.setMemberCardNo(userInfoResponse.getConsCard());
if (StringUtils.isNotBlank(userInfoResponse.getRestrictionDeadline())) { if (StringUtils.isNotBlank(userInfoResponse.getRestrictionDeadline())) {
userTokenInfoDO.setIsRestriction(1); userTokenInfoDO.setIsRestriction(1);
userTokenInfoDO.setIsOrder(0);
UserRestrictionInfo userRestrictionInfo = userRestrictionManage.queryByUserId(userTokenInfoDO.getId()); UserRestrictionInfo userRestrictionInfo = userRestrictionManage.queryByUserId(userTokenInfoDO.getId());
if (Objects.isNull(userRestrictionInfo)) { if (Objects.isNull(userRestrictionInfo)) {
userRestrictionInfo = new UserRestrictionInfo(); userRestrictionInfo = new UserRestrictionInfo();
userRestrictionInfo.setUserId(userTokenInfoDO.getId()); userRestrictionInfo.setUserId(userTokenInfoDO.getId());
userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline())); userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline()));
userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription()); userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription());
userTokenInfoManage.save(userTokenInfoDO); userRestrictionManage.save(userRestrictionInfo);
} else { } else {
userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline())); userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline()));
userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription()); userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription());
userTokenInfoManage.updateById(userTokenInfoDO); userRestrictionManage.updateById(userRestrictionInfo);
} }
} else { } else {
userTokenInfoDO.setIsRestriction(0); userTokenInfoDO.setIsRestriction(0);
userTokenInfoDO.setIsOrder(1);
}
userTokenInfoManage.updateById(userTokenInfoDO);
} }
return userTokenInfoManage.updateById(userTokenInfoDO);
}
return false;
} }
} }

View File

@@ -1,32 +0,0 @@
package com.xiang.app.schedule.jntyzx;
import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO;
import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 校验是否可以下单定时任务
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class JtCheckUserOrderTask {
private final IUserTokenInfoService userTokenInfoService;
public void handle() {
List<UserTokenInfoDO> users = userTokenInfoService.getAvailableUser();
if (CollectionUtils.isEmpty(users)) {
return;
}
users.forEach(item -> {
});
}
}

View File

@@ -1,5 +1,6 @@
package com.xiang.app.schedule.jntyzx; package com.xiang.app.schedule.jntyzx;
import com.google.common.collect.Maps;
import com.xiang.app.common.service.dingtalk.JtDingTalkFactory; import com.xiang.app.common.service.dingtalk.JtDingTalkFactory;
import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO;
import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList; import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList;
@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** /**
@@ -88,6 +90,12 @@ public class JtVenuePullTask {
.filter(item -> !item.getPlaceName().contains("小馆")) .filter(item -> !item.getPlaceName().contains("小馆"))
.toList(); .toList();
} }
return sitePositionLists; Map<String, SitePositionList> mapByName = Maps.newLinkedHashMap();
for (SitePositionList sitePositionList : sitePositionLists) {
if (!mapByName.containsKey(sitePositionList.getPlaceName())) {
mapByName.put(sitePositionList.getPlaceName(), sitePositionList);
}
}
return mapByName.values().stream().toList();
} }
} }

View File

@@ -1,5 +1,6 @@
package com.xiang.app.schedule.jntyzx; package com.xiang.app.schedule.jntyzx;
import com.xiang.app.common.service.dingtalk.JtDingTalkFactory;
import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO;
import com.xiang.app.modules.jntyzx.entity.pojo.VenueInfoDO; import com.xiang.app.modules.jntyzx.entity.pojo.VenueInfoDO;
import com.xiang.app.modules.jntyzx.service.IJtOrderService; import com.xiang.app.modules.jntyzx.service.IJtOrderService;
@@ -9,6 +10,8 @@ import com.xiang.app.modules.jntyzx.utils.VenueInfoUtils;
import com.xiang.core.quartz.annotation.XxzJob; import com.xiang.core.quartz.annotation.XxzJob;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -26,6 +29,7 @@ public class JtVenueSubscribeTask {
private final IUserTokenInfoService userTokenInfoService; private final IUserTokenInfoService userTokenInfoService;
private final IJtOrderService jtOrderService; private final IJtOrderService jtOrderService;
private final IVenueService venueService; private final IVenueService venueService;
private final JtDingTalkFactory jtDingTalkFactory;
@XxzJob(name = "jtVenueSubscribeTask") @XxzJob(name = "jtVenueSubscribeTask")
@GetMapping("/jtVenueSubscribeTask") @GetMapping("/jtVenueSubscribeTask")
@@ -33,10 +37,17 @@ public class JtVenueSubscribeTask {
log.info("【Subscribe】 江体场地预定定时任务启动!!! time:{}", System.currentTimeMillis()); log.info("【Subscribe】 江体场地预定定时任务启动!!! time:{}", System.currentTimeMillis());
List<UserTokenInfoDO> users = userTokenInfoService.getCanOrderUser(); List<UserTokenInfoDO> users = userTokenInfoService.getCanOrderUser();
if (CollectionUtils.isEmpty(users)) {
log.info("暂无可下单用户, time:{}", System.currentTimeMillis());
jtDingTalkFactory.sendMsg("暂无可下单用户, time:" + System.currentTimeMillis());
return;
}
List<VenueInfoDO> venueInfoDOS = venueService.queryTomorrowCanBuyVenue(); List<VenueInfoDO> venueInfoDOS = venueService.queryTomorrowCanBuyVenue();
Map<String, List<VenueInfoDO>> venueInfoMap = venueInfoDOS.stream().filter(VenueInfoUtils::get8210VenueInfo).collect(Collectors.groupingByConcurrent(VenueInfoDO::getPlaceName)); Map<String, List<VenueInfoDO>> venueInfoMap = venueInfoDOS.stream().filter(VenueInfoUtils::get8210VenueInfo).collect(Collectors.groupingByConcurrent(VenueInfoDO::getPlaceName));
if (MapUtils.isEmpty(venueInfoMap)) {
log.info("暂无可下单场地time:{}", System.currentTimeMillis());
return;
}
venueInfoMap.keySet().parallelStream().forEach(placeName -> { venueInfoMap.keySet().parallelStream().forEach(placeName -> {
List<VenueInfoDO> venueInfoDOList = venueInfoMap.get(placeName); List<VenueInfoDO> venueInfoDOList = venueInfoMap.get(placeName);
users.forEach(user -> { users.forEach(user -> {

View File

@@ -4,6 +4,7 @@ package com.xiang.app.schedule.jntyzx;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xiang.app.common.service.dingtalk.JtDingTalkFactory; import com.xiang.app.common.service.dingtalk.JtDingTalkFactory;
import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO;
import com.xiang.app.modules.jntyzx.entity.resp.JntyzxResponse;
import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList; import com.xiang.app.modules.jntyzx.entity.resp.query.SitePositionList;
import com.xiang.app.modules.jntyzx.service.IJntyzxHttpService; import com.xiang.app.modules.jntyzx.service.IJntyzxHttpService;
import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService; import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService;
@@ -44,21 +45,28 @@ public class JtVenueTomorrowPullTask {
log.info("当前无可用用户查询场地信息!"); log.info("当前无可用用户查询场地信息!");
return; return;
} }
String token; // 用户信息
for (UserTokenInfoDO userTokenInfoDO : availableUser) { StringBuffer userMsg = new StringBuffer();
if (Objects.isNull(userTokenInfoDO)) { availableUser.forEach(item -> {
continue; JntyzxResponse jntyzxResponse = jntyzxHttpService.checkDefaultNums(item.getToken(), item.getMemberCardNo());
if (Objects.nonNull(jntyzxResponse)) {
if (jntyzxResponse.getSuccess()) {
userMsg.append("订购人:").append(item.getName()).append("正常下单\n");
} else {
userMsg.append("订购人:").append(item.getName()).append(jntyzxResponse.getMessage()).append("\n");
} }
token = userTokenInfoDO.getToken();
if (StringUtils.isBlank(token)) {
continue;
} }
});
jtDingTalkFactory.sendMsg(userMsg.toString());
// 场地信息
UserTokenInfoDO userTokenInfoDO = availableUser.get(0);
String token = userTokenInfoDO.getToken();
List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailableTomorrow(WeekendUtils.isWeekend(), token); List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailableTomorrow(WeekendUtils.isWeekend(), token);
if (CollectionUtils.isEmpty(sitePositionLists)) { if (CollectionUtils.isEmpty(sitePositionLists)) {
continue; return;
} }
venueService.saveTomorrowVenueInfo(sitePositionLists); venueService.saveTomorrowVenueInfo(sitePositionLists);
sitePositionLists = sitePositionLists.stream().filter(VenueInfoUtils::get8210VenueInfo).toList(); sitePositionLists = sitePositionLists.stream().filter(VenueInfoUtils::get8210VenueInfo).toList();
if (CollectionUtils.isEmpty(sitePositionLists)) { if (CollectionUtils.isEmpty(sitePositionLists)) {
return; return;
@@ -76,5 +84,5 @@ public class JtVenueTomorrowPullTask {
}); });
jtDingTalkFactory.sendMsg(msg.toString()); jtDingTalkFactory.sendMsg(msg.toString());
} }
}
} }