From 6f04adaa832de64b03337a1fbb75231ae4f18e57 Mon Sep 17 00:00:00 2001 From: lizhengwei Date: Tue, 17 Mar 2026 14:47:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=88=9B=E5=BB=BA=E5=92=8C?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-site/ruoyi-h5/doc/init.sql | 42 ++++++++--- ruoyi-site/ruoyi-h5/doc/update_h5_form.sql | 31 ++++++++ .../api/controller/H5FormController.java | 45 +----------- .../api/convert/FormSubmissionConvert.java | 37 +--------- .../com/luban/api/convert/H5FormConvert.java | 64 +++++++++++++++++ .../java/com/luban/api/dao/H5FormDao.java | 9 +++ .../luban/api/dto/H5FormSubmissionDTO.java | 57 ++++++++------- .../com/luban/api/entity/FormSubmission.java | 36 +--------- .../java/com/luban/api/entity/H5Form.java | 59 +++++++++++++++ .../api/service/H5FormDefinitionService.java | 13 ++++ .../impl/H5FormDefinitionServiceImpl.java | 37 ++++++++++ .../api/service/impl/H5FormServiceImpl.java | 71 +++---------------- .../resources/mapper/ruoyi-h5/H5FormDao.xml | 5 ++ 13 files changed, 303 insertions(+), 203 deletions(-) create mode 100644 ruoyi-site/ruoyi-h5/doc/update_h5_form.sql create mode 100644 ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/H5FormConvert.java create mode 100644 ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dao/H5FormDao.java create mode 100644 ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/H5Form.java create mode 100644 ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5FormDefinitionService.java create mode 100644 ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormDefinitionServiceImpl.java create mode 100644 ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5FormDao.xml diff --git a/ruoyi-site/ruoyi-h5/doc/init.sql b/ruoyi-site/ruoyi-h5/doc/init.sql index ae4a7c7d1..7401e8c84 100644 --- a/ruoyi-site/ruoyi-h5/doc/init.sql +++ b/ruoyi-site/ruoyi-h5/doc/init.sql @@ -86,20 +86,47 @@ create index idx_name create table h5_form_submission ( - id bigint auto_increment comment '主键ID' + id bigint auto_increment comment '主键ID' primary key, - project_id bigint not null comment 'H5Project的ID', - ip_address bigint unsigned null comment '提交者IP地址', - user_agent varchar(512) null comment '用户代理信息', - form_data json not null comment '表单数据(JSON格式存储)', - create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间戳', - update_time datetime null on update CURRENT_TIMESTAMP comment '更新时间戳' + project_id bigint null comment 'H5Project的ID', + templet_form_id bigint null comment '模板表单ID', + form_id bigint null comment '表单ID', + ip_address varchar(50) null comment '提交者IP地址', + user_agent varchar(512) null comment '用户代理信息', + form_data json not null comment '表单数据(JSON格式存储)', + create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间戳', + update_time datetime null on update CURRENT_TIMESTAMP comment '更新时间戳', + created_by bigint null comment '创建人' ) comment '表单提交记录表' charset = utf8mb4; create index idx_project_id on h5_form_submission (project_id); +create index idx_templet_form_id + on h5_form_submission (templet_form_id); + +create table h5_form +( + id bigint auto_increment comment '主键ID' + primary key, + name varchar(255) null comment '表单名称', + templet_id bigint null comment '模板ID', + content_form_id varchar(50) null comment '内容表单ID', + form_id varchar(50) null comment '表单ID', + auth json null comment '认证信息', + extends json null comment '扩展信息', + fields json null comment '字段信息', + deleted tinyint(1) default 0 not null comment '是否删除', + create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间戳', + update_time datetime null on update CURRENT_TIMESTAMP comment '更新时间戳', + created_by bigint null comment '创建人' +) + comment 'H5表单定义表' charset = utf8mb4; + +create index idx_templet_id + on h5_form (templet_id); + create table h5_group ( id bigint auto_increment comment '主键ID' @@ -163,4 +190,3 @@ create index idx_group_id create index idx_project_id on h5_project_group (project_id); - diff --git a/ruoyi-site/ruoyi-h5/doc/update_h5_form.sql b/ruoyi-site/ruoyi-h5/doc/update_h5_form.sql new file mode 100644 index 000000000..580b63973 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/doc/update_h5_form.sql @@ -0,0 +1,31 @@ +-- H5表单模块数据库更新脚本 + +-- 1. 更新 h5_form_submission 表结构 +ALTER TABLE h5_form_submission +MODIFY COLUMN project_id BIGINT NULL COMMENT 'H5Project的ID', +ADD COLUMN templet_form_id BIGINT NULL COMMENT '模板表单ID' AFTER project_id, +MODIFY COLUMN form_id VARCHAR(50) NULL COMMENT '表单ID', +MODIFY COLUMN ip_address VARCHAR(50) NULL COMMENT '提交者IP地址', +ADD COLUMN created_by BIGINT NULL COMMENT '创建人' AFTER update_time; + +-- 添加索引 +CREATE INDEX idx_templet_form_id ON h5_form_submission (templet_form_id); + +-- 2. 创建 h5_form 表单定义表 +CREATE TABLE IF NOT EXISTS h5_form ( + id BIGINT AUTO_INCREMENT COMMENT '主键ID' PRIMARY KEY, + name VARCHAR(255) NULL COMMENT '表单名称', + templet_id BIGINT NULL COMMENT '模板ID', + content_form_id VARCHAR(50) NULL COMMENT '内容表单ID', + form_id VARCHAR(50) NULL COMMENT '表单ID', + auth JSON NULL COMMENT '认证信息', + extends JSON NULL COMMENT '扩展信息', + fields JSON NULL COMMENT '字段信息', + deleted TINYINT(1) DEFAULT 0 NOT NULL COMMENT '是否删除', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间戳', + update_time DATETIME NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间戳', + created_by BIGINT NULL COMMENT '创建人' +) COMMENT 'H5表单定义表' CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC; + +-- 添加索引 +CREATE INDEX idx_templet_id ON h5_form (templet_id); diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5FormController.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5FormController.java index d3a93fae7..0843d54ab 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5FormController.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5FormController.java @@ -3,7 +3,6 @@ package com.luban.api.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.luban.api.dto.H5FormSubmissionDTO; import com.luban.api.service.H5FormService; -import com.luban.api.util.JSON; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; @@ -20,13 +19,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -/** - *

- * 表单控制器 - *

- * - * @author your-name - */ @RestController @RequestMapping("/form") @Tag(name = "表单管理", description = "表单提交与查询") @@ -36,35 +28,22 @@ public class H5FormController { @Autowired private H5FormService formService; - @Autowired - private JSON json; - - - /** - * save表单版本+1 - */ - @Operation(summary = "save表单版本+1") + @Operation(summary = "保存表单版本") @PostMapping("/saveForm") public Boolean saveForm(@RequestBody SubmitFormRequest request, HttpServletRequest httpRequest) { - // 获取客户端IP地址 String ipAddress = ServletUtils.getClientIP(); - // 获取User-Agent String userAgent = httpRequest.getHeader("User-Agent"); H5FormSubmissionDTO dto = new H5FormSubmissionDTO(); - // 从请求中获取formId和templetFormId dto.setFormId(request.getFormId()); dto.setTempletFormId(request.getTemplateFormId()); - // 如果formData为空,初始化为Map Map formData = request.getFormData(); if (formData == null) { formData = new HashMap<>(); } - // 添加版本信息到formData - // 版本号可以基于当前时间戳或自增计数器 - long version = System.currentTimeMillis() / 1000; // 使用时间戳作为版本号 + long version = System.currentTimeMillis() / 1000; formData.put("version", version); formData.put("saveTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); @@ -75,19 +54,10 @@ public class H5FormController { return formService.submitFormData(dto); } - - /** - * 提交表单数据 - * - * @param request 请求体包含表单数据 - * @return 是否提交成功 - */ @Operation(summary = "提交表单数据") @PostMapping("/submit") public Boolean submitForm(@RequestBody SubmitFormRequest request, HttpServletRequest httpRequest) { - // 获取客户端IP地址 String ipAddress = ServletUtils.getClientIP(); - // 获取User-Agent String userAgent = httpRequest.getHeader("User-Agent"); H5FormSubmissionDTO dto = new H5FormSubmissionDTO(); @@ -111,12 +81,6 @@ public class H5FormController { return formService.submitFormData(dto); } - /** - * 根据templateFormId获取所有表单数据 - * - * @param templateFormId templateFormId - * @return 表单数据列表 - */ @Operation(summary = "分页查询提交数据") @GetMapping("/list/detail/page") public IPage listDetailPage(@RequestParam Long templateFormId, @@ -153,10 +117,7 @@ public class H5FormController { ] } """; - return formService.listDetailPage(templateFormId, - orderBy, - pageNum, - pageSize); + return formService.listDetailPage(templateFormId, orderBy, pageNum, pageSize); } @Operation(summary = "获取所有表单") diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/FormSubmissionConvert.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/FormSubmissionConvert.java index c541d615d..25831ccba 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/FormSubmissionConvert.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/FormSubmissionConvert.java @@ -10,19 +10,8 @@ import org.springframework.beans.BeanUtils; import java.util.ArrayList; import java.util.List; -/** - * 表单提交转换器 - * - * @author your-name - */ public class FormSubmissionConvert { - /** - * 将FormSubmission实体转换为H5FormSubmissionDTO - * - * @param entity FormSubmission实体 - * @return H5FormSubmissionDTO - */ public static H5FormSubmissionDTO toDTO(FormSubmission entity) { if (entity == null) { return null; @@ -34,30 +23,16 @@ public class FormSubmissionConvert { if (entity.getFormData() != null) { dto.setFormData(JSONUtil.toBean(entity.getFormData(), java.util.Map.class)); } - // 将IP地址转换为字符串 - dto.setIpAddress(entity.getIpAddress()); return dto; } - /** - * 将FormSubmission实体列表转换为H5FormSubmissionDTO列表 - * - * @param entities FormSubmission实体列表 - * @return H5FormSubmissionDTO列表 - */ public static List toDTO(List entities) { - List dtoList = new ArrayList<>(); - if (entities == null) { - return dtoList; + if (entities == null || entities.isEmpty()) { + return new ArrayList<>(); } - - for (FormSubmission entity : entities) { - dtoList.add(toDTO(entity)); - } - return dtoList; + return entities.stream().map(FormSubmissionConvert::toDTO).toList(); } - public static IPage toPageDTO(IPage page) { IPage newPage = new Page<>(); newPage.setPages(page.getPages()); @@ -68,12 +43,6 @@ public class FormSubmissionConvert { return newPage; } - /** - * 将H5FormSubmissionDTO转换为FormSubmission实体 - * - * @param dto H5FormSubmissionDTO - * @return FormSubmission实体 - */ public static FormSubmission toEntity(H5FormSubmissionDTO dto) { if (dto == null) { return null; diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/H5FormConvert.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/H5FormConvert.java new file mode 100644 index 000000000..1d7620c84 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/convert/H5FormConvert.java @@ -0,0 +1,64 @@ +package com.luban.api.convert; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; +import com.luban.api.dto.H5FormSubmissionDTO; +import com.luban.api.entity.FormSubmission; +import com.luban.api.entity.H5Form; + +import java.util.List; +import java.util.Map; + +public class H5FormConvert { + + public static H5FormSubmissionDTO toDTO(FormSubmission entity) { + if (entity == null) { + return null; + } + H5FormSubmissionDTO dto = new H5FormSubmissionDTO(); + dto.setId(entity.getId()); + dto.setProjectId(entity.getProjectId()); + dto.setTempletFormId(entity.getTempletFormId()); + dto.setFormId(entity.getFormId()); + dto.setIpAddress(entity.getIpAddress()); + dto.setUserAgent(entity.getUserAgent()); + dto.setCreateTime(entity.getCreateTime()); + dto.setUpdateTime(entity.getUpdateTime()); + if (entity.getFormData() != null) { + dto.setFormData(JSONUtil.toBean(entity.getFormData(), Map.class)); + } + return dto; + } + + public static H5FormSubmissionDTO toDTO(H5Form entity) { + if (entity == null) { + return null; + } + H5FormSubmissionDTO dto = new H5FormSubmissionDTO(); + dto.setId(entity.getId()); + dto.setName(entity.getName()); + dto.setTempletId(entity.getTempletId()); + dto.setContentFormId(entity.getContentFormId()); + dto.setFormId(Long.valueOf(entity.getFormId())); + dto.setCreateTime(entity.getCreateTime()); + dto.setUpdateTime(entity.getUpdateTime()); + dto.setDeleted(entity.getDeleted()); + if (entity.getAuth() != null) { + dto.setAuth(JSONUtil.toBean(entity.getAuth(), Map.class)); + } + if (entity.getExtendsInfo() != null) { + dto.setExtendsInfo(JSONUtil.toBean(entity.getExtendsInfo(), Map.class)); + } + if (entity.getFields() != null) { + dto.setFields(JSONUtil.toBean(entity.getFields(), Map.class)); + } + return dto; + } + + public static List toDTOList(List entities) { + if (entities == null || entities.isEmpty()) { + return List.of(); + } + return entities.stream().map(H5FormConvert::toDTO).toList(); + } +} diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dao/H5FormDao.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dao/H5FormDao.java new file mode 100644 index 000000000..7b348dd09 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dao/H5FormDao.java @@ -0,0 +1,9 @@ +package com.luban.api.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.luban.api.entity.H5Form; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface H5FormDao extends BaseMapper { +} diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dto/H5FormSubmissionDTO.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dto/H5FormSubmissionDTO.java index b5e000544..9eb7b06e0 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dto/H5FormSubmissionDTO.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/dto/H5FormSubmissionDTO.java @@ -3,50 +3,57 @@ package com.luban.api.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDateTime; import java.util.Map; -/** - * H5表单提交数据传输对象 - * - * @author your-name - */ @Data @Schema(title = "H5表单提交对象") public class H5FormSubmissionDTO { - /** - * 项目ID - */ + @Schema(title = "主键ID") + private Long id; + @Schema(title = "项目ID") private Long projectId; - /** - * 模板表单ID - */ + @Schema(title = "模板表单ID") private Long templetFormId; - /** - * 表单ID - */ @Schema(title = "表单ID") private Long formId; - /** - * 表单数据 - */ @Schema(title = "表单数据") private Map formData; - - - /** - * IP地址 - */ @Schema(title = "IP地址") private String ipAddress; - /** - * 用户代理 - */ @Schema(title = "用户代理") private String userAgent; + + @Schema(title = "创建时间") + private LocalDateTime createTime; + + @Schema(title = "更新时间") + private LocalDateTime updateTime; + + @Schema(title = "表单名称") + private String name; + + @Schema(title = "模板ID") + private Long templetId; + + @Schema(title = "内容表单ID") + private String contentFormId; + + @Schema(title = "认证信息") + private Map auth; + + @Schema(title = "扩展信息") + private Map extendsInfo; + + @Schema(title = "字段信息") + private Map fields; + + @Schema(title = "是否删除") + private Integer deleted; } diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/FormSubmission.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/FormSubmission.java index 0ac612d17..6f61f5aa8 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/FormSubmission.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/FormSubmission.java @@ -10,11 +10,6 @@ import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; -/** - * 表单提交记录实体类 - * - * @author your-name - */ @Data @EqualsAndHashCode @Accessors(chain = true) @@ -25,60 +20,33 @@ public class FormSubmission implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** - * 主键ID - */ @TableId(value = "id", type = IdType.AUTO) private Long id; - /** - * H5Project的ID - */ @TableField("project_id") private Long projectId; - /** - * 模板表单ID - */ @TableField("templet_form_id") private Long templetFormId; - /** - * 表单ID - */ @TableField("form_id") - private String formId; + private Long formId; - /** - * 提交者IP地址 - */ @TableField("ip_address") private String ipAddress; - /** - * 用户代理信息 - */ @TableField("user_agent") private String userAgent; - /** - * 表单数据(JSON格式存储) - */ @TableField("form_data") private String formData; - /** - * 创建时间戳 - */ @TableField("create_time") private LocalDateTime createTime; - /** - * 更新时间戳 - */ @TableField("update_time") private LocalDateTime updateTime; + @TableField("created_by") private Long createdBy; - } diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/H5Form.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/H5Form.java new file mode 100644 index 000000000..d12d7d594 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/entity/H5Form.java @@ -0,0 +1,59 @@ +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.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode +@Accessors(chain = true) +@TableName("h5_form") +@Schema(title = "H5表单定义") +public class H5Form implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField("name") + private String name; + + @TableField("templet_id") + private Long templetId; + + @TableField("content_form_id") + private String contentFormId; + + @TableField("form_id") + private String formId; + + @TableField("auth") + private String auth; + + @TableField("extends") + private String extendsInfo; + + @TableField("fields") + private String fields; + + @TableField("deleted") + @TableLogic + private Integer deleted; + + @TableField("create_time") + private LocalDateTime createTime; + + @TableField("update_time") + private LocalDateTime updateTime; + + @TableField("created_by") + private Long createdBy; +} diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5FormDefinitionService.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5FormDefinitionService.java new file mode 100644 index 000000000..9a4d87ad8 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5FormDefinitionService.java @@ -0,0 +1,13 @@ +package com.luban.api.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.luban.api.entity.H5Form; + +import java.util.List; + +public interface H5FormDefinitionService extends IService { + + List listByTempletId(Long templetId, Boolean hasDeleted); + + H5Form getByTempletFormId(Long templetFormId); +} diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormDefinitionServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormDefinitionServiceImpl.java new file mode 100644 index 000000000..c1a4108b2 --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormDefinitionServiceImpl.java @@ -0,0 +1,37 @@ +package com.luban.api.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.luban.api.dao.H5FormDao; +import com.luban.api.entity.H5Form; +import com.luban.api.service.H5FormDefinitionService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class H5FormDefinitionServiceImpl extends ServiceImpl implements H5FormDefinitionService { + + @Override + public List listByTempletId(Long templetId, Boolean hasDeleted) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(H5Form::getTempletId, templetId); + if (hasDeleted != null && hasDeleted) { + wrapper.eq(H5Form::getDeleted, 1); + } else { + wrapper.eq(H5Form::getDeleted, 0); + } + wrapper.orderByDesc(H5Form::getCreateTime); + return this.list(wrapper); + } + + @Override + public H5Form getByTempletFormId(Long templetFormId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(H5Form::getId, templetFormId); + wrapper.eq(H5Form::getDeleted, 0); + return this.getOne(wrapper); + } +} diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormServiceImpl.java index a0548fbd0..ccaa4b09c 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormServiceImpl.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormServiceImpl.java @@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dromara.md.form.service.FormService; import com.luban.api.convert.FormSubmissionConvert; +import com.luban.api.convert.H5FormConvert; import com.luban.api.dao.FormSubmissionDao; import com.luban.api.dto.H5FormSubmissionDTO; import com.luban.api.dto.H5ProjectContentDTO; import com.luban.api.entity.FormSubmission; +import com.luban.api.entity.H5Form; +import com.luban.api.service.H5FormDefinitionService; import com.luban.api.service.H5FormService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,13 +21,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; -/** - *

- * 表单服务实现类 - *

- * - * @author lizhw - */ @Slf4j @Service @RequiredArgsConstructor @@ -32,6 +28,7 @@ public class H5FormServiceImpl extends ServiceImpl listDetailPage(Long templateFormId, String orderBy, Integer pageNum, Integer pageSize) { Page page = this.lambdaQuery() @@ -53,61 +49,36 @@ public class H5FormServiceImpl extends ServiceImpl formElements = extractFormElements(content); - - // 步骤2: 保存所有form组件 saveFormElements(formElements); - return formElements.size(); } - /** - * 步骤1: 从H5项目内容中提取所有表单组件 - * - * @param content H5项目内容 - * @return 表单组件列表 - */ private List extractFormElements(H5ProjectContentDTO content) { List formElements = new ArrayList<>(); - if (content == null || content.getLayouts() == null) { return formElements; } - - // 遍历所有布局,提取表单元素 for (H5ProjectContentDTO.Layout layout : content.getLayouts()) { if (layout.getElements() != null) { extractFormElementsFromList(layout.getElements(), formElements); } } - return formElements; } - /** - * 从元素列表中递归提取表单组件 - * - * @param elements 元素列表 - * @param formElements 收集到的表单组件列表 - */ private void extractFormElementsFromList(List elements, List formElements) { if (elements == null || elements.isEmpty()) { return; } - for (H5ProjectContentDTO.Element element : elements) { if (element == null) { continue; } - - // 如果是表单元素,添加到结果列表 if (H5ProjectContentDTO.ElementType.FORM.equals(element.getType())) { formElements.add((H5ProjectContentDTO.FormElement) element); } - - // 递归处理组元素中的子元素 if (element instanceof H5ProjectContentDTO.GroupElement) { H5ProjectContentDTO.GroupElement groupElement = (H5ProjectContentDTO.GroupElement) element; if (groupElement.getElements() != null) { @@ -117,58 +88,38 @@ public class H5FormServiceImpl extends ServiceImpl formElements) { if (formElements == null || formElements.isEmpty()) { return; } - for (H5ProjectContentDTO.FormElement formElement : formElements) { saveSingleFormElement(formElement); } } - /** - * 保存单个表单组件 - * - * @param formElement 表单组件 - */ private void saveSingleFormElement(H5ProjectContentDTO.FormElement formElement) { if (formElement == null) { return; } - - // 记录表单组件信息到日志 log.info("发现表单组件: UUID={}, Title={}, FormSchema={}, FormData={}", formElement.getUuid(), formElement.getTitle(), formElement.getFormSchema(), formElement.getFormData()); - -// formService.create() - - // TODO: 这里可以根据实际需求决定是否需要保存到数据库 - // 如果需要保存到数据库,可以创建相应的实体类和服务 } - @Override public List getEditorForms(Long templateId, Boolean hasDeleted) { - // 由于当前模块没有表单定义表,返回空列表作为占位符 - // 实际实现应查询 ruoyi-form 模块中的表单数据 - return new ArrayList<>(); + List h5Forms = h5FormDefinitionService.listByTempletId(templateId, hasDeleted); + return H5FormConvert.toDTOList(h5Forms); } @Override public List getEditorTemplateForms(Long templateFormId) { - // 由于当前模块没有表单定义表,返回空列表作为占位符 - // 实际实现应查询 ruoyi-form 模块中的表单数据 - return new ArrayList<>(); + H5Form h5Form = h5FormDefinitionService.getByTempletFormId(templateFormId); + if (h5Form == null) { + return new ArrayList<>(); + } + return List.of(H5FormConvert.toDTO(h5Form)); } - - } diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5FormDao.xml b/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5FormDao.xml new file mode 100644 index 000000000..cdac445af --- /dev/null +++ b/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5FormDao.xml @@ -0,0 +1,5 @@ + + + + +