fix: 完成订单接口(飞行端完成限制);优化订单详情返回主订单状态;修复飞行任务更新状态接口
This commit is contained in:
parent
196cddb071
commit
0f01c52dd9
@ -354,6 +354,7 @@ public class OrderBiz {
|
||||
orderAllDetailVO.setId(orderMain.getId());
|
||||
orderAllDetailVO.setOrderNo(orderMain.getOrderNo());
|
||||
orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription());
|
||||
orderAllDetailVO.setMainOrderStatus(MainOrderStatusEnum.getInstance(orderMain.getMainOrderStatus()).getDescription());
|
||||
orderAllDetailVO.setOrderInitiator(emEmployees.getName());
|
||||
orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone());
|
||||
orderAllDetailVO.setCustomerName(customerName);
|
||||
@ -557,6 +558,7 @@ public class OrderBiz {
|
||||
* @param orderTaskId 订单任务ID
|
||||
* @param taskStatus 飞行状态
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void editOrderTaskStatus(Long orderTaskId, Integer taskStatus) {
|
||||
// 获取订单详情
|
||||
OrderDetail orderDetail = orderDetailService.obtainOrderDetailById(orderTaskId);
|
||||
@ -723,4 +725,66 @@ public class OrderBiz {
|
||||
public Boolean updateSettlementOrderStatus(Long settlementOrderId, Integer settlementOrderStatus) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成订单
|
||||
* @param orderId 订单ID
|
||||
*/
|
||||
public void completeOrder(Long orderId) {
|
||||
// 查询订单信息
|
||||
OrderMain orderMain = orderMainService.obtainOrderMainById(orderId);
|
||||
// 获取当前用户(根据不同的登录类型,处理不同的逻辑)
|
||||
UserTypeEnum currentUserType = SecurityUtils.getCurrentUserType();
|
||||
switch (currentUserType) {
|
||||
case CUSTOMER:
|
||||
customerCompleteOrder(orderMain);
|
||||
break;
|
||||
case EMPLOYEES:
|
||||
employeesCompleteOrder(orderMain);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// 是否存在飞行任务(至少存在一个飞行失败或者完成的,才能点击完成,且不能存在未开始,进行中的)
|
||||
List<OrderDetail> orderDetailList = orderDetailService.queryOrderDetailByOrderId(orderId);
|
||||
if (CollectionUtil.isEmpty(orderDetailList)) {
|
||||
throw new BadRequestException("该订单不存在飞行任务,无法完成");
|
||||
}
|
||||
// 订单不能存在未开始或者进行中的飞行任务
|
||||
boolean hasFlightTask = orderDetailList.stream().anyMatch(orderDetail -> {
|
||||
Integer flightTaskStatus = orderDetail.getOrderItemStatus();
|
||||
return OrderTaskStatusEnum.NOT_STARTED.getCode().equals(flightTaskStatus)
|
||||
|| OrderTaskStatusEnum.PROCESSING.getCode().equals(flightTaskStatus);
|
||||
});
|
||||
if (hasFlightTask) {
|
||||
throw new BadRequestException("订单存在未开始或者进行中的飞行任务,无法完成");
|
||||
}
|
||||
OrderMain updateOrderMain = new OrderMain();
|
||||
updateOrderMain.setId(orderId);
|
||||
updateOrderMain.setOrderFinishTime(new Date());
|
||||
updateOrderMain.setMainOrderStatus(MainOrderStatusEnum.COMPLETED.getCode());
|
||||
orderMainService.finishMainOrder(updateOrderMain);
|
||||
}
|
||||
|
||||
/**
|
||||
* 客户端完成订单
|
||||
*
|
||||
* @param orderMain {@link OrderMain}
|
||||
*/
|
||||
private void customerCompleteOrder(OrderMain orderMain) {
|
||||
// TODO 客户端不限制
|
||||
}
|
||||
|
||||
/**
|
||||
* 飞行端完成订单
|
||||
*
|
||||
* @param orderMain {@link OrderMain}
|
||||
*/
|
||||
private void employeesCompleteOrder(OrderMain orderMain) {
|
||||
// 飞行员端只能由发起人才能完成
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
if (!orderMain.getOrderInitiatorId().equals(currentUserId)) {
|
||||
throw new BadRequestException("订单不属于当前用户,无法完成");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,5 +101,15 @@ public class OrderMainController {
|
||||
public ResponseEntity<OrderAllDetailVO> queryOrderDetail(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(orderBiz.queryOrderDetail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成订单
|
||||
*/
|
||||
@ApiOperation("完成订单-飞行端&客户端")
|
||||
@PutMapping("/completeOrder/{orderId}")
|
||||
public ResponseEntity<Object> completeOrder(@PathVariable("orderId") Long orderId) {
|
||||
orderBiz.completeOrder(orderId);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,12 @@ public class OrderAllDetailVO {
|
||||
@ApiModelProperty(value = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
/**
|
||||
* 订单状态
|
||||
*/
|
||||
@ApiModelProperty(value = "订单状态")
|
||||
private String mainOrderStatus;
|
||||
|
||||
/**
|
||||
* 订单发起人
|
||||
*/
|
||||
|
@ -88,4 +88,11 @@ public interface IOrderMainService extends IService<OrderMain> {
|
||||
* @param settlementStatus 结算状态
|
||||
*/
|
||||
void updateSettlementStatus(List<Long> orderIds, Integer settlementStatus);
|
||||
|
||||
/**
|
||||
* 完成订单
|
||||
*
|
||||
* @param updateOrderMain {@link OrderMain}
|
||||
*/
|
||||
void finishMainOrder(OrderMain updateOrderMain);
|
||||
}
|
||||
|
@ -67,5 +67,6 @@ public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, Order
|
||||
LambdaUpdateWrapper<OrderDetail> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(OrderDetail::getId, orderTaskId)
|
||||
.set(OrderDetail::getOrderItemStatus, taskStatus);
|
||||
this.update(updateWrapper);
|
||||
}
|
||||
}
|
||||
|
@ -114,4 +114,14 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
||||
.in(OrderMain::getId, orderIds)
|
||||
.set(OrderMain::getSettlementStatus, settlementStatus));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishMainOrder(OrderMain updateOrderMain) {
|
||||
// 根据 ID 进行更新
|
||||
this.update(updateOrderMain, Wrappers.<OrderMain>lambdaUpdate()
|
||||
.eq(OrderMain::getId, updateOrderMain.getId())
|
||||
.set(OrderMain::getOrderFinishTime, updateOrderMain.getOrderFinishTime())
|
||||
.set(OrderMain::getMainOrderStatus, updateOrderMain.getMainOrderStatus())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user