|
@@ -1,40 +1,58 @@
|
|
|
package com.yc.ship.module.trade.service.otc.impl;
|
|
package com.yc.ship.module.trade.service.otc.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.excel.util.DateUtils;
|
|
import com.alibaba.excel.util.DateUtils;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
|
|
+import com.yc.ship.framework.common.lang.Asserts;
|
|
|
import com.yc.ship.framework.common.pojo.CommonResult;
|
|
import com.yc.ship.framework.common.pojo.CommonResult;
|
|
|
import com.yc.ship.framework.common.pojo.PageResult;
|
|
import com.yc.ship.framework.common.pojo.PageResult;
|
|
|
import com.yc.ship.framework.common.util.object.BeanUtils;
|
|
import com.yc.ship.framework.common.util.object.BeanUtils;
|
|
|
|
|
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import com.yc.ship.framework.security.core.LoginUser;
|
|
import com.yc.ship.framework.security.core.LoginUser;
|
|
|
import com.yc.ship.module.infra.api.config.ConfigApi;
|
|
import com.yc.ship.module.infra.api.config.ConfigApi;
|
|
|
|
|
+import com.yc.ship.module.marketing.api.policy.PolicyApi;
|
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
|
import com.yc.ship.module.product.api.dto.VoyageRespDTO;
|
|
import com.yc.ship.module.product.api.dto.VoyageRespDTO;
|
|
|
|
|
+import com.yc.ship.module.resource.api.route.RouteApi;
|
|
|
|
|
+import com.yc.ship.module.resource.api.route.dto.RouteRespDTO;
|
|
|
|
|
+import com.yc.ship.module.resource.api.ship.ShipApi;
|
|
|
|
|
+import com.yc.ship.module.resource.api.ship.dto.ShipRespDTO;
|
|
|
import com.yc.ship.module.trade.api.dto.TradeOrderRespDTO;
|
|
import com.yc.ship.module.trade.api.dto.TradeOrderRespDTO;
|
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
|
|
|
import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderPageReqVO;
|
|
import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderPageReqVO;
|
|
|
import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderRespVO;
|
|
import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderRespVO;
|
|
|
import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
|
|
import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderRoomModelDO;
|
|
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderRoomModelDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
|
|
import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.audituser.AuditUserMapper;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
|
|
|
import com.yc.ship.module.trade.dal.mysql.order.TradeOrderRoomModelMapper;
|
|
import com.yc.ship.module.trade.dal.mysql.order.TradeOrderRoomModelMapper;
|
|
|
import com.yc.ship.module.trade.dal.mysql.order.TradeOrderTotalMapper;
|
|
import com.yc.ship.module.trade.dal.mysql.order.TradeOrderTotalMapper;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.orderpolicy.OrderPolicyMapper;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.tradeOrderaudit.TradeOrderAuditMapper;
|
|
|
import com.yc.ship.module.trade.enums.PayAccountTypeEnum;
|
|
import com.yc.ship.module.trade.enums.PayAccountTypeEnum;
|
|
|
import com.yc.ship.module.trade.enums.SellMethodEnum;
|
|
import com.yc.ship.module.trade.enums.SellMethodEnum;
|
|
|
|
|
+import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
|
|
|
|
|
+import com.yc.ship.module.trade.framework.common.TradeOrderLogUtils;
|
|
|
|
|
+import com.yc.ship.module.trade.framework.mq.TradePublishUtils;
|
|
|
import com.yc.ship.module.trade.service.order.TradeOrderService;
|
|
import com.yc.ship.module.trade.service.order.TradeOrderService;
|
|
|
import com.yc.ship.module.trade.service.otc.AppOtcTradeOrderService;
|
|
import com.yc.ship.module.trade.service.otc.AppOtcTradeOrderService;
|
|
|
import com.yc.ship.module.trade.service.otc.OtcTradeOrderService;
|
|
import com.yc.ship.module.trade.service.otc.OtcTradeOrderService;
|
|
|
import com.yc.ship.module.trade.service.pay.TradeOrderPayService;
|
|
import com.yc.ship.module.trade.service.pay.TradeOrderPayService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
-import java.util.Collections;
|
|
|
|
|
-import java.util.Date;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
|
|
|
import static com.yc.ship.module.trade.enums.ErrorCodeConstants.ORDER_PAY_TENAND_FAIL;
|
|
import static com.yc.ship.module.trade.enums.ErrorCodeConstants.ORDER_PAY_TENAND_FAIL;
|
|
|
|
|
|
|
@@ -59,6 +77,31 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
private OtcTradeOrderService otcTradeOrderService;
|
|
private OtcTradeOrderService otcTradeOrderService;
|
|
|
@Resource
|
|
@Resource
|
|
|
private ProductApi productApi;
|
|
private ProductApi productApi;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private RouteApi routeApi;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ShipApi shipApi;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private AuditUserMapper auditUserMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeOrderAuditMapper tradeOrderAuditMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private OrderPolicyMapper orderPolicyMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private PolicyApi policyApi;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private RedissonClient redissonClient;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradePublishUtils tradePublishUtils;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeOrderMapper tradeOrderMapper;
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private TradeOrderTotalMapper tradeOrderTotalMapper;
|
|
private TradeOrderTotalMapper tradeOrderTotalMapper;
|
|
@@ -89,8 +132,20 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
|
|
|
|
|
shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
|
|
VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
|
|
|
- String date = DateUtils.format(new Date(), "yyyyMMddmmss");
|
|
|
|
|
- String orderNo = "MINI" + "-" + voyage.getCode() + "-" + date;
|
|
|
|
|
|
|
+ RouteRespDTO routeRespDTO = routeApi.queryRouteById(voyage.getRouteId());
|
|
|
|
|
+ ShipRespDTO ship = shipApi.queryShip(createVO.getShipId());
|
|
|
|
|
+ int maxOrderNo = tradeOrderService.getMaxOrderNo(createVO.getVoyageId());
|
|
|
|
|
+ String date = DateUtils.format(voyage.getBoardingTime(), "yyyyMMdd");
|
|
|
|
|
+ String code = "YC";
|
|
|
|
|
+ if (routeRespDTO != null && routeRespDTO.getDirection() == 2) {
|
|
|
|
|
+ code = "CY";
|
|
|
|
|
+ }
|
|
|
|
|
+ String orderNo;
|
|
|
|
|
+ if (ship.getCode() == null) {
|
|
|
|
|
+ orderNo = "MINI"+date + "-" + voyage.getCode() + "-" + (maxOrderNo + 1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ orderNo = "MINI"+ship.getCode() + "-" + date + "-" + code + "-" + (maxOrderNo + 1);
|
|
|
|
|
+ }
|
|
|
shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
|
|
|
|
|
ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
@@ -105,13 +160,23 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
|
|
for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
|
|
+ BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
|
|
+ visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
|
|
+ visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
|
|
+ visitorDetailId.setProductType(0);
|
|
|
|
|
+ visitorDetailId.setBoardingTime(createVO.getBoardingTime());
|
|
|
|
|
+ visitorDetailId.setLeaveTime(createVO.getLeaveTime());
|
|
|
|
|
+ visitorDetailId.setProductType(0);
|
|
|
ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
visitorList.add(visitor);
|
|
visitorList.add(visitor);
|
|
|
|
|
+ visitorDetailId.setVisitorList(visitorList);
|
|
|
|
|
+ visitorDetailId.setCount(1);
|
|
|
|
|
+ detailList.add(visitorDetailId);
|
|
|
}
|
|
}
|
|
|
- orderDetail.setVisitorList(visitorList);
|
|
|
|
|
- orderDetail.setCount(visitorList.size());
|
|
|
|
|
|
|
+ orderItem.setDetailList(detailList);
|
|
|
|
|
|
|
|
BigDecimal spuMoney = new BigDecimal(0);
|
|
BigDecimal spuMoney = new BigDecimal(0);
|
|
|
for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
@@ -122,103 +187,121 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
} else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
} else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
orderDetail1.setProductType(2);
|
|
orderDetail1.setProductType(2);
|
|
|
} else {
|
|
} else {
|
|
|
- if (tradeSpuReqVO.getProductId() != null) {
|
|
|
|
|
- //有产品ID没有游客信息跳过
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- orderDetail1.setProductType(0);
|
|
|
|
|
|
|
+ continue;
|
|
|
}
|
|
}
|
|
|
List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
- if (orderDetail1.getProductType() == 0 || orderDetail1.getProductType() == 1) {
|
|
|
|
|
- for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
|
|
- TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
|
|
- visitor.setName(tradeVistorReqVO.getName());
|
|
|
|
|
- visitor.setVid(tradeVistorReqVO.getId());
|
|
|
|
|
- visitor.setMobile(tradeVistorReqVO.getMobile());
|
|
|
|
|
- visitor.setGender(tradeVistorReqVO.getGender());
|
|
|
|
|
- visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
|
|
|
|
|
- visitor.setCredentialType(tradeVistorReqVO.getCardType());
|
|
|
|
|
- visitor.setYczz(tradeVistorReqVO.getYichang());
|
|
|
|
|
- visitor.setCqzz(tradeVistorReqVO.getChongqing());
|
|
|
|
|
- visitor.setNationality(tradeVistorReqVO.getNationality());
|
|
|
|
|
- visitor.setRoomId(tradeVistorReqVO.getRoomId());
|
|
|
|
|
- visitor.setCohabitation(tradeVistorReqVO.getCohabitation());
|
|
|
|
|
- visitor.setRoomIndexId(tradeVistorReqVO.getRoomIndexId());
|
|
|
|
|
- visitor.setRoomModelId(tradeVistorReqVO.getRoomModelId());
|
|
|
|
|
- visitor.setFloor(tradeVistorReqVO.getFloor());
|
|
|
|
|
- visitorList1.add(visitor);
|
|
|
|
|
- spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
|
|
- }
|
|
|
|
|
- orderDetail1.setVisitorList(visitorList1);
|
|
|
|
|
- orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
|
|
- orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
- orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
- } else {
|
|
|
|
|
- for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
|
|
- visitor.setName(tradeVistorReqVO.getName());
|
|
|
|
|
- visitor.setMobile(tradeVistorReqVO.getMobile());
|
|
|
|
|
- visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
|
|
|
|
|
- visitor.setCredentialType(tradeVistorReqVO.getCardType());
|
|
|
|
|
- visitor.setYczz(tradeVistorReqVO.getYichang());
|
|
|
|
|
- visitor.setCqzz(tradeVistorReqVO.getChongqing());
|
|
|
|
|
- visitor.setRoomId(tradeVistorReqVO.getRoomId());
|
|
|
|
|
- visitor.setNationality(tradeVistorReqVO.getNationality());
|
|
|
|
|
- visitor.setCohabitation(tradeVistorReqVO.getCohabitation());
|
|
|
|
|
- visitor.setRoomIndexId(tradeVistorReqVO.getRoomIndexId());
|
|
|
|
|
- visitor.setRoomModelId(tradeVistorReqVO.getRoomModelId());
|
|
|
|
|
- visitor.setFloor(tradeVistorReqVO.getFloor());
|
|
|
|
|
- visitorList1.add(visitor);
|
|
|
|
|
- }
|
|
|
|
|
- orderDetail1.setVisitorList(visitorList1);
|
|
|
|
|
- orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
|
|
- orderDetail1.setPrice(BigDecimal.ZERO);
|
|
|
|
|
- orderDetail1.setOriginPrice(BigDecimal.ZERO);
|
|
|
|
|
|
|
+ for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
|
|
+ TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
|
|
+ visitorList1.add(visitor);
|
|
|
|
|
+ BigDecimal price = tradeSpuReqVO.getPrice() == null ? BigDecimal.ZERO : tradeSpuReqVO.getPrice();
|
|
|
|
|
+ spuMoney = spuMoney.add(price);
|
|
|
}
|
|
}
|
|
|
|
|
+ orderDetail1.setVisitorList(visitorList1);
|
|
|
|
|
+ orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
|
|
+ orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
+ orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
+
|
|
|
orderDetail1.setCount(visitorList1.size());
|
|
orderDetail1.setCount(visitorList1.size());
|
|
|
detailList.add(orderDetail1);
|
|
detailList.add(orderDetail1);
|
|
|
}
|
|
}
|
|
|
- BigDecimal price;
|
|
|
|
|
- if (createVO.getSummary().getOrderMoney() != null && createVO.getSummary().getOrderMoney().compareTo(new BigDecimal(0)) > 0) {
|
|
|
|
|
- price = createVO.getSummary().getOrderMoney().subtract(spuMoney).divide(new BigDecimal(visitorList.size()), 2, RoundingMode.HALF_UP);
|
|
|
|
|
- } else {
|
|
|
|
|
- price = new BigDecimal(0);
|
|
|
|
|
- }
|
|
|
|
|
- orderDetail.setPrice(price);
|
|
|
|
|
- orderDetail.setOriginPrice(price);
|
|
|
|
|
-
|
|
|
|
|
- orderDetail.setProductType(0);
|
|
|
|
|
- detailList.add(orderDetail);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- orderItem.setDetailList(detailList);
|
|
|
|
|
|
|
|
|
|
shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
|
-
|
|
|
|
|
|
|
+ Date travelDate = shipTradeOrderCreateReqVO.getTravelDate();
|
|
|
shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
|
|
|
+ if (DateUtil.compare(travelDate, new Date()) < 0) {
|
|
|
|
|
+ Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
|
|
|
|
+ CommonResult<TradeOrderRespDTO> result;
|
|
|
|
|
+ try {
|
|
|
|
|
+ result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ return CommonResult.error(500, e.getMessage());
|
|
|
|
|
+ }
|
|
|
if (result.isError()) {
|
|
if (result.isError()) {
|
|
|
- return CommonResult.error(result);
|
|
|
|
|
|
|
+ return CommonResult.error(result.getCode(), result.getMsg());
|
|
|
}
|
|
}
|
|
|
TradeOrderTotalVO summary = createVO.getSummary();
|
|
TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
Long orderId = result.getCheckedData().getOrderId();
|
|
Long orderId = result.getCheckedData().getOrderId();
|
|
|
|
|
+ Integer orderStatus = result.getCheckedData().getOrderStatus();
|
|
|
tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
|
tradeOrderTotalDO.setOldOrderId(orderId);
|
|
tradeOrderTotalDO.setOldOrderId(orderId);
|
|
|
|
|
+ tradeOrderTotalDO.setOtherRemark(summary.getOtherRemark());
|
|
|
tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
|
|
|
|
|
// 创建订单房型数据
|
|
// 创建订单房型数据
|
|
|
- List<TradeOrderRoomModelDO> tradeOrderRoomList = new ArrayList<>();
|
|
|
|
|
|
|
+ List<TradeOrderRoomModelDO> tradeOrderRoomDOList = new ArrayList<>();
|
|
|
List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
|
roomModelList.forEach(roomModel -> {
|
|
roomModelList.forEach(roomModel -> {
|
|
|
TradeOrderRoomModelDO tradeOrderRoomDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
|
|
TradeOrderRoomModelDO tradeOrderRoomDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
|
|
|
tradeOrderRoomDO.setOrderId(orderId);
|
|
tradeOrderRoomDO.setOrderId(orderId);
|
|
|
- tradeOrderRoomList.add(tradeOrderRoomDO);
|
|
|
|
|
|
|
+ tradeOrderRoomDO.setOrderNo(orderNo);
|
|
|
|
|
+ tradeOrderRoomDO.setDiscount(tradeOrderRoomDO.getUnitPrice().subtract(tradeOrderRoomDO.getRealMoney()));
|
|
|
|
|
+ tradeOrderRoomDOList.add(tradeOrderRoomDO);
|
|
|
});
|
|
});
|
|
|
- tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomList);
|
|
|
|
|
|
|
|
|
|
|
|
+ // 创建订单优惠政策数据
|
|
|
|
|
+ //1.先删除原来的
|
|
|
|
|
+ orderPolicyMapper.deleteByOrderId(orderId);
|
|
|
|
|
+ List<OrderPolicyDO> orderPolicyDOList = new ArrayList<>();
|
|
|
|
|
+ List<TradeOrderPolicyReqVO> policyList = createVO.getPolicyList();
|
|
|
|
|
+ if (policyList != null) {
|
|
|
|
|
+ policyList.forEach(policy -> {
|
|
|
|
|
+ OrderPolicyDO orderPolicyDO = new OrderPolicyDO();
|
|
|
|
|
+ orderPolicyDO.setOrderId(orderId);
|
|
|
|
|
+ orderPolicyDO.setOrderNo(orderNo);
|
|
|
|
|
+ orderPolicyDO.setPolicyId(policy.getPolicyId());
|
|
|
|
|
+ if (createVO.getIsYd() != null && createVO.getIsYd() == 1) {
|
|
|
|
|
+ orderPolicyDO.setPreUseNum(policy.getUseNum());
|
|
|
|
|
+ orderPolicyDO.setRealUseNum(BigDecimal.ZERO);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //TODO: 需要修改订单金额,参考文档
|
|
|
|
|
+ orderPolicyDO.setPreUseNum(BigDecimal.ZERO);
|
|
|
|
|
+ orderPolicyDO.setRealUseNum(policy.getUseNum());
|
|
|
|
|
+ policyApi.updatePolicySurplusNum(policy.getPolicyId(), createVO.getVoyageId(), policy.getUseNum());
|
|
|
|
|
+ }
|
|
|
|
|
+ orderPolicyDO.setAmount(policy.getAmount());
|
|
|
|
|
+ orderPolicyDO.setRooms(policy.getRooms());
|
|
|
|
|
+ orderPolicyDOList.add(orderPolicyDO);
|
|
|
|
|
+ });
|
|
|
|
|
+ if (!orderPolicyDOList.isEmpty()) {
|
|
|
|
|
+ //TODO: 判断优惠政策是否需要审核
|
|
|
|
|
+ orderPolicyMapper.insertBatch(orderPolicyDOList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ int auditType = 0;
|
|
|
|
|
+ BigDecimal leaderAmount1 = summary.getLeaderAmount();
|
|
|
|
|
+ BigDecimal withAmount1 = summary.getWithAmount();
|
|
|
|
|
+ BigDecimal otherMoney1 = summary.getOtherMoney();
|
|
|
|
|
+ if (!CollUtil.isEmpty(createVO.getPolicyList())) {
|
|
|
|
|
+ auditType = 2;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (leaderAmount1 != null && leaderAmount1.compareTo(new BigDecimal(0)) > 0) {
|
|
|
|
|
+ auditType = 4;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (withAmount1 != null && withAmount1.compareTo(new BigDecimal(0)) > 0) {
|
|
|
|
|
+ auditType = 4;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (otherMoney1 != null && otherMoney1.compareTo(new BigDecimal(0)) > 0) {
|
|
|
|
|
+ auditType = 4;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
|
|
+ orderStatus = TradeOrderStatusEnum.TRANSFER.getStatus();
|
|
|
|
|
+ AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, auditType).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
|
|
|
|
|
+ tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_user",auditUserDO.getAuditUser()).set("audit_status", 1).eq("id", orderId));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!tradeOrderRoomDOList.isEmpty()) {
|
|
|
|
|
+ tradeOrderRoomModelMapper.deleteByOrderId(orderId);
|
|
|
|
|
+ tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomDOList);
|
|
|
|
|
+ }
|
|
|
|
|
+ //支付倒计时--不超时,有预订单
|
|
|
|
|
+ Map<String, Object> append = TradeOrderLogUtils.append("result", "订单创建成功");
|
|
|
|
|
+ append.put("content", "");
|
|
|
|
|
+ TradeOrderLogUtils.setOrderInfo(orderId, null, orderStatus, append);
|
|
|
|
|
+ tradePublishUtils.publishOrderCreateSuccessMsg(orderId + "");
|
|
|
OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
return CommonResult.success(respVO);
|
|
return CommonResult.success(respVO);
|
|
|
|
|
|