Commit c059f034 authored by shiyu's avatar shiyu

后台寄售单详情查询时检测是否超时

parent 1b6be4a2
...@@ -163,11 +163,16 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -163,11 +163,16 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
@Override @Override
public Result findDetail(ConsignSaleRequestDto dto) { public Result findDetail(ConsignSaleRequestDto dto) {
try { try {
ConsignSaleDetailVo consignSaleDetailVo = new ConsignSaleDetailVo(); ConsignSaleDetailVo consignSaleDetailVo = new ConsignSaleDetailVo();
ConsignSale consignSale = consignSaleDao.findById(dto.getSaleId()); ConsignSale consignSale = consignSaleDao.findById(dto.getSaleId());
if (ObjectUtils.isEmpty(consignSale)) { if (ObjectUtils.isEmpty(consignSale)) {
return Result.failed("寄售单不存在"); return Result.failed("寄售单不存在");
} }
//检查该寄售单是否确认超时,超时则取消寄售
checkTimeOut(dto.getSaleId());
long itemId = consignSale.getItemId(); long itemId = consignSale.getItemId();
CoinRequestDto coinRequestDto = new CoinRequestDto(); CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setId(itemId); coinRequestDto.setId(itemId);
...@@ -186,9 +191,9 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -186,9 +191,9 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
consignSaleDetailVo.setSystemStateName(ConsignSaleEnum.SaleForSysStateEnum.getNameByCode(consignSale.getSystemState())); consignSaleDetailVo.setSystemStateName(ConsignSaleEnum.SaleForSysStateEnum.getNameByCode(consignSale.getSystemState()));
consignSaleDetailVo.setItemVo(itemResult.getData()); consignSaleDetailVo.setItemVo(itemResult.getData());
//查询寄售单信息 //查询寄售单信息
List<ConsignSaleRecord> consignSaleRecords = consignSaleRecordDao.find(dto.getSaleId()); List<ConsignSaleRecord> consignSaleRecords = consignSaleRecordDao.find(dto.getSaleId());
//判断是否已经有了报价 //判断是否已经有了报价
if (consignSale.getSystemState() == ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode()) { if (consignSale.getSystemState() == ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode()) {
long count = consignSaleRecords.stream().filter(consignSaleRecord -> consignSaleRecord.getType() == ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode()).count(); long count = consignSaleRecords.stream().filter(consignSaleRecord -> consignSaleRecord.getType() == ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode()).count();
...@@ -505,6 +510,49 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -505,6 +510,49 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
} }
} }
/**
* 检查处于图文鉴定和实物鉴定状态的订单,用户是否超出24小时确认的时间范围'
* @param saleId
*/
private void checkTimeOut(String saleId){
//查询订单
ConsignSale consignSale = consignSaleDao.findById(saleId);
if (consignSale.getSystemState() == ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode()) {
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(saleId, ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_VALUATE.getCode());
if (consignSaleRecord != null && consignSaleRecord.getCreateTime() != null) {
Date startTime = consignSaleRecord.getCreateTime();
Date endTime = new Date();
long diffInMillies = Math.abs(endTime.getTime() - startTime.getTime());
long diffInHours = diffInMillies / (60 * 60 * 1000);
if (diffInHours >= 24) {
//超时未确认取消寄售
ConsignSaleRequestDto consignSaleRequestDto = new ConsignSaleRequestDto();
consignSaleRequestDto.setSaleId(saleId);
timeOutForCancel(consignSaleRequestDto);
logger.info(">>>>>> 检测到寄售单号:{} 图文估价超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", saleId);
}
}
} else if (consignSale.getSystemState() == ConsignSaleEnum.SaleForSysStateEnum.IDENTIFY.getCode()) {
//查询实物鉴定待用户确认的订单
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(saleId, ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_IDENTIFY.getCode());
if (consignSaleRecord != null && consignSaleRecord.getCreateTime() != null) {
Date startTime = consignSaleRecord.getCreateTime();
Date endTime = new Date();
long diffInMillies = Math.abs(endTime.getTime() - startTime.getTime());
long diffInHours = diffInMillies / (60 * 60 * 1000);
if (diffInHours >= 24) {
//超时未确认取消
ConsignSaleRequestDto consignSaleRequestDto = new ConsignSaleRequestDto();
consignSaleRequestDto.setSaleId(consignSale.getSaleId());
timeOutForCancel(consignSaleRequestDto);
logger.info(">>>>>> 检测到寄售单号:{} 实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", saleId);
}
}
}
}
@Transactional @Transactional
public Result timeOutForCancel(ConsignSaleRequestDto dto) { public Result timeOutForCancel(ConsignSaleRequestDto dto) {
try { try {
......
...@@ -75,7 +75,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -75,7 +75,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
if (StringUtils.isEmpty(user.getMobile())) { if (StringUtils.isEmpty(user.getMobile())) {
return Result.failed("请先绑定手机号"); return Result.failed("请先绑定手机号");
} }
ConsignSale consignSale = new ConsignSale(); ConsignSale consignSale = new ConsignSale();
EntityMapper.copyAttribute(dto, consignSale); EntityMapper.copyAttribute(dto, consignSale);
Date now = new Date(); Date now = new Date();
...@@ -151,7 +150,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -151,7 +150,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 图文估价超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId()); logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 图文估价超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
} }
} }
//查询实物鉴定后待用户确认的订单 //查询实物鉴定后待用户确认的订单
ConsignSaleRequestDto identifyConfirmOrderDto = new ConsignSaleRequestDto(); ConsignSaleRequestDto identifyConfirmOrderDto = new ConsignSaleRequestDto();
identifyConfirmOrderDto.setUserId(dto.getUserId()); identifyConfirmOrderDto.setUserId(dto.getUserId());
...@@ -170,8 +168,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -170,8 +168,6 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId()); logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
} }
} }
if (StringUtils.hasLength(dto.getSearchParam())) { if (StringUtils.hasLength(dto.getSearchParam())) {
//判断查询条件是否为中文,是的话就根据商品名称模糊查询 //判断查询条件是否为中文,是的话就根据商品名称模糊查询
if (RegexUtil.isContainChinese(dto.getSearchParam())) { if (RegexUtil.isContainChinese(dto.getSearchParam())) {
......
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