Commit 4f761774 authored by lining's avatar lining

feat: 重复发送订单接口逻辑调整

parent 261e4fdf
......@@ -16,7 +16,10 @@ import com.onsiteservice.constant.enums.ServiceUserTypeEnum;
import com.onsiteservice.core.exception.ServiceException;
import com.onsiteservice.dao.common.AbstractMapper;
import com.onsiteservice.dao.component.RecordComponent;
import com.onsiteservice.dao.mapper.service.*;
import com.onsiteservice.dao.mapper.service.ServiceOrderMapper;
import com.onsiteservice.dao.mapper.service.ServiceValuatorAssignMapper;
import com.onsiteservice.dao.mapper.service.ServiceWorkerAssignMapper;
import com.onsiteservice.dao.mapper.service.ServiceWorkerMapper;
import com.onsiteservice.dao.mapper.sys.SysParamMapper;
import com.onsiteservice.dao.mapper.sys.SysUserMapper;
import com.onsiteservice.dao.mapper.user.UserMapper;
......@@ -27,17 +30,14 @@ import com.onsiteservice.entity.service.ServiceWorkerAssign;
import com.onsiteservice.entity.sys.SysParam;
import com.onsiteservice.entity.sys.SysUser;
import com.onsiteservice.entity.user.User;
import com.onsiteservice.util.aliyun.SmsUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import tk.mybatis.mapper.entity.Condition;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;
......@@ -147,7 +147,11 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
// 判断能发送的状态: 估价后可以发送,预约后可以发送
ServiceOrder serviceOrder = checkOrder(dto.getId(), null);
if (!serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.VALUATION.getStatus()) && !serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.RESERVE.getStatus())) {
// 首次发送 或者 第一次的发送已经支付完成并且没有结束订单
boolean canSendOrder = serviceOrder.getOrderStatus() < ServiceOrderStatusEnum.SEND.getStatus()
|| (serviceOrder.getOrderStatus() >= ServiceOrderStatusEnum.PAY.getStatus() && (serviceOrder.getOrderStatus() < ServiceOrderStatusEnum.FINISH.getStatus()));
if (!canSendOrder) {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_SEND);
}
......@@ -192,7 +196,7 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
WorkUser user = checkAuth(userId, BizCodeEnum.NO_AUTH_DISPATCH_ORDER, sourceEnum, Sets.newHashSet(ServiceUserTypeEnum.ADMIN));
ServiceOrder serviceOrder = checkOrder(dto.getId(), null);
if (!serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.PAY.getStatus())) {
if (!serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.PAY.getStatus()) || serviceOrder.getSkipWork()) {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_DISPATCH);
}
......@@ -208,6 +212,7 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
Condition c = buildOrderStatusCondition(serviceOrder);
serviceOrder.setOrderStatus(ServiceOrderStatusEnum.DISPATCH.getStatus());
serviceOrder.setModifyBy(userId);
serviceOrder.setSkipWork(true);
int result = serviceOrderMapper.updateByConditionSelective(serviceOrder, c);
commonSmsService.dispatched(serviceOrder.getPhone(), user.getPhone(), serviceOrder.getServiceName());
......@@ -265,7 +270,8 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
log.info("finishOrder dto: {}, userId: {}", dto, userId);
ServiceOrder serviceOrder = checkOrder(dto.getId(), null);
if (!serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.DISPATCH.getStatus())) {
// if (!serviceOrder.getOrderStatus().equals(ServiceOrderStatusEnum.DISPATCH.getStatus())) {
if (!serviceOrder.getSkipWork()) {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_FINISH);
}
......
......@@ -29,7 +29,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.Positive;
import java.util.Map;
import static com.onsiteservice.core.result.ResultGenerator.fail;
......@@ -109,7 +108,7 @@ public class ServiceOrderController {
@ApiOperation(value = "发送订单")
@ApiIdempotent(interval = 3000L)
@PostMapping("send")
public Result valuation(@RequestBody @NonNull @Validated SendServiceOrderDTO dto, @CurrentUserId Long userId) {
public Result send(@RequestBody @NonNull @Validated SendServiceOrderDTO dto, @CurrentUserId Long userId) {
return serviceOrderService.sendOrder(dto, userId, ServiceOrderOpSourceEnum.MINI_APP) == 1 ? success() : fail("发送失败");
}
......
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