package com.nova.sankuai.service.impl;
|
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.nova.sankuai.domain.api.yangqianguan.YqgUtil;
|
import com.nova.sankuai.domain.api.yangqianguan.dto.RepayResultReturnDto;
|
import com.nova.sankuai.domain.entity.YqgRepayOrder;
|
import com.nova.sankuai.domain.entity.YqgRepayOrderDetail;
|
import com.nova.sankuai.infra.mapper.YqgRepayOrderDetailMapper;
|
import com.nova.sankuai.infra.mapper.YqgRepayOrderMapper;
|
import com.nova.sankuai.service.IYqgRepayOrderService;
|
import lombok.AllArgsConstructor;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author weikangdi
|
* @create 2022/6/9
|
*/
|
@Service
|
@AllArgsConstructor
|
public class YqgRepayOrderServiceImpl extends ServiceImpl<YqgRepayOrderMapper, YqgRepayOrder> implements IYqgRepayOrderService {
|
|
private final YqgRepayOrderDetailMapper yqgRepayOrderDetailMapper;
|
|
private final YqgRepayOrderMapper yqgRepayOrderMapper;
|
|
private static final Logger yqgLog = LoggerFactory.getLogger("yqgLogger");
|
|
private static final int CLOSE_LIMIT = 30;
|
|
private final YqgUtil yqgUtil;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void createRepayOrderDetail(YqgRepayOrder yqgRepayOrder, List<String> termList) {
|
for (String term : termList) {
|
YqgRepayOrderDetail yqgRepayOrderDetail = new YqgRepayOrderDetail();
|
yqgRepayOrderDetail.setOrderNo(yqgRepayOrder.getOrderNo());
|
yqgRepayOrderDetail.setCapitalResultId(yqgRepayOrder.getCapitalResultId());
|
yqgRepayOrderDetail.setStatus(YqgRepayOrderDetail.STATUS_WAIT);
|
yqgRepayOrderDetail.setPeriodNo(term);
|
yqgRepayOrderDetail.setRepayApplyNo(yqgRepayOrder.getRepayApplyNo());
|
yqgRepayOrderDetail.setRepayNo(yqgRepayOrder.getRepayNo());
|
yqgRepayOrderDetail.setCreationDate(new Date());
|
yqgRepayOrderDetail.setLastUpdatedDate(new Date());
|
yqgRepayOrderDetailMapper.insert(yqgRepayOrderDetail);
|
}
|
}
|
|
@Override
|
public void closeYqgRepayOrder() {
|
String logNumber = IdUtil.randomUUID();
|
Date date = DateUtil.offsetMinute(new Date(), -CLOSE_LIMIT);
|
yqgLog.info(logNumber + "定时关闭洋钱罐过期还款申请订单开始: " + "关闭" + date + "之前创建的初始化还款订单");
|
List<YqgRepayOrder> yqgRepayOrders = yqgRepayOrderMapper.selectCloseOrder(date);
|
for (YqgRepayOrder yqgRepayOrder : yqgRepayOrders) {
|
try {
|
yqgRepayOrder.setLastUpdatedDate(new Date());
|
yqgRepayOrder.setStatus(YqgRepayOrder.STATUS_FAIL);
|
yqgRepayOrder.setRemark("短信校验超时,关闭申请");
|
yqgRepayOrderMapper.update(null, Wrappers.<YqgRepayOrder>lambdaUpdate()
|
.set(YqgRepayOrder::getLastUpdatedDate, yqgRepayOrder.getLastUpdatedDate())
|
.set(YqgRepayOrder::getStatus, yqgRepayOrder.getStatus())
|
.set(YqgRepayOrder::getRemark, yqgRepayOrder.getRemark())
|
.eq(YqgRepayOrder::getId, yqgRepayOrder.getId()));
|
RepayResultReturnDto feedBackDto = RepayResultReturnDto.parseDto(yqgRepayOrder, null);
|
if (feedBackDto != null) {
|
yqgUtil.repayResultFeedBack(feedBackDto, yqgLog, logNumber);
|
}
|
} catch (Exception e) {
|
yqgLog.error(logNumber + "定时关闭洋钱罐过期还款申请订单失败:" + yqgRepayOrder.toString(), e);
|
}
|
}
|
yqgLog.info(logNumber + "定时关闭洋钱罐过期还款申请订单结束");
|
}
|
|
}
|