diff --git a/src/main/java/com/xiang/common/enums/ScheduleEnums.java b/src/main/java/com/xiang/common/enums/ScheduleEnums.java index bbe9742..bf548a8 100644 --- a/src/main/java/com/xiang/common/enums/ScheduleEnums.java +++ b/src/main/java/com/xiang/common/enums/ScheduleEnums.java @@ -8,19 +8,27 @@ import lombok.Getter; public enum ScheduleEnums { /** - * 0:glados 1:芬玩岛 2:江体小程序 3:江体zlb 4:DDNS + * 0:glados + * 1:芬玩岛 + * 2:DDNS + * 3:江体zlb + * 4:江体小程序 */ - /** - * Aliyun DDNS任务 - */ - DOMAIN_DYNAMIC_ANALYSIS_TASK(4, "domain", "domainDynamicAnalysisTask"), - /** * Glados任务 */ GLADOS_CHECK_IN_TASK(0, "glados", "gladosCheckInTask"), + /** + * Aliyun DDNS任务 + */ + DOMAIN_DYNAMIC_ANALYSIS_TASK(2, "domain", "domainDynamicAnalysisTask"), + + /** + * 芬玩岛 任务 + */ + /** * 江体 ZLB任务 */ @@ -30,8 +38,12 @@ public enum ScheduleEnums { ZLB_SITE_DAY_TASK(3, "zlb", "zlbSiteDayTask"), ZLB_ORDER_CREATE_TASK(3, "zlb", "zlbOrderCreateTask"), ZLB_USER_CONFIG_TASK(3, "zlb", "zlbUserConfigTask"), + ZLB_ORDER_QUERY_TASK(3, "zlb", "zlbOrderQueryTask"), + /** + * 江体 小程序任务 + */ JNTYZX_TOKEN_REFRESH_TASK(4, "jt-miniApp", "jntyzxTokenRefreshTask"), JNTYZX_VENUE_INFO_PULL_TASK(4, "jt-miniApp", "jntyzxVenuePullTask"), JNTYZX_ORDER_SUBSCRIBE_TASK(4, "jt-miniApp", "jntyzxOrderSubscribeTask"), diff --git a/src/main/java/com/xiang/common/manage/jntyzx/zlb/IZlbOrderInfoManage.java b/src/main/java/com/xiang/common/manage/jntyzx/zlb/IZlbOrderInfoManage.java index ce20403..091e354 100644 --- a/src/main/java/com/xiang/common/manage/jntyzx/zlb/IZlbOrderInfoManage.java +++ b/src/main/java/com/xiang/common/manage/jntyzx/zlb/IZlbOrderInfoManage.java @@ -3,9 +3,14 @@ package com.xiang.common.manage.jntyzx.zlb; import com.baomidou.mybatisplus.extension.service.IService; import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder; +import java.time.LocalDate; +import java.util.List; + /** * @Author: xiang * @Date: 2026-05-09 15:11 */ public interface IZlbOrderInfoManage extends IService { + + List queryOrder(LocalDate date); } diff --git a/src/main/java/com/xiang/common/manage/jntyzx/zlb/ZlbOrderInfoManageImpl.java b/src/main/java/com/xiang/common/manage/jntyzx/zlb/ZlbOrderInfoManageImpl.java index 7e49403..b8da730 100644 --- a/src/main/java/com/xiang/common/manage/jntyzx/zlb/ZlbOrderInfoManageImpl.java +++ b/src/main/java/com/xiang/common/manage/jntyzx/zlb/ZlbOrderInfoManageImpl.java @@ -1,15 +1,27 @@ package com.xiang.common.manage.jntyzx.zlb; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiang.common.mapper.ZlbOrderInfoMapper; import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder; -import lombok.extern.slf4j.Slf4j; +import com.xiang.common.utils.DateUtils; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.util.List; + /** * @Author: xiang * @Date: 2026-05-09 15:11 */ @Service public class ZlbOrderInfoManageImpl extends ServiceImpl implements IZlbOrderInfoManage { + @Override + public List queryOrder(LocalDate date) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ZlbPayOrder::getDay, DateUtils.getDateFromDate(date)); + lambdaQueryWrapper.eq(ZlbPayOrder::getIsPay, 0); + return baseMapper.selectList(lambdaQueryWrapper); + } } diff --git a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbOrderDetailResp.java b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbOrderDetailResp.java new file mode 100644 index 0000000..6ea93e0 --- /dev/null +++ b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbOrderDetailResp.java @@ -0,0 +1,51 @@ +package com.xiang.common.pojo.jntyzx.zlb; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @Author: xiang + * @Date: 2026-05-11 09:43 + */ +@Data +@AllArgsConstructor +public class ZlbOrderDetailResp { + + private Integer state; + private Integer blocId; + private Integer stadiumId; + private String stadiumArea; + private String stadiumName; + private String stadiumPhone; + private String stadiumType; + private String stadiumAddress; + private String mapLongitude; + private String mapLatitude; + private String ticketImg; + private String spName; + private String siteName; + private String siteAmount; +// private String orderAmount; + private Integer payNumber; +// private String ticketInfos; + private Integer orderId; + private String orderNo; + private String orderTime; + private String payTime; + private Integer payType; + private String payAmount; + private String discountPayAmount; + private String totalDiscountAmount; + private String isUseCoupon; + private String isUseCard; + private String name; + private String idCard; + private String phone; + private String notice; + private String blocNotice; + private Integer isRefund; + private String ticketCate; + private String spreadAmout; + private Integer isPreferential; + private String doNotWatermarkFlag; +} diff --git a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbPayOrder.java b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbPayOrder.java index bdf54a8..5826003 100644 --- a/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbPayOrder.java +++ b/src/main/java/com/xiang/common/pojo/jntyzx/zlb/ZlbPayOrder.java @@ -47,4 +47,9 @@ public class ZlbPayOrder { * 0-未付款,1-已付款 */ private Integer isPay; + + /** + * 订单id + */ + private String orderId; } \ No newline at end of file diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderQueryTask.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderQueryTask.java new file mode 100644 index 0000000..e291423 --- /dev/null +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderQueryTask.java @@ -0,0 +1,117 @@ +package com.xiang.service.module.jntyzx.zlb.schedule; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.google.common.collect.Lists; +import com.xiang.common.enums.ScheduleEnums; +import com.xiang.common.factory.schedule.BaseScheduleTaskTemplate; +import com.xiang.common.manage.jntyzx.zlb.IZlbOrderInfoManage; +import com.xiang.common.manage.jntyzx.zlb.ZlbTokenInfoService; +import com.xiang.common.pojo.jntyzx.zlb.ZlbOrderDetailResp; +import com.xiang.common.pojo.jntyzx.zlb.ZlbPayOrder; +import com.xiang.common.pojo.jntyzx.zlb.ZlbTokenInfo; +import com.xiang.common.pojo.schedule.TaskResult; +import com.xiang.common.service.IScheduleOpeningConfigService; +import com.xiang.common.service.IScheduleRunLogService; +import com.xiang.common.utils.OkHttpUtil; +import com.xiang.service.module.jntyzx.zlb.constants.ZlbUrlConstants; +import com.xiang.service.module.jntyzx.zlb.service.ZlbService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Author: xiang + * @Date: 2026-05-11 09:11 + */ +@Component +@Slf4j +public class ZlbOrderQueryTask extends BaseScheduleTaskTemplate { + + private final IZlbOrderInfoManage zlbOrderInfoManage; + private final ZlbTokenInfoService zlbTokenInfoService; + private final ZlbService zlbService; + + public ZlbOrderQueryTask(IScheduleOpeningConfigService scheduleOpeningConfigService, + IScheduleRunLogService scheduleRunLogService, + IZlbOrderInfoManage zlbOrderInfoManage, + ZlbTokenInfoService zlbTokenInfoService, ZlbService zlbService) { + super(scheduleOpeningConfigService, scheduleRunLogService); + this.zlbOrderInfoManage = zlbOrderInfoManage; + this.zlbTokenInfoService = zlbTokenInfoService; + this.zlbService = zlbService; + } + + @Override + protected String getTaskName() { + return ScheduleEnums.ZLB_ORDER_QUERY_TASK.getTaskName(); + } + + @Override + protected Integer getModule() { + return ScheduleEnums.ZLB_ORDER_QUERY_TASK.getModuleCode(); + } + + @Override + protected String getModuleName() { + return ScheduleEnums.ZLB_ORDER_QUERY_TASK.getModule(); + } + + @Override + protected TaskResult doExecute(Object validatedParams) throws Exception { + TaskResult taskResult = new TaskResult(); + taskResult.setSuccess(Boolean.TRUE); + + List orders = zlbOrderInfoManage.queryOrder(LocalDate.now().plusDays(1)); + if (CollectionUtils.isEmpty(orders)) { + taskResult.setSummary("无可使用的订单"); + return taskResult; + } + List users = zlbTokenInfoService.getAllUsers(); + if (CollectionUtils.isEmpty(users)) { + taskResult.setSummary("无可使用的用户"); + return taskResult; + } + Map userMap = users.stream().collect(Collectors.toMap(ZlbTokenInfo::getName, Function.identity(), (a, b) -> a)); + + OkHttpUtil client = OkHttpUtil.getInstance(); + List result = Lists.newArrayList(); + for (ZlbPayOrder order : orders) { + if (!userMap.containsKey(order.getName())) { + continue; + } + ZlbTokenInfo zlbTokenInfo = userMap.get(order.getName()); + String orderDetailStr = client.postJson(String.format(ZlbUrlConstants.getOrderDetailUrl, order.getOrderId()), zlbService.getHeaders(zlbTokenInfo.getTokenId()),"{}"); + if (StringUtils.isBlank(orderDetailStr)) { + log.info("订单:{}查询结果为空", order.getOrderId()); + continue; + } + JSONObject jsonObject = JSON.parseObject(orderDetailStr); + ZlbOrderDetailResp data = JSON.parseObject(jsonObject.getString("data"), ZlbOrderDetailResp.class); + if (Objects.isNull(data)) { + continue; + } + if (Objects.equals(data.getState(), 2)) { + order.setIsPay(1); + result.add(order); + } else { + order.setIsPay(2); + result.add(order); + } + } + if (CollectionUtils.isNotEmpty(result)) { + zlbOrderInfoManage.updateBatchById(result); + } + + taskResult.setSummary("订单查询成功!"); + return taskResult; + } +} diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderTask.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderTask.java index 21d48e5..7222f93 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderTask.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbOrderTask.java @@ -157,6 +157,7 @@ public class ZlbOrderTask extends BaseScheduleTaskTemplate { redisTemplate.expire(redisKey, 120, TimeUnit.SECONDS); ZlbPayOrder zlbPayOrder = new ZlbPayOrder(); zlbPayOrder.setName(name); + zlbPayOrder.setOrderId(orderId); zlbPayOrder.setDay(DateUtils.getDateFromDate(LocalDate.now().plusDays(1))); zlbPayOrder.setVenues("江体"); zlbPayOrder.setPlaceName(placeName); diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteDayTask.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteDayTask.java index c4127c0..2e75f32 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteDayTask.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbSiteDayTask.java @@ -56,6 +56,7 @@ public class ZlbSiteDayTask extends BaseScheduleTaskTemplate { String day = DateUtils.format(date, DateUtils.ENUM_FORMAT_YMD); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(ZlbPayOrder::getDay, day); + wrapper.eq(ZlbPayOrder::getIsPay, 1); wrapper.orderByAsc(ZlbPayOrder::getTime); List zlbPayOrders = zlbOrderInfoMapper.selectList(wrapper); if (!zlbPayOrders.isEmpty()){ diff --git a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java index 40ffcd8..6df2e24 100644 --- a/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java +++ b/src/main/java/com/xiang/service/module/jntyzx/zlb/schedule/ZlbTaskConfig.java @@ -17,6 +17,7 @@ public class ZlbTaskConfig { private final ZlbSiteDayTask zlbSiteDayTask; private final ZlbOrderTask zlbOrderTask; private final ZlbUserConfigTask zlbUserConfigTask; + private final ZlbOrderQueryTask zlbOrderQueryTask; /** * token续期 @@ -71,4 +72,13 @@ public class ZlbTaskConfig { public void zlbUserConfig() { zlbUserConfigTask.run(); } + + /** + * 9:05查询订单是否已经支付 + */ + @Scheduled(cron = "0 5 9 * * ?") + @GetMapping("/zlbOrderQueryTask") + public void zlbOrderQueryTask() { + zlbOrderQueryTask.run(); + } }