diff --git a/README.md b/README.md
index e368264..094b2b6 100644
--- a/README.md
+++ b/README.md
@@ -37,13 +37,15 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,
http://demo.tduckapp.com/
演示账号/密码:可注册登录或使用测试账号 test@tduck.com/12345678
-
+
文档地址:http://demo.tduckapp.com/
V2更新日志:https://doc.tduckapp.com/log/
+### 加入社群
+
-开源不易如果喜欢请给作者 Star 鼓励 👇**
+开源不易如果喜欢请给作者 Star 鼓励 👇***
#### 项目源码
@@ -52,6 +54,58 @@ V2更新日志:https://doc.tduckapp.com/log/
| https://gitee.com/TDuckApp/tduck-platform | https://gitee.com/TDuckApp/tduck-front |
| https://github.com/TDuckCloud/tduck-platform | https://github.com/TDuckCloud/tduck-platform |
-感谢:
-
-
+感谢:
+提供云服务器资源!
+
+### “项目背景”
+目前市面上的表单平台虽然功能强大,但是部分业务组件或者额外收取存储等费用,且费用较高,在数据隐私性较强且有特殊表单需求的场景下无法满足业务需求,
+目前国内的的开源平台表单问卷平台比较少,tduck表单平台应运而生。让中小公司拥有独立自定义表单问卷,快速赋能业务。
+
+### “新特性”
+
+- 【表单逻辑】支持对单选,多选框,下拉框等组件进行逻辑设置,目前仅支持选中 未选中等逻辑关系
+- 【表单分页】支持对问卷问题较多时,进行分页
+- 【手写签名】支持手写签名保存上传
+- 【位置选择】支持高德地图进行地理位置选择
+- 【手机验证】支持对输入手机号进行短信验证 验证通过则能保存
+- 【省市联动】支持省市县联动选择输入
+- 【图形选择】图片选择组件,支持单选多选
+- 【图片展示】图片展示组件,展示二维码引流等
+- 【图片轮播】图片轮播组件,图片和文字轮播显示
+- 【文字描述】文件描述组件,支持颜色,位置设置
+- 【分割线】 内容分割线
+- 【联系人】 手机号,邮箱,身份证输入 格式校验
+- 【公开反馈结果】 公开反馈结果设置,开启后填写完成将看到他人填写结果
+- 【附件导出】填写完成后可对收集的附件进行导出zip下载
+- 【统计筛选】可对填写完的结果进行筛选查询 支持模糊等
+- 【表单预览】添加预览按钮,实时预览内容,预览二维码
+- 【另存为模板】添加另存为模板按钮,保存项目为模板
+- 【UI重构】项目整体UI全面重构,更美观,更简洁
+- 【验证码】验证逻辑重构,支持验证码开关
+- 【微信功能】 微信功能增加开关配置,可配置关闭微信功能
+- 【代码优化】对前后端代码进行部分优化,结构调整
+
+### “文档支持”
+新的文档平台,后续会不断完善文档,有需要完善的内容可以在GItee提issues反馈,收到反馈我们将第一时间调整,当然有想共享文档的也欢迎提Pr。
+
+
+### “更新说明”
+本项目非商业产品,不提供兼容更新,v2中存在破坏性更新,对v1中的部分数据存在无法兼容。
+
+
+
+### “付费支持”
+V1版本中,社群内有很多非Java的朋友很喜欢我们的产品,但是在部署中遇到很多困难,也非常希望我们能提供付费部署的服务,之前一直忙于v2的规划开发,没有时间承接。
+为了使产品做的更好,给大家带来更多的功能,我们在后续将会推出了付费服务,支持付费部署,定制等服务(后续推出详细说明),当然免费的技术支持一直会有。
+
+### “项目规划”
+“让每个企业轻松拥有自己的问卷系统”是Tduck团队不变的初衷;v2版本的开发工作目前算是暂时结束,经过团队内部自测推出,同时欢迎大家进行测试,对存在的问题在Gitee提issues,社群内反馈可能无法及时解决,后续可能会遗忘。我们会定期对issues问题修复和做一些优化,竭力维护一个稳定的v2版本。
+
+
+
+### :heart: 致谢 !
+
+Tduck诞生非常有趣,不经意之间的一个想法,一步步实现至今。在v2开发期间,团队成员非全职开发,都是业余时间进行打码,所以迭代时间较长,期间群中反馈的问题没有及时给予反馈(深感抱歉)。
+
+Tduck永远珍惜每一位用户,重视每一个issues。
+感谢对Tduck团队的支持,以及大家对v2期盼与鼓励。
diff --git a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectResultServiceImpl.java b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectResultServiceImpl.java
index 89808d3..9822c5e 100644
--- a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectResultServiceImpl.java
+++ b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectResultServiceImpl.java
@@ -35,10 +35,7 @@ import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileInputStream;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
import static com.tduck.cloud.project.constant.ProjectRedisKeyConstants.PROJECT_RESULT_NUMBER;
@@ -126,7 +123,8 @@ public class UserProjectResultServiceImpl extends ServiceImpl allHeaderList = ExportProjectResultVO.DEFAULT_HEADER_NAME;
+ List allHeaderList = new ArrayList<>();
+ allHeaderList.addAll(ExportProjectResultVO.DEFAULT_HEADER_NAME);
allHeaderList.addAll(titleList);
return new ExportProjectResultVO(allHeaderList, resultList);
}
diff --git a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
index d940f84..667ad54 100644
--- a/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
+++ b/tduck-project/src/main/java/com/tduck/cloud/project/service/impl/UserProjectSettingServiceImpl.java
@@ -19,6 +19,7 @@ import com.tduck.cloud.project.service.UserProjectService;
import com.tduck.cloud.project.service.UserProjectSettingService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.Optional;
@@ -53,18 +54,18 @@ public class UserProjectSettingServiceImpl extends ServiceImpllambdaQuery().eq(UserProjectResultEntity::getProjectKey, projectKey));
if (resultCount >= timedQuantitativeQuantity) {
- return Result.success(setting, setting.getTimedEndPromptText());
+ return Result.success(setting, StringUtils.isEmpty(setting.getTimedEndPromptText())?"收集数量已达到。":setting.getTimedEndPromptText());
}
}
//每个人只需填写一次 根据IP判断