ソースを参照

fix:添加分销商航次库存分配接口

luofeiyun 1 ヶ月 前
コミット
f36f4855a4
20 ファイル変更686 行追加1 行削除
  1. 8 0
      ship-module-ota/ship-module-ota-api/src/main/java/com/yc/ship/module/ota/api/OtaDistributorApi.java
  2. 5 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/api/OtaDistributorApiImpl.java
  3. 7 1
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/mysql/distributor/DistributorMapper.java
  4. 7 0
      ship-module-otc/ship-module-otc-api/src/main/java/com/yc/ship/module/otc/api/store/StoreApi.java
  5. 12 0
      ship-module-otc/ship-module-otc-api/src/main/java/com/yc/ship/module/otc/api/store/dto/StoreInfoRespDTO.java
  6. 7 0
      ship-module-otc/ship-module-otc-biz/src/main/java/com/yc/ship/module/otc/api/store/StoreApiImpl.java
  7. 6 0
      ship-module-product/ship-module-product-biz/pom.xml
  8. 102 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/VoyageStockDistributeController.java
  9. 43 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributePageReqVO.java
  10. 51 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeRespVO.java
  11. 36 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java
  12. 64 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java
  13. 37 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeMapper.java
  14. 61 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeService.java
  15. 175 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeServiceImpl.java
  16. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  17. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespNewVO.java
  18. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderCountryMapper.java
  19. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java
  20. 39 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

+ 8 - 0
ship-module-ota/ship-module-ota-api/src/main/java/com/yc/ship/module/ota/api/OtaDistributorApi.java

@@ -5,6 +5,7 @@ import com.yc.ship.module.ota.api.dto.*;
 import io.swagger.v3.oas.annotations.parameters.RequestBody;
 
 import javax.validation.Valid;
+import java.util.Collection;
 import java.util.List;
 
 public interface OtaDistributorApi {
@@ -43,4 +44,11 @@ public interface OtaDistributorApi {
     CommonResult<?> distributorSelfRecharge(DistributorSelfRechargeReqDTO payNotifyReqDTO);
 
     CommonResult<DistributorRespDTO> getDistributorByLoginUser(String loginName);
+
+    /**
+     * 根据经销商类型获取分销商列表
+     * @param type
+     * @return
+     */
+    List<DistributorRespDTO> getDistributorList(Integer  type);
 }

+ 5 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/api/OtaDistributorApiImpl.java

@@ -112,4 +112,9 @@ public class OtaDistributorApiImpl implements OtaDistributorApi{
         return CommonResult.success(BeanUtils.toBean(distributor, DistributorRespDTO.class));
     }
 
+    @Override
+    public List<DistributorRespDTO> getDistributorList(Integer type) {
+        return BeanUtils.toBean(distributorMapper.selectListByType(type), DistributorRespDTO.class);
+    }
+
 }

+ 7 - 1
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/mysql/distributor/DistributorMapper.java

@@ -6,6 +6,7 @@ import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
 import com.yc.ship.module.ota.controller.admin.distributor.vo.DistributorListReqVO;
 import com.yc.ship.module.ota.controller.admin.distributor.vo.DistributorPageReqVO;
 import com.yc.ship.module.ota.controller.admin.distributor.vo.DistributorRespVO;
@@ -117,5 +118,10 @@ public interface DistributorMapper extends BaseMapperX<DistributorDO> {
     List<ProductSpuRespDTO> selectOtaSpuList(@Param("categoryId") Long categoryId, @Param("distributorId") Long distributorId, @Param("useDate") String useDate);
 
 
-
+    default List<DistributorDO> selectListByType(Integer type) {
+        return selectList(new LambdaQueryWrapperX<DistributorDO>()
+                .eqIfPresent(DistributorDO::getType, type)
+                .eq(DistributorDO::getIsUse, true)
+                .orderByDesc(DistributorDO::getId));
+    }
 }

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

@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody;
 import io.swagger.v3.oas.annotations.tags.Tag;
 
 import javax.annotation.security.PermitAll;
+import java.util.List;
 
 /**
  * @author :yaochao
@@ -64,4 +65,10 @@ public interface StoreApi {
      * @return
      */
     StoreInfoRespDTO getStoreInfo(Long id);
+
+    /**
+     * 获取门店列表
+     * @return
+     */
+    List<StoreInfoRespDTO> getStoreList();
 }

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

@@ -12,4 +12,16 @@ public class StoreInfoRespDTO {
 
     @Schema(description = "门店名称", example = "9072")
     private String name;
+
+    @Schema(description = "旅行社ID", example = "9072")
+    private Long agencyId;
+
+    /**
+     * 门店编码
+     */
+    private String storeCode;
+    /**
+     * 门店名称
+     */
+    private String storeName;
 }

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

@@ -10,6 +10,7 @@ import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
 import com.yc.ship.module.otc.api.store.StoreApi;
 import com.yc.ship.module.otc.api.store.dto.*;
 import com.yc.ship.module.otc.controller.admin.store.vo.StoreSaveReqVO;
+import com.yc.ship.module.otc.controller.admin.store.vo.StoreSimpleReqVO;
 import com.yc.ship.module.otc.controller.admin.storetradelog.vo.StoreTradeLogRespVO;
 import com.yc.ship.module.otc.convert.store.StoreConvert;
 import com.yc.ship.module.otc.dal.dataobject.store.StoreDO;
@@ -322,4 +323,10 @@ public class StoreApiImpl implements StoreApi {
         storeInfoRespDTO.setName(store.getStoreName());
         return storeInfoRespDTO;
     }
+
+    @Override
+    public List<StoreInfoRespDTO> getStoreList() {
+        List<StoreDO> storeList = storeService.getStoreList(new StoreSimpleReqVO().setStatus(UseStatusEnum.ENABLE.getStatus()));
+        return BeanUtils.toBean(storeList, StoreInfoRespDTO.class);
+    }
 }

+ 6 - 0
ship-module-product/ship-module-product-biz/pom.xml

@@ -137,6 +137,12 @@
             <version>1.0.0</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.yc.ship</groupId>
+            <artifactId>ship-module-otc-api</artifactId>
+            <version>1.0.0</version>
+            <scope>compile</scope>
+        </dependency>
         <dependency>
             <groupId>com.belerweb</groupId>
             <artifactId>pinyin4j</artifactId>

+ 102 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/VoyageStockDistributeController.java

@@ -0,0 +1,102 @@
+package com.yc.ship.module.product.controller.admin.voyagestockdistribute;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+import static com.yc.ship.framework.common.pojo.CommonResult.success;
+
+import com.yc.ship.framework.excel.core.util.ExcelUtils;
+
+import com.yc.ship.framework.apilog.core.annotation.ApiAccessLog;
+import static com.yc.ship.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
+import com.yc.ship.module.product.service.voyagestockdistribute.VoyageStockDistributeService;
+
+@Tag(name = "管理后台 - 航次库存分配")
+@RestController
+@RequestMapping("/product/voyage-stock-distribute")
+@Validated
+public class VoyageStockDistributeController {
+
+    @Resource
+    private VoyageStockDistributeService voyageStockDistributeService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建航次库存分配")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:create')")
+    public CommonResult<Long> createVoyageStockDistribute(@Valid @RequestBody VoyageStockDistributeSaveReqVO createReqVO) {
+        return success(voyageStockDistributeService.createVoyageStockDistribute(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新航次库存分配")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:update')")
+    public CommonResult<Boolean> updateVoyageStockDistribute(@Valid @RequestBody VoyageStockDistributeSaveReqVO updateReqVO) {
+        voyageStockDistributeService.updateVoyageStockDistribute(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除航次库存分配")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:delete')")
+    public CommonResult<Boolean> deleteVoyageStockDistribute(@RequestParam("id") Long id) {
+        voyageStockDistributeService.deleteVoyageStockDistribute(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得航次库存分配")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:query')")
+    public CommonResult<VoyageStockDistributeRespVO> getVoyageStockDistribute(@RequestParam("id") Long id) {
+        VoyageStockDistributeDO voyageStockDistribute = voyageStockDistributeService.getVoyageStockDistribute(id);
+        return success(BeanUtils.toBean(voyageStockDistribute, VoyageStockDistributeRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得航次库存分配分页")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:query')")
+    public CommonResult<PageResult<VoyageStockDistributeRespVO>> getVoyageStockDistributePage(@Valid VoyageStockDistributePageReqVO pageReqVO) {
+        PageResult<VoyageStockDistributeDO> pageResult = voyageStockDistributeService.getVoyageStockDistributePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, VoyageStockDistributeRespVO.class));
+    }
+
+    @GetMapping("/list-by-voyage_id")
+    @Operation(summary = "根据航次ID获取给旅行社分配航次库存列表")
+    public CommonResult<List<VoyageStockDistributeRespVO>> getVoyageStockDistributeListByVoyageId(@RequestParam("voyageId") Long voyageId) {
+        List<VoyageStockDistributeDO> list = voyageStockDistributeService.getListByVoyageId(voyageId);
+        return success(BeanUtils.toBean(list, VoyageStockDistributeRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出航次库存分配 Excel")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportVoyageStockDistributeExcel(@Valid VoyageStockDistributePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<VoyageStockDistributeDO> list = voyageStockDistributeService.getVoyageStockDistributePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "航次库存分配.xls", "数据", VoyageStockDistributeRespVO.class,
+                        BeanUtils.toBean(list, VoyageStockDistributeRespVO.class));
+    }
+
+}

+ 43 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributePageReqVO.java

@@ -0,0 +1,43 @@
+package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.yc.ship.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 航次库存分配分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class VoyageStockDistributePageReqVO extends PageParam {
+
+    @Schema(description = "分销商ID", example = "2991")
+    private Long distributorId;
+
+    @Schema(description = "门店ID", example = "5290")
+    private Long storeId;
+
+    @Schema(description = "游轮ID", example = "25510")
+    private Long shipId;
+
+    @Schema(description = "航次ID", example = "6756")
+    private Long voyageId;
+
+    @Schema(description = "房型ID", example = "30594")
+    private Long roomModelId;
+
+    @Schema(description = "楼层号")
+    private Integer floor;
+
+    @Schema(description = "分配房间数")
+    private Integer num;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeRespVO.java

@@ -0,0 +1,51 @@
+package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 航次库存分配 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class VoyageStockDistributeRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13019")
+    @ExcelProperty("ID")
+    private Long id;
+
+    @Schema(description = "分销商ID", example = "2991")
+    @ExcelProperty("分销商ID")
+    private Long distributorId;
+
+    @Schema(description = "门店ID", example = "5290")
+    @ExcelProperty("门店ID")
+    private Long storeId;
+
+    @Schema(description = "游轮ID", example = "25510")
+    @ExcelProperty("游轮ID")
+    private Long shipId;
+
+    @Schema(description = "航次ID", example = "6756")
+    @ExcelProperty("航次ID")
+    private Long voyageId;
+
+    @Schema(description = "房型ID", example = "30594")
+    @ExcelProperty("房型ID")
+    private Long roomModelId;
+
+    @Schema(description = "楼层号")
+    @ExcelProperty("楼层号")
+    private Integer floor;
+
+    @Schema(description = "分配房间数")
+    @ExcelProperty("分配房间数")
+    private Integer num;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 36 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java

@@ -0,0 +1,36 @@
+package com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 航次库存分配新增/修改 Request VO")
+@Data
+public class VoyageStockDistributeSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13019")
+    private Long id;
+
+    @Schema(description = "分销商ID", example = "2991")
+    private Long distributorId;
+
+    @Schema(description = "门店ID", example = "5290")
+    private Long storeId;
+
+    @Schema(description = "游轮ID", example = "25510")
+    private Long shipId;
+
+    @Schema(description = "航次ID", example = "6756")
+    private Long voyageId;
+
+    @Schema(description = "房型ID", example = "30594")
+    private Long roomModelId;
+
+    @Schema(description = "楼层号")
+    private Integer floor;
+
+    @Schema(description = "分配房间数")
+    private Integer num;
+
+}

+ 64 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java

@@ -0,0 +1,64 @@
+package com.yc.ship.module.product.dal.dataobject.voyagestockdistribute;
+
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
+import lombok.*;
+import java.util.*;
+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("product_voyage_stock_distribute")
+@KeySequence("product_voyage_stock_distribute_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class VoyageStockDistributeDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 分销商类型
+     */
+    private Integer distributorType;
+    /**
+     * 分销商ID
+     */
+    private Long distributorId;
+    /**
+     * 门店ID
+     */
+    private Long storeId;
+    /**
+     * 游轮ID
+     */
+    private Long shipId;
+    /**
+     * 航次ID
+     */
+    private Long voyageId;
+    /**
+     * 房型ID
+     */
+    private Long roomModelId;
+    /**
+     * 楼层号
+     */
+    private Integer floor;
+    /**
+     * 分配房间数
+     */
+    private Integer num;
+
+}

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

@@ -0,0 +1,37 @@
+package com.yc.ship.module.product.dal.mysql.voyagestockdistribute;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
+import org.apache.ibatis.annotations.Mapper;
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
+
+import java.util.List;
+
+/**
+ * 航次库存分配 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface VoyageStockDistributeMapper extends BaseMapperX<VoyageStockDistributeDO> {
+
+    default PageResult<VoyageStockDistributeDO> selectPage(VoyageStockDistributePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<VoyageStockDistributeDO>()
+                .eqIfPresent(VoyageStockDistributeDO::getDistributorId, reqVO.getDistributorId())
+                .eqIfPresent(VoyageStockDistributeDO::getStoreId, reqVO.getStoreId())
+                .eqIfPresent(VoyageStockDistributeDO::getShipId, reqVO.getShipId())
+                .eqIfPresent(VoyageStockDistributeDO::getVoyageId, reqVO.getVoyageId())
+                .eqIfPresent(VoyageStockDistributeDO::getRoomModelId, reqVO.getRoomModelId())
+                .eqIfPresent(VoyageStockDistributeDO::getFloor, reqVO.getFloor())
+                .eqIfPresent(VoyageStockDistributeDO::getNum, reqVO.getNum())
+                .betweenIfPresent(VoyageStockDistributeDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(VoyageStockDistributeDO::getId));
+    }
+
+    default List<VoyageStockDistributeDO> selectListByVoyageId(Long voyageId) {
+        return selectList(new LambdaQueryWrapperX<VoyageStockDistributeDO>()
+                .eq(VoyageStockDistributeDO::getVoyageId, voyageId));
+    }
+}

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

@@ -0,0 +1,61 @@
+package com.yc.ship.module.product.service.voyagestockdistribute;
+
+import javax.validation.*;
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+
+import java.util.List;
+
+/**
+ * 航次库存分配 Service 接口
+ *
+ * @author 管理员
+ */
+public interface VoyageStockDistributeService {
+
+    /**
+     * 创建航次库存分配
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createVoyageStockDistribute(@Valid VoyageStockDistributeSaveReqVO createReqVO);
+
+    /**
+     * 更新航次库存分配
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateVoyageStockDistribute(@Valid VoyageStockDistributeSaveReqVO updateReqVO);
+
+    /**
+     * 删除航次库存分配
+     *
+     * @param id 编号
+     */
+    void deleteVoyageStockDistribute(Long id);
+
+    /**
+     * 获得航次库存分配
+     *
+     * @param id 编号
+     * @return 航次库存分配
+     */
+    VoyageStockDistributeDO getVoyageStockDistribute(Long id);
+
+    /**
+     * 获得航次库存分配分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 航次库存分配分页
+     */
+    PageResult<VoyageStockDistributeDO> getVoyageStockDistributePage(VoyageStockDistributePageReqVO pageReqVO);
+
+    /**
+     * 根据航次获取房间库存分配列表
+     * @param voyageId
+     * @return
+     */
+    List<VoyageStockDistributeDO> getListByVoyageId(Long voyageId);
+}

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

@@ -0,0 +1,175 @@
+package com.yc.ship.module.product.service.voyagestockdistribute;
+
+import com.yc.ship.module.ota.api.OtaDistributorApi;
+import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
+import com.yc.ship.module.ota.enums.DistributorTypeEnum;
+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.StoreRespDTO;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
+import com.yc.ship.module.product.service.distributorDiscount.DistributorDiscountService;
+import com.yc.ship.module.product.service.voyage.VoyageService;
+import com.yc.ship.module.product.service.voyagestockdetail.VoyageStockDetailService;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+
+import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeMapper;
+
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.yc.ship.module.product.enums.ErrorCodeConstants.*;
+
+/**
+ * 航次库存分配 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeService {
+
+    @Resource
+    private VoyageStockDistributeMapper voyageStockDistributeMapper;
+
+    @Resource
+    private VoyageStockDetailService voyageStockDetailService;
+
+    @Resource
+    private VoyageService voyageService;
+
+    @Resource
+    private OtaDistributorApi otaDistributorApi;
+
+    @Resource
+    private StoreApi storeApi;
+
+    @Override
+    public Long createVoyageStockDistribute(VoyageStockDistributeSaveReqVO createReqVO) {
+        // 插入
+        VoyageStockDistributeDO voyageStockDistribute = BeanUtils.toBean(createReqVO, VoyageStockDistributeDO.class);
+        voyageStockDistributeMapper.insert(voyageStockDistribute);
+        // 返回
+        return voyageStockDistribute.getId();
+    }
+
+    @Override
+    public void updateVoyageStockDistribute(VoyageStockDistributeSaveReqVO updateReqVO) {
+        // 更新
+        VoyageStockDistributeDO updateObj = BeanUtils.toBean(updateReqVO, VoyageStockDistributeDO.class);
+        voyageStockDistributeMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteVoyageStockDistribute(Long id) {
+        // 删除
+        voyageStockDistributeMapper.deleteById(id);
+    }
+
+
+
+    @Override
+    public VoyageStockDistributeDO getVoyageStockDistribute(Long id) {
+        return voyageStockDistributeMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<VoyageStockDistributeDO> getVoyageStockDistributePage(VoyageStockDistributePageReqVO pageReqVO) {
+        return voyageStockDistributeMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<VoyageStockDistributeDO> getListByVoyageId(Long voyageId) {
+        List<VoyageStockDistributeDO> list = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
+        VoyageDO voyage = voyageService.getVoyage(voyageId);
+        if(list.isEmpty()) {
+//            list = new ArrayList<>();
+            List<VoyageStockDetailDO> stockDetailDOS = voyageStockDetailService.getListByVoyageId(voyageId);
+            // OTA分销商类型数据
+            stockDetailDOS.stream().forEach(item -> {
+                VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                stockDistributeDO.setVoyageId(item.getVoyageId());
+                stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                stockDistributeDO.setFloor(item.getFloor());
+                stockDistributeDO.setNum(0);
+                stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
+                stockDistributeDO.setDistributorId(null);
+                stockDistributeDO.setStoreId(null);
+                stockDistributeDO.setShipId(voyage.getShipId());
+                list.add(stockDistributeDO);
+            });
+            //旅行社分销商类型数据
+            stockDetailDOS.stream().forEach(item -> {
+                VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                stockDistributeDO.setVoyageId(item.getVoyageId());
+                stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                stockDistributeDO.setFloor(item.getFloor());
+                stockDistributeDO.setNum(0);
+                stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
+                stockDistributeDO.setDistributorId(null);
+                stockDistributeDO.setStoreId(null);
+                stockDistributeDO.setShipId(voyage.getShipId());
+                list.add(stockDistributeDO);
+            });
+
+            //OTA分销商类型的分销商数据
+            List<DistributorRespDTO> otaDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTA.getType());
+            otaDistributorList.stream().forEach(distributor -> {
+                stockDetailDOS.stream().forEach(item -> {
+                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                    stockDistributeDO.setVoyageId(item.getVoyageId());
+                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                    stockDistributeDO.setFloor(item.getFloor());
+                    stockDistributeDO.setNum(0);
+                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
+                    stockDistributeDO.setDistributorId(distributor.getId());
+                    stockDistributeDO.setStoreId(null);
+                    stockDistributeDO.setShipId(voyage.getShipId());
+                    list.add(stockDistributeDO);
+                });
+            });
+            //旅行社分销商类型的分销商数据
+            List<DistributorRespDTO> otcDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTC.getType());
+            otcDistributorList.stream().forEach(distributor -> {
+                stockDetailDOS.stream().forEach(item -> {
+                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                    stockDistributeDO.setVoyageId(item.getVoyageId());
+                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                    stockDistributeDO.setFloor(item.getFloor());
+                    stockDistributeDO.setNum(0);
+                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
+                    stockDistributeDO.setDistributorId(distributor.getId());
+                    stockDistributeDO.setStoreId(null);
+                    stockDistributeDO.setShipId(voyage.getShipId());
+                    list.add(stockDistributeDO);
+                });
+            });
+            //获取旅行社门店的库存数据
+            List<StoreInfoRespDTO> storeList = storeApi.getStoreList();
+            storeList.stream().forEach(store -> {
+                stockDetailDOS.stream().forEach(item -> {
+                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                    stockDistributeDO.setVoyageId(item.getVoyageId());
+                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                    stockDistributeDO.setFloor(item.getFloor());
+                    stockDistributeDO.setNum(0);
+                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
+                    stockDistributeDO.setDistributorId(store.getAgencyId());
+                    stockDistributeDO.setStoreId(store.getId());
+                    stockDistributeDO.setShipId(voyage.getShipId());
+                    list.add(stockDistributeDO);
+                });
+            });
+        }
+        return list;
+    }
+
+}

+ 8 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java

@@ -282,6 +282,14 @@ public class OtcTradeOrderController {
         return success(otcTradeOrderService.getOrderInfo(id));
     }
 
+    @GetMapping("/window/orderInfoNew")
+    @OperateLog(type = API)
+    @Operation(summary = "win-订单详情", description = "根据订单id查询订单详情")
+    @PlatTenantEnv
+    public CommonResult<TradeOrderRespNewVO> getOrderInfoNew(@Valid @RequestParam("id") Long id) {
+        return success(otcTradeOrderService.getOrderInfoNew(id));
+    }
+
     @GetMapping("/window/orderDetailInfo")
     @Operation(summary = "win-门票详情", description = "根据订单id查询门票详情")
     @OperateLog(type = API)

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

@@ -81,5 +81,11 @@ public class TradeOrderRespNewVO {
      */
     private BigDecimal payAmount;
 
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
 
 }

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

@@ -21,4 +21,9 @@ public interface TradeOrderCountryMapper extends BaseMapperX<TradeOrderCountryDO
         return selectList(new LambdaQueryWrapperX<TradeOrderCountryDO>()
                 .in(TradeOrderCountryDO::getOrderId, orderIds));
     }
+
+    default List<TradeOrderCountryDO> selectListByOrderId(Long id) {
+        return selectList(new LambdaQueryWrapperX<TradeOrderCountryDO>()
+                .eq(TradeOrderCountryDO::getOrderId, id));
+    }
 }

+ 7 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java

@@ -141,4 +141,11 @@ public interface OtcTradeOrderService {
      * @return
      */
     CommonResult<?> createOtcOrder(LoginUser agencyLoginUser, TradeOrderOtcCreateVO createVO);
+
+    /**
+     * 获取订单详情 新
+     * @param id
+     * @return
+     */
+    TradeOrderRespNewVO getOrderInfoNew(Long id);
 }

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

@@ -14,6 +14,7 @@ import com.yc.ship.framework.common.pojo.CommonResult;
 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.ObjectUtils;
+import com.yc.ship.framework.ip.core.utils.AreaUtils;
 import com.yc.ship.framework.security.core.LoginUser;
 import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
 import com.yc.ship.framework.tenant.core.util.TenantUtils;
@@ -32,6 +33,12 @@ import com.yc.ship.module.otc.api.store.StoreApi;
 import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
 import com.yc.ship.module.product.api.ProductApi;
 import com.yc.ship.module.product.api.dto.*;
+import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.service.voyage.VoyageService;
+import com.yc.ship.module.resource.api.ship.ShipApi;
+import com.yc.ship.module.resource.dal.dataobject.ship.ResourceShipDO;
+import com.yc.ship.module.resource.service.ship.ResourceShipService;
 import com.yc.ship.module.system.api.dict.DictDataApi;
 import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
 import com.yc.ship.module.system.api.sms.SmsSendApi;
@@ -172,6 +179,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private TradeOrderFloorMapper tradeOrderFloorMapper;
 
+    @Resource
+    private VoyageService voyageService;
+
+    @Resource
+    private ResourceShipService shipService;
+
 
     public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
 
@@ -2365,6 +2378,32 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     }
 
+    @Override
+    public TradeOrderRespNewVO getOrderInfoNew(Long id) {
+        TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(id);
+        TradeOrderRespNewVO orderRespNewVO = BeanUtils.toBean(tradeOrderDO, TradeOrderRespNewVO.class);
+        //设置国籍数据
+        List<TradeOrderCountryDO> countryDOS = tradeOrderCountryMapper.selectListByOrderId(id);
+        List<TradeOrderCountryBaseVO> countryList = BeanUtils.toBean(countryDOS, TradeOrderCountryBaseVO.class);
+        countryList.stream().forEach(item -> {
+            item.setCountryName(AreaUtils.format2Str(item.getCountryId()));
+        });
+        orderRespNewVO.setCountryList(countryList);
+        //设置订单汇总数据
+        TradeOrderTotalDO tradeOrderTotalDO = tradeOrderTotalMapper.selectOne(TradeOrderTotalDO::getOrderId, id);
+        TradeOrderTotalVO summary = BeanUtils.toBean(tradeOrderTotalDO, TradeOrderTotalVO.class);
+        orderRespNewVO.setSummary(summary);
+
+        //设置游轮航次信息
+        VoyageDO voyageDO = voyageService.getVoyage(tradeOrderDO.getVoyageId());
+        orderRespNewVO.setVoyage(BeanUtils.toBean(voyageDO, VoyageRespVO.class));
+        //设置游轮名称
+        ResourceShipDO ship = shipService.getShip(tradeOrderDO.getShipId());
+        orderRespNewVO.setShipName(ship.getName());
+
+        return orderRespNewVO;
+    }
+
     private void markChangeOrder(Long orderId){
         String key =  String.format(KEY_MARK_CHANGE_ORDER,orderId);
         stringRedisTemplate.opsForValue().set(key,orderId.toString(),60, TimeUnit.MINUTES);