You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
8.0 KiB
183 lines
8.0 KiB
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<String, Object> map = new HashMap<>();
|
|
map.put("payStatus", String.valueOf(102));
|
|
map.put("rechargeStatus", String.valueOf(205));
|
|
List<OutRechargeOrder> orderList = outRechargeOrderService.getListRechargeOrder(map);
|
|
if (orderList.size() > 0) {
|
|
for (OutRechargeOrder order : orderList) {
|
|
try {
|
|
// 查询充值子订单
|
|
Map<String, Object> childOrderMap = new HashMap<>();
|
|
childOrderMap.put("parent_order_id", order.getId());
|
|
childOrderMap.put("status", 102);
|
|
|
|
List<OutRechargeChildOrder> 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<HighOrder> 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);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|