嗨森逛服务
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.
hai-server/hai-schedule/src/main/java/com/hai/schedule/HighRechargeOrderSchedule.java

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);
}
}
}
}