取消订单
parent
802fcd5608
commit
af1ff014cd
|
|
@ -195,8 +195,10 @@ public class OrderInfoController {
|
||||||
* @param orderId 订单Id
|
* @param orderId 订单Id
|
||||||
*/
|
*/
|
||||||
@GetMapping("/cancel")
|
@GetMapping("/cancel")
|
||||||
public R<?> cancel(@RequestParam("orderId") Long orderId) {
|
public R<?> cancel(@RequestParam("orderId") Long orderId,
|
||||||
orderInfoService.cancel(orderId);
|
@RequestParam(value = "reason", required = false) String reason
|
||||||
|
) {
|
||||||
|
orderInfoService.cancel(orderId, reason);
|
||||||
return R.success();
|
return R.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@ public class OrderInfoEntity {
|
||||||
* 订单状态; 字典代码:order_status
|
* 订单状态; 字典代码:order_status
|
||||||
*/
|
*/
|
||||||
private OrderStatus orderStatus;
|
private OrderStatus orderStatus;
|
||||||
|
private String cancelReason;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 看料员 Id; sys_user.id
|
* 看料员 Id; sys_user.id
|
||||||
|
|
|
||||||
|
|
@ -841,25 +841,47 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void cancel(Long orderId) {
|
public void cancel(Long orderId, String reason) {
|
||||||
OrderInfoEntity orderInfo = this.getById(orderId);
|
OrderInfoEntity orderInfo = this.getById(orderId);
|
||||||
Assert.notNull(orderInfo, () -> Exceptions.clierr("订单不存在"));
|
Assert.notNull(orderInfo, () -> Exceptions.clierr("订单不存在"));
|
||||||
OrderStatus orderStatus = orderInfo.getOrderStatus();
|
OrderStatus orderStatus = orderInfo.getOrderStatus();
|
||||||
Assert.isTrue(orderStatus == OrderStatus.YiYuYue
|
Assert.isTrue(orderStatus == OrderStatus.YiYuYue
|
||||||
|| orderStatus == OrderStatus.DaiPaiDan
|
|| orderStatus == OrderStatus.DaiPaiDan
|
||||||
|| orderStatus == OrderStatus.DaiJieDan
|
|| orderStatus == OrderStatus.DaiJieDan
|
||||||
|| orderStatus == OrderStatus.YiJieDan,
|
|| orderStatus == OrderStatus.YiJieDan
|
||||||
|
|| orderStatus == OrderStatus.QingYunZhong,
|
||||||
|
() -> Exceptions.clierr("当前订单状态,无法取消"));
|
||||||
|
if (!SecurityUtil.isAdmin()) {
|
||||||
|
Assert.isFalse(orderStatus == OrderStatus.QingYunZhong,
|
||||||
() -> Exceptions.clierr("当前订单状态,无法取消"));
|
() -> Exceptions.clierr("当前订单状态,无法取消"));
|
||||||
AuditStatus auditStatus = orderInfo.getAuditStatus();
|
AuditStatus auditStatus = orderInfo.getAuditStatus();
|
||||||
Assert.isFalse(auditStatus == AuditStatus.TongGuo, () -> Exceptions.clierr("当前订单状态,无法取消"));
|
Assert.isFalse(auditStatus == AuditStatus.TongGuo, () -> Exceptions.clierr("当前订单状态,无法取消"));
|
||||||
|
}
|
||||||
this.updateById(new OrderInfoEntity()
|
this.updateById(new OrderInfoEntity()
|
||||||
.setId(orderInfo.getId())
|
.setId(orderInfo.getId())
|
||||||
|
.setCancelReason(reason)
|
||||||
.setOrderStatus(OrderStatus.YiQuXiao)
|
.setOrderStatus(OrderStatus.YiQuXiao)
|
||||||
);
|
);
|
||||||
Long driverId = orderInfo.getDriverId();
|
Long driverId = orderInfo.getDriverId();
|
||||||
Long truckId = orderInfo.getTruckId();
|
Long truckId = orderInfo.getTruckId();
|
||||||
if (driverId != null) baseMapper.busyDriver(driverId, Boolean.FALSE);
|
if (driverId != null) baseMapper.busyDriver(driverId, Boolean.FALSE);
|
||||||
if (truckId != null) baseMapper.busyTruck(truckId, Boolean.FALSE);
|
if (truckId != null) baseMapper.busyTruck(truckId, Boolean.FALSE);
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
String licensePlate = null;
|
||||||
|
if (truckId != null) {
|
||||||
|
BizTruckEntity truckInfo = baseMapper.getTruckInfo(truckId);
|
||||||
|
licensePlate = truckInfo.getLicensePlate();
|
||||||
|
}
|
||||||
|
Websocket.publish(new WsMsg().setEvent("down/order/status_change")
|
||||||
|
.setData(MapUtil.builder()
|
||||||
|
.put("sn", orderInfo.getSn())
|
||||||
|
.put("licensePlate", licensePlate)
|
||||||
|
.put("orderStatus", OrderStatus.YiJinChang)
|
||||||
|
.build()));
|
||||||
|
}).exceptionally(e -> {
|
||||||
|
log.error("订单状态改变事件发布失败,订单{},状态{}", orderInfo.getSn(), OrderStatus.YiQuXiao, e);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
// TODO 关闭 GPS 定位
|
// TODO 关闭 GPS 定位
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
if (truckId == null) {
|
if (truckId == null) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue