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.eq(UserTokenInfoDO::getStatus, 1);
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, 1);
lambdaQueryWrapper.eq(UserTokenInfoDO::getIsRestriction, 0);
return baseMapper.selectList(lambdaQueryWrapper);
}
}

View File

@@ -106,33 +106,41 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService {
return flag;
}
private boolean queryMemberCardInfo(UserTokenInfoDO userTokenInfoDO) {
/**
* 查询用户信息
*
* @param userTokenInfoDO 用户
*
* @return
*/
private void queryMemberCardInfo(UserTokenInfoDO userTokenInfoDO) {
JntyzxResponse<UserInfoResponse> response = jntyzxHttpService.queryByOpenId(userTokenInfoDO.getToken(), userTokenInfoDO.getOpenId());
if (Objects.isNull(response)) {
return false;
return;
}
if (response.getSuccess()) {
UserInfoResponse userInfoResponse = response.getResult();
userTokenInfoDO.setMemberCardNo(userInfoResponse.getConsCard());
if (StringUtils.isNotBlank(userInfoResponse.getRestrictionDeadline())) {
userTokenInfoDO.setIsRestriction(1);
userTokenInfoDO.setIsOrder(0);
UserRestrictionInfo userRestrictionInfo = userRestrictionManage.queryByUserId(userTokenInfoDO.getId());
if (Objects.isNull(userRestrictionInfo)) {
userRestrictionInfo = new UserRestrictionInfo();
userRestrictionInfo.setUserId(userTokenInfoDO.getId());
userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline()));
userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription());
userTokenInfoManage.save(userTokenInfoDO);
userRestrictionManage.save(userRestrictionInfo);
} else {
userRestrictionInfo.setRestrictionDeadline(DateUtils.getDateTimeFromStr(userInfoResponse.getRestrictionDeadline()));
userRestrictionInfo.setRestrictionDesc(userInfoResponse.getRestrictionDescription());
userTokenInfoManage.updateById(userTokenInfoDO);
userRestrictionManage.updateById(userRestrictionInfo);
}
} else {
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;
import com.google.common.collect.Maps;
import com.xiang.app.common.service.dingtalk.JtDingTalkFactory;
import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO;
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.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -88,6 +90,12 @@ public class JtVenuePullTask {
.filter(item -> !item.getPlaceName().contains("小馆"))
.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;
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.VenueInfoDO;
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 lombok.RequiredArgsConstructor;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -26,6 +29,7 @@ public class JtVenueSubscribeTask {
private final IUserTokenInfoService userTokenInfoService;
private final IJtOrderService jtOrderService;
private final IVenueService venueService;
private final JtDingTalkFactory jtDingTalkFactory;
@XxzJob(name = "jtVenueSubscribeTask")
@GetMapping("/jtVenueSubscribeTask")
@@ -33,10 +37,17 @@ public class JtVenueSubscribeTask {
log.info("【Subscribe】 江体场地预定定时任务启动!!! time:{}", System.currentTimeMillis());
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();
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 -> {
List<VenueInfoDO> venueInfoDOList = venueInfoMap.get(placeName);
users.forEach(user -> {

View File

@@ -4,6 +4,7 @@ package com.xiang.app.schedule.jntyzx;
import com.google.common.collect.Maps;
import com.xiang.app.common.service.dingtalk.JtDingTalkFactory;
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.service.IJntyzxHttpService;
import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService;
@@ -44,21 +45,28 @@ public class JtVenueTomorrowPullTask {
log.info("当前无可用用户查询场地信息!");
return;
}
String token;
for (UserTokenInfoDO userTokenInfoDO : availableUser) {
if (Objects.isNull(userTokenInfoDO)) {
continue;
// 用户信息
StringBuffer userMsg = new StringBuffer();
availableUser.forEach(item -> {
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);
if (CollectionUtils.isEmpty(sitePositionLists)) {
continue;
return;
}
venueService.saveTomorrowVenueInfo(sitePositionLists);
sitePositionLists = sitePositionLists.stream().filter(VenueInfoUtils::get8210VenueInfo).toList();
if (CollectionUtils.isEmpty(sitePositionLists)) {
return;
@@ -76,5 +84,5 @@ public class JtVenueTomorrowPullTask {
});
jtDingTalkFactory.sendMsg(msg.toString());
}
}
}