├── .vuepress
├── public
│ ├── CNAME
│ ├── favicon.ico
│ └── img
│ │ ├── banner.png
│ │ ├── logo.png
│ │ ├── banner-logo.png
│ │ ├── 114533_b7f16f5b_1674451.png
│ │ ├── 171259_1ef11014_1674451.png
│ │ └── logo.svg
├── styles
│ └── palette.styl
└── config.js
├── guide
├── close-wx.md
├── front-config.md
├── storage-config.md
├── api-security.md
├── local-run.md
├── api-config.md
├── faq.md
├── deploy.md
├── close-validate.md
└── README.md
├── .gitignore
├── package.json
├── README.md
├── log
└── README.md
└── .travis.yml
/.vuepress/public/CNAME:
--------------------------------------------------------------------------------
1 | doc.tduckapp.com
--------------------------------------------------------------------------------
/.vuepress/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/favicon.ico
--------------------------------------------------------------------------------
/.vuepress/public/img/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/img/banner.png
--------------------------------------------------------------------------------
/.vuepress/public/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/img/logo.png
--------------------------------------------------------------------------------
/.vuepress/public/img/banner-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/img/banner-logo.png
--------------------------------------------------------------------------------
/.vuepress/public/img/114533_b7f16f5b_1674451.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/img/114533_b7f16f5b_1674451.png
--------------------------------------------------------------------------------
/.vuepress/public/img/171259_1ef11014_1674451.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TDuckCloud/tduck-doc/HEAD/.vuepress/public/img/171259_1ef11014_1674451.png
--------------------------------------------------------------------------------
/guide/close-wx.md:
--------------------------------------------------------------------------------
1 | # 微信功能
2 |
3 | ### 微信配置比较麻烦 如果无需使用 需要关闭可以在如下配置关闭
4 | .env.development # 本地环境配置
5 | .env.production # 正式环境配置
6 |
7 | ```yaml
8 | # 微信功能开关 开启设置 ON,关闭设置 OFF
9 | VUE_APP_WX = ON
10 |
11 | ```
12 |
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # IntelliJ project files
2 | .idea/
3 | *.iml
4 | *.ipr
5 | *.iws
6 | out
7 | gem
8 |
9 | # VS Code project files
10 | .vscode/
11 |
12 | # MacOS files
13 | .DS_Store
14 | Thumbs.db
15 |
16 | # Node files
17 | node_modules/
18 | docs/
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tduck-doc",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "dev": "vuepress dev",
7 | "build": "vuepress build"
8 | },
9 | "devDependencies": {
10 | "@vuepress/plugin-back-to-top": "^1.8.0",
11 | "vuepress": "^1.8.0"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/guide/front-config.md:
--------------------------------------------------------------------------------
1 | # 前端项目配置
2 |
3 |
4 | tduck-front 项目中 src目录下
5 |
6 | - .env.development 开发环境配置
7 | - .env.production 正式环境配置
8 |
9 | ```
10 | # 页面标题
11 | VUE_APP_TITLE = 填鸭测试环境
12 | # 接口请求地址,会设置到 axios 的 baseURL 参数上
13 | VUE_APP_API_ROOT = /tduck-api
14 | # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
15 | VUE_APP_DEBUG_TOOL =
16 | # 高德地图key
17 | VUE_APP_MAP_KEY = f2200337d0d08538e78729572749882d
18 | # 微信功能开关 开启设置 ON,关闭设置 OFF
19 | VUE_APP_WX = ON
20 |
21 | ```
22 |
23 |
--------------------------------------------------------------------------------
/.vuepress/styles/palette.styl:
--------------------------------------------------------------------------------
1 | // 颜色
2 | $accentColor = #409EFF
3 | $textColor = #2c3e50
4 | $borderColor = #eaecef
5 | $codeBgColor = #282c34
6 | $arrowBgColor = #ccc
7 | $badgeTipColor = #42b983
8 | $badgeWarningColor = darken(#ffe564, 35%)
9 | $badgeErrorColor = #DA5961
10 |
11 | // 布局
12 | $navbarHeight = 3.6rem
13 | $sidebarWidth = 20rem
14 | $contentWidth = 740px
15 | $homePageWidth = 960px
16 |
17 | // 响应式变化点
18 | $MQNarrow = 959px
19 | $MQMobile = 719px
20 | $MQMobileNarrow = 419px
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | home: true
3 | heroImage: /img/banner.png
4 | actionText: 快速开始 →
5 | actionLink: /guide/
6 | features:
7 | - title: 新建表单
8 | details: 自定义可拖拽式表单设计
9 | - title: 表单设置
10 | details: 支持多种收集方式设置
11 | - title: 反馈统计
12 | details: 多维度统计收集的反馈数据。
13 | footer: Apache License 2.0 | © 2019-2021 tduckapp
14 | ---
15 |
16 |
17 |
18 |
19 | Hosted by Coding Pages & Github Pages & Idea
20 |
21 | 湘ICP备18023961号-2
22 |
23 |
--------------------------------------------------------------------------------
/log/README.md:
--------------------------------------------------------------------------------
1 | # V2
2 | v2.0 更新 2020-6-24
3 |
4 | 【表单逻辑】支持对单选,多选框,下拉框等组件进行逻辑设置,目前仅支持选中 未选中等逻辑关系
5 |
6 | 【表单分页】支持对问卷问题较多时,进行分页
7 |
8 | 【手写签名】支持手写签名保存上传
9 |
10 | 【位置选择】支持高德地图进行地理位置选择
11 |
12 | 【手机验证】支持对输入手机号进行短信验证 验证通过则能保存
13 |
14 | 【省市联动】支持省市县联动选择输入
15 |
16 | 【图形选择】图片选择组件,支持单选多选
17 |
18 | 【图片展示】图片展示组件,展示二维码引流等
19 |
20 | 【图片轮播】图片轮播组件,图片和文字轮播显示
21 |
22 | 【文字描述】文件描述组件,支持颜色,位置设置
23 |
24 | 【分割线】 内容分割线
25 |
26 | 【联系人】 手机号,邮箱,身份证输入 格式校验
27 |
28 | 【公开反馈结果】 公开反馈结果设置,开启后填写完成将看到他人填写结果
29 |
30 | 【附件导出】填写完成后可对收集的附件进行导出zip下载
31 |
32 | 【统计筛选】可对填写完的结果进行筛选查询 支持模糊等
33 |
34 | 【表单预览】添加预览按钮,实时预览内容,预览二维码
35 |
36 | 【另存为模板】添加另存为模板按钮,保存项目为模板
37 |
38 | 【UI重构】项目整体UI全面重构,更美观,更简洁
39 |
40 | 【验证码】验证逻辑重构,支持验证码开关
41 |
42 | 【微信功能】 微信功能增加开关配置,可配置关闭微信功能
43 |
44 | 【代码优化】对前后端代码进行部分优化,结构调整
45 |
--------------------------------------------------------------------------------
/guide/storage-config.md:
--------------------------------------------------------------------------------
1 | # 文件存储配置
2 |
3 | 项目目前支持 七牛云oss 阿里云oss 又拍云 本地存储方式存储文件
4 |
5 |
6 |
7 | 1. Oss存储(以七牛云为例)
8 |
9 | ```yaml
10 | oss:
11 | ossType: 1 # 0:阿里云 1:七牛云 2:又拍云 3:本地存储
12 | endpoint: # 阿里云需配置
13 | accessKeyId: # 平台认证参数 需要去对应oss提供平台获取
14 | accessKeySecret: # 平台认证参数 需要去对应oss提供平台获取
15 | bucketName: tduck-cloud #oss存储桶名
16 | domain: https://qiniu.smileyi.top #oss可供访问的域名
17 | ```
18 |
19 |
20 |
21 | 2.本地存储 使用项目本身对外提供文件访问
22 |
23 | ```yaml
24 | oss:
25 | ossType: 3 # 3表示使用本地存储
26 | endpoint:
27 | accessKeyId:
28 | accessKeySecret:
29 | bucketName:
30 | domain: http://localhost:8999/tduck-api/u/ #对外访问的地址 使用后端项目部署的ip+端口 后面可以固定
31 | upload-folder: C:\temp #文件存放的位置
32 | access-path-pattern: /u/** # 文件访问路径前缀 这里更改domain也需要更改
33 | ```
34 |
35 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | sudo: false
4 |
5 | node_js:
6 | - "14"
7 |
8 | cache:
9 | yarn: true
10 | directories:
11 | - node_modules
12 |
13 | branches:
14 | only:
15 | - master
16 |
17 | env:
18 | global:
19 | - GITHUB_REPO: github.com/TDuckCloud/tduck-doc.git
20 |
21 | before_install:
22 | - export TZ=Asia/Shanghai
23 |
24 | install:
25 | - yarn
26 |
27 | script:
28 | - yarn run build
29 |
30 | after_success:
31 | - git config user.name "smalljop"
32 | - git config user.email "smalljop@gmail.com"
33 | - git clone https://${CI_USERNAME}:${CI_TOKEN}@${GITHUB_REPO} ./old-docs
34 | - cp -r ./old-docs/.git ./docs
35 | - cd ./docs
36 | - git add -A
37 | - git commit -m "deploy at `date +\"%Y-%m-%d %H:%M:%S\"`"
38 | - git push --force --quiet "https://${CI_USERNAME}:${CI_TOKEN}@${GITHUB_REPO}" master:gh-pages
39 |
--------------------------------------------------------------------------------
/guide/api-security.md:
--------------------------------------------------------------------------------
1 | ### 接口安全配置
2 |
3 | 为了保证接口调用的安全性,防止恶意请求接口,项目对接口进行了签名验证,接口请求时对参数进行排序加密计算签名,后端对签名进行校验,如果校验失败,则提示非法请求。
4 |
5 | 项目配置如下
6 |
7 | ```yaml
8 | platform:
9 | sign:
10 | enable: true # 是否启用签名校验 关闭之后所有请求无需校验 本地调试方便可以设置false
11 | secret: 916lWh2WMcbSWiHv # 签名秘钥
12 | ignore-urls: # 签名校验忽略的地址
13 | - /tduck-api/webjars/**
14 | - /tduck-api/swagger/**
15 | ```
16 |
17 | #### 实现部分
18 |
19 | 前端:**/src/api/index.js**
20 |
21 | 使用axios在请求前统一计算签名
22 |
23 | 签名具体算法如下
24 |
25 | 请求参数统一添加当前时间戳,然后根据key做升序
26 |
27 | ( 签名秘钥(secret)+ 请求参数json字符串)做MD5然后转小写
28 |
29 | 拼接的秘钥和参数
30 |
31 | `916lWh2WMcbSWiHv{"current":"1","name":"","size":"10","timestamp":"1616904031441"}`
32 |
33 | md5之后
34 |
35 | 81deff67b73d2669f04e48f45faa20ac
36 |
37 |
38 |
39 | 后端请参考**SignAuthFilter.java**
40 |
41 | **如果正常情况下出现提示“非法访问,请检查请求信息” 请检查部署环境时间是否正常**
42 |
43 |
--------------------------------------------------------------------------------
/guide/local-run.md:
--------------------------------------------------------------------------------
1 | # 本地运行
2 |
3 | 开发环境本地运行 正式环境请参考部署教程!
4 |
5 | 1. 项目运行所需环境:
6 |
7 | - [MySQL5.7或以上](https://dev.mysql.com/downloads/mysql/)
8 | - [JDK1.8或以上](http://www.oracle.com/technetwork/java/javase/overview/index.html)
9 | - [Maven](https://maven.apache.org/download.cgi)
10 | - [Nodejs](https://nodejs.org/en/download/)
11 |
12 | 2. 创建一个tduck的数据库,并执行项目目录下doc/tduck.sql文件
13 |
14 | 3. 启动后端服务
15 |
16 | 拉取后端代码
17 |
18 | `git clone https://gitee.com/TDuckApp/tduck-platform.git`
19 |
20 | 打开命令行,输入以下命令
21 |
22 | ```
23 | mvn clean install -DskipTests
24 | cd tduck-platform/tduck-api
25 | mvn clean package -DskipTests
26 | java -Dfile.encoding=UTF-8 -jar tduck-api.jar
27 | ```
28 |
29 | 4. 启动前端项目
30 |
31 | 拉取前端代码
32 |
33 | `git clone https://gitee.com/TDuckApp/tduck-front.git`
34 |
35 | 5. 打开命令行,输入以下命令
36 |
37 | ```
38 | npm install -g cnpm --registry=https://registry.npm.taobao.org
39 | cd tduck-front
40 | cnpm install
41 | cnpm run serve
42 | ```
43 |
44 | 此时,浏览器打开,输入网址`http://localhost:8888`, 进入页面
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/guide/api-config.md:
--------------------------------------------------------------------------------
1 | # 后端项目配置
2 |
3 |
4 |
5 | #### 必要配置
6 |
7 | ```yaml
8 | spring:
9 | datasource:
10 | driver-class-name: com.mysql.cj.jdbc.Driver
11 | url: #数据库地址
12 | username: #用户名
13 | password: #密码
14 | redis:
15 | database: 1
16 | host: #地址
17 | port: #端口
18 | password: # 密码(默认为空)
19 | ```
20 |
21 | #### 文件存储配置
22 |
23 | 不配置文件存储系统中上传文件无法使用
24 |
25 | ```yaml
26 | oss:
27 | ossType: #oss类型 0:阿里云 1:七牛云
28 | endpoint:
29 | accessKeyId:
30 | accessKeySecret:
31 | bucketName:
32 | domain:
33 | ```
34 |
35 | #### 微信公众号配置
36 |
37 | 不配置在使用微信公众号相关功能时会抛出异常(登录,微信通知,微信中分享信息定义等),可以申请微信测试公众号
38 |
39 | https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
40 |
41 | ```
42 | wx:
43 | mp:
44 | configs:
45 | - appId:
46 | secret:
47 | token:
48 | aesKey:
49 | ```
50 |
51 | 
52 | 如图所示 把对应参数appId等配置到项目中,然后启动项目,本地可以使用内网穿透
53 | 微信接口配置信息
54 | url填入 外网可访问地址/tduck-api/wx/mp/portal/你的appId
55 | token可自行定义 需要与项目中token相同
56 |
57 | 如果提示配置失败请仔细检查项目中参数是否配置正确
58 |
59 |
60 |
61 | #### 邮箱配置
62 |
63 | 具体配置去对应邮箱**客户端设置**中查看 我这里以88完美邮箱为例
64 |
65 | 经测试 163等邮箱对发送次数上限比较低 目前88邮箱限制还比较低
66 |
67 |
68 |
69 | 
70 |
71 | ```yaml
72 | mail:
73 | host: smtp.88.com #邮箱服务提供者
74 | username: tduck
75 | password: 12345678
76 | ```
77 |
78 |
--------------------------------------------------------------------------------
/guide/faq.md:
--------------------------------------------------------------------------------
1 | # 常见问题
2 |
3 | ## 1.Q:mvn clean package -DskipTests时报错
4 |
5 | ```
6 | [ERROR] Failed to execute goal on project tduck-api: Could not resolve dependencies for project com.tduck:tduck-api:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: com.tduck:tduck-common:jar:0.0.1-SNAPSHOT, com.tduck:tduck-project:jar:0.0.1-SNAPSHOT, com.tduck:tduck-account:jar:0.0.1-SNAPSHOT, com.tduck:tduck-storage:jar:0.0.1-SNAPSHOT, com.tduck:tduck-wx-mp:jar:0.0.1-SNAPSHOT: Failure to find com.tduck:tduck-common:jar:0.0.1-SNAPSHOT in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of public has elapsed or updates are forced -> [Help 1]
7 | [ERROR]
8 | [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
9 | [ERROR] Re-run Maven using the -X switch to enable full debug logging.
10 | [ERROR]
11 | [ERROR] For more information about the errors and possible solutions, please read the following articles:
12 | [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
13 | ```
14 |
15 |
16 |
17 | #### 解决方法:把maven的中央源换成阿里源就行
18 |
19 | ##2.部署成功之后,访问登录页一直弹出ERROR
20 |
21 | #### 解决方法:需要设置正确的微信公众号appid,secret,token;请注意,图中示例对应参数已经加密,参数也可以支持不加密填写
22 | 
23 |
24 | ## 3.启动的时候报错:Createing bean with name "wxMpService" defined in Class path .....
25 | #### 解决方法:检查你的配置文件,是否已经配置了微信登录的参数,具体请查看:[部署文档-后端-微信参数配置](https://gitee.com/TDuckApp/tduck-platform/wikis/%E5%90%8E%E7%AB%AF%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE?sort_id=3681757)
26 |
27 | ## 为什么我的滑动验证码出不来
28 |
29 | #### 滑动验证码无需请求第三方平台,无法显示请检查后台接口请求是否正常,多半是nginx配置错误
30 |
--------------------------------------------------------------------------------
/guide/deploy.md:
--------------------------------------------------------------------------------
1 | # 线上部署
2 |
3 | ## 后端部署
4 |
5 | `mvn clean install -DskipTests`
6 | `cd tduck-platform/tduck-api`
7 | `mvn clean package -DskipTests`
8 | `nohup -Dfile.encoding=UTF-8 -jar tduck-api.jar &`
9 |
10 | nohup意为后台不挂断运行,与是否账号退出无关
11 |
12 | ## 前端部署
13 |
14 | 拉取前端代码
15 | 进入tduck-front目录执行命令
16 | 试用cnpm或者yarn都可以 推荐使用yarn
17 | yarn命令
18 | ```
19 | npm install -g yarn
20 | yarn install
21 | yarn run build
22 | ```
23 |
24 | cnpm 命令
25 |
26 | ```
27 | npm install -g cnpm --registry=https://registry.npm.taobao.org
28 | cnpm install
29 | cnpm run build
30 | ```
31 |
32 |
33 | 构建打包成功之后,会在根目录生成 `dist` 文件夹,里面就是构建打包好的文件,通常是 `***.js` 、`***.css`、`index.html` 等静态文件。
34 |
35 | 通常情况下 `dist` 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 `index.html` 是项目的入口页面。
36 |
37 | #### nginx配置
38 |
39 | ```nginx
40 | worker_processes 1;
41 |
42 | events {
43 | worker_connections 1024;
44 | }
45 |
46 | http {
47 | include mime.types;
48 | default_type application/octet-stream;
49 | sendfile on;
50 | keepalive_timeout 65;
51 |
52 | server {
53 | listen 80;
54 | server_name localhost;
55 |
56 | location / {
57 | # 静态文件地址
58 | root /usr/share/nginx/html/tduck;
59 | try_files $uri $uri/ /index.html;
60 | index index.html index.htm;
61 | }
62 |
63 | location /tduck-api/{
64 | proxy_set_header Host $http_host;
65 | proxy_set_header X-Real-IP $remote_addr;
66 | proxy_set_header REMOTE-HOST $remote_addr;
67 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
68 | # 改为你后端接口地址 http://xxxx/tduck-api/
69 | proxy_pass http://localhost:8999/tduck-api/;
70 | }
71 |
72 | error_page 500 502 503 504 /50x.html;
73 | location = /50x.html {
74 | root html;
75 | }
76 | }
77 | }
78 | ```
79 |
80 |
--------------------------------------------------------------------------------
/guide/close-validate.md:
--------------------------------------------------------------------------------
1 | # 图形验证码
2 |
3 | ### 图形验证码能使敏感操作更安全,建议开启。
4 | 如需关闭请打开tduck-platform/tduck-api/src/main/resources/application.yml
5 | ```yaml
6 |
7 | aj:
8 | captcha:
9 | enable: true # 关闭验证码
10 | ```
11 |
12 | ### 验证码拦截逻辑
13 | tduck-api/src/main/java/com/tduck/cloud/api/web/filter/ValidateCodeFilter.java
14 | ```
15 | public class ValidateCodeFilter implements Filter {
16 |
17 | //需要进行滑动验证的接口
18 | private List validateUrls = Lists.newArrayList(
19 | "/login/account",
20 | "/retrieve/password/email",
21 | "/retrieve/password/phone/code");
22 |
23 | @Override
24 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
25 | HttpServletRequest httpServletRequest = (HttpServletRequest) request;
26 | // 如果不是需要拦截的 则不拦截
27 | if (!StrUtil.containsAnyIgnoreCase(httpServletRequest.getRequestURI(),
28 | validateUrls.toArray(new String[validateUrls.size()]))) {
29 | filterChain.doFilter(request, response);
30 | return;
31 | }
32 | // 判断是否携带滑动验证码验证
33 | String code = request.getParameter("slideCode");
34 | if (StrUtil.isBlank(code)) {
35 | ResponseUtils.outJson(response, Result.failed(ResponseCodeConstants.NEED_VERIFICATION, ""));
36 | return;
37 | }
38 | CaptchaService captchaService = SpringContextUtils.getBean(CaptchaService.class);
39 | CaptchaVO vo = new CaptchaVO();
40 | vo.setCaptchaVerification(code);
41 | if (!captchaService.verification(vo).isSuccess()) {
42 | ResponseUtils.outJson(response, Result.failed(ResponseCodeConstants.FAIL, ResponseCodeConstants.VALIDATE_CODE_FAIL_MSG));
43 | return;
44 | }
45 | filterChain.doFilter(request, response);
46 | }
47 |
48 | }
49 |
50 | ```
51 |
--------------------------------------------------------------------------------
/.vuepress/config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | dest: "docs",
3 | base: "/",
4 | markdown: {
5 | externalLinks: {
6 | target: "_blank",
7 | rel: "noopener noreferrer"
8 | }
9 | },
10 | locales: {
11 | "/": {
12 | lang: "zh-CN",
13 | title: "Tduck填鸭",
14 | description: "企业表单问卷收集"
15 | }
16 | },
17 | head: [
18 | ["link", {rel: "icon", href: `/favicon.ico`}]
19 | ],
20 | themeConfig: {
21 | repo: "TDuckCloud/tduck-platform",
22 | docsRepo: "TDuckCloud/tduck-doc",
23 | editLinks: true,
24 | locales: {
25 | "/": {
26 | label: "简体中文",
27 | selectText: "Languages",
28 | editLinkText: "在 GitHub 上编辑此页",
29 | lastUpdated: "上次更新",
30 | nav: [
31 | {
32 | text: "指南",
33 | link: "/guide/"
34 | },
35 | {
36 | text: "更新日志",
37 | link: "/log/"
38 | }
39 | ],
40 | sidebar: {
41 | "/guide/": genGuideSidebar(true),
42 | "/log/": genUpdateLogSidebar(true)
43 | }
44 | }
45 | }
46 | },
47 | plugins: []
48 | };
49 |
50 | function genGuideSidebar(isZh) {
51 | return [
52 | {
53 | title: isZh ? "快速入门" : "Getting Start",
54 | collapsable: false,
55 | children: ["", "local-run", "deploy",]
56 | },
57 | {
58 | title: isZh ? "项目架构" : "Core",
59 | collapsable: false,
60 | children: [
61 | ]
62 | },
63 | {
64 | title: isZh ? "系统配置" : "Core",
65 | collapsable: false,
66 | children: [
67 | "api-config",
68 | "storage-config",
69 | "front-config",
70 | "api-security",
71 | "close-validate",
72 | "close-wx",
73 | ]
74 | },
75 | {
76 | title: "FAQ",
77 | collapsable: false,
78 | children: ["faq"]
79 | }
80 | ];
81 | }
82 |
83 |
84 |
85 | function genUpdateLogSidebar(isZh) {
86 | return [
87 | {
88 | title: isZh ? "更新日志" : "Config",
89 | collapsable: false,
90 | children: [""]
91 | }
92 | ];
93 | }
94 |
--------------------------------------------------------------------------------
/guide/README.md:
--------------------------------------------------------------------------------
1 | # 简介
2 | 
3 | Tduck 填鸭 —— 表单收集器
4 |
5 |
6 |
7 | 
8 | 
9 | 
10 | 
11 | [](https://gitee.com/TDuckApp/tduck-platform/stargazers)
12 | ### 联系作者/加入社群
13 | 
14 |
15 |
16 |
17 | ### 平台简介
18 |
19 | Tduck, Form collection system
20 |
21 | Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,为企业构建自己的信息反馈系统的综合解决方案,助力企业提高反馈收集客户服务效率。
22 |
23 |
24 | ### 应用场景
25 |
26 | 主要应用与泛零售、电商、金融、调研、资料收集等行业用户,提供多种工具、多渠道、多方式收集有效信息,更好的提升客户服务,增加客户满意度。
27 |
28 |
29 | ### 功能特性
30 | ##### 界面美观,全新element-ui支持,使用流畅
31 | - 以一种全新的设计体验,告别繁琐的设计流程
32 | - 通过简单有趣的方式,轻轻松松完成表单设计
33 | - 支持表单样式模板选择,只为显现更精美的表单
34 |
35 | ##### 三大模块助力企业能力升级:
36 | - 新建表单:自定义可拖拽式表单设计
37 | - 表单设置:支持多种收集方式设置
38 | - 反馈统计:多维度统计收集的反馈数据
39 |
40 |
41 | ## 在线体验
42 | 
43 |
44 | 演示地址:
45 | https://tduck.smileyi.top
46 |
47 | 演示账号/密码:可注册登录或使用测试账号 test@tduck.com/12345678
48 |
49 | ## 技术体系
50 |
51 | ### 服务端
52 |
53 |
54 | ```
55 | - SpringBoot
56 | - Mybatis-Plus
57 | - Lombok
58 | - Hutool
59 | - Guava
60 | ```
61 |
62 |
63 | ### 客户端
64 |
65 | ```
66 | - Vue2
67 | - ElementUI
68 | - Echarts
69 | - Axios
70 | - nprogress
71 | ```
72 |
73 |
74 |
75 | ### 后端项目结构
76 |
77 | - tduck-common 通用模块
78 | - tduck-account 账号模块
79 | - tduck-storage 存储模块
80 | - tduck-project 项目模块
81 | - tduck-wx-mp 微信公众号模块
82 | - tduck-api 客户端API
83 |
84 |
85 |
86 |
87 | #### 项目源码
88 |
89 | | 后端源码 | 前端源码 |
90 | |--- | --- |
91 | | https://gitee.com/TDuckApp/tduck-platform | https://gitee.com/TDuckApp/tduck-front |
92 |
93 | ## 项目规划
94 | 
95 | 
96 | 
97 | 
98 | 
99 | 目前完成框架,细节正在不断完善中,欢迎提出更多意见~
100 |
101 |
102 | **TDuck 使用 Apache License 2.0 协议,源代码完全开源,无商业限制。
103 | 开源不易如果喜欢请给作者 Star 鼓励 👇**
104 |
--------------------------------------------------------------------------------
/.vuepress/public/img/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
329 |
--------------------------------------------------------------------------------