|
@@ -5,6 +5,8 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import com.alibaba.excel.util.DateUtils;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.yc.ship.framework.common.enums.UserTypeEnum;
|
|
import com.yc.ship.framework.common.enums.UserTypeEnum;
|
|
|
import com.yc.ship.framework.common.lang.Asserts;
|
|
import com.yc.ship.framework.common.lang.Asserts;
|
|
|
import com.yc.ship.framework.common.pojo.CommonResult;
|
|
import com.yc.ship.framework.common.pojo.CommonResult;
|
|
@@ -19,18 +21,25 @@ import com.yc.ship.module.infra.api.config.ConfigApi;
|
|
|
import com.yc.ship.module.member.api.address.MemberAddressApi;
|
|
import com.yc.ship.module.member.api.address.MemberAddressApi;
|
|
|
import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
|
import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
|
|
import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
|
|
|
|
|
+import com.yc.ship.module.ota.dal.dataobject.distributor.DistributorDO;
|
|
|
|
|
+import com.yc.ship.module.ota.dal.mysql.distributor.DistributorMapper;
|
|
|
|
|
+import com.yc.ship.module.otc.api.store.StoreApi;
|
|
|
|
|
+import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
|
|
|
import com.yc.ship.module.otc.api.store.dto.StoreMachineDTO;
|
|
import com.yc.ship.module.otc.api.store.dto.StoreMachineDTO;
|
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
import com.yc.ship.module.product.api.ProductApi;
|
|
|
import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
|
|
import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
|
|
|
|
|
+import com.yc.ship.module.product.api.dto.VoyageRespDTO;
|
|
|
|
|
+import com.yc.ship.module.product.service.voyage.VoyageService;
|
|
|
|
|
+import com.yc.ship.module.resource.service.ship.ResourceShipService;
|
|
|
import com.yc.ship.module.trade.api.dto.TradeOrderCreateReqDTO;
|
|
import com.yc.ship.module.trade.api.dto.TradeOrderCreateReqDTO;
|
|
|
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.*;
|
|
import com.yc.ship.module.trade.controller.app.otc.vo.*;
|
|
|
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.order.TradeDetailBaseDO;
|
|
|
|
|
-import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
|
|
|
-import com.yc.ship.module.trade.dal.mysql.order.TradeDetailBaseMapper;
|
|
|
|
|
-import com.yc.ship.module.trade.dal.mysql.order.TradeOrderDeliveryMapper;
|
|
|
|
|
|
|
+import com.yc.ship.module.trade.dal.dataobject.order.*;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.bill.BillStoreMapper;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.order.*;
|
|
|
|
|
+import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
|
|
|
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.framework.common.ThreadLocalUtil;
|
|
import com.yc.ship.module.trade.framework.common.ThreadLocalUtil;
|
|
@@ -43,13 +52,16 @@ import com.yc.ship.module.trade.service.pay.TradeOrderPayService;
|
|
|
import com.yc.ship.module.trade.service.supplier.TradeSupplierOrderRepositoryService;
|
|
import com.yc.ship.module.trade.service.supplier.TradeSupplierOrderRepositoryService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
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.RoundingMode;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
-import static com.yc.ship.module.trade.enums.ErrorCodeConstants.ORDER_PAY_TENAND_FAIL;
|
|
|
|
|
|
|
+import static com.yc.ship.module.trade.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -82,11 +94,34 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
private ProductApi productApi;
|
|
private ProductApi productApi;
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
- private MemberAddressApi memberAddressApi;
|
|
|
|
|
|
|
+ private TradeOrderTotalMapper tradeOrderTotalMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeOrderCountryMapper tradeOrderCountryMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeOrderRoomModelMapper tradeOrderRoomModelMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeVisitorMapper tradeVisitorMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private TradeOrderFloorMapper tradeOrderFloorMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private VoyageService voyageService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ResourceShipService shipService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private OrderJzMapper orderJzMapper;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
- private TradeOrderDeliveryMapper tradeOrderDeliveryMapper;
|
|
|
|
|
|
|
+ private DistributorMapper distributorMapper;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
- private TradeOrderBizService tradeOrderBizService;
|
|
|
|
|
|
|
+ private StoreApi storeApi;
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -127,59 +162,208 @@ public class AppOtcTradeOrderServiceImpl implements AppOtcTradeOrderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public CommonResult<AppOtcTradeOrderCreateRespVO> miniAppCreateOrder(LoginUser loginUser, OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
|
|
|
|
|
- if(loginUser==null || loginUser.getId()==null){
|
|
|
|
|
- Asserts.isTrue(true,"下单失败,用户信息获取失败");
|
|
|
|
|
- }
|
|
|
|
|
- TradeOrderCreateReqDTO tradeOrderCreateReqDTO = TradeOrderConvert.INSTANCE.convert(otcTradeOrderCreateReqVO);
|
|
|
|
|
- TradeOrderCreateReqDTO.OrderProperty orderProperty = tradeOrderCreateReqDTO.getOrderProperty();
|
|
|
|
|
- if (orderProperty == null) {
|
|
|
|
|
- orderProperty = new TradeOrderCreateReqDTO.OrderProperty();
|
|
|
|
|
|
|
+ public CommonResult<OtcTradeOrderCreateRespVO> miniAppCreateOrder(LoginUser loginUser, MiniTradeOrderCreateReqVO createVO) {
|
|
|
|
|
+ List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
|
|
|
|
|
+ ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setAmount(createVO.getSummary().getOrderMoney());
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getOrderMoney());
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setDicountId(createVO.getSummary().getDicountId());
|
|
|
|
|
+ if (createVO.getSummary().getRealOrderMoney() != null) {
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getRealOrderMoney());
|
|
|
}
|
|
}
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
|
|
|
|
|
+ orderUser.setContactName(createVO.getLinkMan());
|
|
|
|
|
+ orderUser.setMobile(createVO.getLinkMobile());
|
|
|
|
|
+ orderUser.setEmail(createVO.getLinkEmail());
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setOrderUser(orderUser);
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setRemark(createVO.getRemark());
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd());
|
|
|
|
|
+
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
|
|
+ VoyageRespDTO voyage = productApi.getVoyage(createVO.getVoyageId());
|
|
|
|
|
+ String date = DateUtils.format(new Date(), "yyyyMMddmmss");
|
|
|
|
|
+ String orderNo = "MINI"+ "-" + voyage.getCode() + "-" + date;
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
|
|
+
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
|
|
+ orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
|
|
+ orderProperty.setSourceId( createVO.getUserId());
|
|
|
|
|
+ orderProperty.setMemberId(loginUser.getId().toString());
|
|
|
|
|
+ orderProperty.setSourceName("小程序用户");
|
|
|
orderProperty.setSellMethod(SellMethodEnum.MINI_APP.getType());
|
|
orderProperty.setSellMethod(SellMethodEnum.MINI_APP.getType());
|
|
|
- orderProperty.setSourceId(StrUtil.toStringOrNull(loginUser.getId()));
|
|
|
|
|
- if (loginUser.getUserType()!=null && ObjectUtil.equal(loginUser.getUserType(), UserTypeEnum.MEMBER.getValue())) {
|
|
|
|
|
- orderProperty.setMemberId(StrUtil.toString(loginUser.getId()));
|
|
|
|
|
|
|
+
|
|
|
|
|
+ shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
|
|
+
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
|
|
+ List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
|
|
+ for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
|
|
+ visitorList.add(visitor);
|
|
|
}
|
|
}
|
|
|
-// orderProperty.setSourceName(loginUser.get);
|
|
|
|
|
- tradeOrderCreateReqDTO.setOrderProperty(orderProperty);
|
|
|
|
|
- //小程序下单需要验证,子产品状态
|
|
|
|
|
-
|
|
|
|
|
- Asserts.isTrue(CollUtil.isNotEmpty(tradeOrderCreateReqDTO.getPackProductList()),"小程序产品列表不能为空");
|
|
|
|
|
-// Map<Long,ChildProductAndPriceDTO> packProductMap = new HashMap<>();
|
|
|
|
|
-// for (TradeOrderCreateReqDTO.PackProduct packProduct : tradeOrderCreateReqDTO.getPackProductList()) {
|
|
|
|
|
-// Asserts.isTrue(packProduct!=null && packProduct.getPackProductId()!=null
|
|
|
|
|
-// && StrUtil.isNotBlank(packProduct.getPackProductName()),"小程序产品信息不能为空");
|
|
|
|
|
-// TradeOrderCreateReqDTO.OrderItem orderItem = tradeOrderCreateReqDTO.getItemlList().stream().filter(item -> ObjectUtil.equal(item.getPackProductId(), packProduct.getPackProductId())).findFirst().orElse(null);
|
|
|
|
|
-// Asserts.isTrue(orderItem!=null,"下单信息有误,未找到对应产品下单信息");
|
|
|
|
|
-// //一个打包产品不能出现不同的使用日期
|
|
|
|
|
-// Date useDate = orderItem.getUseDate() == null? new Date() : orderItem.getUseDate();
|
|
|
|
|
-// ChildProductAndPriceDTO data = childProductApi.getInfoAndPrice(packProduct.getPackProductId(), DateUtil.formatDate(useDate)).getData();
|
|
|
|
|
-// Asserts.isTrue(data!=null && ObjectUtil.equal(data.getStatus(),YES),"子产品不存在或已下架");
|
|
|
|
|
-// //一个订单不能重复包含小程序产品
|
|
|
|
|
-// if(packProductMap.containsKey(packProduct.getPackProductId())) {
|
|
|
|
|
-// Asserts.isTrue(true,"下单参数有误,一个订单不能重复包含小程序产品");
|
|
|
|
|
-// }
|
|
|
|
|
-// Asserts.isTrue(CollUtil.isNotEmpty(data.getPriceList()),"小程序产品未配置价格信息{}",packProduct.getPackProductId());
|
|
|
|
|
-// List<Long> productList = data.getPriceList().stream().map(ChildProductCalendarPriceDTO::getProductId).distinct().collect(Collectors.toList());
|
|
|
|
|
-// //打包产品下单信息,必须同时存在
|
|
|
|
|
-// boolean isAll = productList.stream().allMatch(productId ->{
|
|
|
|
|
-// return tradeOrderCreateReqDTO.getItemlList().stream().anyMatch(item->ObjectUtil.equal(item.getPackProductId(),packProduct.getPackProductId())
|
|
|
|
|
-// && ObjectUtil.equal(item.getProductId(),productId.toString()) );
|
|
|
|
|
-// });
|
|
|
|
|
-// Asserts.isTrue(isAll,"小程序产品包含的运营产品需全部下单");
|
|
|
|
|
-// packProductMap.put(packProduct.getPackProductId(), data);
|
|
|
|
|
-// }
|
|
|
|
|
-// ThreadLocalUtil.setPackProduct(packProductMap);
|
|
|
|
|
- CommonResult<TradeOrderRespDTO> result = tradeOrderService.createOrder(tradeOrderCreateReqDTO);
|
|
|
|
|
|
|
+ orderDetail.setVisitorList(visitorList);
|
|
|
|
|
+ orderDetail.setCount(visitorList.size());
|
|
|
|
|
+
|
|
|
|
|
+ BigDecimal spuMoney = new BigDecimal(0);
|
|
|
|
|
+ for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
|
|
+ //0 游船产品 1 附加产品 2:赠票
|
|
|
|
|
+ if (tradeSpuReqVO.getProductId() != null && !tradeSpuReqVO.getTourist().isEmpty()) {
|
|
|
|
|
+ orderDetail1.setProductType(1);
|
|
|
|
|
+ } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
|
|
+ orderDetail1.setProductType(2);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (tradeSpuReqVO.getProductId() != null) {
|
|
|
|
|
+ //有产品ID没有游客信息跳过
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ orderDetail1.setProductType(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (orderDetail1.getProductType() == 0 || orderDetail1.getProductType() == 1) {
|
|
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
|
|
+ for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
|
|
+ TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().get();
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
|
|
+ visitor.setName(tradeVistorReqVO.getName());
|
|
|
|
|
+ visitor.setMobile(tradeVistorReqVO.getPhone());
|
|
|
|
|
+ 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());
|
|
|
|
|
+ visitorList1.add(visitor);
|
|
|
|
|
+ spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
|
|
+ }
|
|
|
|
|
+ orderDetail1.setVisitorList(visitorList1);
|
|
|
|
|
+ orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
|
|
+ orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
+ orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
+ orderDetail1.setCount(visitorList1.size());
|
|
|
|
|
+ detailList.add(orderDetail1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
|
|
+ for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
|
|
+ visitor.setName(tradeVistorReqVO.getName());
|
|
|
|
|
+ visitor.setMobile(tradeVistorReqVO.getPhone());
|
|
|
|
|
+ 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());
|
|
|
|
|
+ visitorList1.add(visitor);
|
|
|
|
|
+ }
|
|
|
|
|
+ orderDetail1.setVisitorList(visitorList1);
|
|
|
|
|
+ orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
|
|
+ orderDetail1.setPrice(BigDecimal.ZERO);
|
|
|
|
|
+ orderDetail1.setOriginPrice(BigDecimal.ZERO);
|
|
|
|
|
+ orderDetail1.setCount(visitorList1.size());
|
|
|
|
|
+ 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.setSpuAmount(spuMoney);
|
|
|
|
|
+
|
|
|
|
|
+ CommonResult<TradeOrderRespDTO> result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
if (result.isError()) {
|
|
if (result.isError()) {
|
|
|
return CommonResult.error(result);
|
|
return CommonResult.error(result);
|
|
|
}
|
|
}
|
|
|
- AppOtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convertToApp(result.getData());
|
|
|
|
|
|
|
+ TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
|
|
+ TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
|
|
+ Long orderId = result.getCheckedData().getOrderId();
|
|
|
|
|
+ tradeOrderTotalDO.setOrderId(orderId);
|
|
|
|
|
+ tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
|
|
+
|
|
|
|
|
+ //创建订单国籍数据
|
|
|
|
|
+ List<TradeOrderRoomModelDO> list = new ArrayList<>();
|
|
|
|
|
+ List<TradeOrderCountryDO> tradeOrderCountryDOList = new ArrayList<>();
|
|
|
|
|
+ List<TradeOrderFloorDO> floorPlus = new ArrayList<>();
|
|
|
|
|
+ countryData.forEach(item -> {
|
|
|
|
|
+ TradeOrderCountryDO countryDO = BeanUtils.toBean(item, TradeOrderCountryDO.class);
|
|
|
|
|
+ Long countryId = IdWorker.getId();
|
|
|
|
|
+ countryDO.setOrderId(orderId);
|
|
|
|
|
+ countryDO.setId(countryId);
|
|
|
|
|
+ tradeOrderCountryDOList.add(countryDO);
|
|
|
|
|
+ List<TradeOrderRoomModelReqVO> roomModels = item.getRoomModels();
|
|
|
|
|
+ //创建订单房型数据
|
|
|
|
|
+ roomModels.forEach(roomModel -> {
|
|
|
|
|
+ TradeOrderRoomModelDO roomModelDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
|
|
|
|
|
+ Long roomModelId = IdWorker.getId();
|
|
|
|
|
+ roomModelDO.setOrderId(orderId);
|
|
|
|
|
+ roomModelDO.setId(roomModelId);
|
|
|
|
|
+ roomModelDO.setCountryId(countryId);
|
|
|
|
|
+ list.add(roomModelDO);
|
|
|
|
|
+ // 房型升楼层数据
|
|
|
|
|
+ List<TradeOrderFloorReqVO> floorReqVOList = roomModel.getFloorPlus();
|
|
|
|
|
+ if (floorReqVOList == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ floorReqVOList.forEach(floor -> {
|
|
|
|
|
+ TradeOrderFloorDO floorDO = BeanUtils.toBean(floor, TradeOrderFloorDO.class);
|
|
|
|
|
+ floorDO.setOrderId(orderId);
|
|
|
|
|
+ floorDO.setRoomModelId(roomModelId);
|
|
|
|
|
+ floorPlus.add(floorDO);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ tradeOrderCountryMapper.insertBatch(tradeOrderCountryDOList);
|
|
|
|
|
+ tradeOrderRoomModelMapper.insertBatch(list);
|
|
|
|
|
+ tradeOrderFloorMapper.insertBatch(floorPlus);
|
|
|
|
|
+
|
|
|
|
|
+ OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
return CommonResult.success(respVO);
|
|
return CommonResult.success(respVO);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private CommonResult<TradeOrderRespDTO> doShipCreateOrder(LoginUser loginUser, ShipTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.OrderProperty orderProperty = otcTradeOrderCreateReqVO.getOrderProperty();
|
|
|
|
|
+ if (orderProperty == null) {
|
|
|
|
|
+ orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
|
|
+ }
|
|
|
|
|
+ setShipOrderPropertyFromLoginUser(loginUser, orderProperty, SellMethodEnum.WINDOW);
|
|
|
|
|
+ otcTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
|
|
+ return tradeOrderService.createShipOrder(otcTradeOrderCreateReqVO);
|
|
|
|
|
+ }
|
|
|
|
|
+ private void setShipOrderPropertyFromLoginUser(LoginUser loginUser, ShipTradeOrderCreateReqVO.OrderProperty orderProperty, SellMethodEnum sellMethodEnum) {
|
|
|
|
|
+ orderProperty.setSellerId(loginUser.getId().toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ private static ShipTradeOrderCreateReqVO.@NotNull Visitor getVisitor1(TradeVistorReqVO tradeVistorReqVO) {
|
|
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
|
|
+ visitor.setName(tradeVistorReqVO.getName());
|
|
|
|
|
+ visitor.setMobile(tradeVistorReqVO.getPhone());
|
|
|
|
|
+ visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
|
|
|
|
|
+ visitor.setCredentialType(tradeVistorReqVO.getCardType());
|
|
|
|
|
+ visitor.setYczz(tradeVistorReqVO.getYichang());
|
|
|
|
|
+ visitor.setCqzz(tradeVistorReqVO.getChongqing());
|
|
|
|
|
+ visitor.setRoomId(tradeVistorReqVO.getRoomId());
|
|
|
|
|
+ visitor.setNationality(tradeVistorReqVO.getNationality());
|
|
|
|
|
+ return visitor;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public CommonResult<PayOrderRespVO> miniAppPayOrder(LoginUser loginUser, PayOrderReqVO payOrderReqVO) {
|
|
public CommonResult<PayOrderRespVO> miniAppPayOrder(LoginUser loginUser, PayOrderReqVO payOrderReqVO) {
|
|
|
if(loginUser==null){
|
|
if(loginUser==null){
|