提交 0a597516 authored 作者: jiangwujie's avatar jiangwujie

feature(电子围栏): 实现客服解除装车限制接口,增加短信的单元测试

上级 cfe9a5b2
......@@ -75,7 +75,7 @@ public class OrderCancelController {
@ApiOperation(value = "客服解除装车限制", notes = "<br>By:姜武杰")
@PostMapping("/artificialRemoveLoadLimit")
public Result<Object> artificialRemoveLoadLimit(@RequestBody ArtificialCancelOrderParam param) {
// TODO 待实现
orderCancelService.removeLoadLimit(param);
return Result.ok();
}
......
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
......@@ -56,4 +57,10 @@ public interface OrderCancelService {
* @return
*/
IPage<OrderChildOperateRecordVO> orderChildOperateRecord(OrderChildCancelRecordParam param);
/**
* 客服移除监装限制
* @param param
*/
void removeLoadLimit(ArtificialCancelOrderParam param);
}
......@@ -23,7 +23,9 @@ import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildOperateRecord;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam;
......@@ -741,6 +743,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
public void artificialCancelOrder(String orderChildNo, String remark) {
LocalDateTime now = LocalDateTime.now();
OrderChild orderChild = orderChildDao.getByChildNo(orderChildNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//运单状态不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消
if (!Arrays.asList(OrderChildEnum.Status.LOAD.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.UNLOAD.getCode())
.contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消", orderChildNo, orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode());
......@@ -756,10 +768,14 @@ public class OrderCancelServiceImpl implements OrderCancelService {
// 运单取消
orderChildPostService.orderChildCancelByArtificial(orderChildNo);
// 保存操作记录
orderChildLogService.saveOrderChildLog(orderChild.getChildNo(),
OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode(), OrderChildEnum.Status.ARTIFICIAL_CANCEL.getName(),
OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg()
);
// 保存运单处理记录
saveOrderChildOperateRecord(orderChild, OrderChildEnum.OperateRecordType.CANCEL_ORDER, remark);
}
@Override
......@@ -795,5 +811,54 @@ public class OrderCancelServiceImpl implements OrderCancelService {
return orderChildOperateRecordDao.orderChildOperateRecord(param);
}
@Override
public void removeLoadLimit(ArtificialCancelOrderParam param) {
OrderChild orderChild = orderChildDao.getByChildNo(param.getOrderChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作
if (!Arrays.asList(OrderChildEnum.Status.CREATED.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode())
.contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制", param.getOrderChildNo(), orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setRemoveLoadLimitStatus(OrderChildEnum.RemoveLoadLimitStatus.REMOVED.getCode());
orderChildDao.updateEntityByKey(update);
//保存运单处理记录
saveOrderChildOperateRecord(orderChild, OrderChildEnum.OperateRecordType.REMOVE_LIMIT, param.getRemark());
//保存运单操作记录
orderChildLogService.saveOrderChildLog(orderChild.getChildNo(),
orderChild.getStatus(), OrderChildEnum.OperateRecordType.REMOVE_LIMIT.getMsg(),
OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg()
);
}
private void saveOrderChildOperateRecord(OrderChild orderChild, OrderChildEnum.OperateRecordType type, String remark) {
OrderChildOperateRecord record = new OrderChildOperateRecord();
record.setChildNo(orderChild.getChildNo());
record.setType(type.getCode());
record.setTruckNo(orderChild.getTruckNo());
record.setDriverName(orderChild.getDriverName());
record.setDriverMobile(orderChild.getDriverMobile());
record.setSendAddress(orderChild.getSendAddress());
record.setReceiveAddress(orderChild.getReceiveAddress());
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderChild.getOrderNo());
if (orderInfoFeign != null) {
record.setGoodTypeName(orderInfoFeign.getGoodsTypeName());
}
record.setRemark(remark);
record.setOperateTime(LocalDateTime.now());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
record.setOperator(loginUserInfo.getUserName());
record.setCreatedTime(LocalDateTime.now());
record.setModifiedTime(LocalDateTime.now());
orderChildOperateRecordDao.saveEntity(record);
}
}
\ No newline at end of file
package com.clx.performance.service.impl;
import com.clx.performance.service.DriverNoticeConfigService;
import com.clx.performance.vo.pc.DriverNoticeConfigVO;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.redis.core.RedisTemplate;
import java.math.BigDecimal;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class OrderChildServiceImpl2Test {
@Mock
private RedisTemplate redisTemplate;
@Mock
private DriverNoticeConfigService driverNoticeConfigService;
@InjectMocks
private OrderChildServiceImpl orderChildService;
@BeforeEach
void setUp() {
// Setup common mock interactions here if any
}
@Test
void testOrderChildMessageNotice() {
orderChildService.orderChildMessageNotice();
}
@Test
void testOrderChildMessageNoticeListConfigDisabled() {
// Arrange
DriverNoticeConfigVO configVO = new DriverNoticeConfigVO();
configVO.setStatus(0);
configVO.setNoticeTriggerDistance(BigDecimal.valueOf(5000));
when(driverNoticeConfigService.listConfig()).thenReturn(configVO);
orderChildService.orderChildMessageNotice();
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论