feat:场地信息拉取
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
return userTokenInfoManage.updateById(userTokenInfoDO);
|
userTokenInfoManage.updateById(userTokenInfoDO);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 -> {
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 -> {
|
||||||
|
|||||||
@@ -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,37 +45,44 @@ 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)) {
|
||||||
token = userTokenInfoDO.getToken();
|
if (jntyzxResponse.getSuccess()) {
|
||||||
if (StringUtils.isBlank(token)) {
|
userMsg.append("订购人:").append(item.getName()).append("正常下单\n");
|
||||||
continue;
|
} else {
|
||||||
}
|
userMsg.append("订购人:").append(item.getName()).append(jntyzxResponse.getMessage()).append("\n");
|
||||||
List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailableTomorrow(WeekendUtils.isWeekend(), token);
|
|
||||||
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
venueService.saveTomorrowVenueInfo(sitePositionLists);
|
|
||||||
|
|
||||||
sitePositionLists = sitePositionLists.stream().filter(VenueInfoUtils::get8210VenueInfo).toList();
|
|
||||||
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Map<String, SitePositionList> map = Maps.newLinkedHashMap();
|
|
||||||
for (SitePositionList sitePositionList : sitePositionLists) {
|
|
||||||
if (map.containsKey(sitePositionList.getPlaceName())) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
map.put(sitePositionList.getPlaceName(), sitePositionList);
|
|
||||||
}
|
}
|
||||||
StringBuffer msg = new StringBuffer("查询江体场地信息===>时间:\n" + DateUtils.getDateFromDate(LocalDate.now().plusDays(1)) + " 20:00-22:00\n");
|
});
|
||||||
map.forEach((placeName, sitePositionList) -> {
|
jtDingTalkFactory.sendMsg(userMsg.toString());
|
||||||
msg.append(placeName).append("订购人:").append(sitePositionList.getContacts()).append("\n");
|
|
||||||
});
|
// 场地信息
|
||||||
jtDingTalkFactory.sendMsg(msg.toString());
|
UserTokenInfoDO userTokenInfoDO = availableUser.get(0);
|
||||||
|
String token = userTokenInfoDO.getToken();
|
||||||
|
List<SitePositionList> sitePositionLists = jntyzxHttpService.queryAvailableTomorrow(WeekendUtils.isWeekend(), token);
|
||||||
|
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
venueService.saveTomorrowVenueInfo(sitePositionLists);
|
||||||
|
sitePositionLists = sitePositionLists.stream().filter(VenueInfoUtils::get8210VenueInfo).toList();
|
||||||
|
if (CollectionUtils.isEmpty(sitePositionLists)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, SitePositionList> map = Maps.newLinkedHashMap();
|
||||||
|
for (SitePositionList sitePositionList : sitePositionLists) {
|
||||||
|
if (map.containsKey(sitePositionList.getPlaceName())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
map.put(sitePositionList.getPlaceName(), sitePositionList);
|
||||||
|
}
|
||||||
|
StringBuffer msg = new StringBuffer("查询江体场地信息===>时间:\n" + DateUtils.getDateFromDate(LocalDate.now().plusDays(1)) + " 20:00-22:00\n");
|
||||||
|
map.forEach((placeName, sitePositionList) -> {
|
||||||
|
msg.append(placeName).append("订购人:").append(sitePositionList.getContacts()).append("\n");
|
||||||
|
});
|
||||||
|
jtDingTalkFactory.sendMsg(msg.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user