package com.hai.schedule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hai.common.utils.DateUtil; import com.hai.common.utils.IDGenerator; import com.hai.config.RechargeConfig; import com.hai.entity.HighChildOrder; import com.hai.entity.HighOrder; import com.hai.entity.OutRechargeChildOrder; import com.hai.entity.OutRechargeOrder; import com.hai.order.service.OrderService; import com.hai.service.OutRechargeChildOrderService; import com.hai.service.OutRechargeOrderService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @serviceName HighRechargeOrderSchedule.java * @author Sum1Dream * @version 1.0.0 * @Description // 充值订单定时任务 * @createTime 09:57 2023/1/13 **/ @Configuration public class HighRechargeOrderSchedule { Logger log = LoggerFactory.getLogger(HighRechargeOrderSchedule.class); @Resource private OutRechargeOrderService outRechargeOrderService; @Resource private OutRechargeChildOrderService rechargeChildOrderService; @Resource private OrderService orderService; /** * @return void * @Author Sum1Dream * @name cancelOrder.java * @Description // 定时发起 * @Date 14:18 2022/5/31 * @Param [] */ @Scheduled(cron = "0 0/5 * * * ?") //每5分钟执行一次 public void initRechargeOrder() { Map map = new HashMap<>(); map.put("payStatus", String.valueOf(102)); map.put("rechargeStatus", String.valueOf(205)); List orderList = outRechargeOrderService.getListRechargeOrder(map); if (orderList.size() > 0) { for (OutRechargeOrder order : orderList) { try { // 查询充值子订单 Map childOrderMap = new HashMap<>(); childOrderMap.put("parent_order_id", order.getId()); childOrderMap.put("status", 102); List childOrderList = rechargeChildOrderService.getListRechargeChildOrder(childOrderMap); System.out.println("话费定时任务 -> 判断是否存在已支付订单:订单id:" + order.getId()); if (childOrderList.size() == 0) { Date rechargeTime = order.getCreateTimed(); Date currentTime = new Date(); int hours = (int) ((currentTime.getTime() - rechargeTime.getTime()) / (1000 * 60 * 60)); // 充值时间小于72 if (hours < 72) { System.out.println("话费定时任务 -> 请求慢充:订单id:" + order.getId()); outRechargeOrderService.pollRequest(order); continue; } System.out.println("话费定时任务 -> 退款任务" + order.getId()); outRechargeOrderService.refundOrder(order.getId() , childOrderList.get(0)); } } catch (Exception e) { log.error("HighCouponSchedule --> expiredCoupon() error!", e); } } } System.out.println("话费定时任务 -> 结束任务"); } @Scheduled(cron = "0 0/30 * * * ?") //每30分钟执行一次 public void failRechargeOrder() { List highOrders = orderService.phoneErrorOrder(); JSONObject object; for (HighOrder order: highOrders) { try { object = new JSONObject(); OutRechargeOrder outRechargeOrder = outRechargeOrderService.findByOrderNo(order.getOrderNo()); OutRechargeChildOrder childOrder = outRechargeOrder.getOutRechargeChildOrders().get(0); if (outRechargeOrder.getPayStatus() == 102 && outRechargeOrder.getRechargeStatus() != 202) { if (outRechargeOrder.getOutRechargeChildOrders().size() == 0) { OutRechargeChildOrder outRechargeChildOrder = new OutRechargeChildOrder(); outRechargeChildOrder.setOrderNo("CZ" + DateUtil.date2String(new Date(), "yyyyMMddHHmmss") + IDGenerator.nextId(5)); outRechargeChildOrder.setParentOrderId(outRechargeOrder.getId()); outRechargeChildOrder.setUpdateTime(new Date()); outRechargeChildOrder.setCreateTime(new Date()); outRechargeOrderService.refundOrder(outRechargeOrder.getId() , outRechargeChildOrder); } else { if (childOrder.getStatus() != 101) { // 龙阅 if (childOrder.getRechargePlatform() == 2) { object.put("out_trade_nums" , childOrder.getOrderNo()); JSONObject jsonObject = RechargeConfig.checkOrderByLy(object); JSONArray objectJSONArray = jsonObject.getJSONArray("data"); JSONObject objectData = new JSONObject(); for (Object objects : objectJSONArray) { objectData = (JSONObject) objects; } if (objectData.size() == 0) { outRechargeOrderService.refundOrder(outRechargeOrder.getId() , childOrder); } else { // -1取消,0充值中 ,1充值成功,2充值失败,3部分成功 if (objectData.getInteger("state") == 2) { outRechargeOrderService.refundOrder(outRechargeOrder.getId() , childOrder); } else if (objectData.getInteger("state") == 1) { outRechargeOrderService.completeOrder(outRechargeOrder , childOrder); } } } // 嗨购 if (childOrder.getRechargePlatform() == 4) { object.put("orderid" , childOrder.getOrderNo()); JSONObject jsonObject = RechargeConfig.checkOrderByHg(object); if (jsonObject.getJSONArray("data") == null) { outRechargeOrderService.refundOrder(outRechargeOrder.getId() , childOrder); } else { JSONArray objectJSONArray = jsonObject.getJSONArray("data"); JSONObject objectData; for (Object objects : objectJSONArray) { objectData = (JSONObject) objects; // -1取消,0充值中 ,1充值成功,2充值失败,3部分成功 if (objectData.getInteger("status") == 2) { outRechargeOrderService.refundOrder(outRechargeOrder.getId() , childOrder); } else if (objectData.getInteger("status") == 1) { outRechargeOrderService.completeOrder(outRechargeOrder , childOrder); } } } } } } } } catch (Exception e) { log.error("HighCouponSchedule --> expiredCoupon() error!", e); } } } }