mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-18 09:35:29 +08:00
支持H5保存、分组保存等等
This commit is contained in:
parent
213107dae0
commit
268c7dcdc8
63
ruoyi-site/ruoyi-h5/doc/h5_groups.sql
Normal file
63
ruoyi-site/ruoyi-h5/doc/h5_groups.sql
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : localhost
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80023
|
||||
Source Host : localhost:3306
|
||||
Source Schema : h5
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80023
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 12/11/2025 15:00:00
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for h5_groups
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `h5_groups`;
|
||||
CREATE TABLE `h5_groups` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分组名称',
|
||||
`parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父级分组ID,0表示一级分组',
|
||||
`type` int NOT NULL COMMENT '分组类型:1-物料 2-用途 3-行业',
|
||||
`sort` int NOT NULL DEFAULT 0 COMMENT '排序',
|
||||
`status` int NOT NULL DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||||
`create_time` bigint NULL DEFAULT NULL COMMENT '创建时间戳',
|
||||
`update_time` bigint NULL DEFAULT NULL COMMENT '更新时间戳',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_parent_id`(`parent_id`) USING BTREE,
|
||||
INDEX `idx_type`(`type`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'H5分组表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入默认分组数据
|
||||
-- ----------------------------
|
||||
INSERT INTO `h5_groups` VALUES (1, '物料', 0, 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
INSERT INTO `h5_groups` VALUES (2, '用途', 0, 2, 2, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
INSERT INTO `h5_groups` VALUES (3, '行业', 0, 3, 3, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入二级分组数据 - 物料
|
||||
-- ----------------------------
|
||||
INSERT INTO `h5_groups` VALUES (4, '长页', 1, 1, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
INSERT INTO `h5_groups` VALUES (5, '翻页', 1, 1, 2, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入二级分组数据 - 用途
|
||||
-- ----------------------------
|
||||
INSERT INTO `h5_groups` VALUES (6, '通用', 2, 2, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
INSERT INTO `h5_groups` VALUES (7, '祝福问候', 2, 2, 2, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入二级分组数据 - 行业
|
||||
-- ----------------------------
|
||||
INSERT INTO `h5_groups` VALUES (8, '金融', 3, 3, 1, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
INSERT INTO `h5_groups` VALUES (9, '医疗', 3, 3, 2, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
34
ruoyi-site/ruoyi-h5/doc/h5_project_groups.sql
Normal file
34
ruoyi-site/ruoyi-h5/doc/h5_project_groups.sql
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : localhost
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80023
|
||||
Source Host : localhost:3306
|
||||
Source Schema : h5
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80023
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 12/11/2025 15:00:00
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for h5_project_groups
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `h5_project_groups`;
|
||||
CREATE TABLE `h5_project_groups` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`project_id` bigint NOT NULL COMMENT '项目ID',
|
||||
`group_id` bigint NOT NULL COMMENT '分组ID',
|
||||
`create_time` bigint NULL DEFAULT NULL COMMENT '创建时间戳',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_project_id`(`project_id`) USING BTREE,
|
||||
INDEX `idx_group_id`(`group_id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'H5项目与分组关联表' ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
41
ruoyi-site/ruoyi-h5/doc/h5_projects.sql
Normal file
41
ruoyi-site/ruoyi-h5/doc/h5_projects.sql
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : localhost
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 80023
|
||||
Source Host : localhost:3306
|
||||
Source Schema : h5
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 80023
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 12/11/2025 14:30:00
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for h5_projects
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `h5_projects`;
|
||||
CREATE TABLE `h5_projects` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`type` varchar(10) NULL DEFAULT NULL COMMENT '类型',
|
||||
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题',
|
||||
`content_id` varchar(255) not NULL DEFAULT NULL COMMENT '内容在MongoDB中的ID',
|
||||
`content_updated_at` bigint NULL DEFAULT NULL COMMENT '内容更新时间戳',
|
||||
`description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
|
||||
`preview_url` varchar(500) NULL DEFAULT NULL COMMENT '预览图URL',
|
||||
`preview_url_watermark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '水印预览图URL',
|
||||
`preview_width` int NULL DEFAULT NULL COMMENT '预览图宽度',
|
||||
`preview_height` int NULL DEFAULT NULL COMMENT '预览图高度',
|
||||
`status` tinyint NULL DEFAULT NULL COMMENT '状态',
|
||||
`create_time` bigint NULL DEFAULT NULL COMMENT '创建时间戳',
|
||||
`update_time` bigint NULL DEFAULT NULL COMMENT '更新时间戳',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'H5项目表' ROW_FORMAT = Dynamic;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@ -0,0 +1,125 @@
|
||||
package com.luban.api.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.luban.api.entity.H5Group;
|
||||
import com.luban.api.service.H5GroupService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5分组 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/h5-groups")
|
||||
@Tag(name = "H5分组管理", description = "H5分组管理")
|
||||
@Slf4j
|
||||
public class H5GroupController {
|
||||
|
||||
@Autowired
|
||||
private H5GroupService h5GroupService;
|
||||
|
||||
/**
|
||||
* 查询所有H5分组
|
||||
*
|
||||
* @return H5分组列表
|
||||
*/
|
||||
@Operation(summary = "查询所有H5分组")
|
||||
@GetMapping
|
||||
public List<H5Group> listAllH5Groups() {
|
||||
return h5GroupService.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询H5分组
|
||||
*
|
||||
* @param pageNum 页码
|
||||
* @param pageSize 每页大小
|
||||
* @return H5分组分页数据
|
||||
*/
|
||||
@Operation(summary = "分页查询H5分组")
|
||||
@GetMapping("/page")
|
||||
public IPage<H5Group> listH5GroupsByPage(@RequestParam(defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
IPage<H5Group> page = new Page<>(pageNum, pageSize);
|
||||
return h5GroupService.page(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询H5分组
|
||||
*
|
||||
* @param id H5分组ID
|
||||
* @return H5分组信息
|
||||
*/
|
||||
@Operation(summary = "根据ID查询H5分组")
|
||||
@GetMapping("/{id}")
|
||||
public H5Group getH5GroupById(@PathVariable Long id) {
|
||||
return h5GroupService.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据父级ID查询子分组
|
||||
*
|
||||
* @param parentId 父级ID
|
||||
* @return 子分组列表
|
||||
*/
|
||||
@Operation(summary = "根据父级ID查询子分组")
|
||||
@GetMapping("/children/{parentId}")
|
||||
public List<H5Group> getChildrenByParentId(@PathVariable Long parentId) {
|
||||
LambdaQueryWrapper<H5Group> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(H5Group::getParentId, parentId);
|
||||
return h5GroupService.list(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建H5分组
|
||||
*
|
||||
* @param h5Group H5分组信息
|
||||
* @return 创建结果
|
||||
*/
|
||||
@Operation(summary = "创建H5分组")
|
||||
@PostMapping
|
||||
public boolean createH5Group(@RequestBody H5Group h5Group) {
|
||||
long currentTime = System.currentTimeMillis() / 1000;
|
||||
h5Group.setCreateTime(currentTime);
|
||||
h5Group.setUpdateTime(currentTime);
|
||||
return h5GroupService.save(h5Group);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新H5分组
|
||||
*
|
||||
* @param id H5分组ID
|
||||
* @param h5Group H5分组信息
|
||||
* @return 更新结果
|
||||
*/
|
||||
@Operation(summary = "更新H5分组")
|
||||
@PutMapping("/{id}")
|
||||
public boolean updateH5Group(@PathVariable Long id, @RequestBody H5Group h5Group) {
|
||||
h5Group.setId(id);
|
||||
h5Group.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
return h5GroupService.updateById(h5Group);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除H5分组
|
||||
*
|
||||
* @param id H5分组ID
|
||||
* @return 删除结果
|
||||
*/
|
||||
@Operation(summary = "删除H5分组")
|
||||
@DeleteMapping("/{id}")
|
||||
public boolean deleteH5Group(@PathVariable Long id) {
|
||||
return h5GroupService.removeById(id);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,173 @@
|
||||
package com.luban.api.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.luban.api.entity.H5Project;
|
||||
import com.luban.api.service.H5ProjectService;
|
||||
import com.luban.api.vo.H5ProjectDetailVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/h5-projects")
|
||||
@Tag(name = "H5项目管理", description = "H5项目管理")
|
||||
@Slf4j
|
||||
public class H5ProjectController {
|
||||
|
||||
@Autowired
|
||||
private H5ProjectService h5ProjectService;
|
||||
|
||||
/**
|
||||
* 查询所有H5项目
|
||||
*
|
||||
* @return H5项目列表
|
||||
*/
|
||||
@Operation(summary = "查询所有H5项目")
|
||||
@GetMapping
|
||||
public List<H5Project> listAllH5Projects() {
|
||||
return h5ProjectService.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询H5项目
|
||||
*
|
||||
* @param pageNum 页码
|
||||
* @param pageSize 每页大小
|
||||
* @return H5项目分页数据
|
||||
*/
|
||||
@Operation(summary = "分页查询H5项目")
|
||||
@GetMapping("/page")
|
||||
public IPage<H5Project> listH5ProjectsByPage(@RequestParam(defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
IPage<H5Project> page = new Page<>(pageNum, pageSize);
|
||||
return h5ProjectService.page(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询H5项目
|
||||
*
|
||||
* @param id H5项目ID
|
||||
* @return H5项目信息
|
||||
*/
|
||||
@Operation(summary = "根据ID查询H5项目")
|
||||
@GetMapping("/{id}")
|
||||
public H5ProjectDetailVO getH5ProjectById(@PathVariable Long id) {
|
||||
H5Project h5Project = h5ProjectService.getH5ProjectWithContent(id);
|
||||
|
||||
H5ProjectDetailVO detailVO = new H5ProjectDetailVO();
|
||||
detailVO.setProject(h5Project);
|
||||
|
||||
// 获取项目内容
|
||||
if (h5Project != null && h5Project.getContentId() != null) {
|
||||
String content = h5ProjectService.getProjectContent(h5Project.getContentId());
|
||||
detailVO.setContent(content);
|
||||
}
|
||||
|
||||
// 获取项目关联的分组ID列表
|
||||
List<Long> groupIds = h5ProjectService.getProjectGroupIds(id);
|
||||
detailVO.setGroupIds(groupIds);
|
||||
|
||||
return detailVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建H5项目
|
||||
*
|
||||
* @param request 包含H5项目信息和内容的请求
|
||||
* @return 项目ID
|
||||
*/
|
||||
@Operation(summary = "创建H5项目")
|
||||
@PostMapping
|
||||
public Long createH5Project(@RequestBody CreateH5ProjectRequest request) {
|
||||
H5Project h5Project = new H5Project();
|
||||
h5Project.setType(request.getType());
|
||||
h5Project.setTitle(request.getTitle());
|
||||
h5Project.setContentUpdatedAt(request.getContentUpdatedAt());
|
||||
h5Project.setDescription(request.getDescription());
|
||||
h5Project.setPreviewUrl(request.getPreviewUrl());
|
||||
h5Project.setPreviewUrlWatermark(request.getPreviewUrlWatermark());
|
||||
h5Project.setPreviewWidth(request.getPreviewWidth());
|
||||
h5Project.setPreviewHeight(request.getPreviewHeight());
|
||||
h5Project.setStatus(request.getStatus());
|
||||
|
||||
boolean success = h5ProjectService.saveH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
|
||||
if (success) {
|
||||
return h5Project.getId();
|
||||
} else {
|
||||
throw new RuntimeException("创建项目失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新H5项目
|
||||
*
|
||||
* @param id H5项目ID
|
||||
* @param request 包含H5项目信息和内容的请求
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
@Operation(summary = "更新H5项目")
|
||||
@PutMapping("/{id}")
|
||||
public Boolean updateH5Project(@PathVariable Long id, @RequestBody CreateH5ProjectRequest request) {
|
||||
H5Project h5Project = h5ProjectService.getById(id);
|
||||
if (h5Project == null) {
|
||||
throw new RuntimeException("项目不存在");
|
||||
}
|
||||
|
||||
h5Project.setType(request.getType());
|
||||
h5Project.setTitle(request.getTitle());
|
||||
h5Project.setContentUpdatedAt(request.getContentUpdatedAt());
|
||||
h5Project.setDescription(request.getDescription());
|
||||
h5Project.setPreviewUrl(request.getPreviewUrl());
|
||||
h5Project.setPreviewUrlWatermark(request.getPreviewUrlWatermark());
|
||||
h5Project.setPreviewWidth(request.getPreviewWidth());
|
||||
h5Project.setPreviewHeight(request.getPreviewHeight());
|
||||
h5Project.setStatus(request.getStatus());
|
||||
|
||||
return h5ProjectService.updateH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除H5项目
|
||||
*
|
||||
* @param id H5项目ID
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Operation(summary = "删除H5项目")
|
||||
@DeleteMapping("/{id}")
|
||||
public Boolean deleteH5Project(@PathVariable Long id) {
|
||||
return h5ProjectService.removeH5ProjectWithContent(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建H5项目请求类
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public static class CreateH5ProjectRequest {
|
||||
private String type;
|
||||
private String title;
|
||||
private String content;
|
||||
private Long contentUpdatedAt;
|
||||
private String description;
|
||||
private String previewUrl;
|
||||
private String previewUrlWatermark;
|
||||
private Integer previewWidth;
|
||||
private Integer previewHeight;
|
||||
private Integer status;
|
||||
private List<Long> groupIds;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
package com.luban.api.convert;
|
||||
|
||||
import com.luban.api.entity.H5Project;
|
||||
import com.luban.api.vo.H5ProjectVO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* H5项目转换器
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
public class H5ProjectConvert {
|
||||
|
||||
/**
|
||||
* 将H5Project实体转换为H5ProjectVO视图对象
|
||||
*
|
||||
* @param entity H5Project实体
|
||||
* @return H5ProjectVO视图对象
|
||||
*/
|
||||
public static H5ProjectVO toVO(H5Project entity) {
|
||||
H5ProjectVO vo = new H5ProjectVO();
|
||||
BeanUtils.copyProperties(entity, vo);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将H5Project实体列表转换为H5ProjectVO视图对象列表
|
||||
*
|
||||
* @param entitys H5Project实体列表
|
||||
* @return H5ProjectVO视图对象列表
|
||||
*/
|
||||
public static List<H5ProjectVO> toVO(List<H5Project> entitys) {
|
||||
List<H5ProjectVO> voList = new ArrayList<>();
|
||||
for (H5Project entity : entitys) {
|
||||
voList.add(toVO(entity));
|
||||
}
|
||||
return voList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将H5ProjectVO视图对象转换为H5Project实体
|
||||
*
|
||||
* @param vo H5ProjectVO视图对象
|
||||
* @return H5Project实体
|
||||
*/
|
||||
public static H5Project toEntity(H5ProjectVO vo) {
|
||||
H5Project entity = new H5Project();
|
||||
BeanUtils.copyProperties(vo, entity);
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.luban.api.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.luban.api.entity.H5Group;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5分组 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Mapper
|
||||
public interface H5GroupDao extends BaseMapper<H5Group> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.luban.api.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.luban.api.entity.H5Project;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Mapper
|
||||
public interface H5ProjectDao extends BaseMapper<H5Project> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
package com.luban.api.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.luban.api.entity.H5ProjectGroup;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目与分组关联 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Mapper
|
||||
public interface H5ProjectGroupDao extends BaseMapper<H5ProjectGroup> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.luban.api.dao.mongo;
|
||||
|
||||
import com.luban.api.entity.mongo.H5ProjectContent;
|
||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* H5项目内容 Repository
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Repository
|
||||
public interface H5ProjectContentRepository extends MongoRepository<H5ProjectContent, String> {
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
package com.luban.api.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* H5项目数据传输对象
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "H5项目DTO")
|
||||
public class H5ProjectDTO {
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 内容更新时间戳
|
||||
*/
|
||||
private Long contentUpdatedAt;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 预览图URL
|
||||
*/
|
||||
private String previewUrl;
|
||||
|
||||
/**
|
||||
* 水印预览图URL
|
||||
*/
|
||||
private String previewUrlWatermark;
|
||||
|
||||
/**
|
||||
* 预览图宽度
|
||||
*/
|
||||
private Integer previewWidth;
|
||||
|
||||
/**
|
||||
* 预览图高度
|
||||
*/
|
||||
private Integer previewHeight;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package com.luban.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* H5分组实体类
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@TableName("h5_groups")
|
||||
@Schema(title = "H5分组对象")
|
||||
public class H5Group implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 父级分组ID,0表示一级分组
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 分组类型:1-物料 2-用途 3-行业
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 状态:0-禁用 1-启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间戳
|
||||
*/
|
||||
private Long createTime;
|
||||
|
||||
/**
|
||||
* 更新时间戳
|
||||
*/
|
||||
private Long updateTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,91 @@
|
||||
package com.luban.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* H5项目实体类
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@TableName("h5_projects")
|
||||
@Schema(title = "H5项目对象")
|
||||
public class H5Project implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 内容在MongoDB中的ID
|
||||
*/
|
||||
private String contentId;
|
||||
|
||||
/**
|
||||
* 内容更新时间戳
|
||||
*/
|
||||
private Long contentUpdatedAt;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 预览图URL
|
||||
*/
|
||||
private String previewUrl;
|
||||
|
||||
/**
|
||||
* 水印预览图URL
|
||||
*/
|
||||
private String previewUrlWatermark;
|
||||
|
||||
/**
|
||||
* 预览图宽度
|
||||
*/
|
||||
private Integer previewWidth;
|
||||
|
||||
/**
|
||||
* 预览图高度
|
||||
*/
|
||||
private Integer previewHeight;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间戳
|
||||
*/
|
||||
private Long createTime;
|
||||
|
||||
/**
|
||||
* 更新时间戳
|
||||
*/
|
||||
private Long updateTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,46 @@
|
||||
package com.luban.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* H5项目与分组关联实体类
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@TableName("h5_project_groups")
|
||||
@Schema(title = "H5项目与分组关联对象")
|
||||
public class H5ProjectGroup implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 创建时间戳
|
||||
*/
|
||||
private Long createTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.luban.api.entity.mongo;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
|
||||
/**
|
||||
* H5项目内容实体类 (存储在MongoDB中)
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@Document(collection = "h5_project_content")
|
||||
public class H5ProjectContent {
|
||||
|
||||
/**
|
||||
* 主键ID,与MySQL中H5Project的contentId对应
|
||||
*/
|
||||
@Id
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 创建时间戳
|
||||
*/
|
||||
private Long createTime;
|
||||
|
||||
/**
|
||||
* 更新时间戳
|
||||
*/
|
||||
private Long updateTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.luban.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.luban.api.entity.H5Group;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5分组 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
public interface H5GroupService extends IService<H5Group> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.luban.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.luban.api.entity.H5ProjectGroup;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目与分组关联 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
public interface H5ProjectGroupService extends IService<H5ProjectGroup> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
package com.luban.api.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.luban.api.entity.H5Project;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
public interface H5ProjectService extends IService<H5Project> {
|
||||
|
||||
/**
|
||||
* 保存H5项目及其内容
|
||||
* @param h5Project H5项目信息
|
||||
* @param content 项目内容
|
||||
* @param groupIds 分组ID列表
|
||||
* @return 是否保存成功
|
||||
*/
|
||||
boolean saveH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds);
|
||||
|
||||
/**
|
||||
* 更新H5项目及其内容
|
||||
* @param h5Project H5项目信息
|
||||
* @param content 项目内容
|
||||
* @param groupIds 分组ID列表
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
boolean updateH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds);
|
||||
|
||||
/**
|
||||
* 根据ID获取H5项目及其内容
|
||||
* @param id H5项目ID
|
||||
* @return H5项目信息及内容
|
||||
*/
|
||||
H5Project getH5ProjectWithContent(Long id);
|
||||
|
||||
/**
|
||||
* 删除H5项目及其内容
|
||||
* @param id H5项目ID
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
boolean removeH5ProjectWithContent(Long id);
|
||||
|
||||
/**
|
||||
* 获取项目关联的分组ID列表
|
||||
* @param projectId 项目ID
|
||||
* @return 分组ID列表
|
||||
*/
|
||||
List<Long> getProjectGroupIds(Long projectId);
|
||||
|
||||
/**
|
||||
* 获取项目内容
|
||||
* @param contentId 内容ID
|
||||
* @return 项目内容
|
||||
*/
|
||||
String getProjectContent(String contentId);
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.luban.api.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.luban.api.dao.H5GroupDao;
|
||||
import com.luban.api.entity.H5Group;
|
||||
import com.luban.api.service.H5GroupService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5分组 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Service
|
||||
public class H5GroupServiceImpl extends ServiceImpl<H5GroupDao, H5Group> implements H5GroupService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.luban.api.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.luban.api.dao.H5ProjectGroupDao;
|
||||
import com.luban.api.entity.H5ProjectGroup;
|
||||
import com.luban.api.service.H5ProjectGroupService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目与分组关联 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Service
|
||||
public class H5ProjectGroupServiceImpl extends ServiceImpl<H5ProjectGroupDao, H5ProjectGroup> implements H5ProjectGroupService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,180 @@
|
||||
package com.luban.api.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.luban.api.dao.H5ProjectDao;
|
||||
import com.luban.api.dao.H5ProjectGroupDao;
|
||||
import com.luban.api.dao.mongo.H5ProjectContentRepository;
|
||||
import com.luban.api.entity.H5Project;
|
||||
import com.luban.api.entity.H5ProjectGroup;
|
||||
import com.luban.api.entity.mongo.H5ProjectContent;
|
||||
import com.luban.api.service.H5ProjectService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* H5项目 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Service
|
||||
public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> implements H5ProjectService {
|
||||
|
||||
@Autowired
|
||||
private H5ProjectContentRepository h5ProjectContentRepository;
|
||||
|
||||
@Autowired
|
||||
private H5ProjectGroupDao h5ProjectGroupDao;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean saveH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds) {
|
||||
// 设置创建和更新时间戳
|
||||
long currentTime = System.currentTimeMillis() / 1000;
|
||||
h5Project.setCreateTime(currentTime);
|
||||
h5Project.setUpdateTime(currentTime);
|
||||
|
||||
// 先保存H5Project基本信息到MySQL
|
||||
boolean saved = this.save(h5Project);
|
||||
|
||||
if (saved && StringUtils.hasText(content)) {
|
||||
// 生成contentId
|
||||
String contentId = UUID.randomUUID().toString();
|
||||
h5Project.setContentId(contentId);
|
||||
h5Project.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
this.updateById(h5Project);
|
||||
|
||||
// 创建H5ProjectContent并保存到MongoDB
|
||||
H5ProjectContent h5ProjectContent = new H5ProjectContent();
|
||||
h5ProjectContent.setId(contentId);
|
||||
h5ProjectContent.setContent(content);
|
||||
h5ProjectContent.setCreateTime(currentTime);
|
||||
h5ProjectContent.setUpdateTime(currentTime);
|
||||
|
||||
h5ProjectContentRepository.save(h5ProjectContent);
|
||||
}
|
||||
|
||||
// 保存项目与分组的关联关系
|
||||
if (saved && groupIds != null && !groupIds.isEmpty()) {
|
||||
saveProjectGroups(h5Project.getId(), groupIds, currentTime);
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean updateH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds) {
|
||||
// 设置更新时间戳
|
||||
long currentTime = System.currentTimeMillis() / 1000;
|
||||
h5Project.setUpdateTime(currentTime);
|
||||
|
||||
// 更新H5Project基本信息到MySQL
|
||||
boolean updated = this.updateById(h5Project);
|
||||
|
||||
if (updated && StringUtils.hasText(content)) {
|
||||
// 更新或创建H5ProjectContent到MongoDB
|
||||
String contentId = h5Project.getContentId();
|
||||
if (contentId == null) {
|
||||
contentId = UUID.randomUUID().toString();
|
||||
h5Project.setContentId(contentId);
|
||||
h5Project.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
this.updateById(h5Project);
|
||||
}
|
||||
|
||||
H5ProjectContent h5ProjectContent = h5ProjectContentRepository.findById(contentId).orElse(new H5ProjectContent());
|
||||
h5ProjectContent.setId(contentId);
|
||||
h5ProjectContent.setContent(content);
|
||||
h5ProjectContent.setUpdateTime(currentTime);
|
||||
|
||||
h5ProjectContentRepository.save(h5ProjectContent);
|
||||
}
|
||||
|
||||
// 更新项目与分组的关联关系
|
||||
if (updated && groupIds != null) {
|
||||
h5ProjectGroupDao.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<H5ProjectGroup>()
|
||||
.eq(H5ProjectGroup::getProjectId, h5Project.getId()));
|
||||
|
||||
if (!groupIds.isEmpty()) {
|
||||
saveProjectGroups(h5Project.getId(), groupIds, currentTime);
|
||||
}
|
||||
}
|
||||
|
||||
return updated;
|
||||
}
|
||||
|
||||
@Override
|
||||
public H5Project getH5ProjectWithContent(Long id) {
|
||||
// 获取MySQL中的H5Project基本信息
|
||||
H5Project h5Project = this.getById(id);
|
||||
|
||||
if (h5Project != null && h5Project.getContentId() != null) {
|
||||
// 获取MongoDB中的内容
|
||||
H5ProjectContent h5ProjectContent = h5ProjectContentRepository.findById(h5Project.getContentId()).orElse(null);
|
||||
// 可以在这里将content设置到h5Project的某个属性中,如果需要的话
|
||||
}
|
||||
|
||||
return h5Project;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProjectContent(String contentId) {
|
||||
if (contentId != null) {
|
||||
H5ProjectContent content = h5ProjectContentRepository.findById(contentId).orElse(null);
|
||||
return content != null ? content.getContent() : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean removeH5ProjectWithContent(Long id) {
|
||||
H5Project h5Project = this.getById(id);
|
||||
if (h5Project != null) {
|
||||
// 先删除MongoDB中的内容
|
||||
if (h5Project.getContentId() != null) {
|
||||
h5ProjectContentRepository.deleteById(h5Project.getContentId());
|
||||
}
|
||||
|
||||
// 删除项目与分组的关联关系
|
||||
h5ProjectGroupDao.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<H5ProjectGroup>()
|
||||
.eq(H5ProjectGroup::getProjectId, id));
|
||||
|
||||
// 再删除MySQL中的记录
|
||||
return this.removeById(id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存项目与分组的关联关系
|
||||
* @param projectId 项目ID
|
||||
* @param groupIds 分组ID列表
|
||||
* @param currentTime 当前时间戳
|
||||
*/
|
||||
private void saveProjectGroups(Long projectId, List<Long> groupIds, long currentTime) {
|
||||
for (Long groupId : groupIds) {
|
||||
H5ProjectGroup projectGroup = new H5ProjectGroup();
|
||||
projectGroup.setProjectId(projectId);
|
||||
projectGroup.setGroupId(groupId);
|
||||
projectGroup.setCreateTime(currentTime);
|
||||
h5ProjectGroupDao.insert(projectGroup);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getProjectGroupIds(Long projectId) {
|
||||
return h5ProjectGroupDao.selectList(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<H5ProjectGroup>()
|
||||
.eq(H5ProjectGroup::getProjectId, projectId))
|
||||
.stream()
|
||||
.map(H5ProjectGroup::getGroupId)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.luban.api.vo;
|
||||
|
||||
import com.luban.api.entity.H5Project;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* H5项目详情VO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "H5项目详情")
|
||||
public class H5ProjectDetailVO {
|
||||
|
||||
/**
|
||||
* 项目基本信息
|
||||
*/
|
||||
@Schema(title = "项目基本信息")
|
||||
private H5Project project;
|
||||
|
||||
/**
|
||||
* 项目内容
|
||||
*/
|
||||
@Schema(title = "项目内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 项目关联的分组ID列表
|
||||
*/
|
||||
@Schema(title = "项目关联的分组ID列表")
|
||||
private List<Long> groupIds;
|
||||
}
|
||||
@ -0,0 +1,94 @@
|
||||
package com.luban.api.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* H5项目视图对象
|
||||
*
|
||||
* @author your-name
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "H5项目视图对象")
|
||||
public class H5ProjectVO {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 内容更新时间戳
|
||||
*/
|
||||
private Long contentUpdatedAt;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 预览图URL
|
||||
*/
|
||||
private String previewUrl;
|
||||
|
||||
/**
|
||||
* 水印预览图URL
|
||||
*/
|
||||
private String previewUrlWatermark;
|
||||
|
||||
/**
|
||||
* 预览图宽度
|
||||
*/
|
||||
private Integer previewWidth;
|
||||
|
||||
/**
|
||||
* 预览图高度
|
||||
*/
|
||||
private Integer previewHeight;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间戳
|
||||
*/
|
||||
private Long createTime;
|
||||
|
||||
/**
|
||||
* 更新时间戳
|
||||
*/
|
||||
private Long updateTime;
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user