Browse Source

格式化代码

dev
wangqing 4 years ago
parent
commit
00162b3691
  1. 25
      README.md
  2. 5101
      doc/pr_project_template.sql
  3. 417
      doc/tduck.sql
  4. 24
      docker/docker-compose.yaml
  5. 5543
      docker/init-db/pr_project_template.sql
  6. 419
      docker/init-db/tduck.sql
  7. 2
      docker/readme.md
  8. 2
      pom.xml
  9. 4
      tduck-account/pom.xml
  10. 2
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserAuthorizeServiceImpl.java
  11. 3
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java
  12. 12
      tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java
  13. 26
      tduck-account/src/main/java/com/tduck/cloud/account/util/NameUtils.java
  14. 2
      tduck-api/pom.xml
  15. 6
      tduck-api/src/main/java/com/tduck/cloud/api/TduckApiApplication.java
  16. 3
      tduck-api/src/main/java/com/tduck/cloud/api/config/CaptchaCacheServiceProvider.java
  17. 2
      tduck-api/src/main/java/com/tduck/cloud/api/config/MybatisPlusConfig.java
  18. 1
      tduck-api/src/main/java/com/tduck/cloud/api/exception/BaseExceptionHandler.java
  19. 3
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectDashboardController.java
  20. 1
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java
  21. 3
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserLoginController.java
  22. 2
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectController.java
  23. 1
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectLogicController.java
  24. 2
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectResultController.java
  25. 3
      tduck-api/src/main/java/com/tduck/cloud/api/web/controller/WxJsApiController.java
  26. 146
      tduck-api/src/main/java/com/tduck/cloud/api/web/filter/HTMLFilter.java
  27. 5
      tduck-api/src/main/java/com/tduck/cloud/api/web/filter/SignAuthFilter.java
  28. 4
      tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java
  29. 5
      tduck-api/src/main/java/com/tduck/cloud/api/web/resolver/LoginUserHandlerMethodArgumentResolver.java
  30. 30
      tduck-api/src/main/java/com/tduck/cloud/api/web/wrapper/BodyReaderHttpServletRequestWrapper.java
  31. 69
      tduck-api/src/main/resources/application-prod1.yml
  32. 2
      tduck-api/src/main/resources/templates/mail/reg-code.html
  33. 14
      tduck-api/src/main/resources/templates/mail/reset-password.html
  34. 14
      tduck-api/src/main/resources/templates/mail/update-account-email.html
  35. 4
      tduck-common/pom.xml
  36. 10
      tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java
  37. 2
      tduck-common/src/main/java/com/tduck/cloud/common/email/MailService.java
  38. 4
      tduck-common/src/main/java/com/tduck/cloud/common/email/MailServiceImpl.java
  39. 10
      tduck-common/src/main/java/com/tduck/cloud/common/mybatis/handler/JacksonTypeHandler.java
  40. 13
      tduck-common/src/main/java/com/tduck/cloud/common/util/RedisUtils.java
  41. 1
      tduck-common/src/main/java/com/tduck/cloud/common/util/Result.java
  42. 4
      tduck-project/pom.xml
  43. 2
      tduck-project/src/main/java/com/tduck/cloud/project/entity/enums/ProjectStatusEnum.java
  44. 3
      tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/CheckboxExpandStruct.java
  45. 1
      tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/DescTextExpandStruct.java
  46. 4
      tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SelectExpandStruct.java
  47. 1
      tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SignPadExpandStruct.java
  48. 1
      tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SwitchExpandStruct.java
  49. 1
      tduck-project/src/main/java/com/tduck/cloud/project/mapper/UserProjectLogicMapper.java
  50. 1
      tduck-project/src/main/java/com/tduck/cloud/project/service/ProjectDashboardService.java
  51. 15
      tduck-project/src/main/java/com/tduck/cloud/project/service/impl/ProjectDashboardServiceImpl.java
  52. 2
      tduck-project/src/main/java/com/tduck/cloud/project/vo/OperateProjectItemVO.java
  53. 24
      tduck-project/src/main/java/com/tduck/cloud/project/vo/ProjectReportVO.java
  54. 4
      tduck-storage/pom.xml
  55. 2
      tduck-storage/src/main/java/com/tduck/cloud/storage/cloud/OssStorageFactory.java
  56. 8
      tduck-storage/src/main/java/com/tduck/cloud/storage/entity/enums/OssTypeEnum.java
  57. 4
      tduck-wx-mp/pom.xml
  58. 4
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/builder/ImageBuilder.java
  59. 4
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/builder/TextBuilder.java
  60. 1
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/config/WxMpConfiguration.java
  61. 10
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/config/WxMpProperties.java
  62. 1
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/entity/WxMpUserEntity.java
  63. 2
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/LocationHandler.java
  64. 8
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/MenuHandler.java
  65. 8
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/MsgHandler.java
  66. 4
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/SubscribeHandler.java
  67. 5
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/scan/ScanStrategyContext.java
  68. 6
      tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/service/impl/WxMpUserMsgServiceImpl.java

25
README.md

@ -5,35 +5,36 @@
</p>
<h2 align="left">Tduck 填鸭 —— 表单收集器</h2>
### 平台简介
Tduck, Form collection system
Tduck, Form collection system
Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,为企业构建自己的信息反馈系统的综合解决方案,助力企业提高反馈收集客户服务效率。
### 应用场景
主要应用与泛零售、电商、金融、调研、资料收集等行业用户,提供多种工具、多渠道、多方式收集有效信息,更好的提升客户服务,增加客户满意度。
### 功能特性
##### 界面美观,全新element-ui支持,使用流畅
- 以一种全新的设计体验,告别繁琐的设计流程
- 通过简单有趣的方式,轻轻松松完成表单设计
- 支持表单样式模板选择,只为显现更精美的表单
##### 三大模块助力企业能力升级:
- 新建表单:自定义可拖拽式表单设计
- 表单设置:支持多种收集方式设置
- 反馈统计:多维度统计收集的反馈数据
## 在线体验
![首页](https://images.gitee.com/uploads/images/2021/0624/103418_43f3b04e_1495174.png "屏幕截图.png")
### 演示环境&详细文档👮‍♀️
- 演示地址:http://demo.tduckapp.com/
- 演示账号/密码:扫码注册登录
- 文档地址:http://demo.tduckapp.com/
@ -44,6 +45,7 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,
- 开源不易如果喜欢请给作者 Star 鼓励
### 加入社群
<img alt="logo" src="https://images.gitee.com/uploads/images/2021/0706/174654_31b12d64_1674451.png" style="margin-bottom: 0px;" width="230px">
#### 项目源码
@ -57,6 +59,7 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,
提供云服务器资源!
### “项目背景”
目前市面上的表单平台虽然功能强大,但是部分业务组件或者额外收取存储等费用,且费用较高,在数据隐私性较强且有特殊表单需求的场景下无法满足业务需求,
目前国内的的开源平台表单问卷平台比较少,tduck表单平台应运而生。让中小公司拥有独立自定义表单问卷,快速赋能业务。
@ -83,8 +86,10 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,
- 【验证码】验证逻辑重构,支持验证码开关
- 【微信功能】 微信功能增加开关配置,可配置关闭微信功能
- 【代码优化】对前后端代码进行部分优化,结构调整
![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/000932_eb5728c8_1674451.png "屏幕截图.png")
![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/000932_eb5728c8_1674451.png "屏幕截图.png")
### “文档支持”
新的文档平台,后续会不断完善文档,有需要完善的内容可以在GItee提issues反馈,收到反馈我们将第一时间调整,当然有想共享文档的也欢迎提Pr。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/001013_eb945bce_1674451.png "屏幕截图.png")
@ -92,18 +97,18 @@ Tduck 填鸭:是基于B/S架构的一款开源的表单在线收集系统,
![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/001053_f3c320c4_1674451.png "屏幕截图.png")
### “项目规划”
“让每个企业轻松拥有自己的问卷系统”是Tduck团队不变的初衷;v2版本的开发工作目前算是暂时结束,经过团队内部自测推出,同时欢迎大家进行测试,对存在的问题在Gitee提issues,社群内反馈可能无法及时解决,后续可能会遗忘。我们会定期对issues问题修复和做一些优化,竭力维护一个稳定的v2版本。
![输入图片说明](https://images.gitee.com/uploads/images/2021/0625/001803_d0b579e3_1674451.png "屏幕截图.png")
### :heart: 致谢 !
### :heart: 致谢 !
Tduck诞生非常有趣,不经意之间的一个想法,一步步实现至今。在v2开发期间,团队成员非全职开发,都是业余时间进行打码,所以迭代时间较长,期间群中反馈的问题没有及时给予反馈(深感抱歉)。
Tduck永远珍惜每一位用户,重视每一个issues。
感谢对Tduck团队的支持,以及大家对v2期盼与鼓励。
Tduck永远珍惜每一位用户,重视每一个issues。 感谢对Tduck团队的支持,以及大家对v2期盼与鼓励。
### ChangeLog 持续更新中 :sparkles:
### ChangeLog 持续更新中 :sparkles:
增加单选/多选题型统计图 2021-07-02
![输入图片说明](https://images.gitee.com/uploads/images/2021/0702/180333_6991a4bf_1674451.png "屏幕截图.png")

5101
doc/pr_project_template.sql

File diff suppressed because one or more lines are too long

417
doc/tduck.sql

@ -15,283 +15,298 @@
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
SET
FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ac_user
-- ----------------------------
DROP TABLE IF EXISTS `ac_user`;
CREATE TABLE `ac_user` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '姓名',
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像',
`gender` tinyint(1) NOT NULL DEFAULT 0 COMMENT '性别0未知 1男2女',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`reg_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '注册渠道',
`last_login_channel` tinyint(4) NULL DEFAULT NULL COMMENT '最后登录渠道',
`last_login_time` datetime NULL DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最后登录Ip',
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '状态',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `ac_user`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '姓名',
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像',
`gender` tinyint(1) NOT NULL DEFAULT 0 COMMENT '性别0未知 1男2女',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`reg_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '注册渠道',
`last_login_channel` tinyint(4) NULL DEFAULT NULL COMMENT '最后登录渠道',
`last_login_time` datetime NULL DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最后登录Ip',
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '状态',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 945 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for ac_user_authorize
-- ----------------------------
DROP TABLE IF EXISTS `ac_user_authorize`;
CREATE TABLE `ac_user_authorize` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` tinyint(1) NOT NULL COMMENT '第三方平台类型',
`app_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台AppId',
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台OpenId',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台用户名',
`user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户Id',
`user_info` json NULL COMMENT '平台用户信息',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `ac_user_authorize`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` tinyint(1) NOT NULL COMMENT '第三方平台类型',
`app_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台AppId',
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台OpenId',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台用户名',
`user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户Id',
`user_info` json NULL COMMENT '平台用户信息',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '第三方用户授权信息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_project_template
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template`;
CREATE TABLE `pr_project_template` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板唯一标识',
`cover_img` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '封面图',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`like_count` int(10) NULL DEFAULT 0 COMMENT '喜欢数',
`category_id` int(2) NOT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
CREATE TABLE `pr_project_template`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板唯一标识',
`cover_img` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '封面图',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`like_count` int(10) NULL DEFAULT 0 COMMENT '喜欢数',
`category_id` int(2) NOT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 341 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_project_template_category
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template_category`;
CREATE TABLE `pr_project_template_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主题名称',
`sort` int(11) NULL DEFAULT NULL COMMENT '排序',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `pr_project_template_category`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主题名称',
`sort` int(11) NULL DEFAULT NULL COMMENT '排序',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目模板分类' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_project_template_item
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template_item`;
CREATE TABLE `pr_project_template_item` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单项标题',
`show_label` tinyint(1) NOT NULL COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_project_template_item`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单项标题',
`show_label` tinyint(1) NOT NULL COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2451 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_project_theme
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_theme`;
CREATE TABLE `pr_project_theme` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主题名称',
`style` json NOT NULL COMMENT '主题风格\r\n',
`head_img_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头部图片',
`color` json NOT NULL COMMENT '颜色代码',
`btns_color` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮颜色',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `pr_project_theme`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主题名称',
`style` json NOT NULL COMMENT '主题风格\r\n',
`head_img_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头部图片',
`color` json NOT NULL COMMENT '颜色代码',
`btns_color` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮颜色',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 216 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目主题外观模板' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for pr_user_project
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project`;
CREATE TABLE `pr_user_project` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目code',
`source_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源Id',
`source_type` tinyint(5) NULL DEFAULT NULL COMMENT '来源类型',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`type` tinyint(2) NULL DEFAULT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
CREATE TABLE `pr_user_project`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目code',
`source_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源Id',
`source_type` tinyint(5) NULL DEFAULT NULL COMMENT '来源类型',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`type` tinyint(2) NULL DEFAULT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4081 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_item
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_item`;
CREATE TABLE `pr_user_project_item` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单项标题',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
`show_label` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_item`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单项标题',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
`show_label` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 30013 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_logic
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_logic`;
CREATE TABLE `pr_user_project_logic` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '逻辑Id',
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '问题Id',
`expression` tinyint(1) NOT NULL COMMENT '条件选项 ',
`condition_list` json NOT NULL COMMENT '条件列表',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_logic`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '逻辑Id',
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '问题Id',
`expression` tinyint(1) NOT NULL COMMENT '条件选项 ',
`condition_list` json NOT NULL COMMENT '条件列表',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 569 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目逻辑' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_result
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_result`;
CREATE TABLE `pr_user_project_result` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`serial_number` int(11) NULL DEFAULT NULL COMMENT '序号',
`original_data` json NULL COMMENT '填写结果',
`process_data` json NULL COMMENT '填写结果',
`submit_ua` json NULL COMMENT '提交ua',
`submit_os` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交系统',
`submit_browser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交浏览器',
`submit_request_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求ip',
`submit_address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交地址',
`complete_time` int(11) NULL DEFAULT NULL COMMENT '完成时间 毫秒',
`wx_open_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信openId',
`wx_user_info` json NULL COMMENT '微信用户信息',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_result`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`serial_number` int(11) NULL DEFAULT NULL COMMENT '序号',
`original_data` json NULL COMMENT '填写结果',
`process_data` json NULL COMMENT '填写结果',
`submit_ua` json NULL COMMENT '提交ua',
`submit_os` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交系统',
`submit_browser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交浏览器',
`submit_request_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求ip',
`submit_address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交地址',
`complete_time` int(11) NULL DEFAULT NULL COMMENT '完成时间 毫秒',
`wx_open_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '微信openId',
`wx_user_info` json NULL COMMENT '微信用户信息',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2226 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_setting
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_setting`;
CREATE TABLE `pr_user_project_setting` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`submit_prompt_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示图片',
`submit_prompt_text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提交提示文字',
`submit_jump_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交跳转连接',
`is_public_result` tinyint(1) NULL DEFAULT NULL COMMENT '公开提交结果',
`is_wx_write` tinyint(1) NULL DEFAULT NULL COMMENT '只在微信填写',
`is_wx_write_once` tinyint(1) NULL DEFAULT NULL,
`is_everyone_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人只能填写一次',
`is_everyone_day_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人每天只能填写一次',
`write_once_prompt_text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '填写之后提示',
`new_write_notify_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知邮件',
`new_write_notify_wx` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知微信',
`is_record_wx_user` tinyint(1) NULL DEFAULT NULL COMMENT '记录微信用户个人信息',
`timed_collection_begin_time` datetime NULL DEFAULT NULL COMMENT '定时收集开始时间',
`timed_collection_end_time` datetime NULL DEFAULT NULL COMMENT '定时收集结束时间',
`timed_not_enabled_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时未启动提示文字',
`timed_deactivate_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时停用会提示文字',
`timed_quantitative_quantity` int(100) NULL DEFAULT NULL COMMENT '定时定量数量',
`timed_end_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时定量完成提示',
`share_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享图片',
`share_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享标题',
`share_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享描述',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_setting`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`submit_prompt_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示图片',
`submit_prompt_text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提交提示文字',
`submit_jump_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交跳转连接',
`is_public_result` tinyint(1) NULL DEFAULT NULL COMMENT '公开提交结果',
`is_wx_write` tinyint(1) NULL DEFAULT NULL COMMENT '只在微信填写',
`is_wx_write_once` tinyint(1) NULL DEFAULT NULL,
`is_everyone_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人只能填写一次',
`is_everyone_day_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人每天只能填写一次',
`write_once_prompt_text` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '填写之后提示',
`new_write_notify_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知邮件',
`new_write_notify_wx` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知微信',
`is_record_wx_user` tinyint(1) NULL DEFAULT NULL COMMENT '记录微信用户个人信息',
`timed_collection_begin_time` datetime NULL DEFAULT NULL COMMENT '定时收集开始时间',
`timed_collection_end_time` datetime NULL DEFAULT NULL COMMENT '定时收集结束时间',
`timed_not_enabled_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时未启动提示文字',
`timed_deactivate_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时停用会提示文字',
`timed_quantitative_quantity` int(100) NULL DEFAULT NULL COMMENT '定时定量数量',
`timed_end_prompt_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '定时定量完成提示',
`share_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享图片',
`share_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享标题',
`share_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享描述',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 530 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_theme
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_theme`;
CREATE TABLE `pr_user_project_theme` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`theme_id` bigint(20) NULL DEFAULT NULL COMMENT '主题Id',
`submit_btn_text` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提交按钮文字',
`logo_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo图片',
`logo_position` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo位置',
`background_color` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景颜色',
`background_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景图片',
`show_title` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示标题',
`show_describe` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示描述语',
`show_number` tinyint(1) NULL DEFAULT 0 COMMENT '显示序号',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_theme`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`theme_id` bigint(20) NULL DEFAULT NULL COMMENT '主题Id',
`submit_btn_text` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提交按钮文字',
`logo_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo图片',
`logo_position` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo位置',
`background_color` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景颜色',
`background_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景图片',
`show_title` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示标题',
`show_describe` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示描述语',
`show_number` tinyint(1) NULL DEFAULT 0 COMMENT '显示序号',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 945 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for wx_mp_user
-- ----------------------------
DROP TABLE IF EXISTS `wx_mp_user`;
CREATE TABLE `wx_mp_user` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`appid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公众号AppId',
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`sex` tinyint(1) NULL DEFAULT NULL COMMENT '性别',
`head_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像',
`union_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
`province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
`is_subscribe` tinyint(1) NULL DEFAULT 1 COMMENT '是否关注',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `wx_union_id`(`head_img_url`(191)) USING BTREE
CREATE TABLE `wx_mp_user`
(
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`appid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公众号AppId',
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`sex` tinyint(1) NULL DEFAULT NULL COMMENT '性别',
`head_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像',
`union_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
`province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
`is_subscribe` tinyint(1) NULL DEFAULT 1 COMMENT '是否关注',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `wx_union_id`(`head_img_url`(191)) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 728 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号用户 ' ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
SET
FOREIGN_KEY_CHECKS = 1;

24
docker/docker-compose.yaml

@ -2,7 +2,7 @@ version: '3.6'
services:
tduck-app:
environment:
# - SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.cj.jdbc.driver
# - SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.cj.jdbc.driver
- SPRING_DATASOURCE_URL=$SPRING_DATASOURCE_URL
- SPRING_DATASOURCE_USERNAME=$SPRING_DATASOURCE_NAME
- SPRING_DATASOURCE_PASSWORD=$MYSQL_ROOT_PASSWORD
@ -10,17 +10,17 @@ services:
- SPRING_REDIS_HOST=$REDIS_HOST
- SPRING_REDIS_PORT=$REDIS_PORT
- AJ_CAPTCHA_ENABLE=false
# - SPRING_REDIS_PASSWORD=
# - WX_MP_CONFIGS_APPID=
# - WX_MP_CONFIGS_SECRET=
# - WX_MP_CONFIGS_TOKEN=
# - WX_MP_CONFIGS_AESKEY=
# - OSS_OSSTYPE=
# - OSS_ENDPOINT=
# - OSS_ACCESSKEYID=
# - OSS_ACCESSKEYSECRET=
# - OSS_BUCKETNAME=
# - OSS_DOMAIN=
# - SPRING_REDIS_PASSWORD=
# - WX_MP_CONFIGS_APPID=
# - WX_MP_CONFIGS_SECRET=
# - WX_MP_CONFIGS_TOKEN=
# - WX_MP_CONFIGS_AESKEY=
# - OSS_OSSTYPE=
# - OSS_ENDPOINT=
# - OSS_ACCESSKEYID=
# - OSS_ACCESSKEYSECRET=
# - OSS_BUCKETNAME=
# - OSS_DOMAIN=
image: "tecdo/tduck"
ports:

5543
docker/init-db/pr_project_template.sql

File diff suppressed because one or more lines are too long

419
docker/init-db/tduck.sql

@ -15,281 +15,302 @@
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
SET
FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for ac_user
-- ----------------------------
DROP TABLE IF EXISTS `ac_user`;
CREATE TABLE `ac_user` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '姓名',
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像',
`gender` tinyint(1) NOT NULL DEFAULT 0 COMMENT '性别0未知 1男2女',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`reg_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '注册渠道',
`last_login_channel` tinyint(4) NULL DEFAULT NULL COMMENT '最后登录渠道',
`last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最后登录Ip',
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '状态',
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `ac_user`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '姓名',
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '头像',
`gender` tinyint(1) NOT NULL DEFAULT 0 COMMENT '性别0未知 1男2女',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`phone_number` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`reg_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '注册渠道',
`last_login_channel` tinyint(4) NULL DEFAULT NULL COMMENT '最后登录渠道',
`last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最后登录Ip',
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '状态',
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0),
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0),
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 220 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for ac_user_authorize
-- ----------------------------
DROP TABLE IF EXISTS `ac_user_authorize`;
CREATE TABLE `ac_user_authorize` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` tinyint(1) NOT NULL COMMENT '第三方平台类型',
`app_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台AppId',
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台OpenId',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台用户名',
`user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户Id',
`user_info` json NULL COMMENT '平台用户信息',
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `ac_user_authorize`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` tinyint(1) NOT NULL COMMENT '第三方平台类型',
`app_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台AppId',
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台OpenId',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '平台用户名',
`user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户Id',
`user_info` json NULL COMMENT '平台用户信息',
`create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0),
`update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP (0),
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '第三方用户授权信息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_project_template
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template`;
CREATE TABLE `pr_project_template` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板唯一标识',
`cover_img` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '封面图',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '项目描述',
`like_count` int(10) NULL DEFAULT 0 COMMENT '喜欢数',
`category_id` int(2) NOT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
CREATE TABLE `pr_project_template`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板唯一标识',
`cover_img` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '封面图',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '项目描述',
`like_count` int(10) NULL DEFAULT 0 COMMENT '喜欢数',
`category_id` int(2) NOT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 59 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for pr_project_template_category
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template_category`;
CREATE TABLE `pr_project_template_category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
`sort` int(11) NULL DEFAULT NULL COMMENT '排序',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `pr_project_template_category`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
`sort` int(11) NULL DEFAULT NULL COMMENT '排序',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目模板分类' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for pr_project_template_item
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_template_item`;
CREATE TABLE `pr_project_template_item` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项标题',
`show_label` tinyint(1) NOT NULL COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_project_template_item`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项标题',
`show_label` tinyint(1) NOT NULL COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1030 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表单项' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for pr_project_theme
-- ----------------------------
DROP TABLE IF EXISTS `pr_project_theme`;
CREATE TABLE `pr_project_theme` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
`style` json NOT NULL COMMENT '主题风格\r\n',
`head_img_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头部图片',
`color` json NOT NULL COMMENT '颜色代码',
`btns_color` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮颜色',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
CREATE TABLE `pr_project_theme`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主题名称',
`style` json NOT NULL COMMENT '主题风格\r\n',
`head_img_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头部图片',
`color` json NOT NULL COMMENT '颜色代码',
`btns_color` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮颜色',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 216 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目主题外观模板' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for pr_user_project
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project`;
CREATE TABLE `pr_user_project` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目code',
`source_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源Id',
`source_type` tinyint(5) NULL DEFAULT NULL COMMENT '来源类型',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`type` tinyint(2) NULL DEFAULT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
CREATE TABLE `pr_user_project`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目code',
`source_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源Id',
`source_type` tinyint(5) NULL DEFAULT NULL COMMENT '来源类型',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
`describe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '项目描述',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`type` tinyint(2) NULL DEFAULT NULL COMMENT '项目类型',
`status` tinyint(2) NOT NULL DEFAULT 0 COMMENT '状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2429 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_item
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_item`;
CREATE TABLE `pr_user_project_item` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项标题',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
`show_label` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_item`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单项Id',
`type` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项类型 ',
`label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表单项标题',
`is_display_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '展示类型组件',
`show_label` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示标签',
`default_value` json NULL COMMENT '表单项默认值',
`required` tinyint(1) NOT NULL COMMENT '是否必填',
`placeholder` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '输入型提示文字',
`sort` bigint(20) NULL DEFAULT 0 COMMENT '排序',
`span` int(10) NOT NULL DEFAULT 24 COMMENT '栅格宽度',
`expand` json NULL COMMENT '扩展字段 表单项独有字段',
`reg_list` json NULL COMMENT '正则表达式 ',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 19989 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_logic
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_logic`;
CREATE TABLE `pr_user_project_logic` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '逻辑Id',
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '问题Id',
`expression` tinyint(1) NOT NULL COMMENT '条件选项 ',
`condition_list` json NOT NULL COMMENT '条件列表',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_logic`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '逻辑Id',
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`form_item_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '问题Id',
`expression` tinyint(1) NOT NULL COMMENT '条件选项 ',
`condition_list` json NOT NULL COMMENT '条件列表',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 104 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目逻辑' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_result
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_result`;
CREATE TABLE `pr_user_project_result` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`serial_number` int(11) NULL DEFAULT NULL COMMENT '序号',
`original_data` json NULL COMMENT '填写结果',
`process_data` json NULL COMMENT '填写结果',
`submit_ua` json NULL COMMENT '提交ua',
`submit_os` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交系统',
`submit_browser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交浏览器',
`submit_request_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求ip',
`submit_address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交地址',
`complete_time` int(11) NULL DEFAULT NULL COMMENT '完成时间 毫秒',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_result`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`serial_number` int(11) NULL DEFAULT NULL COMMENT '序号',
`original_data` json NULL COMMENT '填写结果',
`process_data` json NULL COMMENT '填写结果',
`submit_ua` json NULL COMMENT '提交ua',
`submit_os` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交系统',
`submit_browser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交浏览器',
`submit_request_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求ip',
`submit_address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交地址',
`complete_time` int(11) NULL DEFAULT NULL COMMENT '完成时间 毫秒',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1851 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_setting
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_setting`;
CREATE TABLE `pr_user_project_setting` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`submit_prompt_img` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示图片',
`submit_prompt_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示文字',
`submit_jump_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交跳转连接',
`is_public_result` tinyint(1) NULL DEFAULT NULL COMMENT '公开提交结果',
`is_wx_write` tinyint(1) NULL DEFAULT NULL COMMENT '只在微信填写',
`is_everyone_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人只能填写一次',
`is_everyone_day_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人每天只能填写一次',
`write_once_prompt_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '填写之后提示',
`new_write_notify_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知邮件',
`new_write_notify_wx` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知微信',
`is_record_wx_user` tinyint(1) NULL DEFAULT NULL COMMENT '记录微信用户个人信息',
`timed_collection_begin_time` datetime(0) NULL DEFAULT NULL COMMENT '定时收集开始时间',
`timed_collection_end_time` datetime(0) NULL DEFAULT NULL COMMENT '定时收集结束时间',
`timed_not_enabled_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时未启动提示文字',
`timed_deactivate_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时停用会提示文字',
`timed_quantitative_quantity` int(100) NULL DEFAULT NULL COMMENT '定时定量数量',
`timed_end_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时定量完成提示',
`share_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享图片',
`share_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享标题',
`share_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享描述',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_setting`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`submit_prompt_img` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示图片',
`submit_prompt_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交提示文字',
`submit_jump_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交跳转连接',
`is_public_result` tinyint(1) NULL DEFAULT NULL COMMENT '公开提交结果',
`is_wx_write` tinyint(1) NULL DEFAULT NULL COMMENT '只在微信填写',
`is_everyone_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人只能填写一次',
`is_everyone_day_write_once` tinyint(1) NULL DEFAULT NULL COMMENT '每人每天只能填写一次',
`write_once_prompt_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '填写之后提示',
`new_write_notify_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知邮件',
`new_write_notify_wx` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '新反馈通知微信',
`is_record_wx_user` tinyint(1) NULL DEFAULT NULL COMMENT '记录微信用户个人信息',
`timed_collection_begin_time` datetime(0) NULL DEFAULT NULL COMMENT '定时收集开始时间',
`timed_collection_end_time` datetime(0) NULL DEFAULT NULL COMMENT '定时收集结束时间',
`timed_not_enabled_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时未启动提示文字',
`timed_deactivate_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时停用会提示文字',
`timed_quantitative_quantity` int(100) NULL DEFAULT NULL COMMENT '定时定量数量',
`timed_end_prompt_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时定量完成提示',
`share_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享图片',
`share_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享标题',
`share_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分享描述',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 365 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for pr_user_project_theme
-- ----------------------------
DROP TABLE IF EXISTS `pr_user_project_theme`;
CREATE TABLE `pr_user_project_theme` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`theme_id` bigint(20) NULL DEFAULT NULL COMMENT '主题Id',
`submit_btn_text` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交按钮文字',
`logo_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo图片',
`logo_position` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo位置',
`background_color` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景颜色',
`background_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景图片',
`show_title` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示标题',
`show_describe` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示描述语',
`show_number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '显示序号',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
CREATE TABLE `pr_user_project_theme`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`project_key` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目key',
`theme_id` bigint(20) NULL DEFAULT NULL COMMENT '主题Id',
`submit_btn_text` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提交按钮文字',
`logo_img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo图片',
`logo_position` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'logo位置',
`background_color` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景颜色',
`background_img` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '背景图片',
`show_title` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示标题',
`show_describe` tinyint(1) NULL DEFAULT 1 COMMENT '是否显示描述语',
`show_number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '显示序号',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `project_key`(`project_key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 639 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表单项' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Table structure for wx_mp_user
-- ----------------------------
DROP TABLE IF EXISTS `wx_mp_user`;
CREATE TABLE `wx_mp_user` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`appid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公众号AppId',
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`sex` tinyint(1) NULL DEFAULT NULL COMMENT '性别',
`head_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像',
`union_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
`province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
`is_subscribe` tinyint(1) NULL DEFAULT 1 COMMENT '是否关注',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `wx_union_id`(`head_img_url`(191)) USING BTREE
CREATE TABLE `wx_mp_user`
(
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',
`appid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '公众号AppId',
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`sex` tinyint(1) NULL DEFAULT NULL COMMENT '性别',
`head_img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '头像',
`union_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`open_id` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
`province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
`is_subscribe` tinyint(1) NULL DEFAULT 1 COMMENT '是否关注',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
`update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) ON UPDATE CURRENT_TIMESTAMP (0) COMMENT '更新时间',
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP (0) COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `wx_union_id`(`head_img_url`(191)) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号用户 ' ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
INSERT INTO `tduck`.`ac_user`(`id`, `name`, `avatar`, `gender`, `email`, `phone_number`, `password`, `reg_channel`, `last_login_channel`, `last_login_time`, `last_login_ip`, `deleted`, `create_time`, `update_time`) VALUES (201, 'Tduck001', 'https://oss.smileyi.top/757b505cfd34c64c85ca5b5690ee5293/4c415e1c1af04af68d740e667819bece.png', 0, 'test@tduck.com', NULL, 'ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f', '1', 2, '2021-06-24 11:08:21', '111.30.56.26', 0, '2020-11-12 11:50:50', '2021-06-24 11:08:21');
SET
FOREIGN_KEY_CHECKS = 1;
INSERT INTO `tduck`.`ac_user`(`id`, `name`, `avatar`, `gender`, `email`, `phone_number`, `password`, `reg_channel`,
`last_login_channel`, `last_login_time`, `last_login_ip`, `deleted`, `create_time`,
`update_time`)
VALUES (201, 'Tduck001',
'https://oss.smileyi.top/757b505cfd34c64c85ca5b5690ee5293/4c415e1c1af04af68d740e667819bece.png', 0,
'test@tduck.com', NULL, 'ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f', '1', 2,
'2021-06-24 11:08:21', '111.30.56.26', 0, '2020-11-12 11:50:50', '2021-06-24 11:08:21');

2
docker/readme.md

@ -2,6 +2,6 @@
1. 将mvn package 后的`tduck-api.jar`拷贝到`docker`目录
2. 将前端打包后的`dist`里的文件拷贝到`docker/front`目录下
3. 在当前目录构建你的镜像 `docker build -t "你的镜像名称" .`
3. 在当前目录构建你的镜像 `docker build -t "你的镜像名称" .`
4. 修改docker-compose.yaml 文件中的镜像名
5. `docker-compose up -d` 一键启动

2
pom.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tduck</groupId>

4
tduck-account/pom.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.tduck</groupId>

2
tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserAuthorizeServiceImpl.java

@ -44,7 +44,7 @@ public class UserAuthorizeServiceImpl extends ServiceImpl<UserAuthorizeMapper, U
authorizeEntity.setUserId(userEntity.getId());
this.save(authorizeEntity);
}
}else{
} else {
userEntity.setId(authorizeEntity.getUserId());
}
return authorizeEntity;

3
tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserServiceImpl.java

@ -46,7 +46,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
private final UserAuthorizeService userAuthorizeService;
@Override
public Result emailRegister(RegisterAccountRequest request) {
//检查验证码是否正确
@ -80,7 +79,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
/**
* 创建用户
*
*/
private void createUser(UserEntity userEntity) {
userEntity.setName(NameUtils.getCnName());
@ -109,7 +107,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
/**
* 获取登录结果
*
*/
@Override
public LoginUserVO getLoginResult(UserEntity userEntity, AccountChannelEnum channel, String requestIp) {

12
tduck-account/src/main/java/com/tduck/cloud/account/service/impl/UserValidateServiceImpl.java

@ -32,6 +32,11 @@ import java.util.concurrent.TimeUnit;
@RequiredArgsConstructor
public class UserValidateServiceImpl implements UserValidateService {
private final static String REG_EMAIL_TITLE = "TDuck注册验证码";
private final static String RESET_PWD_EMAIL_TITLE = "重置密码";
private final RedisUtils redisUtils;
private final MailService mailService;
private final SmsService smsService;
/**
* 重置密码地址
*/
@ -40,13 +45,6 @@ public class UserValidateServiceImpl implements UserValidateService {
@Value("${platform.front.updateEmailUrl}")
private String updateEmailUrl;
private final RedisUtils redisUtils;
private final MailService mailService;
private final SmsService smsService;
private final static String REG_EMAIL_TITLE = "TDuck注册验证码";
private final static String RESET_PWD_EMAIL_TITLE = "重置密码";
@Override
public void sendEmailCode(String email) {
String code = genValidateCode(StrUtil.format(AccountRedisKeyConstants.EMAIL_CODE, email));

26
tduck-account/src/main/java/com/tduck/cloud/account/util/NameUtils.java

@ -15,18 +15,26 @@ public abstract class NameUtils {
private static final ArrayList<String> cnSurnameList = new ArrayList<>();
private static final ArrayList<String> cnNameList = new ArrayList<>();
static {
initEnHeadList();
initEntailList();
initCnSurnameList();
initCnNameList();
}
public static String getEnName() {
String head = enHeadList.get((int) (Math.random() * enHeadList.size()));
String tail = entailList.get((int) (Math.random() * entailList.size()));
return head + tail;
}
public static String getCnName() {
String head = cnSurnameList.get((int) (Math.random() * cnSurnameList.size()));
String tail = cnNameList.get((int) (Math.random() * cnNameList.size()));
return head + tail;
}
public static void initEnHeadList(){
public static void initEnHeadList() {
enHeadList.add("Ter");
enHeadList.add("Wind");
enHeadList.add("Buck");
@ -784,7 +792,8 @@ public abstract class NameUtils {
enHeadList.add("Vir");
enHeadList.add("Ran");
}
public static void initEntailList(){
public static void initEntailList() {
entailList.add("nings");
entailList.add("hale");
entailList.add("lvis");
@ -1581,7 +1590,8 @@ public abstract class NameUtils {
entailList.add("gust");
entailList.add("sper");
}
public static void initCnSurnameList(){
public static void initCnSurnameList() {
cnSurnameList.add("怀");
cnSurnameList.add("老");
cnSurnameList.add("堂");
@ -2632,7 +2642,8 @@ public abstract class NameUtils {
cnSurnameList.add("韶");
cnSurnameList.add("忻");
}
public static void initCnNameList(){
public static void initCnNameList() {
cnNameList.add("慕雁");
cnNameList.add("婉然");
cnNameList.add("月明");
@ -6909,11 +6920,4 @@ public abstract class NameUtils {
cnNameList.add("碧莹");
cnNameList.add("思山");
}
static {
initEnHeadList();
initEntailList();
initCnSurnameList();
initCnNameList();
}
}

2
tduck-api/pom.xml

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>

6
tduck-api/src/main/java/com/tduck/cloud/api/TduckApiApplication.java

@ -13,8 +13,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
@ComponentScan("com.tduck.cloud.*")
public class TduckApiApplication {
public static void main(String[] args) {
SpringApplication.run(TduckApiApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(TduckApiApplication.class, args);
}
}

3
tduck-api/src/main/java/com/tduck/cloud/api/config/CaptchaCacheServiceProvider.java

@ -4,7 +4,6 @@ import com.anji.captcha.service.CaptchaCacheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.concurrent.TimeUnit;
/**
@ -15,7 +14,7 @@ public class CaptchaCacheServiceProvider implements CaptchaCacheService {
private static final String REDIS = "redis";
@Autowired
private RedisTemplate<String,String> redisTemplate;
private RedisTemplate<String, String> redisTemplate;
@Override
public void set(String key, String value, long expiresInSeconds) {

2
tduck-api/src/main/java/com/tduck/cloud/api/config/MybatisPlusConfig.java

@ -9,8 +9,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @description mybaits plus 配置文件
* @author smalljop
* @description mybaits plus 配置文件
* @create 2019-12-10 16:28
**/
@EnableTransactionManagement

1
tduck-api/src/main/java/com/tduck/cloud/api/exception/BaseExceptionHandler.java

@ -66,7 +66,6 @@ public class BaseExceptionHandler {
}
@ExceptionHandler(Exception.class)
public Result handleException(Exception e) {
log.error(e.getMessage(), e);

3
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectDashboardController.java

@ -9,7 +9,6 @@ import com.tduck.cloud.project.entity.UserProjectResultEntity;
import com.tduck.cloud.project.service.ProjectDashboardService;
import com.tduck.cloud.project.service.UserProjectResultService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@ -92,7 +91,7 @@ public class ProjectDashboardController {
*/
@Login
@GetMapping("/user/project/report/analysis")
public Result projectReportAnalysis(String projectKey){
public Result projectReportAnalysis(String projectKey) {
return Result.success(projectDashboardService.projectReportAnalysis(projectKey));
}
}

1
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/ProjectTemplateController.java

@ -58,7 +58,6 @@ public class ProjectTemplateController {
}
/**
* 分页查询项目分类
*

3
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserLoginController.java

@ -85,7 +85,6 @@ public class UserLoginController {
/**
* 手机号注册
*
*/
@PostMapping("/register/email")
public Result emailRegister(@RequestBody RegisterAccountRequest request) {
@ -97,7 +96,6 @@ public class UserLoginController {
/**
* 找回密码手机验证码
*
*/
@GetMapping("/retrieve/password/phone/code")
public Result sendRetrievePwdPhoneCode(@RequestParam String phoneNumber) {
@ -113,7 +111,6 @@ public class UserLoginController {
/**
* 发送找回密码邮件
*
*/
@GetMapping("/retrieve/password/email")
public Result sendRetrievePwdEmail(@RequestParam String email) {

2
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectController.java

@ -439,7 +439,7 @@ public class UserProjectController {
* 当前设置的状态
*/
@GetMapping("/user/project/setting-status")
public Result querySettingStatus(@RequestParam String projectKey,@RequestParam String wxOpenId, HttpServletRequest request) {
public Result querySettingStatus(@RequestParam String projectKey, String wxOpenId, HttpServletRequest request) {
return userProjectSettingService.getUserProjectSettingStatus(projectKey, HttpUtils.getIpAddr(request), wxOpenId);
}

1
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectLogicController.java

@ -3,7 +3,6 @@ package com.tduck.cloud.api.web.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.tduck.cloud.api.annotation.Login;
import com.tduck.cloud.common.util.Result;
import com.tduck.cloud.project.entity.UserProjectItemEntity;
import com.tduck.cloud.project.entity.UserProjectLogicEntity;
import com.tduck.cloud.project.service.UserProjectLogicService;
import lombok.RequiredArgsConstructor;

2
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/UserProjectResultController.java

@ -82,7 +82,7 @@ public class UserProjectResultController {
public Result createProjectResult(@RequestBody UserProjectResultEntity entity, HttpServletRequest request) {
ValidatorUtils.validateEntity(entity);
entity.setSubmitRequestIp(HttpUtils.getIpAddr(request));
Result<UserProjectSettingEntity> userProjectSettingStatus = userProjectSettingService.getUserProjectSettingStatus(entity.getProjectKey(), entity.getSubmitRequestIp(),entity.getWxOpenId());
Result<UserProjectSettingEntity> userProjectSettingStatus = userProjectSettingService.getUserProjectSettingStatus(entity.getProjectKey(), entity.getSubmitRequestIp(), entity.getWxOpenId());
if (StrUtil.isNotBlank(userProjectSettingStatus.getMsg())) {
return Result.failed(userProjectSettingStatus.getMsg());
}

3
tduck-api/src/main/java/com/tduck/cloud/api/web/controller/WxJsApiController.java

@ -58,8 +58,7 @@ public class WxJsApiController {
/**
* 签名
*
* @param url
*1
* @param url 1
* @return
* @throws WxErrorException
*/

146
tduck-api/src/main/java/com/tduck/cloud/api/web/filter/HTMLFilter.java

@ -8,30 +8,29 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* HTML filtering utility for protecting against XSS (Cross Site Scripting).
*
* <p>
* This code is licensed LGPLv3
*
* <p>
* This code is a Java port of the original work interceptor PHP by Cal Hendersen.
* http://code.iamcal.com/php/lib_filter/
*
* <p>
* The trickiest part of the translation was handling the differences interceptor regex handling
* between PHP and Java. These resources were helpful interceptor the process:
*
* <p>
* http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
* http://us2.php.net/manual/en/reference.pcre.pattern.modifiers.php
* http://www.regular-expressions.info/modifiers.html
*
* <p>
* A note on naming conventions: instance variables are prefixed with a "v"; global
* constant are interceptor all caps.
*
* <p>
* Sample use:
* String input = ...
* String clean = new HTMLFilter().filter( input );
*
* <p>
* The class is not thread safe. Create a new instance if interceptor doubt.
*
* <p>
* If you find bugs or have suggestions on improvement (especially regarding
* performance), please contact us. The latest version of this
* source, and our contact details, can be found at http://xss-html-filter.sf.net
@ -42,7 +41,9 @@ import java.util.regex.Pattern;
*/
public final class HTMLFilter {
/** regex flag union representing /si modifiers interceptor php **/
/**
* regex flag union representing /si modifiers interceptor php
**/
private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL;
private static final Pattern P_COMMENTS = Pattern.compile("<!--(.*?)-->", Pattern.DOTALL);
private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI);
@ -69,41 +70,61 @@ public final class HTMLFilter {
private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>");
// @xxx could grow large... maybe use sesat's ReferenceMap
private static final ConcurrentMap<String,Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<String, Pattern>();
private static final ConcurrentMap<String,Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<String, Pattern>();
private static final ConcurrentMap<String, Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<String, Pattern>();
private static final ConcurrentMap<String, Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<String, Pattern>();
/** set of allowed html elements, along with allowed attributes for each element **/
/**
* set of allowed html elements, along with allowed attributes for each element
**/
private final Map<String, List<String>> vAllowed;
/** counts of open tags for each (allowable) html element **/
/**
* counts of open tags for each (allowable) html element
**/
private final Map<String, Integer> vTagCounts = new HashMap<String, Integer>();
/** html elements which must always be self-closing (e.g. "<img />") **/
/**
* html elements which must always be self-closing (e.g. "<img />")
**/
private final String[] vSelfClosingTags;
/** html elements which must always have separate opening and closing tags (e.g. "<b></b>") **/
/**
* html elements which must always have separate opening and closing tags (e.g. "<b></b>")
**/
private final String[] vNeedClosingTags;
/** set of disallowed html elements **/
/**
* set of disallowed html elements
**/
private final String[] vDisallowed;
/** attributes which should be checked for valid protocols **/
/**
* attributes which should be checked for valid protocols
**/
private final String[] vProtocolAtts;
/** allowed protocols **/
/**
* allowed protocols
**/
private final String[] vAllowedProtocols;
/** tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />") **/
/**
* tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />")
**/
private final String[] vRemoveBlanks;
/** entities allowed within html markup **/
/**
* entities allowed within html markup
**/
private final String[] vAllowedEntities;
/** flag determining whether comments are allowed interceptor input String. */
/**
* flag determining whether comments are allowed interceptor input String.
*/
private final boolean stripComment;
private final boolean encodeQuotes;
private boolean vDebug = false;
/**
* flag determining whether to try to make tags when presented with "unbalanced"
* angle brackets (e.g. "<b text </b>" becomes "<b> text </b>"). If set to false,
* unbalanced angle brackets will be html escaped.
*/
private final boolean alwaysMakeTags;
private boolean vDebug = false;
/** Default constructor.
*
/**
* Default constructor.
*/
public HTMLFilter() {
vAllowed = new HashMap<>();
@ -138,7 +159,8 @@ public final class HTMLFilter {
alwaysMakeTags = true;
}
/** Set debug flag to true. Otherwise use default settings. See the default constructor.
/**
* Set debug flag to true. Otherwise use default settings. See the default constructor.
*
* @param debug turn debug on with a true argument
*/
@ -148,11 +170,12 @@ public final class HTMLFilter {
}
/** Map-parameter configurable constructor.
/**
* Map-parameter configurable constructor.
*
* @param conf map containing configuration. keys match field names.
*/
public HTMLFilter(final Map<String,Object> conf) {
public HTMLFilter(final Map<String, Object> conf) {
assert conf.containsKey("vAllowed") : "configuration requires vAllowed";
assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags";
@ -171,21 +194,11 @@ public final class HTMLFilter {
vProtocolAtts = (String[]) conf.get("vProtocolAtts");
vRemoveBlanks = (String[]) conf.get("vRemoveBlanks");
vAllowedEntities = (String[]) conf.get("vAllowedEntities");
stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true;
stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true;
encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true;
alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true;
}
private void reset() {
vTagCounts.clear();
}
private void debug(final String msg) {
if (vDebug) {
Logger.getAnonymousLogger().info(msg);
}
}
//---------------------------------------------------------------
// my versions of some PHP library functions
public static String chr(final int decimal) {
@ -201,7 +214,32 @@ public final class HTMLFilter {
return result;
}
private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) {
Matcher m = regex_pattern.matcher(s);
return m.replaceAll(replacement);
}
private static boolean inArray(final String s, final String[] array) {
for (String item : array) {
if (item != null && item.equals(s)) {
return true;
}
}
return false;
}
//---------------------------------------------------------------
private void reset() {
vTagCounts.clear();
}
private void debug(final String msg) {
if (vDebug) {
Logger.getAnonymousLogger().info(msg);
}
}
/**
* given a user submitted input String, filter out any invalid or restricted
* html.
@ -235,11 +273,11 @@ public final class HTMLFilter {
return s;
}
public boolean isAlwaysMakeTags(){
public boolean isAlwaysMakeTags() {
return alwaysMakeTags;
}
public boolean isStripComments(){
public boolean isStripComments() {
return stripComment;
}
@ -309,11 +347,11 @@ public final class HTMLFilter {
private String processRemoveBlanks(final String s) {
String result = s;
for (String tag : vRemoveBlanks) {
if(!P_REMOVE_PAIR_BLANKS.containsKey(tag)){
if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) {
P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?></" + tag + ">"));
}
result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result);
if(!P_REMOVE_SELF_BLANKS.containsKey(tag)){
if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) {
P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>"));
}
result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result);
@ -322,11 +360,6 @@ public final class HTMLFilter {
return result;
}
private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) {
Matcher m = regex_pattern.matcher(s);
return m.replaceAll(replacement);
}
private String processTag(final String s) {
// ending tags
Matcher m = P_END_TAG.matcher(s);
@ -409,7 +442,7 @@ public final class HTMLFilter {
// comments
m = P_COMMENT.matcher(s);
if (!stripComment && m.find()) {
return "<" + m.group() + ">";
return "<" + m.group() + ">";
}
return "";
@ -483,8 +516,8 @@ public final class HTMLFilter {
return encodeQuotes(buf.toString());
}
private String encodeQuotes(final String s){
if(encodeQuotes){
private String encodeQuotes(final String s) {
if (encodeQuotes) {
StringBuffer buf = new StringBuffer();
Matcher m = P_VALID_QUOTES.matcher(s);
while (m.find()) {
@ -495,7 +528,7 @@ public final class HTMLFilter {
}
m.appendTail(buf);
return buf.toString();
}else{
} else {
return s;
}
}
@ -511,15 +544,6 @@ public final class HTMLFilter {
return inArray(entity, vAllowedEntities);
}
private static boolean inArray(final String s, final String[] array) {
for (String item : array) {
if (item != null && item.equals(s)) {
return true;
}
}
return false;
}
private boolean allowed(final String name) {
return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed);
}

5
tduck-api/src/main/java/com/tduck/cloud/api/web/filter/SignAuthFilter.java

@ -28,15 +28,12 @@ import java.util.SortedMap;
@Data
public class SignAuthFilter implements Filter {
private PlatformSignProperties platformSignProperties;
private final static String TIMESTAMP_KEY_NAME = "timestamp";
/**
* 最大有效时间 默认 10秒钟失效 超出10s失效
*/
private final static Long MAX_EFFECTIVE_TIMESTAMP = 10L * 1000;
private PlatformSignProperties platformSignProperties;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {

4
tduck-api/src/main/java/com/tduck/cloud/api/web/interceptor/AuthorizationInterceptor.java

@ -5,7 +5,6 @@ import com.tduck.cloud.account.util.JwtUtils;
import com.tduck.cloud.api.annotation.Login;
import com.tduck.cloud.api.exception.AuthorizationException;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@ -18,9 +17,8 @@ import javax.servlet.http.HttpServletResponse;
*/
@Component
public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
private final JwtUtils jwtUtils;
public static final String USER_KEY = "userId";
private final JwtUtils jwtUtils;
public AuthorizationInterceptor(JwtUtils jwtUtils) {
this.jwtUtils = jwtUtils;

5
tduck-api/src/main/java/com/tduck/cloud/api/web/resolver/LoginUserHandlerMethodArgumentResolver.java

@ -14,6 +14,7 @@ import org.springframework.web.method.support.ModelAndViewContainer;
/**
* @LoginUser注解的方法参数注入当前登录用户
*
* @author qing
*/
@Component
@ -34,12 +35,12 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu
NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
//获取用户ID
Object object = request.getAttribute(AuthorizationInterceptor.USER_KEY, RequestAttributes.SCOPE_REQUEST);
if(object == null){
if (object == null) {
return null;
}
//获取用户信息
UserEntity user = userService.getById((Long)object);
UserEntity user = userService.getById((Long) object);
return user;
}
}

30
tduck-api/src/main/java/com/tduck/cloud/api/web/wrapper/BodyReaderHttpServletRequestWrapper.java

@ -22,11 +22,10 @@ import java.util.Map;
* @author
*/
public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper {
//没被包装过的HttpServletRequest(特殊场景,需要自己过滤)
HttpServletRequest orgRequest;
//html过滤
private final static HTMLFilter htmlFilter = new HTMLFilter();
//没被包装过的HttpServletRequest(特殊场景,需要自己过滤)
HttpServletRequest orgRequest;
@Getter
private String bodyJson;
@ -35,13 +34,23 @@ public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapp
orgRequest = request;
}
/**
* 获取最原始的request
*/
public static HttpServletRequest getOrgRequest(HttpServletRequest request) {
if (request instanceof BodyReaderHttpServletRequestWrapper) {
return ((BodyReaderHttpServletRequestWrapper) request).getOrgRequest();
}
return request;
}
@Override
public ServletInputStream getInputStream() throws IOException {
if(!MediaType.APPLICATION_JSON_VALUE.equalsIgnoreCase(super.getHeader(HttpHeaders.CONTENT_TYPE))){
if (!MediaType.APPLICATION_JSON_VALUE.equalsIgnoreCase(super.getHeader(HttpHeaders.CONTENT_TYPE))) {
return super.getInputStream();
}
if(StrUtil.isBlank(bodyJson)){
if (StrUtil.isBlank(bodyJson)) {
bodyJson = IOUtils.toString(super.getInputStream(), "utf-8");
}
final ByteArrayInputStream bis = new ByteArrayInputStream(bodyJson.getBytes("utf-8"));
@ -124,15 +133,4 @@ public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapp
return orgRequest;
}
/**
* 获取最原始的request
*/
public static HttpServletRequest getOrgRequest(HttpServletRequest request) {
if (request instanceof BodyReaderHttpServletRequestWrapper) {
return ((BodyReaderHttpServletRequestWrapper) request).getOrgRequest();
}
return request;
}
}

69
tduck-api/src/main/resources/application-prod1.yml

@ -0,0 +1,69 @@
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: mpw:KgK8kYuLFIT6b38+H+cB2E0GrL/C825hS6MlTg/E1/OcM4OMb/QFCldOmz3WjLYrr3LMk/6L7jajw0Bkgm0934e1p36Ta0gd9oYG+dWzBNc9Wto8+Asb1nZPGRm3Bu/oxCszzI5m7lzhc/WniWnWQErooPUGkjRn+KeQT0sFd7irBgFCweQnR4Xh6CqpCreajKEFDCJ3+unEtJHDZEsNY0gCeEE0odBH+zKRH1BpgKg=
username: mpw:7mG/EMKw74oyiB/LMzqIqg==
password: mpw:PABnKNLVmn27Oo362cuTtw==
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
maximum-pool-size: 15
auto-commit: true
idle-timeout: 30000
pool-name: DatebookHikariCP
max-lifetime: 1800000
connection-test-query: SELECT 1 FROM DUAL
redis:
database: 8
host: mpw:YzdftpXBBgLy7VmokWdrK4hjKB8WCW7bwcnfV6nB7t/xo2muj30soiTGS4XKPhAU
port: 6379
password: mpw:bZqFg950btNM/dsR0vycDA==
timeout: 6000ms # 连接超时时长(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
mail:
host: smtp.exmail.qq.com
username: server@tduckapp.com
password: 8rH69a47pV2qynVE
logging:
level:
com.tduck.cloud: debug
config: classpath:logback-spring.xml
# 请求日志是否打印
platform:
qq:
oauth:
appId: mpw:rk3097HYqXT7Vi2G2FviZg==
secret: mpw:GMhX2wUES+IEzN7ew5tsNBnfn7qnYAwd4yboiePZJY7bvn26Pxo3P1BlbAkazhk/
oss:
ossType: 1
endpoint: 12
accessKeyId: mpw:WOF+Vhv3nd9ToNO8rR5IhV9HOk413qQnioFfywJxM+IIQ4mrgDdYwMKsnvbG3FQR
accessKeySecret: mpw:5EqsGyYp3MbnnIf1xGKUCz2PK6LlkQ0udZBrT4CfQOAfxcHt+NsbLc8+vp7vscF1
bucketName: tduck-cloud
domain: https://qiniu.smileyi.top
sms:
secretId: mpw:W+RKqswyYOtgpv6UOni0TqBLkjsoOaXnHAgiXBZjiutn7r5TAwBJlJ48wA6bBilO
secretKey: mpw:5zzzynMufvVYi34OmI9mQH07HtTLg3R7YTuil3DS+bNw9uIodim2pw5qkK9lNish
appId: 1400461467
sign: smileyi知识分享
validateCodeTemplateId: 808150
retrievePwdValidateCodeTemplateId: 809014
front:
baseUrl: https://demo.tduckapp.com/
resetPwdUrl: https://demo.tduckapp.com//forget/password?code={}&email={}
updateEmailUrl: https://demo.tduckapp.com/forget/validate?type=updateEmail&code={}&email={}
wx:
mp:
configs:
- appId: mpw:IgmCUt6NlcOhudRzHINgCJkgssnDCnslYwtjhGhfbmU=
secret: mpw:C1IFFy1OS1kSw3PYQFebqVBS9GCbWEpR++3Wk7uIjEwCIIBwdVth9P27dJgOQynX
token: mpw:KvJQe4MSJ1ngbKSryGmFe2k/dGlQ3Aoqpm1GK7Q4JZxYHTAUzUt5AFf0midIOB17
aesKey: mpw:LPii9VslV/UE8UFfsK24EbR9reriiaDS0vW+by5705LWo1znd+P+DlxuEE1vXCmO

2
tduck-api/src/main/resources/templates/mail/reg-code.html

@ -5,7 +5,7 @@
<title>注册验证码</title>
</head>
<body>
<h4>欢迎您注册TDuck,验证码五分钟内有效。</h4>
<h4>欢迎您注册TDuck,验证码五分钟内有效。</h4>
您的验证码为:<span th:text="${code}"></span>
</body>
</html>

14
tduck-api/src/main/resources/templates/mail/reset-password.html

@ -5,7 +5,7 @@
<title>重置密码</title>
</head>
<body>
<table id="backgroundTable" style="background-color: #efefef; color:#4c4c4c" border="0" cellpadding="0" cellspacing="0"
<table border="0" cellpadding="0" cellspacing="0" id="backgroundTable" style="background-color: #efefef; color:#4c4c4c"
width="100%">
<tbody>
<tr>
@ -17,13 +17,13 @@
</tr>
</tbody>
</table>
<table id="templateContainer" border="0" cellpadding="0" cellspacing="0" width="689">
<table border="0" cellpadding="0" cellspacing="0" id="templateContainer" width="689">
<tbody>
<tr style="background-color: #fff; padding: 15px">
<td align="center" valign="center">
<img
style="width: 186px; height: 54px;"
src="http://tduck.smileyi.top/img/indexLogo.372abcee.png"/>
src="http://tduck.smileyi.top/img/indexLogo.372abcee.png"
style="width: 186px; height: 54px;"/>
<span style="
display: inline-block;
vertical-align: bottom;
@ -41,14 +41,14 @@
<br/>
<p style="padding-bottom: 5px">请点击下面链接重置密码:</p>
<p style="color:#848484 ;padding-bottom:5px">
<p th:text="${resetPwdUrl}"></p>
<p th:text="${resetPwdUrl}"></p>
</p>
<p style=" color:#848484; padding-bottom:5px">
如果以上链接无法点击,请将上面的地址复制到你的浏览器(如IE)的地址栏进入问卷网。</p>
<br/>
<div style="color:#848484;">
<a style="color:#2672FF; text-decoration:none;"
href="http://tduck.smileyi.top/">Tduck</a>
<a href="http://tduck.smileyi.top/"
style="color:#2672FF; text-decoration:none;">Tduck</a>
让你轻松创建专业问卷,快速完成调研任务!
</div>
</div>

14
tduck-api/src/main/resources/templates/mail/update-account-email.html

@ -5,7 +5,7 @@
<title>重置密码</title>
</head>
<body>
<table id="backgroundTable" style="background-color: #efefef; color:#4c4c4c" border="0" cellpadding="0" cellspacing="0"
<table border="0" cellpadding="0" cellspacing="0" id="backgroundTable" style="background-color: #efefef; color:#4c4c4c"
width="100%">
<tbody>
<tr>
@ -17,13 +17,13 @@
</tr>
</tbody>
</table>
<table id="templateContainer" border="0" cellpadding="0" cellspacing="0" width="689">
<table border="0" cellpadding="0" cellspacing="0" id="templateContainer" width="689">
<tbody>
<tr style="background-color: #fff; padding: 15px">
<td align="center" valign="center">
<img
style="width: 186px; height: 54px;"
src="http://tduck.smileyi.top/img/indexLogo.372abcee.png"/>
src="http://tduck.smileyi.top/img/indexLogo.372abcee.png"
style="width: 186px; height: 54px;"/>
<span style="
display: inline-block;
vertical-align: bottom;
@ -41,14 +41,14 @@
</p>
<p style="color:#848484 ;padding-bottom:5px">
<p th:text="${updateEmailUrl}"></p>
<p th:text="${updateEmailUrl}"></p>
</p>
<p style=" color:#848484; padding-bottom:5px">
如果以上链接无法点击,请将上面的地址复制到你的浏览器(如IE)的地址栏进入TDUCK。</p>
<br/>
<div style="color:#848484;">
<a style="color:#2672FF; text-decoration:none;"
href="http://tduck.smileyi.top/">Tduck</a>
<a href="http://tduck.smileyi.top/"
style="color:#2672FF; text-decoration:none;">Tduck</a>
让你轻松创建专业问卷,快速完成调研任务!
</div>
</div>

4
tduck-common/pom.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.tduck</groupId>

10
tduck-common/src/main/java/com/tduck/cloud/common/constant/CommonConstants.java

@ -17,6 +17,10 @@ public interface CommonConstants {
* 1:正常 0 :禁用
*/
Integer USER_NORMAL_STATUS = 1;
/**
* 文件下载content_type
*/
String FILE_DOWNLOAD_CONTENT_TYPE = "application/octet-stream;charset=UTF-8";
/**
@ -86,10 +90,4 @@ public interface CommonConstants {
}
/**
* 文件下载content_type
*/
String FILE_DOWNLOAD_CONTENT_TYPE = "application/octet-stream;charset=UTF-8";
}

2
tduck-common/src/main/java/com/tduck/cloud/common/email/MailService.java

@ -29,7 +29,7 @@ public interface MailService {
* @param toAddr
* @param title
* @param template 模板
* @param params 参数
* @param params 参数
*/
void sendTemplateHtmlMail(String toAddr, String title, String template, Map<String, Object> params);

4
tduck-common/src/main/java/com/tduck/cloud/common/email/MailServiceImpl.java

@ -27,9 +27,9 @@ import java.util.Map;
@RequiredArgsConstructor
public class MailServiceImpl implements MailService {
private final TemplateEngine templateEngine;
private final TemplateEngine templateEngine;
private final JavaMailSender mailSender;
private final JavaMailSender mailSender;
/**
* 注入常量

10
tduck-common/src/main/java/com/tduck/cloud/common/mybatis/handler/JacksonTypeHandler.java

@ -34,6 +34,11 @@ public class JacksonTypeHandler extends AbstractJsonTypeHandler<Object> {
this.type = type;
}
public static void setObjectMapper(ObjectMapper objectMapper) {
Assert.notNull(objectMapper, "ObjectMapper should not be null");
JacksonTypeHandler.objectMapper = objectMapper;
}
@Override
protected Object parse(String json) {
try {
@ -56,9 +61,4 @@ public class JacksonTypeHandler extends AbstractJsonTypeHandler<Object> {
throw new RuntimeException(e);
}
}
public static void setObjectMapper(ObjectMapper objectMapper) {
Assert.notNull(objectMapper, "ObjectMapper should not be null");
JacksonTypeHandler.objectMapper = objectMapper;
}
}

13
tduck-common/src/main/java/com/tduck/cloud/common/util/RedisUtils.java

@ -10,7 +10,6 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
*
* @author smalljop
* @date 23/09/2018
*/
@ -18,12 +17,6 @@ import java.util.concurrent.TimeUnit;
@Slf4j
public class RedisUtils {
private final RedisTemplate<String, Object> redisTemplate;
public RedisUtils(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 默认过期时长单位 一天
*/
@ -32,8 +25,10 @@ public class RedisUtils {
* 不设置过期时长
*/
public final static long NOT_EXPIRE = -1;
private final RedisTemplate<String, Object> redisTemplate;
public RedisUtils(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 写入缓存

1
tduck-common/src/main/java/com/tduck/cloud/common/util/Result.java

@ -83,7 +83,6 @@ public class Result<T> implements Serializable {
}
@JsonIgnore
public Boolean isDataNull() {
return ObjectUtil.isNull(data);

4
tduck-project/pom.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.tduck</groupId>

2
tduck-project/src/main/java/com/tduck/cloud/project/entity/enums/ProjectStatusEnum.java

@ -19,7 +19,7 @@ public enum ProjectStatusEnum {
CREATE(1, "未发布"),
RELEASE(2, "收集中"),
STOP(3 ,"停止发布");
STOP(3, "停止发布");
@EnumValue

3
tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/CheckboxExpandStruct.java

@ -14,7 +14,8 @@ public class CheckboxExpandStruct {
/**
* 最小
*/
private Integer min;/**
private Integer min;
/**
* 最大
*/
private Integer max;

1
tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/DescTextExpandStruct.java

@ -5,6 +5,7 @@ import lombok.Data;
/**
* 文字描述组件属性
*
* @author smalljop
*/
@Data

4
tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SelectExpandStruct.java

@ -21,7 +21,7 @@ public class SelectExpandStruct {
private Boolean multiple;
/**
* 塞选
* 塞选
*/
private Boolean filterable;
/**
@ -40,8 +40,6 @@ public class SelectExpandStruct {
private String controlsPosition;
public static class Option {
public String label;
public Integer value;

1
tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SignPadExpandStruct.java

@ -5,6 +5,7 @@ import lombok.Data;
/**
* 手写签名组件属性
*
* @author smalljop
*/
@Data

1
tduck-project/src/main/java/com/tduck/cloud/project/entity/struct/SwitchExpandStruct.java

@ -11,5 +11,4 @@ import lombok.Data;
public class SwitchExpandStruct {
}

1
tduck-project/src/main/java/com/tduck/cloud/project/mapper/UserProjectLogicMapper.java

@ -1,7 +1,6 @@
package com.tduck.cloud.project.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tduck.cloud.project.entity.UserProjectEntity;
import com.tduck.cloud.project.entity.UserProjectLogicEntity;
/**

1
tduck-project/src/main/java/com/tduck/cloud/project/service/ProjectDashboardService.java

@ -49,7 +49,6 @@ public interface ProjectDashboardService {
/**
*
* @param projectKey
* @return
*/

15
tduck-project/src/main/java/com/tduck/cloud/project/service/impl/ProjectDashboardServiceImpl.java

@ -19,7 +19,6 @@ import com.tduck.cloud.project.service.UserProjectItemService;
import com.tduck.cloud.project.service.UserProjectResultService;
import com.tduck.cloud.project.vo.ProjectReportVO;
import lombok.RequiredArgsConstructor;
import lombok.Value;
import org.springframework.stereotype.Service;
import java.util.*;
@ -92,19 +91,19 @@ public class ProjectDashboardServiceImpl implements ProjectDashboardService {
// 储存标题与可选项
Map<String, Map<String, Integer>> map = new HashMap<>();
for (UserProjectItemEntity userProjectItemEntity : projectItemList) {
if (typeEnumList.contains(userProjectItemEntity.getType())){
if (typeEnumList.contains(userProjectItemEntity.getType())) {
Map<String, Integer> optionMap = new LinkedHashMap<>();
List<Map<String,Object>> options = (List<Map<String,Object>>)userProjectItemEntity.getExpand().get("options");
List<Map<String, Object>> options = (List<Map<String, Object>>) userProjectItemEntity.getExpand().get("options");
for (Map<String, Object> option : options) {
optionMap.put(option.get("label").toString(), 0);
}
// 单选框类型
map.put("field"+userProjectItemEntity.getFormItemId(),optionMap);
map.put("field" + userProjectItemEntity.getFormItemId(), optionMap);
// id and label
ProjectReportVO.Analysis analysis = new ProjectReportVO.Analysis();
analysis.setLabel(userProjectItemEntity.getLabel());
analysis.setType(userProjectItemEntity.getType().getDesc());
formMap.put("field"+userProjectItemEntity.getFormItemId(), analysis);
formMap.put("field" + userProjectItemEntity.getFormItemId(), analysis);
}
}
@ -112,14 +111,14 @@ public class ProjectDashboardServiceImpl implements ProjectDashboardService {
Map<String, Object> processData = userProjectResultEntity.getProcessData();
for (Map.Entry<String, Map<String, Integer>> entry : map.entrySet()) {
if (processData.containsKey(entry.getKey())){
if (processData.containsKey(entry.getKey())) {
// 结果中字段值 处理多选
String[] fieldValues = processData.get(entry.getKey()).toString().split(",");
for (int i = 0; i < fieldValues.length; i++) {
// 获取问题集合中对应的选项的count
Integer count = entry.getValue().get(fieldValues[i]);
if(ObjectUtil.isNotNull(count)){
entry.getValue().put(fieldValues[i], count +1);
if (ObjectUtil.isNotNull(count)) {
entry.getValue().put(fieldValues[i], count + 1);
}
}
}

2
tduck-project/src/main/java/com/tduck/cloud/project/vo/OperateProjectItemVO.java

@ -29,6 +29,4 @@ public class OperateProjectItemVO {
private Boolean operateSuccess;
}

24
tduck-project/src/main/java/com/tduck/cloud/project/vo/ProjectReportVO.java

@ -89,17 +89,29 @@ public class ProjectReportVO {
@AllArgsConstructor
@NoArgsConstructor
public static class Analysis {
/** 类型 */
/**
* 类型
*/
private String type;
/** 题目名称 */
/**
* 题目名称
*/
private String label;
/** 标签集 */
/**
* 标签集
*/
private List<String> fieldName;
/** 数据集 */
/**
* 数据集
*/
private List<Integer> data;
/** 合集 */
/**
* 合集
*/
private Map map;
/** 图表类型 */
/**
* 图表类型
*/
private String chartType = "pie";
}
}

4
tduck-storage/pom.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.tduck</groupId>

2
tduck-storage/src/main/java/com/tduck/cloud/storage/cloud/OssStorageFactory.java

@ -24,7 +24,7 @@ public final class OssStorageFactory {
return new AliyunOssStorageService(config);
} else if (config.getOssType() == OssTypeEnum.UPYUN) {
return new UpyunStorageService(config);
}else if (config.getOssType() == OssTypeEnum.LOCAL) {
} else if (config.getOssType() == OssTypeEnum.LOCAL) {
return new localStorageService(config);
}
return null;

8
tduck-storage/src/main/java/com/tduck/cloud/storage/entity/enums/OssTypeEnum.java

@ -32,13 +32,13 @@ public enum OssTypeEnum {
LOCAL(3);
@EnumValue
@JsonValue
private final int value;
@JsonCreator
OssTypeEnum(int value) {
this.value = value;
}
@EnumValue
@JsonValue
private final int value;
}

4
tduck-wx-mp/pom.xml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>tduck-platform</artifactId>

4
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/builder/ImageBuilder.java

@ -15,8 +15,8 @@ public class ImageBuilder extends AbstractBuilder {
WxMpService service) {
WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return m;
}

4
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/builder/TextBuilder.java

@ -14,8 +14,8 @@ public class TextBuilder extends AbstractBuilder {
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage,
WxMpService service) {
WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return m;
}

1
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/config/WxMpConfiguration.java

@ -48,7 +48,6 @@ public class WxMpConfiguration {
private final StringRedisTemplate redisTemplate;
@Bean
public WxMpService wxMpService() {
final List<WxMpProperties.MpConfig> configs = this.properties.getConfigs();

10
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/config/WxMpProperties.java

@ -25,6 +25,11 @@ public class WxMpProperties {
*/
private List<MpConfig> configs;
@Override
public String toString() {
return JsonUtils.objToJson(this);
}
@Data
public static class MpConfig {
/**
@ -47,9 +52,4 @@ public class WxMpProperties {
*/
private String aesKey;
}
@Override
public String toString() {
return JsonUtils.objToJson(this);
}
}

1
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/entity/WxMpUserEntity.java

@ -62,5 +62,4 @@ public class WxMpUserEntity extends BaseEntity<WxMpUserEntity> {
private Long userId;
}

2
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/LocationHandler.java

@ -33,7 +33,7 @@ public class LocationHandler extends AbstractHandler {
//上报地理位置事件
this.logger.info("上报地理位置,纬度 : {},经度 : {},精度 : {}",
wxMessage.getLatitude(), wxMessage.getLongitude(), String.valueOf(wxMessage.getPrecision()));
wxMessage.getLatitude(), wxMessage.getLongitude(), String.valueOf(wxMessage.getPrecision()));
return null;

8
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/MenuHandler.java

@ -21,15 +21,15 @@ public class MenuHandler extends AbstractHandler {
Map<String, Object> context, WxMpService weixinService,
WxSessionManager sessionManager) {
String msg = String.format("type:%s, event:%s, key:%s",
wxMessage.getMsgType(), wxMessage.getEvent(),
wxMessage.getEventKey());
wxMessage.getMsgType(), wxMessage.getEvent(),
wxMessage.getEventKey());
if (EventType.VIEW.equals(wxMessage.getEvent())) {
return null;
}
return WxMpXmlOutMessage.TEXT().content(msg)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
}
}

8
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/MsgHandler.java

@ -31,11 +31,11 @@ public class MsgHandler extends AbstractHandler {
//当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服
try {
if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
&& weixinService.getKefuService().kfOnlineList()
.getKfOnlineList().size() > 0) {
&& weixinService.getKefuService().kfOnlineList()
.getKfOnlineList().size() > 0) {
return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE()
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser()).build();
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser()).build();
}
} catch (WxErrorException e) {
e.printStackTrace();

4
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/SubscribeHandler.java

@ -36,9 +36,9 @@ public class SubscribeHandler extends AbstractHandler {
private final ScanStrategyContext scanStrategyContext;
private String LOGIN_STR = "login";
private String LOGIN_STR = "login";
private String QRSCENE_STR = "qrscene_";
private String QRSCENE_STR = "qrscene_";
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,

5
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/handler/scan/ScanStrategyContext.java

@ -5,7 +5,6 @@ import com.tduck.cloud.common.util.JsonUtils;
import com.tduck.cloud.wx.mp.request.WxMpQrCodeGenRequest;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
@ -19,10 +18,8 @@ import java.util.Map;
@RequiredArgsConstructor
public class ScanStrategyContext {
private final Map<String, ScanStrategy> scanStrategy;
private static String SCAN_STRATEGY_NAME = "ScanStrategy";
private final Map<String, ScanStrategy> scanStrategy;
/**
* 二维码场景值

6
tduck-wx-mp/src/main/java/com/tduck/cloud/wx/mp/service/impl/WxMpUserMsgServiceImpl.java

@ -19,7 +19,7 @@ public class WxMpUserMsgServiceImpl implements WxMpUserMsgService {
@Lazy
@Autowired
private WxMpService wxMpService;
private WxMpService wxMpService;
@Override
public void sendKfTextMsg(String appId, String openId, String content) {
@ -29,9 +29,9 @@ public class WxMpUserMsgServiceImpl implements WxMpUserMsgService {
.content(content)
.build();
try {
if(StrUtil.isBlank(appId)){
if (StrUtil.isBlank(appId)) {
wxMpService.getKefuService().sendKefuMessage(msg);
}else{
} else {
wxMpService.switchoverTo(appId).getKefuService().sendKefuMessage(msg);
}
} catch (WxErrorException e) {

Loading…
Cancel
Save