Commit 2e72796b authored by shiyu's avatar shiyu

检测订单是否超时未支付

parent 16faaf18
......@@ -3,6 +3,7 @@ package com.wwdz.ch.wx.impl.distribution;
import com.github.pagehelper.PageInfo;
import com.wechat.pay.java.service.payments.model.Transaction;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.ConsignSaleEnum;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.LogisticsEnum;
import com.wwdz.ch.core.type.PageSearchResult;
......@@ -12,10 +13,12 @@ import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.DistributorProfitDao;
import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorProfit;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderDetailVo;
......@@ -177,6 +180,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
DistributionOrder orderUpdateDto = new DistributionOrder();
orderUpdateDto.setDistributionOrderId(distributionOrderId);
orderUpdateDto.setLogisticsCode(dto.getLogisticsCode());
orderUpdateDto.setWaybill(dto.getWaybill());
orderUpdateDto.setDeliveryTime(new Date());
orderUpdateDto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SIGNED.getCode());
distributionOrderDao.update(orderUpdateDto);
......@@ -190,6 +194,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result findOrderOfDistributor(DistributionOrderRequestDto dto) {
try {
//检查是否有超时未支付订单
checkPrePayTimeOut(null, dto.getSellerId());
List<DistributionOrderVo> distributionOrderVoList = new ArrayList<>();
if (StringUtils.hasLength(dto.getSearchParam())) {
//判断查询条件是否为中文,是的话就根据商品名称模糊查询
......@@ -240,6 +246,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result findOrderDetailOfDistributor(DistributionOrderRequestDto dto) {
try {
//检查订单是否超时未付款
checkPrePayTimeOut(dto.getDistributionOrderId());
DistributionOrder distributionOrder = distributionOrderDao.findById(dto.getDistributionOrderId());
DistributionOrderDetailVo distributionOrderDetailVo = new DistributionOrderDetailVo();
EntityMapper.copyAttribute(distributionOrder, distributionOrderDetailVo);
......@@ -268,6 +276,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
Instant instant = date.toInstant().plus(Duration.ofHours(2));
Date time = Date.from(instant);
distributionOrderDetailVo.setPayEndTime(time);
distributionOrderDetailVo.setProfit(PriceUtil.convertDoubleToString(profit));
return Result.success(distributionOrderDetailVo);
} catch (Exception e) {
......@@ -280,6 +289,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result findOrderOfUser(DistributionOrderRequestDto dto) {
try {
//检查是否有超时未支付订单
checkPrePayTimeOut(dto.getBuyerId(), null);
List<DistributionOrderVo> distributionOrderVoList = new ArrayList<>();
if (StringUtils.hasLength(dto.getSearchParam())) {
//判断查询条件是否为中文,是的话就根据商品名称模糊查询
......@@ -332,6 +343,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result findOrderDetailOfUser(DistributionOrderRequestDto dto) {
try {
//检查订单是否超时未付款
checkPrePayTimeOut(dto.getDistributionOrderId());
DistributionOrder distributionOrder = distributionOrderDao.findById(dto.getDistributionOrderId());
DistributionOrderDetailVo distributionOrderDetailVo = new DistributionOrderDetailVo();
EntityMapper.copyAttribute(distributionOrder, distributionOrderDetailVo);
......@@ -348,10 +361,51 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
Instant instant = date.toInstant().plus(Duration.ofHours(2));
Date time = Date.from(instant);
distributionOrderDetailVo.setPayEndTime(time);
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
long diffInHours = diffInMillies / (60 * 60 * 1000);
if (diffInHours >= 2) {
//待支付超出两小时,订单取消
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
}
return Result.success(distributionOrderDetailVo);
} catch (Exception e) {
logger.error("查询用户订单详情失败 error : {}", e);
}
return Result.failed();
}
public void checkPrePayTimeOut(String distributionOrderId){
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
if (distributionOrder.getState() == DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode()) {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
long diffInHours = diffInMillies / (60 * 60 * 1000);
if (diffInHours >= 2) {
//待支付超出两小时,订单取消
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
}
}
}
/**
* 检查用户或者分销商的订单是否有超时未付款的
* @param userId
* @param distributorId
*/
public void checkPrePayTimeOut(Long userId, Long distributorId){
DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setBuyerId(userId);
dto.setSellerId(distributorId);
dto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode());
List<DistributionOrder> prePayList = distributionOrderDao.findByPage(dto);
prePayList.forEach(distributionOrder -> {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
long diffInHours = diffInMillies / (60 * 60 * 1000);
if (diffInHours >= 2) {
//待支付超出两小时,订单取消
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
}
});
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment