Browse Source

feat: 添加景区管理

luofeiyun 4 weeks ago
parent
commit
674339fda1
16 changed files with 625 additions and 5 deletions
  1. 3 1
      ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/enums/ErrorCodeConstants.java
  2. 10 1
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/dock/ResourceDockController.java
  3. 112 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/ResourceScenicController.java
  4. 30 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicPageReqVO.java
  5. 100 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicRespVO.java
  6. 70 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicSaveReqVO.java
  7. 2 1
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/dock/ResourceDockDO.java
  8. 106 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/scenic/ResourceScenicDO.java
  9. 5 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/dock/ResourceDockMapper.java
  10. 29 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/scenic/ResourceScenicMapper.java
  11. 11 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/dock/ResourceDockService.java
  12. 13 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/dock/ResourceDockServiceImpl.java
  13. 3 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/port/ResourcePortServiceImpl.java
  14. 55 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicService.java
  15. 74 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/scenic/ResourceScenicServiceImpl.java
  16. 2 2
      ship-server-web/src/main/resources/application-local.yaml

+ 3 - 1
ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/enums/ErrorCodeConstants.java

@@ -8,5 +8,7 @@ public interface ErrorCodeConstants {
      */
     ErrorCode PORT_NOT_EXISTS = new ErrorCode(1_003_000_001, "口岸不存在");
 
-    ErrorCode DOCK_NOT_EXISTS = new ErrorCode(1_003_000_001, "码头不存在");
+    ErrorCode DOCK_NOT_EXISTS = new ErrorCode(1_003_000_002, "码头不存在");
+
+    ErrorCode SCENIC_NOT_EXISTS = new ErrorCode(1_003_000_003, "景区不存在");
 }

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

@@ -1,6 +1,7 @@
 package com.yc.ship.module.resource.controller.admin.dock;
 
 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.springframework.web.bind.annotation.*;
@@ -89,7 +90,8 @@ public class ResourceDockController {
         Map<Long, ResourcePortDO> longResourcePortDOMap = CollectionUtils.convertMap(portList, ResourcePortDO::getId);
         list.stream().forEach(item -> {
             item.setPortName(longResourcePortDOMap.get(item.getPortId()).getName());
-            item.setArea(item.getProvinceName()+item.getCityName()+item.getCountyName());
+            String area = AreaUtils.format(item.getCountyId());
+            item.setArea(area);
         });
         return success(page);
     }
@@ -107,4 +109,11 @@ public class ResourceDockController {
                         BeanUtils.toBean(list, ResourceDockRespVO.class));
     }
 
+    @GetMapping("/enableList")
+    @Operation(summary = "获得资源管理-启用的码头")
+    public CommonResult<List<ResourceDockRespVO>> getEnableList() {
+        List<ResourceDockDO> list = dockService.getEnableList();
+        return success(BeanUtils.toBean(list, ResourceDockRespVO.class));
+    }
+
 }

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

@@ -0,0 +1,112 @@
+package com.yc.ship.module.resource.controller.admin.scenic;
+
+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.dock.ResourceDockDO;
+import com.yc.ship.module.resource.service.dock.ResourceDockService;
+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.resource.controller.admin.scenic.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.scenic.ResourceScenicDO;
+import com.yc.ship.module.resource.service.scenic.ResourceScenicService;
+
+@Tag(name = "管理后台 - 景区管理")
+@RestController
+@RequestMapping("/resource/scenic")
+@Validated
+public class ResourceScenicController {
+
+    @Resource
+    private ResourceScenicService scenicService;
+
+    @Resource
+    private ResourceDockService dockService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建景区管理")
+    @PreAuthorize("@ss.hasPermission('resource:scenic:create')")
+    public CommonResult<Long> createScenic(@Valid @RequestBody ResourceScenicSaveReqVO createReqVO) {
+        return success(scenicService.createScenic(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新景区管理")
+    @PreAuthorize("@ss.hasPermission('resource:scenic:update')")
+    public CommonResult<Boolean> updateScenic(@Valid @RequestBody ResourceScenicSaveReqVO updateReqVO) {
+        scenicService.updateScenic(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除景区管理")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('resource:scenic:delete')")
+    public CommonResult<Boolean> deleteScenic(@RequestParam("id") Long id) {
+        scenicService.deleteScenic(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得景区管理")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('resource:scenic:query')")
+    public CommonResult<ResourceScenicRespVO> getScenic(@RequestParam("id") Long id) {
+        ResourceScenicDO scenic = scenicService.getScenic(id);
+        return success(BeanUtils.toBean(scenic, ResourceScenicRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得景区管理分页")
+    @PreAuthorize("@ss.hasPermission('resource:scenic:query')")
+    public CommonResult<PageResult<ResourceScenicRespVO>> getScenicPage(@Valid ResourceScenicPageReqVO pageReqVO) {
+        PageResult<ResourceScenicDO> pageResult = scenicService.getScenicPage(pageReqVO);
+        PageResult<ResourceScenicRespVO> page = BeanUtils.toBean(pageResult, ResourceScenicRespVO.class);
+        List<ResourceScenicRespVO> list = page.getList();
+        List<Long> dockIds = CollectionUtils.convertList(list, ResourceScenicRespVO::getDockId);
+        List<ResourceDockDO> dockList = dockService.getList(dockIds);
+        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);
+        });
+        return success(page);
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出景区管理 Excel")
+    @PreAuthorize("@ss.hasPermission('resource:scenic:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportScenicExcel(@Valid ResourceScenicPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<ResourceScenicDO> list = scenicService.getScenicPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "景区管理.xls", "数据", ResourceScenicRespVO.class,
+                        BeanUtils.toBean(list, ResourceScenicRespVO.class));
+    }
+
+}

+ 30 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicPageReqVO.java

@@ -0,0 +1,30 @@
+package com.yc.ship.module.resource.controller.admin.scenic.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 ResourceScenicPageReqVO extends PageParam {
+
+    @Schema(description = "景区名称", example = "张三")
+    private String name;
+
+    @Schema(description = "所属供应商", example = "15781")
+    private Long supplierId;
+
+    @Schema(description = "所属码头ID", example = "19621")
+    private Long dockId;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+}

+ 100 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicRespVO.java

@@ -0,0 +1,100 @@
+package com.yc.ship.module.resource.controller.admin.scenic.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+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 ResourceScenicRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14410")
+    @ExcelProperty("ID")
+    private Long id;
+
+    @Schema(description = "景区名称", example = "张三")
+    @ExcelProperty("景区名称")
+    private String name;
+
+    @Schema(description = "所属供应商", example = "15781")
+    @ExcelProperty("所属供应商")
+    private Long supplierId;
+
+    @Schema(description = "省份ID", example = "15086")
+    @ExcelProperty("省份ID")
+    private Integer provinceId;
+
+    @Schema(description = "省份名称", example = "芋艿")
+    @ExcelProperty("省份名称")
+    private String provinceName;
+
+    @Schema(description = "城市ID", example = "12118")
+    @ExcelProperty("城市ID")
+    private Integer cityId;
+
+    @Schema(description = "城市名称", example = "芋艿")
+    @ExcelProperty("城市名称")
+    private String cityName;
+
+    @Schema(description = "区县ID", example = "26359")
+    @ExcelProperty("区县ID")
+    private Integer countyId;
+
+    @Schema(description = "区县名称", example = "芋艿")
+    @ExcelProperty("区县名称")
+    private String countyName;
+
+    @Schema(description = "区域")
+    @ExcelProperty("区域")
+    private String area;
+
+    @Schema(description = "详细地址")
+    @ExcelProperty("详细地址")
+    private String address;
+
+    @Schema(description = "景区介绍")
+    @ExcelProperty("景区介绍")
+    private String introduce;
+
+    @Schema(description = "所属码头ID", example = "19621")
+    @ExcelProperty("所属码头ID")
+    private Long dockId;
+
+    @Schema(description = "所属码头名称", example = "芋艿")
+    @ExcelProperty("所属码头名称")
+    private String dockName;
+
+    @Schema(description = "中文语音")
+    @ExcelProperty("中文语音")
+    private String voiceZh;
+
+    @Schema(description = "英文语音")
+    @ExcelProperty("英文语音")
+    private String voiceEn;
+
+    @Schema(description = "中文视频")
+    @ExcelProperty("中文视频")
+    private String videoZh;
+
+    @Schema(description = "英文视频")
+    @ExcelProperty("英文视频")
+    private String videoEn;
+
+    @Schema(description = "游玩线路")
+    @ExcelProperty("游玩线路")
+    private String travelLine;
+
+    @Schema(description = "景区图片")
+    @ExcelProperty("景区图片")
+    private String pic;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
+    @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+}

+ 70 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/scenic/vo/ResourceScenicSaveReqVO.java

@@ -0,0 +1,70 @@
+package com.yc.ship.module.resource.controller.admin.scenic.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 ResourceScenicSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14410")
+    private Long id;
+
+    @Schema(description = "景区名称", example = "张三")
+    private String name;
+
+    @Schema(description = "所属供应商", example = "15781")
+    private Long supplierId;
+
+    @Schema(description = "省份ID", example = "15086")
+    private Integer provinceId;
+
+    @Schema(description = "省份名称", example = "芋艿")
+    private String provinceName;
+
+    @Schema(description = "城市ID", example = "12118")
+    private Integer cityId;
+
+    @Schema(description = "城市名称", example = "芋艿")
+    private String cityName;
+
+    @Schema(description = "区县ID", example = "26359")
+    private Integer countyId;
+
+    @Schema(description = "区县名称", example = "芋艿")
+    private String countyName;
+
+    @Schema(description = "详细地址")
+    private String address;
+
+    @Schema(description = "景区介绍")
+    private String introduce;
+
+    @Schema(description = "所属码头ID", example = "19621")
+    private Long dockId;
+
+    @Schema(description = "中文语音")
+    private String voiceZh;
+
+    @Schema(description = "英文语音")
+    private String voiceEn;
+
+    @Schema(description = "中文视频")
+    private String videoZh;
+
+    @Schema(description = "英文视频")
+    private String videoEn;
+
+    @Schema(description = "游玩线路")
+    private String travelLine;
+
+    @Schema(description = "景区图片")
+    private String pic;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+}

+ 2 - 1
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/dock/ResourceDockDO.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.resource.dal.dataobject.dock;
 
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
 import lombok.*;
 import java.util.*;
 import java.math.BigDecimal;
@@ -22,7 +23,7 @@ import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class ResourceDockDO extends BaseDO {
+public class ResourceDockDO extends TenantBaseDO {
 
     /**
      * ID

+ 106 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/scenic/ResourceScenicDO.java

@@ -0,0 +1,106 @@
+package com.yc.ship.module.resource.dal.dataobject.scenic;
+
+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 flycloud
+ */
+@TableName("resource_scenic")
+@KeySequence("resource_scenic_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResourceScenicDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 景区名称
+     */
+    private String name;
+    /**
+     * 所属供应商
+     */
+    private Long supplierId;
+    /**
+     * 省份ID
+     */
+    private Integer provinceId;
+    /**
+     * 省份名称
+     */
+    private String provinceName;
+    /**
+     * 城市ID
+     */
+    private Integer cityId;
+    /**
+     * 城市名称
+     */
+    private String cityName;
+    /**
+     * 区县ID
+     */
+    private Integer countyId;
+    /**
+     * 区县名称
+     */
+    private String countyName;
+    /**
+     * 详细地址
+     */
+    private String address;
+    /**
+     * 景区介绍
+     */
+    private String introduce;
+    /**
+     * 所属码头ID
+     */
+    private Long dockId;
+    /**
+     * 中文语音
+     */
+    private String voiceZh;
+    /**
+     * 英文语音
+     */
+    private String voiceEn;
+    /**
+     * 中文视频
+     */
+    private String videoZh;
+    /**
+     * 英文视频
+     */
+    private String videoEn;
+    /**
+     * 游玩线路
+     */
+    private String travelLine;
+    /**
+     * 景区图片
+     */
+    private String pic;
+    /**
+     * 状态
+     *
+     * 枚举 {@link TODO common_status 对应的类}
+     */
+    private Integer status;
+
+}

+ 5 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/dock/ResourceDockMapper.java

@@ -2,6 +2,7 @@ package com.yc.ship.module.resource.dal.mysql.dock;
 
 import java.util.*;
 
+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;
@@ -36,4 +37,8 @@ public interface ResourceDockMapper extends BaseMapperX<ResourceDockDO> {
                 .orderByDesc(ResourceDockDO::getId));
     }
 
+    default List<ResourceDockDO> selectEnableList() {
+        return selectList(new LambdaQueryWrapperX<ResourceDockDO>()
+                .eq(ResourceDockDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
+    }
 }

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

@@ -0,0 +1,29 @@
+package com.yc.ship.module.resource.dal.mysql.scenic;
+
+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.scenic.ResourceScenicDO;
+import org.apache.ibatis.annotations.Mapper;
+import com.yc.ship.module.resource.controller.admin.scenic.vo.*;
+
+/**
+ * 景区管理 Mapper
+ *
+ * @author flycloud
+ */
+@Mapper
+public interface ResourceScenicMapper extends BaseMapperX<ResourceScenicDO> {
+
+    default PageResult<ResourceScenicDO> selectPage(ResourceScenicPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ResourceScenicDO>()
+                .likeIfPresent(ResourceScenicDO::getName, reqVO.getName())
+                .eqIfPresent(ResourceScenicDO::getSupplierId, reqVO.getSupplierId())
+                .eqIfPresent(ResourceScenicDO::getDockId, reqVO.getDockId())
+                .eqIfPresent(ResourceScenicDO::getStatus, reqVO.getStatus())
+                .orderByDesc(ResourceScenicDO::getId));
+    }
+
+}

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

@@ -52,4 +52,15 @@ public interface ResourceDockService {
      */
     PageResult<ResourceDockDO> getDockPage(ResourceDockPageReqVO pageReqVO);
 
+    /**
+     * 获取启用的码头列表
+     * @return
+     */
+    List<ResourceDockDO> getEnableList();
+
+    /**
+     * 获取码头列表
+     * @return
+     */
+    List<ResourceDockDO> getList(List<Long> ids);
 }

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

@@ -71,4 +71,17 @@ public class ResourceDockServiceImpl implements ResourceDockService {
         return dockMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<ResourceDockDO> getEnableList() {
+        return dockMapper.selectEnableList();
+    }
+
+    @Override
+    public List<ResourceDockDO> getList(List<Long> ids) {
+        if(ids.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return dockMapper.selectByIds(ids);
+    }
+
 }

+ 3 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/port/ResourcePortServiceImpl.java

@@ -81,6 +81,9 @@ public class ResourcePortServiceImpl implements ResourcePortService {
 
     @Override
     public List<ResourcePortDO> getList(List<Long> ids) {
+        if(ids.isEmpty()) {
+            return Collections.emptyList();
+        }
         return portMapper.selectByIds(ids);
     }
 

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

@@ -0,0 +1,55 @@
+package com.yc.ship.module.resource.service.scenic;
+
+import java.util.*;
+import javax.validation.*;
+import com.yc.ship.module.resource.controller.admin.scenic.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.scenic.ResourceScenicDO;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+
+/**
+ * 景区管理 Service 接口
+ *
+ * @author flycloud
+ */
+public interface ResourceScenicService {
+
+    /**
+     * 创建景区管理
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createScenic(@Valid ResourceScenicSaveReqVO createReqVO);
+
+    /**
+     * 更新景区管理
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateScenic(@Valid ResourceScenicSaveReqVO updateReqVO);
+
+    /**
+     * 删除景区管理
+     *
+     * @param id 编号
+     */
+    void deleteScenic(Long id);
+
+    /**
+     * 获得景区管理
+     *
+     * @param id 编号
+     * @return 景区管理
+     */
+    ResourceScenicDO getScenic(Long id);
+
+    /**
+     * 获得景区管理分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 景区管理分页
+     */
+    PageResult<ResourceScenicDO> getScenicPage(ResourceScenicPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,74 @@
+package com.yc.ship.module.resource.service.scenic;
+
+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.scenic.vo.*;
+import com.yc.ship.module.resource.dal.dataobject.scenic.ResourceScenicDO;
+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.scenic.ResourceScenicMapper;
+
+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 ResourceScenicServiceImpl implements ResourceScenicService {
+
+    @Resource
+    private ResourceScenicMapper scenicMapper;
+
+    @Override
+    public Long createScenic(ResourceScenicSaveReqVO createReqVO) {
+        // 插入
+        ResourceScenicDO scenic = BeanUtils.toBean(createReqVO, ResourceScenicDO.class);
+        scenicMapper.insert(scenic);
+        // 返回
+        return scenic.getId();
+    }
+
+    @Override
+    public void updateScenic(ResourceScenicSaveReqVO updateReqVO) {
+        // 校验存在
+        validateScenicExists(updateReqVO.getId());
+        // 更新
+        ResourceScenicDO updateObj = BeanUtils.toBean(updateReqVO, ResourceScenicDO.class);
+        scenicMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteScenic(Long id) {
+        // 校验存在
+        validateScenicExists(id);
+        // 删除
+        scenicMapper.deleteById(id);
+    }
+
+    private void validateScenicExists(Long id) {
+        if (scenicMapper.selectById(id) == null) {
+            throw exception(SCENIC_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ResourceScenicDO getScenic(Long id) {
+        return scenicMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ResourceScenicDO> getScenicPage(ResourceScenicPageReqVO pageReqVO) {
+        return scenicMapper.selectPage(pageReqVO);
+    }
+
+}

+ 2 - 2
ship-server-web/src/main/resources/application-local.yaml

@@ -49,12 +49,12 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship_lfy?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: root
           password: W1ses0ft@zshl
         slave: # 模拟从库,可根据自己需要修改
           lazy: true # 开启懒加载,保证启动速度
-          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+          url: jdbc:mysql://10.3.10.50:43306/db_yc_ship_lfy?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
           username: root
           password: W1ses0ft@zshl