Browse Source

fix: 开发小程序广告和长江行游轮相关内容

luofeiyun 1 week ago
parent
commit
62000f578b
30 changed files with 1052 additions and 56 deletions
  1. 95 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/AppletBrandController.java
  2. 46 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandPageReqVO.java
  3. 14 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandProcessVO.java
  4. 55 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandRespVO.java
  5. 39 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandSaveReqVO.java
  6. 1 1
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/ContentController.java
  7. 17 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentRespVO.java
  8. 17 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentSaveReqVO.java
  9. 3 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentSimpleRespVO.java
  10. 96 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/AppletMenuController.java
  11. 24 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuPageReqVO.java
  12. 46 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuRespVO.java
  13. 30 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuSaveReqVO.java
  14. 10 54
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/advert/AppAdvertController.java
  15. 34 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/brand/AppAppletBrandController.java
  16. 41 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/menu/AppAppletMenuController.java
  17. 68 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/brand/AppletBrandDO.java
  18. 14 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/content/ContentDO.java
  19. 51 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/menu/AppletMenuDO.java
  20. 7 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/adsense/AdsenseMapper.java
  21. 18 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/advert/AdvertMapper.java
  22. 30 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/brand/AppletBrandMapper.java
  23. 37 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/menu/AppletMenuMapper.java
  24. 5 1
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/adsense/AdsenseServiceImpl.java
  25. 6 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/advert/AdvertService.java
  26. 5 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/advert/AdvertServiceImpl.java
  27. 55 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/brand/AppletBrandService.java
  28. 60 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/brand/AppletBrandServiceImpl.java
  29. 61 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/menu/AppletMenuService.java
  30. 67 0
      ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/menu/AppletMenuServiceImpl.java

+ 95 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/AppletBrandController.java

@@ -0,0 +1,95 @@
+package com.yc.ship.module.miniapplet.controller.admin.brand;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandRespVO;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.brand.AppletBrandDO;
+import com.yc.ship.module.miniapplet.service.brand.AppletBrandService;
+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.*;
+import javax.servlet.http.*;
+import java.io.IOException;
+import java.util.List;
+
+import com.yc.ship.framework.common.pojo.PageParam;
+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.*;
+
+
+@Tag(name = "管理后台 - 小程序系统配置")
+@RestController
+@RequestMapping("/applet/brand")
+@Validated
+public class AppletBrandController {
+
+    @Resource
+    private AppletBrandService brandService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建小程序系统配置")
+    @PreAuthorize("@ss.hasPermission('applet:brand:create')")
+    public CommonResult<Long> createBrand(@Valid @RequestBody AppletBrandSaveReqVO createReqVO) {
+        return success(brandService.createBrand(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新小程序系统配置")
+    @PreAuthorize("@ss.hasPermission('applet:brand:update')")
+    public CommonResult<Boolean> updateBrand(@Valid @RequestBody AppletBrandSaveReqVO updateReqVO) {
+        brandService.updateBrand(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除小程序系统配置")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('applet:brand:delete')")
+    public CommonResult<Boolean> deleteBrand(@RequestParam("id") Long id) {
+        brandService.deleteBrand(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得小程序系统配置")
+    @PreAuthorize("@ss.hasPermission('applet:brand:query')")
+    public CommonResult<AppletBrandRespVO> getBrand() {
+        AppletBrandDO brand = brandService.getBrand();
+        return success(BeanUtils.toBean(brand, AppletBrandRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得小程序系统配置分页")
+    @PreAuthorize("@ss.hasPermission('applet:brand:query')")
+    public CommonResult<PageResult<AppletBrandRespVO>> getBrandPage(@Valid AppletBrandPageReqVO pageReqVO) {
+        PageResult<AppletBrandDO> pageResult = brandService.getBrandPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, AppletBrandRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出小程序系统配置 Excel")
+    @PreAuthorize("@ss.hasPermission('applet:brand:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportBrandExcel(@Valid AppletBrandPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<AppletBrandDO> list = brandService.getBrandPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "小程序系统配置.xls", "数据", AppletBrandRespVO.class,
+                        BeanUtils.toBean(list, AppletBrandRespVO.class));
+    }
+
+}

+ 46 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandPageReqVO.java

@@ -0,0 +1,46 @@
+package com.yc.ship.module.miniapplet.controller.admin.brand.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 AppletBrandPageReqVO extends PageParam {
+
+    @Schema(description = "标题")
+    private String title;
+
+    @Schema(description = "品牌封面图")
+    private String brandCoverImg;
+
+    @Schema(description = "品牌封面视频")
+    private String brandCoverVideo;
+
+    @Schema(description = "品牌历程")
+    private String brandProcess;
+
+    @Schema(description = "船队展示")
+    private String fleetImg;
+
+    @Schema(description = "荣誉资质")
+    private String honorsImg;
+
+    @Schema(description = "联系我们")
+    private String contactUs;
+
+    @Schema(description = "招聘信息")
+    private String jobInfo;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 14 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandProcessVO.java

@@ -0,0 +1,14 @@
+package com.yc.ship.module.miniapplet.controller.admin.brand.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class AppletBrandProcessVO {
+
+    @Schema(description = "年份")
+    private String year;
+
+    @Schema(description = "标题")
+    private String title;
+}

+ 55 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandRespVO.java

@@ -0,0 +1,55 @@
+package com.yc.ship.module.miniapplet.controller.admin.brand.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 AppletBrandRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5326")
+    @ExcelProperty("ID")
+    private Long id;
+
+    @Schema(description = "标题")
+    @ExcelProperty("标题")
+    private String title;
+
+    @Schema(description = "品牌封面图")
+    @ExcelProperty("品牌封面图")
+    private List<String> brandCoverImg;
+
+    @Schema(description = "品牌封面视频")
+    @ExcelProperty("品牌封面视频")
+    private String brandCoverVideo;
+
+    @Schema(description = "品牌历程")
+    @ExcelProperty("品牌历程")
+    private List<AppletBrandProcessVO> brandProcess;
+
+    @Schema(description = "船队展示")
+    @ExcelProperty("船队展示")
+    private List<String> fleetImg;
+
+    @Schema(description = "荣誉资质")
+    @ExcelProperty("荣誉资质")
+    private List<String> honorsImg;
+
+    @Schema(description = "联系我们")
+    @ExcelProperty("联系我们")
+    private String contactUs;
+
+    @Schema(description = "招聘信息")
+    @ExcelProperty("招聘信息")
+    private String jobInfo;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 39 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/brand/vo/AppletBrandSaveReqVO.java

@@ -0,0 +1,39 @@
+package com.yc.ship.module.miniapplet.controller.admin.brand.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 AppletBrandSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5326")
+    private Long id;
+
+    @Schema(description = "标题")
+    private String title;
+
+    @Schema(description = "品牌封面图")
+    private List<String> brandCoverImg;
+
+    @Schema(description = "品牌封面视频")
+    private String brandCoverVideo;
+
+    @Schema(description = "品牌历程")
+    private List<AppletBrandProcessVO> brandProcess;
+
+    @Schema(description = "船队展示")
+    private List<String> fleetImg;
+
+    @Schema(description = "荣誉资质")
+    private List<String> honorsImg;
+
+    @Schema(description = "联系我们")
+    private String contactUs;
+
+    @Schema(description = "招聘信息")
+    private String jobInfo;
+
+}

+ 1 - 1
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/ContentController.java

@@ -112,7 +112,7 @@ public class ContentController {
 
     @GetMapping({"/list-all-simple", "/simple-list"})
     @Operation(summary = "获取内容精简信息列表", description = "只包含被开启内容精简信息,主要用于前端的下拉选项")
-    public CommonResult<List<ContentSimpleRespVO>> getSimpleContentList(@RequestParam("catalogueId") Long catalogueId, @RequestParam("status") Integer status) {
+    public CommonResult<List<ContentSimpleRespVO>> getSimpleContentList(@RequestParam(value = "catalogueId", required = false) Long catalogueId, @RequestParam(value = "status", required = false) Integer status) {
         List<ContentDO> list = contentService.getContentList(catalogueId, status == null ? 1 : status);
         return success(BeanUtils.toBean(list, ContentSimpleRespVO.class));
     }

+ 17 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentRespVO.java

@@ -71,4 +71,21 @@ public class ContentRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 作者
+     */
+    @Schema(description = "作者")
+    private String author;
+
+    /**
+     * 作者头像
+     */
+    @Schema(description = "作者头像")
+    private String authorHead;
+    /**
+     * 阅读数
+     */
+    @Schema(description = "阅读数")
+    private Integer views;
+
 }

+ 17 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentSaveReqVO.java

@@ -45,4 +45,21 @@ public class ContentSaveReqVO {
     @Schema(description = "发布时间")
     private LocalDateTime releaseTime;
 
+    /**
+     * 作者
+     */
+    @Schema(description = "作者")
+    private String author;
+
+    /**
+     * 作者头像
+     */
+    @Schema(description = "作者头像")
+    private String authorHead;
+    /**
+     * 阅读数
+     */
+    @Schema(description = "阅读数")
+    private Integer views;
+
 }

+ 3 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/content/vo/ContentSimpleRespVO.java

@@ -18,4 +18,7 @@ public class ContentSimpleRespVO {
     @ExcelProperty("内容名称")
     private String name;
 
+    @Schema(description = "目录ID", example = "1024")
+    private Long catalogueId;
+
 }

+ 96 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/AppletMenuController.java

@@ -0,0 +1,96 @@
+package com.yc.ship.module.miniapplet.controller.admin.menu;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuRespVO;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.menu.AppletMenuDO;
+import com.yc.ship.module.miniapplet.service.menu.AppletMenuService;
+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.*;
+import javax.servlet.http.*;
+import java.io.IOException;
+import java.util.List;
+
+import com.yc.ship.framework.common.pojo.PageParam;
+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.*;
+
+
+@Tag(name = "管理后台 - 小程序菜单")
+@RestController
+@RequestMapping("/applet/menu")
+@Validated
+public class AppletMenuController {
+
+    @Resource
+    private AppletMenuService menuService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建小程序菜单")
+    @PreAuthorize("@ss.hasPermission('applet:menu:create')")
+    public CommonResult<Long> createMenu(@Valid @RequestBody AppletMenuSaveReqVO createReqVO) {
+        return success(menuService.createMenu(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新小程序菜单")
+    @PreAuthorize("@ss.hasPermission('applet:menu:update')")
+    public CommonResult<Boolean> updateMenu(@Valid @RequestBody AppletMenuSaveReqVO updateReqVO) {
+        menuService.updateMenu(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除小程序菜单")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('applet:menu:delete')")
+    public CommonResult<Boolean> deleteMenu(@RequestParam("id") Long id) {
+        menuService.deleteMenu(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得小程序菜单")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('applet:menu:query')")
+    public CommonResult<AppletMenuRespVO> getMenu(@RequestParam("id") Long id) {
+        AppletMenuDO menu = menuService.getMenu(id);
+        return success(BeanUtils.toBean(menu, AppletMenuRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得小程序菜单分页")
+    @PreAuthorize("@ss.hasPermission('applet:menu:query')")
+    public CommonResult<PageResult<AppletMenuRespVO>> getMenuPage(@Valid AppletMenuPageReqVO pageReqVO) {
+        PageResult<AppletMenuDO> pageResult = menuService.getMenuPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, AppletMenuRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出小程序菜单 Excel")
+    @PreAuthorize("@ss.hasPermission('applet:menu:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMenuExcel(@Valid AppletMenuPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<AppletMenuDO> list = menuService.getMenuPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "小程序菜单.xls", "数据", AppletMenuRespVO.class,
+                        BeanUtils.toBean(list, AppletMenuRespVO.class));
+    }
+
+}

+ 24 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuPageReqVO.java

@@ -0,0 +1,24 @@
+package com.yc.ship.module.miniapplet.controller.admin.menu.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 AppletMenuPageReqVO extends PageParam {
+
+    @Schema(description = "菜单名称", example = "张三")
+    private String name;
+
+    @Schema(description = "状态", example = "2")
+    private Integer status;
+
+}

+ 46 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuRespVO.java

@@ -0,0 +1,46 @@
+package com.yc.ship.module.miniapplet.controller.admin.menu.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 AppletMenuRespVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32761")
+    @ExcelProperty("ID")
+    private Long id;
+
+    @Schema(description = "菜单名称", example = "张三")
+    @ExcelProperty("菜单名称")
+    private String name;
+
+    @Schema(description = "图标")
+    @ExcelProperty("图标")
+    private String icon;
+
+    @Schema(description = "跳转链接", example = "https://www.iocoder.cn")
+    @ExcelProperty("跳转链接")
+    private String url;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "状态", example = "2")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
+    @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private Integer sort;
+
+}

+ 30 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/admin/menu/vo/AppletMenuSaveReqVO.java

@@ -0,0 +1,30 @@
+package com.yc.ship.module.miniapplet.controller.admin.menu.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 AppletMenuSaveReqVO {
+
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32761")
+    private Long id;
+
+    @Schema(description = "菜单名称", example = "张三")
+    private String name;
+
+    @Schema(description = "图标")
+    private String icon;
+
+    @Schema(description = "跳转链接", example = "https://www.iocoder.cn")
+    private String url;
+
+    @Schema(description = "状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "排序")
+    private Integer sort;
+
+}

+ 10 - 54
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/advert/AppAdvertController.java

@@ -16,10 +16,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -37,7 +34,7 @@ import static com.yc.ship.framework.common.pojo.CommonResult.success;
  */
 @Tag(name = "用户 APP - 广告")
 @RestController
-@RequestMapping("/app/applet/advert")
+@RequestMapping("/applet/advert")
 @Validated
 @Slf4j
 public class AppAdvertController {
@@ -48,56 +45,15 @@ public class AppAdvertController {
     @Resource
     private AdvertService advertService;
 
-    @Resource
-    private AdvertLogService advertLogService;
-
-    @PostMapping("/adsenseList")
-    public CommonResult<List<AppAdsenseRespVO>> catalogueList(@RequestBody @Valid AppAdvertReqVO reqVO) {
-        List<AdsenseDO> adsenseList = adsenseService.getAdsenseList(reqVO);
-        List<AppAdsenseRespVO> respVOS = BeanUtils.toBean(adsenseList, AppAdsenseRespVO.class);
+    // 根据广告位编码获取广告列表
+    @GetMapping("/advertListByCode")
+    @Operation(summary = "根据广告位编码获取广告列表")
+    public CommonResult<List<AppAdvertRespVO>> advertListByCode(@RequestParam("adsenseCode") String adsenseCode) {
+        AdsenseDO adsenseDO = adsenseService.getAdsenseByCode(adsenseCode);
+        Long adsenseId = adsenseDO.getId();
+        List<AdvertDO> advertList = advertService.getCanUseAdvertList(adsenseId);
+        List<AppAdvertRespVO> respVOS = BeanUtils.toBean(advertList, AppAdvertRespVO.class);
         return success(respVOS);
     }
 
-    @PostMapping("/adsense")
-    public CommonResult<AppAdsenseRespVO> catalogue(@RequestBody @Valid AppAdvertReqVO reqVO) {
-        AdsenseDO adsenseDO = adsenseService.getAdsenseByCode(reqVO.getAdsenseCode());
-        AppAdsenseRespVO respVO = BeanUtils.toBean(adsenseDO, AppAdsenseRespVO.class);
-        return success(respVO);
-    }
-
-    @PostMapping("/advertList")
-    public CommonResult<List<AppAdvertRespVO>> contentList(@RequestBody @Valid AppAdvertReqVO reqVO) {
-        List<AppAdvertRespVO> respVOS = new ArrayList<>(3);
-        if (reqVO.getAdsenseId() == null) {
-            AdsenseDO adsenseDO = adsenseService.getAdsenseByCode(reqVO.getAdsenseCode());
-            if (adsenseDO != null) {
-                reqVO.setAdsenseId(adsenseDO.getId());
-            } else {
-                return success(respVOS);
-            }
-        }
-        List<AdvertDO> advertList = advertService.getAdvertList(reqVO.getAdsenseId());
-        LocalDateTime now = LocalDateTime.now();
-        advertList = advertList.stream()
-                .filter(advert -> advert.getIsDisplay() == 1 && (advert.getValidType() == 0 || (advert.getValidType() == 1 && (now.isAfter(advert.getStaDate()) && now.isBefore(advert.getEndDate())))))
-                .collect(Collectors.toList());
-        respVOS = BeanUtils.toBean(advertList, AppAdvertRespVO.class);
-        return success(respVOS);
-    }
-
-    @PostMapping("/advert")
-    public CommonResult<AppAdvertRespVO> content(@RequestBody @Valid AppAdvertReqVO reqVO) {
-        AdvertDO advertDO = advertService.getAdvert(reqVO.getAdvertId());
-        AppAdvertRespVO respVO = BeanUtils.toBean(advertDO, AppAdvertRespVO.class);
-        return success(respVO);
-    }
-
-    @PostMapping("/recordAdvertLog")
-    @Operation(summary = "记录广告操作日志")
-    public CommonResult<Long> content(@RequestBody @Valid AppAdvertLogReqVO reqVO) {
-        AdvertLogSaveReqVO createReqVO = BeanUtils.toBean(reqVO, AdvertLogSaveReqVO.class);
-        Long logId = advertLogService.createAdvertLog(createReqVO);
-        return success(logId);
-    }
-
 }

+ 34 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/brand/AppAppletBrandController.java

@@ -0,0 +1,34 @@
+package com.yc.ship.module.miniapplet.controller.app.brand;
+
+import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandRespVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.brand.AppletBrandDO;
+import com.yc.ship.module.miniapplet.service.brand.AppletBrandService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import static com.yc.ship.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "用户 APP - 长江行品牌故事")
+@RestController
+@RequestMapping("/applet/brand")
+@Validated
+public class AppAppletBrandController {
+
+    @Resource
+    private AppletBrandService brandService;
+
+    @GetMapping("/get")
+    @Operation(summary = "获得小程序系统配置")
+    public CommonResult<AppletBrandRespVO> getBrand() {
+        AppletBrandDO brand = brandService.getBrand();
+        return success(BeanUtils.toBean(brand, AppletBrandRespVO.class));
+    }
+
+
+}

+ 41 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/controller/app/menu/AppAppletMenuController.java

@@ -0,0 +1,41 @@
+package com.yc.ship.module.miniapplet.controller.app.menu;
+
+import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuRespVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.menu.AppletMenuDO;
+import com.yc.ship.module.miniapplet.service.menu.AppletMenuService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.yc.ship.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "用户 APP - 小程序菜单")
+@RestController
+@RequestMapping("/applet/menu")
+@Validated
+public class AppAppletMenuController {
+
+    @Resource
+    private AppletMenuService menuService;
+
+
+    // 获取菜单列表
+    @GetMapping("/list")
+    @Operation(summary = "获取菜单列表")
+    public CommonResult<List<AppletMenuRespVO>> getAppMenuList() {
+        List<AppletMenuDO> list = menuService.getAppMenuList();
+        return success(BeanUtils.toBean(list, AppletMenuRespVO.class));
+    }
+
+
+
+
+
+}

+ 68 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/brand/AppletBrandDO.java

@@ -0,0 +1,68 @@
+package com.yc.ship.module.miniapplet.dal.dataobject.brand;
+
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandProcessVO;
+import lombok.*;
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.util.List;
+
+/**
+ * 小程序系统配置 DO
+ *
+ * @author 管理员
+ */
+@TableName(value = "applet_brand", autoResultMap = true)
+@KeySequence("applet_brand_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AppletBrandDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 标题
+     */
+    private String title;
+    /**
+     * 品牌封面图
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> brandCoverImg;
+    /**
+     * 品牌封面视频
+     */
+    private String brandCoverVideo;
+    /**
+     * 品牌历程
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<AppletBrandProcessVO> brandProcess;
+    /**
+     * 船队展示
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> fleetImg;
+    /**
+     * 荣誉资质
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> honorsImg;
+    /**
+     * 联系我们
+     */
+    private String contactUs;
+    /**
+     * 招聘信息
+     */
+    private String jobInfo;
+
+}

+ 14 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/content/ContentDO.java

@@ -77,4 +77,18 @@ public class ContentDO extends TenantBaseDO {
      */
     private LocalDateTime releaseTime;
 
+    /**
+     * 作者
+     */
+    private String author;
+
+    /**
+     * 作者头像
+     */
+    private String authorHead;
+    /**
+     * 阅读数
+     */
+    private Integer views;
+
 }

+ 51 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/dataobject/menu/AppletMenuDO.java

@@ -0,0 +1,51 @@
+package com.yc.ship.module.miniapplet.dal.dataobject.menu;
+
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
+import lombok.*;
+import com.baomidou.mybatisplus.annotation.*;
+
+/**
+ * 小程序菜单 DO
+ *
+ * @author 管理员
+ */
+@TableName("applet_menu")
+@KeySequence("applet_menu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AppletMenuDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 菜单名称
+     */
+    private String name;
+    /**
+     * 图标
+     */
+    private String icon;
+    /**
+     * 跳转链接
+     */
+    private String url;
+    /**
+     * 状态
+     *
+     * 枚举 {@link TODO common_status 对应的类}
+     */
+    private Integer status;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+}

+ 7 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/adsense/AdsenseMapper.java

@@ -46,4 +46,11 @@ public interface AdsenseMapper extends BaseMapperX<AdsenseDO> {
         queryWrapper.orderByDesc(AdsenseDO::getCreateTime);
         return selectList(queryWrapper);
     }
+
+    default AdsenseDO selectByCode(String code) {
+        return selectOne(new LambdaQueryWrapperX<AdsenseDO>()
+                .eq(AdsenseDO::getAdsenseCode, code)
+                .eq(AdsenseDO::getIsUse, 1)
+                .last("LIMIT 1"));
+    }
 }

+ 18 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/advert/AdvertMapper.java

@@ -7,6 +7,7 @@ import com.yc.ship.module.miniapplet.controller.admin.advert.vo.AdvertPageReqVO;
 import com.yc.ship.module.miniapplet.dal.dataobject.advert.AdvertDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -36,7 +37,24 @@ public interface AdvertMapper extends BaseMapperX<AdvertDO> {
     default List<AdvertDO> selectAdvertList(Long adsenseId) {
         LambdaQueryWrapperX<AdvertDO> wrapperX = new LambdaQueryWrapperX<>();
         wrapperX.eqIfPresent(AdvertDO::getAdsenseId, adsenseId);
+        wrapperX.eq(AdvertDO::getIsDisplay, 1);
         wrapperX.orderByDesc(AdvertDO::getSort);
         return selectList(wrapperX);
     }
+
+    default List<AdvertDO> selectCanUseAdvertList(Long adsenseId) {
+        LambdaQueryWrapperX<AdvertDO> wrapperX = new LambdaQueryWrapperX<>();
+        wrapperX.eqIfPresent(AdvertDO::getAdsenseId, adsenseId);
+        wrapperX.eq(AdvertDO::getIsDisplay, 1);
+        wrapperX.and(wrapper -> {
+            wrapper.eq(AdvertDO::getValidType, 0);
+            wrapper.or(wrapper1 -> {
+                wrapper1.eq(AdvertDO::getValidType, 1)
+                        .ge(AdvertDO::getStaDate, LocalDateTime.now())
+                        .le(AdvertDO::getEndDate, LocalDateTime.now());
+            });
+        });
+        wrapperX.orderByAsc(AdvertDO::getSort);
+        return selectList(wrapperX);
+    }
 }

+ 30 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/brand/AppletBrandMapper.java

@@ -0,0 +1,30 @@
+package com.yc.ship.module.miniapplet.dal.mysql.brand;
+
+
+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.module.miniapplet.controller.admin.brand.vo.AppletBrandPageReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.brand.AppletBrandDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 小程序系统配置 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface AppletBrandMapper extends BaseMapperX<AppletBrandDO> {
+
+    default PageResult<AppletBrandDO> selectPage(AppletBrandPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AppletBrandDO>()
+                .eqIfPresent(AppletBrandDO::getTitle, reqVO.getTitle())
+                .betweenIfPresent(AppletBrandDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(AppletBrandDO::getId));
+    }
+
+    default AppletBrandDO selectOne() {
+        return selectOne(new LambdaQueryWrapperX<AppletBrandDO>()
+                .last("LIMIT 1"));
+    }
+}

+ 37 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/dal/mysql/menu/AppletMenuMapper.java

@@ -0,0 +1,37 @@
+package com.yc.ship.module.miniapplet.dal.mysql.menu;
+
+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;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuPageReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.menu.AppletMenuDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 小程序菜单 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface AppletMenuMapper extends BaseMapperX<AppletMenuDO> {
+
+    default PageResult<AppletMenuDO> selectPage(AppletMenuPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AppletMenuDO>()
+                .likeIfPresent(AppletMenuDO::getName, reqVO.getName())
+                .eqIfPresent(AppletMenuDO::getStatus, reqVO.getStatus())
+                .orderByAsc(AppletMenuDO::getSort));
+    }
+
+    /**
+     * 获取app菜单列表
+     * @return
+     */
+    default List<AppletMenuDO> selectAppList() {
+        return selectList(new LambdaQueryWrapperX<AppletMenuDO>()
+                .eq(AppletMenuDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
+                .orderByAsc(AppletMenuDO::getSort));
+    }
+}

+ 5 - 1
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/adsense/AdsenseServiceImpl.java

@@ -116,7 +116,11 @@ public class AdsenseServiceImpl implements AdsenseService {
 
     @Override
     public AdsenseDO getAdsenseByCode(String code) {
-        return adsenseMapper.selectOne("adsense_code", code);
+        AdsenseDO adsenseDO = adsenseMapper.selectByCode(code);
+        if(adsenseDO == null) {
+            throw exception(ADSENSE_NOT_EXISTS);
+        }
+        return adsenseDO;
     }
 
 }

+ 6 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/advert/AdvertService.java

@@ -61,4 +61,10 @@ public interface AdvertService {
      */
     List<AdvertDO> getAdvertList(Long adsenseId);
 
+    /**
+     * 根据广告位Id获取可以使用的广告
+     * @param adsenseId
+     * @return
+     */
+    List<AdvertDO> getCanUseAdvertList(Long adsenseId);
 }

+ 5 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/advert/AdvertServiceImpl.java

@@ -88,4 +88,9 @@ public class AdvertServiceImpl implements AdvertService {
         return advertMapper.selectAdvertList(adsenseId);
     }
 
+    @Override
+    public List<AdvertDO> getCanUseAdvertList(Long adsenseId) {
+        return advertMapper.selectCanUseAdvertList(adsenseId);
+    }
+
 }

+ 55 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/brand/AppletBrandService.java

@@ -0,0 +1,55 @@
+package com.yc.ship.module.miniapplet.service.brand;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.brand.AppletBrandDO;
+
+import javax.validation.*;
+
+/**
+ * 小程序系统配置 Service 接口
+ *
+ * @author 管理员
+ */
+public interface AppletBrandService {
+
+    /**
+     * 创建小程序系统配置
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createBrand(@Valid AppletBrandSaveReqVO createReqVO);
+
+    /**
+     * 更新小程序系统配置
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateBrand(@Valid AppletBrandSaveReqVO updateReqVO);
+
+    /**
+     * 删除小程序系统配置
+     *
+     * @param id 编号
+     */
+    void deleteBrand(Long id);
+
+    /**
+     * 获得小程序系统配置
+     *
+     * @param id 编号
+     * @return 小程序系统配置
+     */
+    AppletBrandDO getBrand();
+
+    /**
+     * 获得小程序系统配置分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 小程序系统配置分页
+     */
+    PageResult<AppletBrandDO> getBrandPage(AppletBrandPageReqVO pageReqVO);
+
+}

+ 60 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/brand/AppletBrandServiceImpl.java

@@ -0,0 +1,60 @@
+package com.yc.ship.module.miniapplet.service.brand;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.brand.vo.AppletBrandSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.brand.AppletBrandDO;
+import com.yc.ship.module.miniapplet.dal.mysql.brand.AppletBrandMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+
+
+
+/**
+ * 小程序系统配置 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class AppletBrandServiceImpl implements AppletBrandService {
+
+    @Resource
+    private AppletBrandMapper brandMapper;
+
+    @Override
+    public Long createBrand(AppletBrandSaveReqVO createReqVO) {
+        // 插入
+        AppletBrandDO brand = BeanUtils.toBean(createReqVO, AppletBrandDO.class);
+        brandMapper.insert(brand);
+        // 返回
+        return brand.getId();
+    }
+
+    @Override
+    public void updateBrand(AppletBrandSaveReqVO updateReqVO) {
+        // 更新
+        AppletBrandDO updateObj = BeanUtils.toBean(updateReqVO, AppletBrandDO.class);
+        brandMapper.insertOrUpdate(updateObj);
+    }
+
+    @Override
+    public void deleteBrand(Long id) {
+        // 删除
+        brandMapper.deleteById(id);
+    }
+
+
+    @Override
+    public AppletBrandDO getBrand() {
+        return brandMapper.selectOne();
+    }
+
+    @Override
+    public PageResult<AppletBrandDO> getBrandPage(AppletBrandPageReqVO pageReqVO) {
+        return brandMapper.selectPage(pageReqVO);
+    }
+
+}

+ 61 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/menu/AppletMenuService.java

@@ -0,0 +1,61 @@
+package com.yc.ship.module.miniapplet.service.menu;
+
+import javax.validation.*;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.menu.AppletMenuDO;
+
+import java.util.List;
+
+/**
+ * 小程序菜单 Service 接口
+ *
+ * @author 管理员
+ */
+public interface AppletMenuService {
+
+    /**
+     * 创建小程序菜单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMenu(@Valid AppletMenuSaveReqVO createReqVO);
+
+    /**
+     * 更新小程序菜单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMenu(@Valid AppletMenuSaveReqVO updateReqVO);
+
+    /**
+     * 删除小程序菜单
+     *
+     * @param id 编号
+     */
+    void deleteMenu(Long id);
+
+    /**
+     * 获得小程序菜单
+     *
+     * @param id 编号
+     * @return 小程序菜单
+     */
+    AppletMenuDO getMenu(Long id);
+
+    /**
+     * 获得小程序菜单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 小程序菜单分页
+     */
+    PageResult<AppletMenuDO> getMenuPage(AppletMenuPageReqVO pageReqVO);
+
+    /**
+     * 获取小程序端菜单列表
+     * @return
+     */
+    List<AppletMenuDO> getAppMenuList();
+}

+ 67 - 0
ship-module-miniapplet/src/main/java/com/yc/ship/module/miniapplet/service/menu/AppletMenuServiceImpl.java

@@ -0,0 +1,67 @@
+package com.yc.ship.module.miniapplet.service.menu;
+
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuPageReqVO;
+import com.yc.ship.module.miniapplet.controller.admin.menu.vo.AppletMenuSaveReqVO;
+import com.yc.ship.module.miniapplet.dal.dataobject.menu.AppletMenuDO;
+import com.yc.ship.module.miniapplet.dal.mysql.menu.AppletMenuMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+
+import java.util.List;
+
+
+/**
+ * 小程序菜单 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class AppletMenuServiceImpl implements AppletMenuService {
+
+    @Resource
+    private AppletMenuMapper appletMenuMapper;
+
+    @Override
+    public Long createMenu(AppletMenuSaveReqVO createReqVO) {
+        // 插入
+        AppletMenuDO menu = BeanUtils.toBean(createReqVO, AppletMenuDO.class);
+        appletMenuMapper.insert(menu);
+        // 返回
+        return menu.getId();
+    }
+
+    @Override
+    public void updateMenu(AppletMenuSaveReqVO updateReqVO) {
+        // 更新
+        AppletMenuDO updateObj = BeanUtils.toBean(updateReqVO, AppletMenuDO.class);
+        appletMenuMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMenu(Long id) {
+        // 删除
+        appletMenuMapper.deleteById(id);
+    }
+
+
+    @Override
+    public AppletMenuDO getMenu(Long id) {
+        return appletMenuMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<AppletMenuDO> getMenuPage(AppletMenuPageReqVO pageReqVO) {
+        return appletMenuMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<AppletMenuDO> getAppMenuList() {
+        return appletMenuMapper.selectAppList();
+    }
+
+}