Browse Source

feat: 添加航线管理

luofeiyun 4 tuần trước cách đây
mục cha
commit
e5f18804d0
15 tập tin đã thay đổi với 640 bổ sung4 xóa
  1. 2 0
      ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/enums/ErrorCodeConstants.java
  2. 13 2
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/dock/ResourceDockController.java
  3. 142 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/ResourceRouteController.java
  4. 39 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRoutePageReqVO.java
  5. 82 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRouteRespVO.java
  6. 58 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRouteSaveReqVO.java
  7. 19 2
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/ResourceScenicController.java
  8. 91 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/route/ResourceRouteDO.java
  9. 33 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/route/ResourceRouteMapper.java
  10. 6 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/scenic/ResourceScenicMapper.java
  11. 1 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/dock/ResourceDockService.java
  12. 55 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/route/ResourceRouteService.java
  13. 74 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/route/ResourceRouteServiceImpl.java
  14. 12 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicService.java
  15. 13 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicServiceImpl.java

+ 2 - 0
ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/enums/ErrorCodeConstants.java

@@ -11,4 +11,6 @@ public interface ErrorCodeConstants {
     ErrorCode DOCK_NOT_EXISTS = new ErrorCode(1_003_000_002, "码头不存在");
 
     ErrorCode SCENIC_NOT_EXISTS = new ErrorCode(1_003_000_003, "景区不存在");
+
+    ErrorCode ROUTE_NOT_EXISTS = new ErrorCode(1_003_000_004, "航线不存在");
 }

+ 13 - 2
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/dock/ResourceDockController.java

@@ -4,6 +4,7 @@ import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.framework.ip.core.utils.AreaUtils;
 import com.yc.ship.module.resource.dal.dataobject.port.ResourcePortDO;
 import com.yc.ship.module.resource.service.port.ResourcePortService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -90,8 +91,18 @@ public class ResourceDockController {
         Map<Long, ResourcePortDO> longResourcePortDOMap = CollectionUtils.convertMap(portList, ResourcePortDO::getId);
         list.stream().forEach(item -> {
             item.setPortName(longResourcePortDOMap.get(item.getPortId()).getName());
-            String area = AreaUtils.format(item.getCountyId());
-            item.setArea(area);
+            if(item.getCountyId() != null) {
+                String area = AreaUtils.format(item.getCountyId());
+                item.setArea(area);
+            }
+            if(item.getCityId() != null) {
+                String area = AreaUtils.format(item.getCityId());
+                item.setArea(area);
+            }
+            if(item.getProvinceId() != null) {
+                String area = AreaUtils.format(item.getProvinceId());
+                item.setArea(area);
+            }
         });
         return success(page);
     }

+ 142 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/ResourceRouteController.java

@@ -0,0 +1,142 @@
+package com.yc.ship.module.resource.controller.admin.route;
+
+import com.yc.ship.framework.common.util.collection.CollectionUtils;
+import com.yc.ship.module.resource.dal.dataobject.dock.ResourceDockDO;
+import com.yc.ship.module.resource.dal.dataobject.scenic.ResourceScenicDO;
+import com.yc.ship.module.resource.service.dock.ResourceDockService;
+import com.yc.ship.module.resource.service.scenic.ResourceScenicService;
+import org.apache.commons.lang3.StringUtils;
+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 java.util.stream.Collectors;
+
+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.resource.controller.admin.route.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
+import com.yc.ship.module.resource.service.route.ResourceRouteService;
+
+@Tag(name = "管理后台 - 航线管理")
+@RestController
+@RequestMapping("/resource/route")
+@Validated
+public class ResourceRouteController {
+
+    @Resource
+    private ResourceRouteService routeService;
+
+    @Resource
+    private ResourceDockService dockService;
+
+    @Resource
+    private ResourceScenicService scenicService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建航线管理")
+    @PreAuthorize("@ss.hasPermission('resource:route:create')")
+    public CommonResult<Long> createRoute(@Valid @RequestBody ResourceRouteSaveReqVO createReqVO) {
+        return success(routeService.createRoute(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新航线管理")
+    @PreAuthorize("@ss.hasPermission('resource:route:update')")
+    public CommonResult<Boolean> updateRoute(@Valid @RequestBody ResourceRouteSaveReqVO updateReqVO) {
+        routeService.updateRoute(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除航线管理")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('resource:route:delete')")
+    public CommonResult<Boolean> deleteRoute(@RequestParam("id") Long id) {
+        routeService.deleteRoute(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得航线管理")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('resource:route:query')")
+    public CommonResult<ResourceRouteRespVO> getRoute(@RequestParam("id") Long id) {
+        ResourceRouteDO route = routeService.getRoute(id);
+        return success(BeanUtils.toBean(route, ResourceRouteRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得航线管理分页")
+    @PreAuthorize("@ss.hasPermission('resource:route:query')")
+    public CommonResult<PageResult<ResourceRouteRespVO>> getRoutePage(@Valid ResourceRoutePageReqVO pageReqVO) {
+        PageResult<ResourceRouteDO> pageResult = routeService.getRoutePage(pageReqVO);
+        PageResult<ResourceRouteRespVO> page = BeanUtils.toBean(pageResult, ResourceRouteRespVO.class);
+        List<ResourceRouteRespVO> list = page.getList();
+        List<Long> scenicIds = new ArrayList<>();
+        List<Long> dockIdList = CollectionUtils.convertList(list, ResourceRouteRespVO::getOnDockId);
+        dockIdList.addAll(CollectionUtils.convertList(list, ResourceRouteRespVO::getLeaveDockId));
+        list.stream().forEach(item -> {
+            String midwayDockIds = item.getMidwayDockIds();
+            if (StringUtils.isNotEmpty(midwayDockIds)) {
+                dockIdList.addAll(Arrays.asList(midwayDockIds.split(",")).stream().map(Long::parseLong).collect(Collectors.toList()));
+            }
+            String relationScenicIds = item.getRelationScenicIds();
+            if(StringUtils.isNotBlank(relationScenicIds)) {
+                scenicIds.addAll(Arrays.asList(relationScenicIds.split(",")).stream().map(Long::parseLong).collect(Collectors.toList()));
+            }
+        });
+        List<ResourceDockDO> dockList = dockService.getList(dockIdList);
+        Map<Long, ResourceDockDO> longResourceDockDOMap = CollectionUtils.convertMap(dockList, ResourceDockDO::getId);
+
+        List<ResourceScenicDO> scenicDOS = scenicService.getList(scenicIds);
+        Map<Long, ResourceScenicDO> longResourceScenicDOMap = CollectionUtils.convertMap(scenicDOS, ResourceScenicDO::getId);
+        list.stream().forEach(item -> {
+            item.setOnDockName(longResourceDockDOMap.get(item.getOnDockId()).getName());
+            item.setLeaveDockName(longResourceDockDOMap.get(item.getLeaveDockId()).getName());
+            List<Long> ids = Arrays.asList(item.getMidwayDockIds().split(",")).stream().map(Long::parseLong).collect(Collectors.toList());
+            String names = ids.stream().map(id -> longResourceDockDOMap.get(id).getName()).collect(Collectors.joining(","));
+            item.setMidwayDockNames(names);
+
+            List<Long> scenicIdList = Arrays.asList(item.getRelationScenicIds().split(",")).stream().map(Long::parseLong).collect(Collectors.toList());
+            String scenicNames = scenicIdList.stream().map(id -> longResourceScenicDOMap.get(id).getName()).collect(Collectors.joining(","));
+            item.setRelationScenicNames(scenicNames);
+        });
+
+
+
+        return success(page);
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出航线管理 Excel")
+    @PreAuthorize("@ss.hasPermission('resource:route:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportRouteExcel(@Valid ResourceRoutePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<ResourceRouteDO> list = routeService.getRoutePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "航线管理.xls", "数据", ResourceRouteRespVO.class,
+                        BeanUtils.toBean(list, ResourceRouteRespVO.class));
+    }
+
+}

+ 39 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRoutePageReqVO.java

@@ -0,0 +1,39 @@
+package com.yc.ship.module.resource.controller.admin.route.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 ResourceRoutePageReqVO extends PageParam {
+
+    @Schema(description = "航线名称", example = "王五")
+    private String name;
+
+    @Schema(description = "航向(字典)")
+    private Integer direction;
+
+    @Schema(description = "登船码头", example = "28643")
+    private Long onDockId;
+
+    @Schema(description = "离船码头", example = "1161")
+    private Long leaveDockId;
+
+    @Schema(description = "途经停靠码头")
+    private String midwayDockIds;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+}

+ 82 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRouteRespVO.java

@@ -0,0 +1,82 @@
+package com.yc.ship.module.resource.controller.admin.route.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.*;
+import com.yc.ship.framework.excel.core.annotations.DictFormat;
+import com.yc.ship.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 航线管理 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ResourceRouteRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13031")
+    @ExcelProperty("ID")
+    private Long id;
+
+    @Schema(description = "航线名称", example = "王五")
+    @ExcelProperty("航线名称")
+    private String name;
+
+    @Schema(description = "航线编码")
+    @ExcelProperty("航线编码")
+    private String code;
+
+    @Schema(description = "航向(字典)")
+    @ExcelProperty(value = "航向(字典)", converter = DictConvert.class)
+    @DictFormat("resource_route_direction") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer direction;
+
+    @Schema(description = "登船码头", example = "28643")
+    @ExcelProperty("登船码头")
+    private Long onDockId;
+
+    @Schema(description = "登船码头")
+    @ExcelProperty("登船码头")
+    private String onDockName;
+
+    @Schema(description = "离船码头", example = "1161")
+    @ExcelProperty("离船码头")
+    private Long leaveDockId;
+
+    @Schema(description = "离船码头")
+    @ExcelProperty("离船码头")
+    private String leaveDockName;
+
+    @Schema(description = "途经停靠码头")
+    @ExcelProperty("途经停靠码头")
+    private String midwayDockIds;
+    @Schema(description = "途经停靠码头")
+    @ExcelProperty("途经停靠码头")
+    private String midwayDockNames;
+
+    @Schema(description = "航线关联景区")
+    @ExcelProperty("航线关联景区")
+    private String relationScenicIds;
+
+    @Schema(description = "航线关联景区")
+    @ExcelProperty("航线关联景区")
+    private String relationScenicNames;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private Integer sort;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
+    @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "创建者")
+    @ExcelProperty("创建者")
+    private String creator;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 58 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/route/vo/ResourceRouteSaveReqVO.java

@@ -0,0 +1,58 @@
+package com.yc.ship.module.resource.controller.admin.route.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 ResourceRouteSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13031")
+    private Long id;
+
+    @Schema(description = "航线名称", example = "王五")
+    private String name;
+
+    @Schema(description = "航线编码")
+    private String code;
+
+    @Schema(description = "英文名称")
+    private String nameEn;
+
+    @Schema(description = "航向(字典)")
+    private Integer direction;
+
+    @Schema(description = "航线简称", example = "赵六")
+    private String shortName;
+
+    @Schema(description = "简拼")
+    private String shortNameEn;
+
+    @Schema(description = "登船码头", example = "28643")
+    private Long onDockId;
+
+    @Schema(description = "离船码头", example = "1161")
+    private Long leaveDockId;
+
+    @Schema(description = "途经停靠码头")
+    private String midwayDockIds;
+
+    @Schema(description = "航线简介")
+    private String introduce;
+
+    @Schema(description = "航线关联景区")
+    private String relationScenicIds;
+
+    @Schema(description = "航线时长")
+    private String duration;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+}

+ 19 - 2
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/ResourceScenicController.java

@@ -90,8 +90,18 @@ public class ResourceScenicController {
         Map<Long, ResourceDockDO> longResourceDockDOMap = CollectionUtils.convertMap(dockList, ResourceDockDO::getId);
         list.stream().forEach(item -> {
             item.setDockName(longResourceDockDOMap.get(item.getDockId()).getName());
-            String area = AreaUtils.format(item.getCountyId());
-            item.setArea(area);
+            if(item.getCountyId() != null) {
+                String area = AreaUtils.format(item.getCountyId());
+                item.setArea(area);
+            }
+            if(item.getCityId() != null) {
+                String area = AreaUtils.format(item.getCityId());
+                item.setArea(area);
+            }
+            if(item.getProvinceId() != null) {
+                String area = AreaUtils.format(item.getProvinceId());
+                item.setArea(area);
+            }
         });
         return success(page);
     }
@@ -109,4 +119,11 @@ public class ResourceScenicController {
                         BeanUtils.toBean(list, ResourceScenicRespVO.class));
     }
 
+    @GetMapping("/enableList")
+    @Operation(summary = "获得启用的景区列表")
+    public CommonResult<List<ResourceScenicRespVO>> getEnableScenicList() {
+        List<ResourceScenicDO> list = scenicService.getEnableScenicList();
+        return success(BeanUtils.toBean(list, ResourceScenicRespVO.class));
+    }
+
 }

+ 91 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/route/ResourceRouteDO.java

@@ -0,0 +1,91 @@
+package com.yc.ship.module.resource.dal.dataobject.route;
+
+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 flycloud
+ */
+@TableName("resource_route")
+@KeySequence("resource_route_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResourceRouteDO extends BaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 航线名称
+     */
+    private String name;
+    /**
+     * 航线编码
+     */
+    private String code;
+    /**
+     * 英文名称
+     */
+    private String nameEn;
+    /**
+     * 航向(字典)
+     *
+     * 枚举 {@link TODO resource_route_direction 对应的类}
+     */
+    private Integer direction;
+    /**
+     * 航线简称
+     */
+    private String shortName;
+    /**
+     * 简拼
+     */
+    private String shortNameEn;
+    /**
+     * 登船码头
+     */
+    private Long onDockId;
+    /**
+     * 离船码头
+     */
+    private Long leaveDockId;
+    /**
+     * 途经停靠码头
+     */
+    private String midwayDockIds;
+    /**
+     * 航线简介
+     */
+    private String introduce;
+    /**
+     * 航线关联景区
+     */
+    private String relationScenicIds;
+    /**
+     * 航线时长
+     */
+    private String duration;
+    /**
+     * 排序
+     */
+    private Integer sort;
+    /**
+     * 状态
+     *
+     * 枚举 {@link TODO common_status 对应的类}
+     */
+    private Integer status;
+
+}

+ 33 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/route/ResourceRouteMapper.java

@@ -0,0 +1,33 @@
+package com.yc.ship.module.resource.dal.mysql.route;
+
+import java.util.*;
+
+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.resource.dal.dataobject.route.ResourceRouteDO;
+import org.apache.ibatis.annotations.Mapper;
+import com.yc.ship.module.resource.controller.admin.route.vo.*;
+
+/**
+ * 航线管理 Mapper
+ *
+ * @author flycloud
+ */
+@Mapper
+public interface ResourceRouteMapper extends BaseMapperX<ResourceRouteDO> {
+
+    default PageResult<ResourceRouteDO> selectPage(ResourceRoutePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ResourceRouteDO>()
+                .likeIfPresent(ResourceRouteDO::getName, reqVO.getName())
+                .eqIfPresent(ResourceRouteDO::getDirection, reqVO.getDirection())
+                .eqIfPresent(ResourceRouteDO::getOnDockId, reqVO.getOnDockId())
+                .eqIfPresent(ResourceRouteDO::getLeaveDockId, reqVO.getLeaveDockId())
+                .eqIfPresent(ResourceRouteDO::getMidwayDockIds, reqVO.getMidwayDockIds())
+                .eqIfPresent(ResourceRouteDO::getSort, reqVO.getSort())
+                .eqIfPresent(ResourceRouteDO::getStatus, reqVO.getStatus())
+                .orderByAsc(ResourceRouteDO::getSort)
+                .orderByDesc(ResourceRouteDO::getId));
+    }
+
+}

+ 6 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/scenic/ResourceScenicMapper.java

@@ -2,6 +2,8 @@ package com.yc.ship.module.resource.dal.mysql.scenic;
 
 import java.util.*;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yc.ship.framework.common.enums.CommonStatusEnum;
 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;
@@ -26,4 +28,8 @@ public interface ResourceScenicMapper extends BaseMapperX<ResourceScenicDO> {
                 .orderByDesc(ResourceScenicDO::getId));
     }
 
+    default List<ResourceScenicDO> selectEnableList() {
+        return selectList(new LambdaQueryWrapper<ResourceScenicDO>()
+                .eq(ResourceScenicDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
+    }
 }

+ 1 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/dock/ResourceDockService.java

@@ -63,4 +63,5 @@ public interface ResourceDockService {
      * @return
      */
     List<ResourceDockDO> getList(List<Long> ids);
+
 }

+ 55 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/route/ResourceRouteService.java

@@ -0,0 +1,55 @@
+package com.yc.ship.module.resource.service.route;
+
+import java.util.*;
+import javax.validation.*;
+import com.yc.ship.module.resource.controller.admin.route.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+
+/**
+ * 航线管理 Service 接口
+ *
+ * @author flycloud
+ */
+public interface ResourceRouteService {
+
+    /**
+     * 创建航线管理
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createRoute(@Valid ResourceRouteSaveReqVO createReqVO);
+
+    /**
+     * 更新航线管理
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateRoute(@Valid ResourceRouteSaveReqVO updateReqVO);
+
+    /**
+     * 删除航线管理
+     *
+     * @param id 编号
+     */
+    void deleteRoute(Long id);
+
+    /**
+     * 获得航线管理
+     *
+     * @param id 编号
+     * @return 航线管理
+     */
+    ResourceRouteDO getRoute(Long id);
+
+    /**
+     * 获得航线管理分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 航线管理分页
+     */
+    PageResult<ResourceRouteDO> getRoutePage(ResourceRoutePageReqVO pageReqVO);
+
+}

+ 74 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/route/ResourceRouteServiceImpl.java

@@ -0,0 +1,74 @@
+package com.yc.ship.module.resource.service.route;
+
+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.resource.controller.admin.route.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
+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.resource.dal.mysql.route.ResourceRouteMapper;
+
+import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.yc.ship.module.resource.enums.ErrorCodeConstants.*;
+
+/**
+ * 航线管理 Service 实现类
+ *
+ * @author flycloud
+ */
+@Service
+@Validated
+public class ResourceRouteServiceImpl implements ResourceRouteService {
+
+    @Resource
+    private ResourceRouteMapper routeMapper;
+
+    @Override
+    public Long createRoute(ResourceRouteSaveReqVO createReqVO) {
+        // 插入
+        ResourceRouteDO route = BeanUtils.toBean(createReqVO, ResourceRouteDO.class);
+        routeMapper.insert(route);
+        // 返回
+        return route.getId();
+    }
+
+    @Override
+    public void updateRoute(ResourceRouteSaveReqVO updateReqVO) {
+        // 校验存在
+        validateRouteExists(updateReqVO.getId());
+        // 更新
+        ResourceRouteDO updateObj = BeanUtils.toBean(updateReqVO, ResourceRouteDO.class);
+        routeMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteRoute(Long id) {
+        // 校验存在
+        validateRouteExists(id);
+        // 删除
+        routeMapper.deleteById(id);
+    }
+
+    private void validateRouteExists(Long id) {
+        if (routeMapper.selectById(id) == null) {
+            throw exception(ROUTE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ResourceRouteDO getRoute(Long id) {
+        return routeMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ResourceRouteDO> getRoutePage(ResourceRoutePageReqVO pageReqVO) {
+        return routeMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicService.java

@@ -52,4 +52,16 @@ public interface ResourceScenicService {
      */
     PageResult<ResourceScenicDO> getScenicPage(ResourceScenicPageReqVO pageReqVO);
 
+    /**
+     *  获取启用的景区列表
+     * @return
+     */
+    List<ResourceScenicDO> getEnableScenicList();
+
+    /**
+     *  获取景区列表
+     * @param scenicIds
+     * @return
+     */
+    List<ResourceScenicDO> getList(List<Long> scenicIds);
 }

+ 13 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicServiceImpl.java

@@ -71,4 +71,17 @@ public class ResourceScenicServiceImpl implements ResourceScenicService {
         return scenicMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<ResourceScenicDO> getEnableScenicList() {
+        return scenicMapper.selectEnableList();
+    }
+
+    @Override
+    public List<ResourceScenicDO> getList(List<Long> scenicIds) {
+        if(scenicIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return scenicMapper.selectByIds(scenicIds);
+    }
+
 }