Commit 4a039366 authored by shiyu's avatar shiyu

寄售单检测

parent cea5f99e
...@@ -75,6 +75,9 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -75,6 +75,9 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
@Override @Override
public Result findList(ConsignSaleRequestDto dto) { public Result findList(ConsignSaleRequestDto dto) {
try { try {
//检查用户未确认的寄售单是否超时,只检查一页的数据,并非全量数据
checkTimeOutForCancel();
List<ConsignSale> list = consignSaleDao.findByPage(dto); List<ConsignSale> list = consignSaleDao.findByPage(dto);
PageInfo<ConsignSale> pageInfo = new PageInfo<>(list); PageInfo<ConsignSale> pageInfo = new PageInfo<>(list);
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
...@@ -379,9 +382,61 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -379,9 +382,61 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
*/ */
private void checkTimeOutForCancel(){ private void checkTimeOutForCancel(){
//查询图文估计待用户确认的订单 //查询图文估计待用户确认的订单
ConsignSaleRequestDto imgValuateRequestDto = new ConsignSaleRequestDto();
imgValuateRequestDto.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode());
List<ConsignSale> waitConfirmList = consignSaleDao.findImgValuateConfirmOrdersByPage(imgValuateRequestDto);
for (ConsignSale consignSale : waitConfirmList) {
//查询图文估价的时间
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(consignSale.getSaleId(), ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_VALUATE.getCode());
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(">>>>>> 查询寄售单列表,检测到寄售单号:{} 图文估价超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
}
}
//查询实物鉴定待用户确认的订单
ConsignSaleRequestDto identifyRequestDto = new ConsignSaleRequestDto();
identifyRequestDto.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.IDENTIFY.getCode());
List<ConsignSale> waitIdentifyConfirmList = consignSaleDao.findValuateConfirmOrdersByPage(identifyRequestDto);
for (ConsignSale consignSale : waitIdentifyConfirmList) {
//查询实物鉴定的时间
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(consignSale.getSaleId(), ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_IDENTIFY.getCode());
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 consignSaleRequestDto = new ConsignSaleRequestDto();
consignSaleRequestDto.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode()); consignSaleRequestDto.setSaleId(consignSale.getSaleId());
List<ConsignSale> list = consignSaleDao.findImgValuateConfirmOrdersByPage(consignSaleRequestDto); timeOutForCancel(consignSaleRequestDto);
logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 实物鉴定超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
}
}
}
@Transactional
public Result timeOutForCancel(ConsignSaleRequestDto dto) {
try {
ConsignSale consignSale = new ConsignSale();
consignSale.setSaleId(dto.getSaleId());
consignSale.setCustomState(ConsignSaleEnum.SaleForUserStateEnum.CANCEL.getCode());
consignSale.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.CANCEL.getCode());
consignSaleDao.update(consignSale);
//用户超时未确认,取消寄售单
consignSaleRecordDao.insert(dto.getSaleId(), "超时未确认,取消寄售", ConsignSaleEnum.OperateTypeEnum.TIME_OUT_CANCEL.getCode(), null);
return Result.success();
} catch (Exception e) {
logger.error("用户超时未确认,取消寄售单 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return Result.failed();
} }
} }
...@@ -27,4 +27,12 @@ public interface ConsignSaleRecordDao { ...@@ -27,4 +27,12 @@ public interface ConsignSaleRecordDao {
* @return * @return
*/ */
List<ConsignSaleRecord> find(String saleId); List<ConsignSaleRecord> find(String saleId);
/**
* 根据操作类型查询记录
* @param saleId
* @return
*/
ConsignSaleRecord findByType(String saleId, int type);
} }
...@@ -86,7 +86,7 @@ public class ConsignSaleDaoImpl implements ConsignSaleDao { ...@@ -86,7 +86,7 @@ public class ConsignSaleDaoImpl implements ConsignSaleDao {
ConsignSaleExample.Criteria criteria = example.createCriteria(); ConsignSaleExample.Criteria criteria = example.createCriteria();
JdbcHelper.ifPresent(dto.getUserId(), criteria::andUserIdEqualTo); JdbcHelper.ifPresent(dto.getUserId(), criteria::andUserIdEqualTo);
criteria.andSystemStateEqualTo(dto.getSystemState()); criteria.andSystemStateEqualTo(dto.getSystemState());
criteria.andImgValuationIsNotNull(); criteria.andValuationIsNotNull();
example.orderBy(" sale_time asc"); example.orderBy(" sale_time asc");
PageHelper.startPage(dto.getPage(), dto.getLimit()); PageHelper.startPage(dto.getPage(), dto.getLimit());
return consignSaleMapper.selectByExample(example); return consignSaleMapper.selectByExample(example);
......
...@@ -48,6 +48,15 @@ public class ConsignSaleRecordDaoImpl implements ConsignSaleRecordDao { ...@@ -48,6 +48,15 @@ public class ConsignSaleRecordDaoImpl implements ConsignSaleRecordDao {
return consignSaleRecordMapper.selectByExample(example); return consignSaleRecordMapper.selectByExample(example);
} }
@Override
public ConsignSaleRecord findByType(String saleId, int type) {
ConsignSaleRecordExample example = new ConsignSaleRecordExample();
ConsignSaleRecordExample.Criteria criteria = example.createCriteria();
criteria.andSaleIdEqualTo(saleId);
criteria.andTypeEqualTo(type);
return consignSaleRecordMapper.selectOneByExample(example);
}
} }
...@@ -128,6 +128,46 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -128,6 +128,46 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
@Override @Override
public Result findList(ConsignSaleRequestDto dto) { public Result findList(ConsignSaleRequestDto dto) {
try { try {
//检查是否有超时未确认的寄售单,更新寄售单状态
//查询图文鉴定后待用户确认的订单
ConsignSaleRequestDto imgValuateConfirmOrderDto = new ConsignSaleRequestDto();
imgValuateConfirmOrderDto.setUserId(dto.getUserId());
imgValuateConfirmOrderDto.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.WAIT_IMG_VALUATE.getCode());
List<ConsignSale> waitConfirmList = consignSaleDao.findImgValuateConfirmOrdersByPage(imgValuateConfirmOrderDto);
for (ConsignSale consignSale : waitConfirmList) {
//查询图文估价的时间
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(consignSale.getSaleId(), ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_VALUATE.getCode());
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) {
//超时未确认取消
timeOutForCancel(dto);
logger.info(">>>>>> 查询寄售单列表,检测到寄售单号:{} 图文估价超时未确认,更改寄售单状态为已取消,并记录操作节点 <<<<<<<", consignSale.getSaleId());
}
}
//查询实物鉴定后待用户确认的订单
ConsignSaleRequestDto identifyConfirmOrderDto = new ConsignSaleRequestDto();
identifyConfirmOrderDto.setUserId(dto.getUserId());
identifyConfirmOrderDto.setSystemState(ConsignSaleEnum.SaleForSysStateEnum.IDENTIFY.getCode());
List<ConsignSale> waitIdentifyConfirmList = consignSaleDao.findValuateConfirmOrdersByPage(identifyConfirmOrderDto);
for (ConsignSale consignSale : waitIdentifyConfirmList) {
//查询实物鉴定的时间
ConsignSaleRecord consignSaleRecord = consignSaleRecordDao.findByType(consignSale.getSaleId(), ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_IDENTIFY.getCode());
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) {
//超时未确认取消
timeOutForCancel(dto);
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