listDetailPage(Long templateFormId, String orderBy, Integer pageNum, Integer pageSize);
+
+ long saveForm(H5ProjectContentDTO content);
+}
diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/WorkService.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/WorkService.java
index e4cf7aa3c..511394918 100644
--- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/WorkService.java
+++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/WorkService.java
@@ -1,7 +1,10 @@
package com.luban.api.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.luban.api.dto.WorkQueryDTO;
import com.luban.api.entity.Work;
+import com.luban.api.vo.WorkVO;
/**
*
@@ -13,4 +16,12 @@ import com.luban.api.entity.Work;
*/
public interface WorkService extends IService {
+ /**
+ * 分页查询作品列表
+ *
+ * @param dto 查询条件
+ * @return 分页结果
+ */
+ IPage pageWorks(WorkQueryDTO dto);
+
}
diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/FormServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/FormServiceImpl.java
deleted file mode 100644
index 1ca5191c3..000000000
--- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/FormServiceImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.luban.api.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.luban.api.convert.FormSubmissionConvert;
-import com.luban.api.dao.FormSubmissionDao;
-import com.luban.api.dto.H5FormSubmissionDTO;
-import com.luban.api.entity.FormSubmission;
-import com.luban.api.service.FormService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- * 表单服务实现类
- *
- *
- * @author lizhw
- */
-@Service
-public class FormServiceImpl extends ServiceImpl implements FormService {
-
- private final FormSubmissionDao formSubmissionDao;
-
- public FormServiceImpl(FormSubmissionDao formSubmissionDao) {
- this.formSubmissionDao = formSubmissionDao;
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean submitFormData(H5FormSubmissionDTO dto) {
- FormSubmission entity = FormSubmissionConvert.toEntity(dto);
- entity.setId(null);
- return this.save(entity);
- }
-
- @Override
- public IPage pageFormSubmissionsByProjectId(Long projectId, Map fieldFilters, Integer pageNum, Integer pageSize) {
- IPage page = new Page<>(pageNum, pageSize);
- return formSubmissionDao.selectByProjectIdWithFieldFilters(page, projectId, fieldFilters);
- }
-
- @Override
- public H5FormSubmissionDTO getFormDataDetail(Long submissionId) {
- FormSubmission formSubmission = this.getById(submissionId);
- return FormSubmissionConvert.toDTO(formSubmission);
- }
-
- @Override
- public List listFormDataByProjectId(Long projectId) {
- List formSubmissions = this.lambdaQuery()
- .eq(FormSubmission::getProjectId, projectId)
- .list();
- return FormSubmissionConvert.toDTO(formSubmissions);
- }
-
-}
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
new file mode 100644
index 000000000..a0548fbd0
--- /dev/null
+++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5FormServiceImpl.java
@@ -0,0 +1,174 @@
+package com.luban.api.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.dao.FormSubmissionDao;
+import com.luban.api.dto.H5FormSubmissionDTO;
+import com.luban.api.dto.H5ProjectContentDTO;
+import com.luban.api.entity.FormSubmission;
+import com.luban.api.service.H5FormService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 表单服务实现类
+ *
+ *
+ * @author lizhw
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class H5FormServiceImpl extends ServiceImpl implements H5FormService {
+
+ private final FormSubmissionDao formSubmissionDao;
+ private final FormService formService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean submitFormData(H5FormSubmissionDTO dto) {
+ FormSubmission entity = FormSubmissionConvert.toEntity(dto);
+ entity.setId(null);
+ return this.save(entity);
+ }
+
+
+ @Override
+ public IPage listDetailPage(Long templateFormId, String orderBy, Integer pageNum, Integer pageSize) {
+ Page page = this.lambdaQuery()
+ .eq(FormSubmission::getTempletFormId, templateFormId)
+ .orderByDesc(FormSubmission::getCreateTime)
+ .page(new Page<>(pageNum, pageSize));
+ return FormSubmissionConvert.toPageDTO(page);
+ }
+
+ @Override
+ public long saveForm(H5ProjectContentDTO content) {
+ // 步骤1: 获取所有form组件
+ List 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) {
+ extractFormElementsFromList(groupElement.getElements(), formElements);
+ }
+ }
+ }
+ }
+
+ /**
+ * 步骤2: 保存表单组件列表
+ *
+ * @param formElements 表单组件列表
+ */
+ private void saveFormElements(List 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<>();
+ }
+
+ @Override
+ public List getEditorTemplateForms(Long templateFormId) {
+ // 由于当前模块没有表单定义表,返回空列表作为占位符
+ // 实际实现应查询 ruoyi-form 模块中的表单数据
+ return new ArrayList<>();
+ }
+
+
+}
diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java
index e68172acd..8491f2f6d 100644
--- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java
+++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java
@@ -1,6 +1,7 @@
package com.luban.api.service.impl;
import cn.hutool.json.JSONUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -65,7 +66,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i
// 更新项目与分组的关联关系
if (updated && groupIds != null) {
- h5ProjectGroupDao.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ h5ProjectGroupDao.delete(new LambdaQueryWrapper()
.eq(H5ProjectGroup::getProjectId, h5Project.getId()));
if (!groupIds.isEmpty()) {
@@ -95,7 +96,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i
public boolean removeH5ProjectWithContent(Long id) {
H5Project h5Project = this.getById(id);
if (h5Project != null) {
- h5ProjectGroupDao.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ h5ProjectGroupDao.delete(new LambdaQueryWrapper()
.eq(H5ProjectGroup::getProjectId, id));
return this.removeById(id);
@@ -120,7 +121,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i
@Override
public List getProjectGroupIds(Long projectId) {
- return h5ProjectGroupDao.selectList(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper()
+ return h5ProjectGroupDao.selectList(new LambdaQueryWrapper()
.eq(H5ProjectGroup::getProjectId, projectId))
.stream()
.map(H5ProjectGroup::getGroupId)
@@ -130,7 +131,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i
@Override
public IPage pageH5Projects(H5ProjectQueryDTO queryDTO) {
// 创建分页对象
- IPage page = new Page<>(queryDTO.getCurrent(), queryDTO.getSize());
+ IPage page = new Page<>(queryDTO.getPage(), queryDTO.getSize());
// 执行分页查询
return baseMapper.selectH5ProjectPage(page, queryDTO);
diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/WorkServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/WorkServiceImpl.java
index b447ff738..ec88f62fd 100644
--- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/WorkServiceImpl.java
+++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/WorkServiceImpl.java
@@ -1,11 +1,21 @@
package com.luban.api.service.impl;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.luban.api.convert.WorkConvert;
import com.luban.api.dao.WorkDao;
+import com.luban.api.dto.WorkQueryDTO;
import com.luban.api.entity.Work;
import com.luban.api.service.WorkService;
+import com.luban.api.vo.WorkVO;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.stream.Collectors;
+
/**
*
* 服务实现类
@@ -17,5 +27,19 @@ import org.springframework.stereotype.Service;
@Service
public class WorkServiceImpl extends ServiceImpl implements WorkService {
+ @Override
+ public IPage pageWorks(WorkQueryDTO dto) {
+ WorkVO vo = new WorkVO();
+ vo.setTemplate(dto.getIsTemplate());
+ BeanUtils.copyProperties(dto, vo);
+ IPage page = this.page(new Page<>(dto.getPage(), dto.getSize()),
+ new LambdaQueryWrapper<>(WorkConvert.toEntity(vo)).orderByDesc(Work::getCreateTime));
+ List voList = page.getRecords().stream()
+ .map(WorkConvert::toVO)
+ .collect(Collectors.toList());
+ return new Page(page.getCurrent(), page.getSize(), page.getTotal())
+ .setPages(page.getPages())
+ .setRecords(voList);
+ }
}
diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/application.yml b/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
index d2dc2652f..11c4d6d53 100644
--- a/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
+++ b/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
@@ -64,7 +64,7 @@ tenant:
# https://baomidou.com/config/
mybatis-plus:
# 多包名使用 例如 org.dromara.**.mapper,org.xxx.**.mapper
- mapperPackage: com.luban.api.dao
+ mapperPackage: com.luban.api.dao,com.dromara.**.mapper
# # 实体扫描,多个package用逗号或者分号分隔
# typeAliasesPackage: com.luban.api.entity
global-config:
@@ -87,3 +87,5 @@ minioplus:
# 日志配置
logging:
config: classpath:logback-plus.xml
+ level:
+ com.baomidou.mybatisplus: debug
diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5ProjectMapper.xml b/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5ProjectMapper.xml
index d0e2681a6..e56b54c51 100644
--- a/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5ProjectMapper.xml
+++ b/ruoyi-site/ruoyi-h5/src/main/resources/mapper/ruoyi-h5/H5ProjectMapper.xml
@@ -31,6 +31,9 @@
AND MATCH(title) AGAINST(#{queryDTO.title} IN NATURAL LANGUAGE MODE)
+
+ AND status = #{queryDTO.status}
+
AND EXISTS (
SELECT 1