Browse Source

fix: 修改订单详情页面接口

luofeiyun 1 week ago
parent
commit
14276d2f34
12 changed files with 121 additions and 5 deletions
  1. 2 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/app/voyage/AppVoyageController.java
  2. 6 3
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/app/voyage/vo/AppCanSelectRoomReqVO.java
  3. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeRoomMapper.java
  4. 7 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewService.java
  5. 49 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java
  6. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomService.java
  7. 6 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomServiceImpl.java
  8. 13 0
      ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeRoomMapper.xml
  9. 12 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderCountryBaseVO.java
  10. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRoomModelBaseVO.java
  11. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java
  12. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

+ 2 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/app/voyage/AppVoyageController.java

@@ -205,8 +205,8 @@ public class AppVoyageController {
     //获取可以选择的房间号
     @GetMapping("/getCanSelectRoomList")
     @Operation(summary = "获取可以选择的房间号")
-    public CommonResult<List<RoomRespDTO>> getCanSelectRoomList(@RequestBody QueryCanSelectRoomListNewReqVO reqVO) {
-        List<RoomRespDTO> list = voyageStockDistributeNewService.getCanSelectRoomList(reqVO);
+    public CommonResult<List<RoomRespDTO>> getCanSelectRoomList(@RequestBody AppCanSelectRoomReqVO reqVO) {
+        List<RoomRespDTO> list = voyageStockDistributeNewService.getAppCanSelectRoomList(reqVO);
         return success(list);
     }
 

+ 6 - 3
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/app/voyage/vo/AppCanSelectRoomReqVO.java

@@ -7,15 +7,18 @@ import lombok.Data;
 @Data
 public class AppCanSelectRoomReqVO {
 
+    @Schema(description = "船ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long shipId;
+
     @Schema(description = "航次ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long voyageId;
 
-    @Schema(description = "房型ID", example = "1024")
+    @Schema(description = "房型ID,不传则查所有的", example = "1024")
     private Long roomModelId;
 
-    @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @Schema(description = "分销商ID, 不传则查共享的", example = "1024")
     private Long distributeId;
 
-    @Schema(description = "楼层", example = "1024")
+    @Schema(description = "楼层,不传则查所有的", example = "1024")
     private Integer floor;
 }

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeRoomMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.VoyageStockDistributeNewDetailReqVO;
+import com.yc.ship.module.product.controller.app.voyage.vo.AppCanSelectRoomReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -41,4 +42,6 @@ public interface VoyageStockDistributeRoomMapper extends BaseMapperX<VoyageStock
                 .eqIfPresent(VoyageStockDistributeRoomDO::getDistributorId, reqVO.getDistributorId())
                 .eq(VoyageStockDistributeRoomDO::getType, reqVO.getType()));
     }
+
+    List<VoyageStockDistributeRoomDO> selectAppCanSelectRoomList(@Param("reqVO") AppCanSelectRoomReqVO reqVO);
 }

+ 7 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewService.java

@@ -2,6 +2,7 @@ package com.yc.ship.module.product.service.voyagestockdistribute;
 
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.*;
+import com.yc.ship.module.product.controller.app.voyage.vo.AppCanSelectRoomReqVO;
 import com.yc.ship.module.resource.api.room.dto.RoomRespDTO;
 
 import java.math.BigDecimal;
@@ -62,4 +63,10 @@ public interface VoyageStockDistributeNewService {
      * @return
      */
     BigDecimal getDistributeNum(Long voyageId);
+    /**
+     * 获取APP可以选择的房间列表
+     * @param reqVO
+     * @return
+     */
+    List<RoomRespDTO> getAppCanSelectRoomList(AppCanSelectRoomReqVO reqVO);
 }

+ 49 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java

@@ -6,6 +6,7 @@ import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockPageReqVO;
 import com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockRespVO;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.*;
+import com.yc.ship.module.product.controller.app.voyage.vo.AppCanSelectRoomReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockRoomUsedDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeNewDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
@@ -306,4 +307,52 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     public BigDecimal getDistributeNum(Long voyageId) {
         return voyageStockDistributeNewMapper.selectTotalDistributeNum(voyageId);
     }
+
+    @Override
+    public List<RoomRespDTO> getAppCanSelectRoomList(AppCanSelectRoomReqVO reqVO) {
+        Long distributeId = reqVO.getDistributeId();
+        if(distributeId != null) {
+            return getAppDistributorCanSelectRoomList(reqVO);
+        } else {
+            return getAppShareCanSelectRoomList(reqVO);
+        }
+    }
+
+    /**
+     * 获取共享房间可以选择的房间列表
+     * @param reqVO
+     * @return
+     */
+    private List<RoomRespDTO> getAppShareCanSelectRoomList(AppCanSelectRoomReqVO reqVO) {
+        return null;
+    }
+
+    /**
+     * 获取分销商可以选择的房间列表
+     * @param reqVO
+     * @return
+     */
+    private List<RoomRespDTO> getAppDistributorCanSelectRoomList(AppCanSelectRoomReqVO reqVO) {
+        //获取当前分销商选择的房型和楼层对象的房间列表
+        //TODO:此处当前默认为1分销商,暂无门店
+        List<VoyageStockDistributeRoomDO> roomList  = voyageStockDistributeRoomService.getAppCanSelectRoomList(reqVO);
+        List<Long> roomIds = CollectionUtils.convertList(roomList, VoyageStockDistributeRoomDO::getRoomId);
+        //获取完全被使用的房间
+        List<VoyageStockRoomUsedDO> allUsedList = voyageStockRoomUsedMapper.selectAllUsedList(reqVO.getVoyageId());
+        List<Long> allUserRoomId = CollectionUtils.convertList(allUsedList, VoyageStockRoomUsedDO::getRoomId);
+        //过滤掉完全被使用的房间
+        List<Long> canSelectRoomIds = roomIds.stream().filter(item -> !allUserRoomId.contains(item)).collect(Collectors.toList());
+        List<RoomRespDTO> roomRespList = roomApi.getRoomListByIds(canSelectRoomIds);
+        // 获取使用一半的房间
+        List<VoyageStockRoomUsedDO> halfUsedList = voyageStockRoomUsedMapper.selectHalfUsedRoom(reqVO.getVoyageId());
+        List<Long> halfUsedRoomIds = CollectionUtils.convertList(halfUsedList, VoyageStockRoomUsedDO::getRoomId);
+        roomRespList.stream().forEach(item -> {
+            if(halfUsedRoomIds.contains(item.getId())) {
+                item.setNum(BigDecimal.valueOf(0.5));
+            }else {
+                item.setNum(BigDecimal.ONE);
+            }
+        });
+        return roomRespList;
+    }
 }

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomService.java

@@ -2,6 +2,7 @@ package com.yc.ship.module.product.service.voyagestockdistribute;
 
 
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.VoyageStockDistributeNewDetailReqVO;
+import com.yc.ship.module.product.controller.app.voyage.vo.AppCanSelectRoomReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
 
 import java.util.List;
@@ -38,4 +39,6 @@ public interface VoyageStockDistributeRoomService {
     List<VoyageStockDistributeRoomDO> getRoomListByRoomModelIdAndFloor(Long objectId, List<String> roomModelIdFloorList);
 
     List<VoyageStockDistributeRoomDO> getListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO);
+
+    List<VoyageStockDistributeRoomDO> getAppCanSelectRoomList(AppCanSelectRoomReqVO reqVO);
 }

+ 6 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomServiceImpl.java

@@ -2,6 +2,7 @@ package com.yc.ship.module.product.service.voyagestockdistribute;
 
 import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.VoyageStockDistributeNewDetailReqVO;
+import com.yc.ship.module.product.controller.app.voyage.vo.AppCanSelectRoomReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
 import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeRoomMapper;
 import org.springframework.stereotype.Service;
@@ -50,4 +51,9 @@ public class VoyageStockDistributeRoomServiceImpl implements VoyageStockDistribu
     public List<VoyageStockDistributeRoomDO> getListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO) {
         return voyageStockDistributeRoomMapper.selectListByVoyageIdAndObjectId(reqVO);
     }
+
+    @Override
+    public List<VoyageStockDistributeRoomDO> getAppCanSelectRoomList(AppCanSelectRoomReqVO reqVO) {
+        return voyageStockDistributeRoomMapper.selectAppCanSelectRoomList(reqVO);
+    }
 }

+ 13 - 0
ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeRoomMapper.xml

@@ -17,4 +17,17 @@
                     #{item}
                 </foreach>
     </select>
+    <select id="selectAppCanSelectRoomList"
+            resultType="com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO">
+        select * from product_voyage_stock_distribute_room
+        where deleted = 0 and distributor_id = #{reqVO.distributeId}
+          and ship_id = #{reqVO.shipId}
+          and voyage_id = #{reqVO.voyageId}
+        <if test="reqVO.roomModelId != null">
+            and room_model_id = #{reqVO.roomModelId}
+        </if>
+        <if test="reqVO.floor != null">
+            and floor = #{reqVO.floor}
+        </if>
+    </select>
 </mapper>

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

@@ -4,11 +4,17 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Schema(description = "订单国家信息")
 @Data
 public class TradeOrderCountryBaseVO {
 
+    /**
+     * ID
+     */
+    @Schema(description = "ID", example = "")
+    private Long id;
     /**
      * 订单ID
      */
@@ -55,4 +61,10 @@ public class TradeOrderCountryBaseVO {
      */
     @Schema(description = "陪同费", example = "")
     private BigDecimal withPrice;
+
+    /**
+     * 房型信息
+     */
+    @Schema(description = "房型信息")
+    private List<TradeOrderRoomModelBaseVO> roomModelList;
 }

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

@@ -9,6 +9,11 @@ import java.math.BigDecimal;
 @Data
 public class TradeOrderRoomModelBaseVO {
 
+    /**
+     * ID
+     */
+    @Schema(description = "ID", example = "")
+    private Long id;
     /**
      * 订单ID
      */

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

@@ -1,9 +1,12 @@
 package com.yc.ship.module.trade.dal.mysql.order;
 
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderRoomModelDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 订单关联房型数据 Mapper
  *
@@ -13,4 +16,8 @@ import org.apache.ibatis.annotations.Mapper;
 public interface TradeOrderRoomModelMapper extends BaseMapperX<TradeOrderRoomModelDO> {
 
 
+    default List<TradeOrderRoomModelDO> selectListByOrderId(Long id) {
+        return selectList(new LambdaQueryWrapperX<TradeOrderRoomModelDO>()
+                .eq(TradeOrderRoomModelDO::getOrderId, id));
+    }
 }

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

@@ -15,6 +15,7 @@ import com.yc.ship.framework.common.enums.UserTypeEnum;
 import com.yc.ship.framework.common.lang.Asserts;
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.common.util.object.ObjectUtils;
 import com.yc.ship.framework.ip.core.utils.AreaUtils;
@@ -2551,13 +2552,20 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     public TradeOrderRespNewVO getOrderInfoNew(Long id) {
         TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(id);
         TradeOrderRespNewVO orderRespNewVO = BeanUtils.toBean(tradeOrderDO, TradeOrderRespNewVO.class);
+        //设置房型数据
+        List<TradeOrderRoomModelDO> roomModelDOS = tradeOrderRoomModelMapper.selectListByOrderId(id);
+        List<TradeOrderRoomModelBaseVO> roomModelList = BeanUtils.toBean(roomModelDOS, TradeOrderRoomModelBaseVO.class);
+        Map<Long, List<TradeOrderRoomModelBaseVO>> roomModelMap = CollectionUtils.convertMultiMap(roomModelList, TradeOrderRoomModelBaseVO::getCountryId);
         //设置国籍数据
         List<TradeOrderCountryDO> countryDOS = tradeOrderCountryMapper.selectListByOrderId(id);
         List<TradeOrderCountryBaseVO> countryList = BeanUtils.toBean(countryDOS, TradeOrderCountryBaseVO.class);
         countryList.forEach(item -> {
             item.setCountryName(AreaUtils.format2Str(item.getCountryId()));
+            item.setRoomModelList(roomModelMap.get(item.getId()));
         });
         orderRespNewVO.setCountryList(countryList);
+
+
         if (tradeOrderDO.getPayStatus() == 0) {
             tradeOrderDO.setPayAmount(BigDecimal.ZERO);
         }