Browse Source

fix:添加订单房型升楼层数据

luofeiyun 1 week ago
parent
commit
49e7a1c667

+ 7 - 0
ship-module-otc/ship-module-otc-api/src/main/java/com/yc/ship/module/otc/api/store/StoreApi.java

@@ -57,4 +57,11 @@ public interface StoreApi {
     @PermitAll
     @Operation(summary = "同步门店产品状态")
     CommonResult<Boolean> syncStoreProductStatus(StoreProductReqDTO reqDTO);
+
+    /**
+     * 获取门店信息
+     * @param id
+     * @return
+     */
+    StoreInfoRespDTO getStoreInfo(Long id);
 }

+ 15 - 0
ship-module-otc/ship-module-otc-api/src/main/java/com/yc/ship/module/otc/api/store/dto/StoreInfoRespDTO.java

@@ -0,0 +1,15 @@
+package com.yc.ship.module.otc.api.store.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "门店信息")
+@Data
+public class StoreInfoRespDTO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072")
+    private Long Id;
+
+    @Schema(description = "门店名称", example = "9072")
+    private String name;
+}

+ 6 - 0
ship-module-otc/ship-module-otc-biz/src/main/java/com/yc/ship/module/otc/api/store/StoreApiImpl.java

@@ -313,4 +313,10 @@ public class StoreApiImpl implements StoreApi {
         storeService.updateStoreProductStatus(reqDTO);
         return CommonResult.success(true);
     }
+
+    @Override
+    public StoreInfoRespDTO getStoreInfo(Long id) {
+        StoreDO store = storeService.getStore(id);
+        return BeanUtils.toBean(store, StoreInfoRespDTO.class);
+    }
 }

+ 41 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderFloorReqVO.java

@@ -0,0 +1,41 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Schema(description = "订单升楼层参数")
+@Data
+public class TradeOrderFloorReqVO {
+
+    /**
+     * 订单ID
+     */
+    @Schema(description = "订单ID")
+    private Long orderId;
+    /**
+     * 房型ID
+     */
+    @Schema(description = "房型ID")
+    private Long roomModelId;
+    /**
+     * 楼层
+     */
+    @Schema(description = "楼层")
+    private Integer floor;
+    /**
+     * 数量
+     */
+    @Schema(description = "数量")
+    private Integer num;
+    /**
+     * 单价
+     */
+    @Schema(description = "单价")
+    private BigDecimal price;
+    /**
+     * 总价
+     */
+    @Schema(description = "总价")
+    private BigDecimal amount;
+}

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRoomModelReqVO.java

@@ -3,7 +3,13 @@ package com.yc.ship.module.trade.controller.admin.order.vo.order;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 @Schema(description = "订单房型信息")
 @Data
 public class TradeOrderRoomModelReqVO extends TradeOrderRoomModelBaseVO{
+
+    @Schema(description = "升房型列表")
+    List<TradeOrderFloorReqVO> floorPlus;
+
 }

+ 58 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderFloorDO.java

@@ -0,0 +1,58 @@
+package com.yc.ship.module.trade.dal.dataobject.order;
+
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 订单升楼层数据 DO
+ *
+ * @author 管理员
+ */
+@TableName("trade_order_floor")
+@KeySequence("trade_order_floor_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TradeOrderFloorDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 订单ID
+     */
+    private Long orderId;
+    /**
+     * 房型ID
+     */
+    private Long roomModelId;
+    /**
+     * 楼层
+     */
+    private Integer floor;
+    /**
+     * 数量
+     */
+    private Integer num;
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+    /**
+     * 总价
+     */
+    private BigDecimal amount;
+
+}

+ 15 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderFloorMapper.java

@@ -0,0 +1,15 @@
+package com.yc.ship.module.trade.dal.mysql.order;
+
+import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderFloorDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 订单升楼层数据 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface TradeOrderFloorMapper extends BaseMapperX<TradeOrderFloorDO> {
+
+}

+ 12 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderFloorService.java

@@ -0,0 +1,12 @@
+package com.yc.ship.module.trade.service.order;
+
+
+/**
+ * 订单升楼层数据 Service 接口
+ *
+ * @author 管理员
+ */
+public interface TradeOrderFloorService {
+
+
+}

+ 22 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderFloorServiceImpl.java

@@ -0,0 +1,22 @@
+package com.yc.ship.module.trade.service.order;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderFloorMapper;
+
+
+/**
+ * 订单升楼层数据 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class TradeOrderFloorServiceImpl implements TradeOrderFloorService {
+
+    @Resource
+    private TradeOrderFloorMapper orderFloorMapper;
+
+}

+ 49 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -30,6 +30,7 @@ import com.yc.ship.module.ota.dal.mysql.distributor.DistributorMapper;
 import com.yc.ship.module.otc.api.agency.dto.AgencyUserLoginInfoRespDTO;
 import com.yc.ship.module.otc.api.agency.dto.CooperateRespDTO;
 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.product.api.ProductApi;
 import com.yc.ship.module.product.api.dto.*;
@@ -86,6 +87,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception0;
 import static com.yc.ship.framework.common.util.collection.CollectionUtils.convertList;
 import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
 import static com.yc.ship.module.trade.enums.ApiConstants.*;
@@ -179,6 +182,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private TradeVisitorMapper tradeVisitorMapper;
 
+    @Resource
+    private TradeOrderFloorMapper tradeOrderFloorMapper;
+
 
     public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
 
@@ -2333,7 +2339,26 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Long createOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO) {
+    public Long createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
+        Long distributorId = loginUser.getDistributorId();
+        Long storeId = loginUser.getStoreId();
+        //获取当前分销商信息
+        if(distributorId==null) {
+            throw exception0(500,"当前登录用户不是旅行社");
+        }
+        if(storeId==null) {
+            throw exception0(500,"当前登录用户不是门店");
+        }
+        //获取当前分销商信息
+        DistributorDO distributorDO = distributorMapper.selectById(distributorId);
+        if(distributorDO==null) {
+            throw exception0(500,"该旅行社不存在");
+        }
+        //获取当前门店
+        StoreInfoRespDTO storeInfo = storeApi.getStoreInfo(storeId);
+        if(storeInfo==null) {
+            throw exception0(500,"该门店不存在");
+        }
         long orderId = IdWorker.getId();
         // 创建订单
         TradeOrderDO tradeOrderDO = BeanUtils.toBean(createVO, TradeOrderDO.class);
@@ -2341,7 +2366,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         tradeOrderDO.setOrderNo(tradeUUCodeUtils.generateOrderNo(ORDER_PREFIX));
         tradeOrderDO.setOrderStatus(TradeOrderStatusEnum.INIT.getStatus());
         tradeOrderDO.setSellMethod(SellMethodEnum.OTC.getType());
-        tradeOrderDO.setStoreId(agencyLoginUser.getStoreId());
+        tradeOrderDO.setStoreId(storeId);
+        tradeOrderDO.setStoreName(storeInfo.getName());
+        tradeOrderDO.setSourceId(distributorId.toString());
+        tradeOrderDO.setSourceName(distributorDO.getName());
         tradeOrderDO.setVisitorType(1);//团队
         tradeOrderMapper.insert(tradeOrderDO);
 
@@ -2352,22 +2380,39 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         tradeOrderTotalMapper.insert(tradeOrderTotalDO);
 
         //创建订单国籍数据
+        List<TradeOrderRoomModelDO> list = new ArrayList<>(); //创建订单房型数据
+        List<TradeOrderCountryDO> tradeOrderCountryDOList = new ArrayList<>(); //创建订单国籍数据
+        List<TradeOrderFloorDO> floorPlus = new ArrayList<>();
         List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
         countryData.stream().forEach(item -> {
             TradeOrderCountryDO countryDO = BeanUtils.toBean(item, TradeOrderCountryDO.class);
             Long countryId = IdWorker.getId();
             countryDO.setOrderId(orderId);
             countryDO.setId(countryId);
-            tradeOrderCountryMapper.insert(countryDO);
+            tradeOrderCountryDOList.add(countryDO);
             List<TradeOrderRoomModelReqVO> roomModels = item.getRoomModels();
             //创建订单房型数据
             roomModels.stream().forEach(roomModel -> {
                 TradeOrderRoomModelDO roomModelDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
+                Long roomModelId = IdWorker.getId();
                 roomModelDO.setOrderId(orderId);
+                roomModelDO.setId(roomModelId);
                 roomModelDO.setCountryId(countryId);
-                tradeOrderRoomModelMapper.insert(roomModelDO);
+                list.add(roomModelDO);
+                // 房型升楼层数据
+                List<TradeOrderFloorReqVO> floorReqVOList = roomModel.getFloorPlus();
+                floorReqVOList.stream().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);
 
         //创建订单游客数据
         List<TradeVistorReqVO> visitorList = createVO.getVisitorList();