Commit cc090883 authored by shiyu's avatar shiyu

换货审批单

parent 1d839d01
package com.wwdz.ch.wx.impl.distribution; package com.wwdz.ch.wx.impl.distribution;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.api.WxAppletApi;
import com.wwdz.ch.core.consts.CommConsts; import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.ExchangeApplyOrderEnum; import com.wwdz.ch.core.consts.ExchangeApplyOrderEnum;
import com.wwdz.ch.core.entity.SupplierItemVo; import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.core.entity.exchange.ExchangeApplyOrderVo; import com.wwdz.ch.core.entity.exchange.ExchangeApplyOrderVo;
import com.wwdz.ch.core.notify.AliSmsSender;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.CacheUtil; import com.wwdz.ch.core.util.CacheUtil;
...@@ -18,6 +21,7 @@ import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDetailDao; ...@@ -18,6 +21,7 @@ import com.wwdz.ch.db.dao.exchange.ExchangeApplyOrderDetailDao;
import com.wwdz.ch.db.domain.User; import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.distribution.*; import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.ItemSimpleDto; import com.wwdz.ch.db.dto.request.ItemSimpleDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto; import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.db.dto.request.exchange.ExchangeApplyOrderRequestDto; import com.wwdz.ch.db.dto.request.exchange.ExchangeApplyOrderRequestDto;
import com.wwdz.ch.wx.entity.request.ExchangeRequestDto; import com.wwdz.ch.wx.entity.request.ExchangeRequestDto;
...@@ -60,6 +64,12 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -60,6 +64,12 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
@Autowired @Autowired
CacheUtil cacheUtil; CacheUtil cacheUtil;
@Autowired
AliSmsSender aliSmsSender;
@Autowired
WxAppletApi wxAppletApi;
@Transactional @Transactional
@Override @Override
public Result applyExchange(ExchangeApplyOrderRequestDto dto) { public Result applyExchange(ExchangeApplyOrderRequestDto dto) {
...@@ -105,6 +115,15 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -105,6 +115,15 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
exchangeApplyOrderDetail.setUpdateTime(now); exchangeApplyOrderDetail.setUpdateTime(now);
exchangeApplyOrderDetailDao.insert(exchangeApplyOrderDetail); exchangeApplyOrderDetailDao.insert(exchangeApplyOrderDetail);
} }
//发短信通知受理方
try {
String url = wxAppletApi.getUrlLink("/pages/saleExchangeApplyOrder/index",null);
String msg = "您有一个换货申请待审批," + "请前往"+ url + "查看";
aliSmsSender.sendSms(dto.getTargetUserId(), msg);
} catch (Exception e) {
logger.info(">>>>>>>>> 用户id:{}, 发送换货申请待审批通知短信失败 <<<<<<<<<", dto.getTargetUserId());
}
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("exchangeApplyOrderId", exchangeApplyOrderId); map.put("exchangeApplyOrderId", exchangeApplyOrderId);
return Result.success(map); return Result.success(map);
...@@ -223,6 +242,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -223,6 +242,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
@Override @Override
public Result findList(ExchangeApplyOrderRequestDto dto) { public Result findList(ExchangeApplyOrderRequestDto dto) {
try { try {
//检查用户是否有未审批的申请单
checkHandleTimeOut(dto.getUserId());
ExchangeApplyOrderRequestDto queryDto = new ExchangeApplyOrderRequestDto(); ExchangeApplyOrderRequestDto queryDto = new ExchangeApplyOrderRequestDto();
//我收到的申请单 //我收到的申请单
if (dto.getType() == ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getCode()) { if (dto.getType() == ExchangeApplyOrderEnum.TypeEnum.RECEIVE.getCode()) {
...@@ -237,6 +258,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -237,6 +258,7 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
PageInfo pageInfo = new PageInfo<>(exchangeApplyOrderList); PageInfo pageInfo = new PageInfo<>(exchangeApplyOrderList);
List<ExchangeApplyOrderVo> exchangeApplyOrderVoList = new ArrayList<>(); List<ExchangeApplyOrderVo> exchangeApplyOrderVoList = new ArrayList<>();
for (ExchangeApplyOrder exchangeApplyOrder : exchangeApplyOrderList) { for (ExchangeApplyOrder exchangeApplyOrder : exchangeApplyOrderList) {
checkHandleTimeOutByOrderId(exchangeApplyOrder.getExchangeApplyOrderId());
ExchangeApplyOrderVo exchangeApplyOrderVo = new ExchangeApplyOrderVo(); ExchangeApplyOrderVo exchangeApplyOrderVo = new ExchangeApplyOrderVo();
EntityMapper.copyAttribute(exchangeApplyOrder, exchangeApplyOrderVo); EntityMapper.copyAttribute(exchangeApplyOrder, exchangeApplyOrderVo);
//交换的目标商品 //交换的目标商品
...@@ -304,8 +326,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -304,8 +326,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
exchangeApplyOrderVo.setStateLinkDesc("前往订单详情"); exchangeApplyOrderVo.setStateLinkDesc("前往订单详情");
} }
//处理申请的截止时间 48小时内 //处理申请的截止时间 48小时内
Date now = new Date(); Date date = exchangeApplyOrder.getCreateTime();
Instant instant = now.toInstant().plus(Duration.ofHours(48)); Instant instant = date.toInstant().plus(Duration.ofHours(48));
Date time = Date.from(instant); Date time = Date.from(instant);
exchangeApplyOrderVo.setExpireTime(time); exchangeApplyOrderVo.setExpireTime(time);
exchangeApplyOrderVoList.add(exchangeApplyOrderVo); exchangeApplyOrderVoList.add(exchangeApplyOrderVo);
...@@ -321,6 +343,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -321,6 +343,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
@Override @Override
public Result findDetail(ExchangeApplyOrderRequestDto dto) { public Result findDetail(ExchangeApplyOrderRequestDto dto) {
try { try {
//检查该订单是否超时未审批
checkHandleTimeOutByOrderId(dto.getExchangeApplyOrderId());
ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByOrderId(dto.getExchangeApplyOrderId()); ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByOrderId(dto.getExchangeApplyOrderId());
ExchangeApplyOrderVo exchangeApplyOrderVo = new ExchangeApplyOrderVo(); ExchangeApplyOrderVo exchangeApplyOrderVo = new ExchangeApplyOrderVo();
EntityMapper.copyAttribute(exchangeApplyOrder, exchangeApplyOrderVo); EntityMapper.copyAttribute(exchangeApplyOrder, exchangeApplyOrderVo);
...@@ -391,8 +415,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -391,8 +415,8 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
} }
//处理申请的截止时间 48小时内 //处理申请的截止时间 48小时内
Date now = new Date(); Date date = exchangeApplyOrder.getCreateTime();
Instant instant = now.toInstant().plus(Duration.ofHours(48)); Instant instant = date.toInstant().plus(Duration.ofHours(48));
Date time = Date.from(instant); Date time = Date.from(instant);
exchangeApplyOrderVo.setExpireTime(time); exchangeApplyOrderVo.setExpireTime(time);
return Result.success(exchangeApplyOrderVo); return Result.success(exchangeApplyOrderVo);
...@@ -401,4 +425,48 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService ...@@ -401,4 +425,48 @@ public class ExchangeApplyOrderServiceImpl implements ExchangeApplyOrderService
} }
return Result.failed(); return Result.failed();
} }
/**
* 检查受理方是否有超时未审批的订单,自动取消
* @param userId
*/
private void checkHandleTimeOut(Long userId){
ExchangeApplyOrderRequestDto queryDto = new ExchangeApplyOrderRequestDto();
queryDto.setTargetUserId(userId);
queryDto.setState(ExchangeApplyOrderEnum.StateEnum.PRE_HANDLE.getCode());
List<ExchangeApplyOrder> exchangeApplyOrderList = exchangeApplyOrderDao.findByPage(queryDto);
exchangeApplyOrderList.forEach(exchangeApplyOrder -> {
String orderId = exchangeApplyOrder.getExchangeApplyOrderId();
long diffInMillies = Math.abs(new Date().getTime() - exchangeApplyOrder.getCreateTime().getTime());
//超出48小时未处理审批单,订单取消
long diffInHours = diffInMillies / (60 * 1000 * 60);
if (diffInHours >= 48) {
//取消申请单,把订单明细设置为无效
exchangeApplyOrderDao.updateState(orderId, ExchangeApplyOrderEnum.StateEnum.DISAGREE.getCode());
exchangeApplyOrderDetailDao.updateInValid(orderId);
}
});
}
/**
* 检查该订单是否超时未审批,自动取消
* @param exchangeApplyOrderId
*/
private void checkHandleTimeOutByOrderId(String exchangeApplyOrderId){
ExchangeApplyOrderRequestDto queryDto = new ExchangeApplyOrderRequestDto();
queryDto.setExchangeApplyOrderId(exchangeApplyOrderId);
ExchangeApplyOrder exchangeApplyOrder = exchangeApplyOrderDao.findByExchangeOrderId(exchangeApplyOrderId);
if (exchangeApplyOrder.getState() == ExchangeApplyOrderEnum.StateEnum.PRE_HANDLE.getCode()) {
long diffInMillies = Math.abs(new Date().getTime() - exchangeApplyOrder.getCreateTime().getTime());
//超出48小时未处理审批单,订单取消
long diffInHours = diffInMillies / (60 * 1000 * 60);
if (diffInHours >= 48) {
//取消申请单,把订单明细设置为无效
exchangeApplyOrderDao.updateState(exchangeApplyOrderId, ExchangeApplyOrderEnum.StateEnum.DISAGREE.getCode());
exchangeApplyOrderDetailDao.updateInValid(exchangeApplyOrderId);
}
}
}
} }
...@@ -220,7 +220,7 @@ public class SupplierItemServiceImpl implements SupplierItemService { ...@@ -220,7 +220,7 @@ public class SupplierItemServiceImpl implements SupplierItemService {
//库存要大于0 //库存要大于0
dto.setStock(0); dto.setStock(0);
//必须要有官方估价才能展示在交换列表 //必须要有官方估价才能展示在交换列表
dto.setOfficialEstimatedPriceNotNull(true); // dto.setOfficialEstimatedPriceNotNull(true);
} }
String viewKey = dto.getUserId() + ":exchangeItemList"; String viewKey = dto.getUserId() + ":exchangeItemList";
if (dto.getPage() == 1) { if (dto.getPage() == 1) {
......
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