|
@@ -36,10 +36,7 @@ import com.ylx.order.domain.vo.OrderStatusFlowVO;
|
|
|
import com.ylx.order.domain.vo.merchant.MerchantCancelOrderDTO;
|
|
import com.ylx.order.domain.vo.merchant.MerchantCancelOrderDTO;
|
|
|
import com.ylx.order.domain.vo.merchant.OrderCustomerPhoneVO;
|
|
import com.ylx.order.domain.vo.merchant.OrderCustomerPhoneVO;
|
|
|
import com.ylx.order.domain.vo.merchant.OrderPageVO;
|
|
import com.ylx.order.domain.vo.merchant.OrderPageVO;
|
|
|
-import com.ylx.order.enums.AfterSaleServiceStatusEnum;
|
|
|
|
|
-import com.ylx.order.enums.CustomerTagEnum;
|
|
|
|
|
-import com.ylx.order.enums.OrderStatusEnum;
|
|
|
|
|
-import com.ylx.order.enums.PaymentMethodEnum;
|
|
|
|
|
|
|
+import com.ylx.order.enums.*;
|
|
|
import com.ylx.order.mapper.TOrderMapper;
|
|
import com.ylx.order.mapper.TOrderMapper;
|
|
|
import com.ylx.order.service.IAfterSaleDisplay;
|
|
import com.ylx.order.service.IAfterSaleDisplay;
|
|
|
import com.ylx.order.service.IAfterSalesServiceService;
|
|
import com.ylx.order.service.IAfterSalesServiceService;
|
|
@@ -540,9 +537,9 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
order.setFinalAmount(finalAmount);
|
|
order.setFinalAmount(finalAmount);
|
|
|
order.setCouponId(dto.getCouponId());
|
|
order.setCouponId(dto.getCouponId());
|
|
|
order.setCreateTime(DateUtils.getNowDate());
|
|
order.setCreateTime(DateUtils.getNowDate());
|
|
|
- order.setStatus(0);
|
|
|
|
|
|
|
+ order.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode());
|
|
|
order.setExecStatus(0);
|
|
order.setExecStatus(0);
|
|
|
- order.setDispatchedStatus(0);
|
|
|
|
|
|
|
+ order.setDispatchedStatus(DispatchedStatusEnum.UN_DISPATCHED.getCode());
|
|
|
order.setPaymentMethod(dto.getPaymentMethod());
|
|
order.setPaymentMethod(dto.getPaymentMethod());
|
|
|
|
|
|
|
|
// 经纬度安全赋值
|
|
// 经纬度安全赋值
|
|
@@ -912,6 +909,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
Long orderId = dto.getId();
|
|
Long orderId = dto.getId();
|
|
|
TOrder order = validateAndGetOrder(dto.getId(), userId);
|
|
TOrder order = validateAndGetOrder(dto.getId(), userId);
|
|
|
|
|
|
|
|
|
|
+ // 判断当前订单状态是否为【待接单】,非待接单直接抛出异常(前端toast提示操作失败)
|
|
|
|
|
+ if (!ObjectUtil.equals(order.getStatus(), OrderStatusEnum.PENDING_ACCEPT.getCode())) {
|
|
|
|
|
+ throw new ServiceException("操作失败,请重试");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (ObjectUtil.equals(order.getStatus(), OrderStatusEnum.REJECTED.getCode())) {
|
|
if (ObjectUtil.equals(order.getStatus(), OrderStatusEnum.REJECTED.getCode())) {
|
|
|
throw new ServiceException("无需重复拒绝接单");
|
|
throw new ServiceException("无需重复拒绝接单");
|
|
|
}
|
|
}
|
|
@@ -948,6 +950,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
TOrder updateOrder = new TOrder();
|
|
TOrder updateOrder = new TOrder();
|
|
|
updateOrder.setId(orderId);
|
|
updateOrder.setId(orderId);
|
|
|
updateOrder.setStatus(OrderStatusEnum.PENDING_SERVICE.getCode());
|
|
updateOrder.setStatus(OrderStatusEnum.PENDING_SERVICE.getCode());
|
|
|
|
|
+ updateOrder.setDispatchedStatus(DispatchedStatusEnum.DISPATCHED.getCode());
|
|
|
updateOrder.setConfirmedTime(DateUtils.getNowLocalDateTime());
|
|
updateOrder.setConfirmedTime(DateUtils.getNowLocalDateTime());
|
|
|
updateOrder.setUpdateBy(wxLoginUser.getCNickName());
|
|
updateOrder.setUpdateBy(wxLoginUser.getCNickName());
|
|
|
updateOrder.setUpdateTime(DateUtils.getNowDate());
|
|
updateOrder.setUpdateTime(DateUtils.getNowDate());
|
|
@@ -963,7 +966,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
Long orderId = dto.getOrderId();
|
|
Long orderId = dto.getOrderId();
|
|
|
|
|
|
|
|
// 2. 查询订单:只查归属商户、未删除、手机号字段
|
|
// 2. 查询订单:只查归属商户、未删除、手机号字段
|
|
|
- TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class).select(TOrder::getId, TOrder::getMerchantId, TOrder::getContactPhoneNumber).eq(TOrder::getId, orderId).eq(TOrder::getMerchantId, merchantId).eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
+ TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class)
|
|
|
|
|
+ .select(TOrder::getId, TOrder::getMerchantId, TOrder::getContactPhoneNumber)
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getMerchantId, merchantId)
|
|
|
|
|
+ .eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
|
// 3. 校验订单
|
|
// 3. 校验订单
|
|
|
if (ObjectUtil.isNull(order)) {
|
|
if (ObjectUtil.isNull(order)) {
|
|
@@ -990,7 +997,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
String cancelReason = dto.getCancelReason();
|
|
String cancelReason = dto.getCancelReason();
|
|
|
|
|
|
|
|
// 2. 查询订单基础信息
|
|
// 2. 查询订单基础信息
|
|
|
- TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class).select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getUserId, TOrder::getFinalAmount, TOrder::getProjectId).eq(TOrder::getId, orderId).eq(TOrder::getMerchantId, merchantId).eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
+ TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class)
|
|
|
|
|
+ .select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getUserId, TOrder::getFinalAmount, TOrder::getProjectId)
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getMerchantId, merchantId)
|
|
|
|
|
+ .eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
|
// 订单不存在/不属于当前商户
|
|
// 订单不存在/不属于当前商户
|
|
|
if (ObjectUtil.isNull(order)) {
|
|
if (ObjectUtil.isNull(order)) {
|
|
@@ -1008,7 +1019,15 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
// 4. 更新订单为售后状态,并发乐观锁校验
|
|
// 4. 更新订单为售后状态,并发乐观锁校验
|
|
|
if (OrderStatusEnum.PENDING_SERVICE.getCode().equals(statusCode)) {
|
|
if (OrderStatusEnum.PENDING_SERVICE.getCode().equals(statusCode)) {
|
|
|
// ========== 分支1:待服务 → 退回待派单,无售后、无退款 ==========
|
|
// ========== 分支1:待服务 → 退回待派单,无售后、无退款 ==========
|
|
|
- LambdaUpdateWrapper<TOrder> updateWrapper = Wrappers.lambdaUpdate(TOrder.class).set(TOrder::getStatus, OrderStatusEnum.PENDING_DISPATCH.getCode()).set(TOrder::getCancelledTime, LocalDateTime.now()).set(TOrder::getCancelledReason, cancelReason).set(TOrder::getUpdateTime, LocalDateTime.now()).set(TOrder::getUpdateBy, loginUser.getCNickName()).eq(TOrder::getId, orderId).eq(TOrder::getStatus, statusCode);
|
|
|
|
|
|
|
+ LambdaUpdateWrapper<TOrder> updateWrapper = Wrappers.lambdaUpdate(TOrder.class)
|
|
|
|
|
+ .set(TOrder::getStatus, OrderStatusEnum.PENDING_DISPATCH.getCode())
|
|
|
|
|
+ .set(TOrder::getCancelledTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getCancelledReason, cancelReason)
|
|
|
|
|
+ .set(TOrder::getUpdateTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getUpdateBy, loginUser.getCNickName())
|
|
|
|
|
+ .set(TOrder::getDispatchedStatus,DispatchedStatusEnum.UN_DISPATCHED.getCode())
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getStatus, statusCode);
|
|
|
int row = baseMapper.update(null, updateWrapper);
|
|
int row = baseMapper.update(null, updateWrapper);
|
|
|
if (row <= 0) {
|
|
if (row <= 0) {
|
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
@@ -1016,7 +1035,13 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
} else if (OrderStatusEnum.IN_SERVICE.getCode().equals(statusCode)) {
|
|
} else if (OrderStatusEnum.IN_SERVICE.getCode().equals(statusCode)) {
|
|
|
// ========== 分支2:服务中 → 转售后、生成售后单、发起退款 ==========
|
|
// ========== 分支2:服务中 → 转售后、生成售后单、发起退款 ==========
|
|
|
// 1. 更新订单信息
|
|
// 1. 更新订单信息
|
|
|
- LambdaUpdateWrapper<TOrder> updateWrapper = Wrappers.lambdaUpdate(TOrder.class).set(TOrder::getCancelledTime, LocalDateTime.now()).set(TOrder::getCancelledReason, cancelReason).set(TOrder::getUpdateTime, LocalDateTime.now()).set(TOrder::getUpdateBy, loginUser.getCNickName()).eq(TOrder::getId, orderId).eq(TOrder::getStatus, statusCode);
|
|
|
|
|
|
|
+ LambdaUpdateWrapper<TOrder> updateWrapper = Wrappers.lambdaUpdate(TOrder.class)
|
|
|
|
|
+ .set(TOrder::getCancelledTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getCancelledReason, cancelReason)
|
|
|
|
|
+ .set(TOrder::getUpdateTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getUpdateBy, loginUser.getCNickName())
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getStatus, statusCode);
|
|
|
int row = baseMapper.update(null, updateWrapper);
|
|
int row = baseMapper.update(null, updateWrapper);
|
|
|
if (row <= 0) {
|
|
if (row <= 0) {
|
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
@@ -1040,7 +1065,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
Long merchantId = Long.parseLong(loginUser.getId());
|
|
Long merchantId = Long.parseLong(loginUser.getId());
|
|
|
Long orderId = dto.getOrderId();
|
|
Long orderId = dto.getOrderId();
|
|
|
|
|
|
|
|
- TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class).select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getArrivedTime).eq(TOrder::getId, orderId).eq(TOrder::getMerchantId, merchantId).eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
+ TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class)
|
|
|
|
|
+ .select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getArrivedTime)
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getMerchantId, merchantId)
|
|
|
|
|
+ .eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
if (ObjectUtil.isNull(order)) {
|
|
if (ObjectUtil.isNull(order)) {
|
|
|
throw new ServiceException("订单不存在或不属于当前商户");
|
|
throw new ServiceException("订单不存在或不属于当前商户");
|
|
|
}
|
|
}
|
|
@@ -1056,7 +1085,13 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 更新状态+服务开始时间
|
|
// 更新状态+服务开始时间
|
|
|
- LambdaUpdateWrapper<TOrder> update = Wrappers.lambdaUpdate(TOrder.class).set(TOrder::getStatus, OrderStatusEnum.IN_SERVICE.getCode()).set(TOrder::getStartTime, LocalDateTime.now()).set(TOrder::getUpdateTime, LocalDateTime.now()).eq(TOrder::getId, orderId).set(TOrder::getUpdateBy, loginUser.getCNickName()).eq(TOrder::getStatus, status);
|
|
|
|
|
|
|
+ LambdaUpdateWrapper<TOrder> update = Wrappers.lambdaUpdate(TOrder.class)
|
|
|
|
|
+ .set(TOrder::getStatus, OrderStatusEnum.IN_SERVICE.getCode())
|
|
|
|
|
+ .set(TOrder::getStartTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getUpdateTime, LocalDateTime.now())
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .set(TOrder::getUpdateBy, loginUser.getCNickName())
|
|
|
|
|
+ .eq(TOrder::getStatus, status);
|
|
|
int count = baseMapper.update(null, update);
|
|
int count = baseMapper.update(null, update);
|
|
|
if (count <= 0) {
|
|
if (count <= 0) {
|
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
@@ -1072,7 +1107,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
Long merchantId = Long.parseLong(loginUser.getId());
|
|
Long merchantId = Long.parseLong(loginUser.getId());
|
|
|
Long orderId = dto.getOrderId();
|
|
Long orderId = dto.getOrderId();
|
|
|
|
|
|
|
|
- TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class).select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getStartTime).eq(TOrder::getId, orderId).eq(TOrder::getMerchantId, merchantId).eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
|
|
|
|
+ TOrder order = baseMapper.selectOne(Wrappers.lambdaQuery(TOrder.class)
|
|
|
|
|
+ .select(TOrder::getId, TOrder::getMerchantId, TOrder::getStatus, TOrder::getStartTime)
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .eq(TOrder::getMerchantId, merchantId)
|
|
|
|
|
+ .eq(TOrder::getIsDelete, NOT_DELETE));
|
|
|
if (ObjectUtil.isNull(order)) {
|
|
if (ObjectUtil.isNull(order)) {
|
|
|
throw new ServiceException("订单不存在或不属于当前商户");
|
|
throw new ServiceException("订单不存在或不属于当前商户");
|
|
|
}
|
|
}
|
|
@@ -1088,7 +1127,13 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 更新状态、结束时间
|
|
// 更新状态、结束时间
|
|
|
- LambdaUpdateWrapper<TOrder> update = Wrappers.lambdaUpdate(TOrder.class).set(TOrder::getStatus, OrderStatusEnum.COMPLETED.getCode()).set(TOrder::getCompletedTime, LocalDateTime.now()).set(TOrder::getUpdateTime, LocalDateTime.now()).eq(TOrder::getId, orderId).set(TOrder::getUpdateBy, loginUser.getCNickName()).eq(TOrder::getStatus, status);
|
|
|
|
|
|
|
+ LambdaUpdateWrapper<TOrder> update = Wrappers.lambdaUpdate(TOrder.class)
|
|
|
|
|
+ .set(TOrder::getStatus, OrderStatusEnum.COMPLETED.getCode())
|
|
|
|
|
+ .set(TOrder::getCompletedTime, LocalDateTime.now())
|
|
|
|
|
+ .set(TOrder::getUpdateTime, LocalDateTime.now())
|
|
|
|
|
+ .eq(TOrder::getId, orderId)
|
|
|
|
|
+ .set(TOrder::getUpdateBy, loginUser.getCNickName())
|
|
|
|
|
+ .eq(TOrder::getStatus, status);
|
|
|
int count = baseMapper.update(null, update);
|
|
int count = baseMapper.update(null, update);
|
|
|
if (count <= 0) {
|
|
if (count <= 0) {
|
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|
|
throw new ServiceException("订单状态已变更,请刷新重试");
|