Compare commits

...

1660 Commits

Author SHA1 Message Date
fit2cloudrd
8a4d5f066c Merge pull request #8397 from dataease/dev-v2
merge
2024-03-07 10:46:35 +08:00
fit2cloudrd
116601bbbd Merge pull request #8395 from dataease/pr@v2_fix_file_name
fix: 修复升级脚本对安装包文件后缀的处理
2024-03-07 10:25:28 +08:00
xuwei-fit2cloud
102c975f1e fix: 修复升级脚本对安装包文件后缀的处理 2024-03-07 10:24:50 +08:00
fit2cloud-chenyw
a9bff32a83 Merge pull request #8386 from dataease/pr@dev-v2@fix_appearance_platform_copywriting
fix(X-Pack): 外观设置-平台设置文案错误
2024-03-06 17:16:42 +08:00
fit2cloud-chenyw
98ec56be69 fix(X-Pack): 外观设置-平台设置文案错误 2024-03-06 17:15:55 +08:00
dataeaseShu
bf85f4352f Merge pull request #8383 from dataease/pr@dev-v2_logo_color
fix(系统设置): Logo颜色跟随主题
2024-03-06 15:49:33 +08:00
dataeaseShu
80bae5f5cb fix(系统设置): Logo颜色跟随主题 2024-03-06 15:48:51 +08:00
fit2cloud-chenyw
196ea6f095 Merge pull request #8377 from dataease/pr@dev-v2@fix_system_filter
fix: 树形选择器点击节点选中数据无效
2024-03-06 15:04:38 +08:00
fit2cloud-chenyw
c97940b4b0 fix: 树形选择器点击节点选中数据无效 2024-03-06 15:03:07 +08:00
dataeaseShu
7232e2222e Merge pull request #8376 from dataease/pr@dev-v2_form_error
fix(仪表板): 编辑主题名称异常提示和封面字体重叠
2024-03-06 14:43:25 +08:00
dataeaseShu
3335de0c53 fix(仪表板): 编辑主题名称异常提示和封面字体重叠 2024-03-06 14:42:46 +08:00
dataeaseShu
8310683398 Merge pull request #8375 from dataease/pr@dev-v2_logo
fix(系统设置): 顶部导航背景色设置为浅色,导航文字和Logo与背景颜色相同,无法查看
2024-03-06 14:14:25 +08:00
dataeaseShu
a84d511d50 fix(系统设置): 顶部导航背景色设置为浅色,导航文字和Logo与背景颜色相同,无法查看 2024-03-06 14:13:52 +08:00
dataeaseShu
2c4910735c Merge pull request #8373 from dataease/pr@dev-v2_de_link
fix(移动端): 访问公共链接,跳转到登录界面
2024-03-06 13:49:42 +08:00
dataeaseShu
f43aa84879 fix(移动端): 访问公共链接,跳转到登录界面 2024-03-06 13:49:11 +08:00
fit2cloud-chenyw
8d461c57bd Merge pull request #8372 from dataease/pr@dev-v2@style_xpack_authentication
style(X-Pack): 认证设置卡片间距值
2024-03-06 13:39:33 +08:00
fit2cloud-chenyw
6325f36602 style(X-Pack): 认证设置卡片间距值 2024-03-06 13:38:47 +08:00
fit2cloud-chenyw
b5b992d816 Merge pull request #8370 from dataease/pr@dev-v2@style_basic_editor
Pr@dev v2@style basic editor
2024-03-06 13:31:13 +08:00
fit2cloud-chenyw
9730c4282f style(系统设置): 基础设置-抽屉页面底部分割线色值 2024-03-06 13:30:22 +08:00
fit2cloud-chenyw
7a2f0aebb3 style(系统设置): 基础设置-第三方自动创建用户高度错误 2024-03-06 13:27:14 +08:00
fit2cloud-chenyw
b23f51b903 Merge pull request #8369 from dataease/pr@dev-v2@style_modify_pwd_form
style(X-Pack): 修改密码表单内间距值错误
2024-03-06 13:15:28 +08:00
fit2cloud-chenyw
5d1bb3798e style(X-Pack): 修改密码表单内间距值错误 2024-03-06 13:14:34 +08:00
fit2cloud-chenyw
16fdc882a6 Merge pull request #8368 from dataease/pr@dev-v2@style_xpack_auth_page_margin
style(X-Pack): 权限配置页面间距值错误
2024-03-06 12:56:25 +08:00
fit2cloud-chenyw
5797f082de style(X-Pack): 权限配置页面间距值错误 2024-03-06 12:55:40 +08:00
Junjun
f8c7fa9369 Merge pull request #8367 from dataease/pr@dev-v2@faet_calcite
feat: 启用calcite运算符表
2024-03-06 12:43:51 +08:00
junjun
9b2db7fe1d feat: 启用calcite运算符表 2024-03-06 12:43:10 +08:00
fit2cloud-chenyw
20ae879296 Merge pull request #8365 from dataease/pr@dev-v2@style_xpack_wecom_qr
style(X-Pack): 企业微信扫码登录文案显示不完整
2024-03-06 12:05:55 +08:00
fit2cloud-chenyw
484406e43f Merge branch 'dev-v2' into pr@dev-v2@style_xpack_wecom_qr 2024-03-06 12:05:19 +08:00
fit2cloud-chenyw
f1c0af0d76 Merge pull request #8364 from dataease/pr@dev-v2@style_resize_window_appearance
style(X-Pack): 外观配置-拖动窗口宽度导致页面混乱
2024-03-06 12:03:09 +08:00
fit2cloud-chenyw
2b04990302 style(X-Pack): 企业微信扫码登录文案显示不完整 2024-03-06 11:58:42 +08:00
Junjun
c2a1a2778f Merge pull request #8363 from dataease/pr@dev-v2@feat_calcite
feat: 启用calcite运算符表
2024-03-06 11:57:47 +08:00
junjun
bae30bb60f feat: 启用calcite运算符表 2024-03-06 11:54:05 +08:00
dataeaseShu
2d931cde47 Merge pull request #8362 from dataease/pr@dev-v2_mobile_tab
fix(移动端): tab组件中无法正常显示过滤组件和图表
2024-03-06 11:46:11 +08:00
dataeaseShu
2ade1a1eeb fix(移动端): tab组件中无法正常显示过滤组件和图表 2024-03-06 11:45:49 +08:00
fit2cloud-chenyw
8d132a87da style(X-Pack): 外观配置-拖动窗口宽度导致页面混乱 2024-03-06 11:18:44 +08:00
fit2cloud-chenyw
098cbbf624 Merge pull request #8361 from dataease/pr@dev-v2@fix_xpack_appearance_revert
fix(X-Pack): 外观配置-恢复默认对图片无效
2024-03-06 10:57:12 +08:00
fit2cloud-chenyw
09ee94d157 fix(X-Pack): 外观配置-恢复默认对图片无效 2024-03-06 10:56:22 +08:00
fit2cloud-chenyw
ee749ca5a4 Merge pull request #8360 from dataease/pr@dev-v2@fix_xpack_appearance_copywriting
fix(X-Pack): 外观配置-文案修改
2024-03-06 10:38:40 +08:00
fit2cloud-chenyw
47fba161b5 fix(X-Pack): 外观配置-文案修改 2024-03-06 10:37:46 +08:00
dataeaseShu
1ea19e78f6 Merge pull request #8352 from dataease/pr@dev-v2_bug_fix
Pr@dev v2 bug fix
2024-03-05 17:47:28 +08:00
dataeaseShu
2e4aff1a74 fix(仪表板): 仪表板复用缩放按钮显示不正确 2024-03-05 17:46:58 +08:00
dataeaseShu
d9a796b9b1 fix(仪表板): 仪表板联动后查看仪表板配置,依然显示清除所有联动 2024-03-05 17:40:01 +08:00
dataeaseShu
6a8fa05f07 Merge pull request #8348 from dataease/pr@dev-v2_mobile_fix
fix(系统设置): 引擎设置缺少参数
2024-03-05 16:42:47 +08:00
dataeaseShu
bea95569dd fix(系统设置): 引擎设置缺少参数 2024-03-05 16:41:30 +08:00
dataeaseShu
ccd31aa5b7 Merge pull request #8346 from dataease/pr@dev-v2_dzz_mobile
Pr@dev v2 dzz mobile
2024-03-05 16:35:18 +08:00
dataeaseShu
db2456db86 fix(移动端): 查询组件,日期查询条件选择日期的范围太小,只能选前后 10 年的日期 2024-03-05 16:33:41 +08:00
jianneng-fit2cloud
6dbbd0aaa1 Merge pull request #8345 from dataease/pr@dev-v2@sync-task-sync-delete-data
fix(同步管理-任务管理): 修复全量同步时,源数据库表数据被删除,目标数据库表数据不能同步删除的问题
2024-03-05 16:26:38 +08:00
jianneng-fit2cloud
15e24140be fix(同步管理-任务管理): 修复全量同步时,源数据库表数据被删除,目标数据库表数据不能同步删除的问题 2024-03-05 16:25:57 +08:00
dataeaseShu
5a217e8896 fix(移动端): 禁用移动端图表跳转 2024-03-05 16:12:58 +08:00
fit2cloud-chenyw
ba909e2064 Merge pull request #8340 from dataease/pr@dev-v2@chore_frontend
chore: 前端打包清理历史依赖
2024-03-05 15:04:11 +08:00
fit2cloud-chenyw
55739870c0 chore: 前端打包清理历史依赖 2024-03-05 15:03:20 +08:00
fit2cloud-chenyw
4ff8297ce0 Merge pull request #8339 from dataease/pr@dev-v2@style_xpack_appearance_login
style(X-Pack): 外观配置-登录页面配置样式优化
2024-03-05 15:01:40 +08:00
fit2cloud-chenyw
db2ec9f6e9 style(X-Pack): 外观配置-登录页面配置样式优化 2024-03-05 15:00:46 +08:00
fit2cloud-chenyw
fd1c6ea5ff Merge pull request #8338 from dataease/pr@dev-v2@perf__watermark_menu
perf(X-Pack): 水印菜单移到系统设置
2024-03-05 14:43:15 +08:00
fit2cloud-chenyw
c3de97e133 perf(X-Pack): 水印菜单移到系统设置 2024-03-05 14:41:56 +08:00
dataeaseShu
84475e2698 fix(工作台): 导入模板时,选择分类列表,添加分类功能挡住了最后一个分组 2024-03-05 14:35:08 +08:00
dataeaseShu
60a4b39408 Merge pull request #8335 from dataease/pr@dev-v2_dzz_mobile
fix(系统设置): 引擎设置样式优化
2024-03-05 13:57:23 +08:00
dataeaseShu
7321a9c58f fix(系统设置): 引擎设置样式优化 2024-03-05 13:53:49 +08:00
王嘉豪
ddf5360dd8 Merge pull request #8334 from dataease/pr@dev-v2@refactor_riche-text
refactor(仪表板): 富文本组件去掉无用的插件
2024-03-05 13:38:36 +08:00
wangjiahao
a6e3388e69 refactor(仪表板): 富文本组件去掉无用的插件 2024-03-05 13:36:31 +08:00
王嘉豪
7ab2e40fac Merge pull request #8333 from dataease/pr@dev-v2@refactor_shape-rename
refactor(数据大屏): 统一数据大屏图形组件命名规则
2024-03-05 13:01:04 +08:00
wangjiahao
1ddcac64aa refactor(数据大屏): 统一数据大屏图形组件命名规则 2024-03-05 13:00:14 +08:00
dataeaseShu
ad37dfe5ef Merge pull request #8324 from dataease/pr@dev-v2_dzz_mobile
fix(系统设置): 外观设置漏掉的样式
2024-03-05 10:15:48 +08:00
dataeaseShu
e71450caf6 fix(系统设置): 外观设置漏掉的样式 2024-03-05 10:14:28 +08:00
dataeaseShu
b046f8599c Merge pull request #8320 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 移动端设置样式问题
2024-03-04 18:29:58 +08:00
dataeaseShu
8c91088eab fix(移动端): 移动端设置样式问题 2024-03-04 18:29:21 +08:00
王嘉豪
78b4279598 Merge pull request #8317 from dataease/pr@dev-v2@fix_shape-drage-point
fix(数据大屏): 修复组件缩放到很小时右下拖拽点会使产生位置移问题
2024-03-04 18:23:07 +08:00
wangjiahao
c2afb68d33 fix(数据大屏): 修复组件缩放到很小时右下拖拽点会使产生位置移问题 2024-03-04 18:22:30 +08:00
wisonic-s
1fc90c4853 Merge pull request #8315 from dataease/pr@dev-v2@refactor_chart_define
refactor(图表): 视图统一定义为图表
2024-03-04 17:09:50 +08:00
wisonic-s
017490cbb3 refactor(图表): 视图统一定义为图表 2024-03-04 17:08:58 +08:00
王嘉豪
092c994e12 Merge pull request #8313 from dataease/pr@dev-v2@fix_shape-drage
fix(数据大屏): 修复组件保持宽高比例时,快速来回拖拽可能导致宽高比例有微小偏差问题
2024-03-04 16:50:09 +08:00
wangjiahao
58adc4f2f0 fix(数据大屏): 修复组件保持宽高比例时,快速来回拖拽可能导致宽高比例有微小偏差问题 2024-03-04 16:49:22 +08:00
fit2cloud-chenyw
eb264bc1cf Merge pull request #8309 from dataease/pr@dev-v2@style_login_page_foot
style: 登录页面页脚样式
2024-03-04 16:33:41 +08:00
fit2cloud-chenyw
9a2fd57adf style: 登录页面页脚样式 2024-03-04 16:31:09 +08:00
dataeaseShu
5e711566fc Merge pull request #8304 from dataease/pr@dev-v2_dzz_mobile
fix(系统设置): 外观设置漏掉的样式
2024-03-04 16:10:15 +08:00
dataeaseShu
6bef13f437 fix(系统设置): 外观设置漏掉的样式 2024-03-04 16:09:29 +08:00
王嘉豪
79ca631a6c Merge pull request #8303 from dataease/pr@dev-v2@fix_tabel-drag
fix(仪表板): 调整表格右侧拖拽区域,防止影响列宽调整
2024-03-04 16:00:27 +08:00
wangjiahao
9f17f6bdd0 fix(仪表板): 调整表格右侧拖拽区域,防止影响列宽调整 2024-03-04 15:59:03 +08:00
fit2cloud-chenyw
21b98ab68a Merge pull request #8302 from dataease/pr@dev-v2@fix_mobile_ui
fix: 移动端页面title未跟随外观设置
2024-03-04 15:41:03 +08:00
fit2cloud-chenyw
b6b3409c9f fix: 移动端页面title未跟随外观设置 2024-03-04 15:39:21 +08:00
fit2cloud-chenyw
d6b80b9636 Merge pull request #8301 from dataease/pr@dev-v2@style_drawer_foot
style: 右侧抽屉页面(编辑表单、过滤条件)底部样式
2024-03-04 15:26:55 +08:00
fit2cloud-chenyw
0beb5741f6 style: 右侧抽屉页面(编辑表单、过滤条件)底部样式 2024-03-04 15:25:31 +08:00
fit2cloud-chenyw
775b5a4620 Merge pull request #8298 from dataease/pr@dev-v2@fix_sync_community_resource
fix: 首次上传license同步社区版资源包含已删除的业务资源
2024-03-04 14:37:37 +08:00
fit2cloud-chenyw
31070a372d fix: 首次上传license同步社区版资源包含已删除的业务资源 2024-03-04 14:36:48 +08:00
王嘉豪
7ba01019cc Merge pull request #8297 from dataease/pr@dev-v2@fix_group-view
fix(数据大屏): 修复数据大屏中的组合组件内部视图标题缩放比例不正确问题
2024-03-04 13:52:21 +08:00
wangjiahao
f98c89c24a fix(数据大屏): 修复数据大屏中的组合组件内部视图标题缩放比例不正确问题 2024-03-04 13:51:40 +08:00
junjun
59b16702d1 refactor: 优化calcite SQL 2024-03-04 13:22:20 +08:00
dataeaseShu
ab135f0497 Merge pull request #8295 from dataease/pr@dev-v2_dzz_mobile
fix(数据集): 编译报错
2024-03-04 12:49:42 +08:00
dataeaseShu
e6f5d35c90 fix(数据集): 编译报错 2024-03-04 12:49:15 +08:00
junjun
00079f6ec5 refactor: 优化calcite SQL 2024-03-04 12:36:34 +08:00
王嘉豪
c0ee88f41f Merge pull request #8293 from dataease/pr@dev-v2@fix_rich-text
fix(图表): 修复富文本组件文本组件数字段落失效问题
2024-03-04 12:24:26 +08:00
wangjiahao
afc2877c0f fix(图表): 修复富文本组件文本组件数字段落失效问题 2024-03-04 12:23:24 +08:00
dataeaseShu
e90b9930bf Merge pull request #8291 from dataease/pr@dev-v2_dzz_mobile
Pr@dev v2 dzz mobile
2024-03-04 11:52:32 +08:00
dataeaseShu
79d712798e fix(移动端): web端和移动端过滤结果不一致 查询组件中日期查询条件不生效 2024-03-04 11:28:48 +08:00
dataeaseShu
813c02a045 fix(仪表板): 仪表板移动端配置每次保存后退出在此进行保存提示都会+1 2024-03-04 11:27:37 +08:00
wisonic-s
d384814604 Merge pull request #8290 from dataease/pr@dev-v2@refactor_optimize_pie_radius
refactor(视图): 优化饼图/玫瑰图默认外径为 80
2024-03-04 11:03:36 +08:00
wisonic-s
ff1e982648 refactor(视图): 优化饼图/玫瑰图默认外径为 80 2024-03-04 10:59:59 +08:00
王嘉豪
7298eae91c Merge pull request #8288 from dataease/pr@dev-v2@fix_formart
fix(图表): 修复指标表格式化百分比类型下单位后缀不生效问题
2024-03-04 10:55:38 +08:00
wangjiahao
06c82f2d8c fix(图表): 修复指标表格式化百分比类型下单位后缀不生效问题 2024-03-04 10:55:04 +08:00
王嘉豪
2a95d1f585 Merge pull request #8287 from dataease/pr@dev-v2@fix_color
fix(数据大屏): 修复编辑图标的颜色属性,在透明度输入框中使用删除键,会删掉对应的图表问题
2024-03-04 10:43:09 +08:00
wangjiahao
ad38bfcf5d fix(数据大屏): 修复编辑图标的颜色属性,在透明度输入框中使用删除键,会删掉对应的图表问题 2024-03-04 10:42:24 +08:00
dataeaseShu
34c23ba315 fix(系统设置): 修改系统主题后前端样式问题 2024-03-04 10:29:18 +08:00
dataeaseShu
0c82effa01 Merge pull request #8281 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 查看仪表板后,返回时建议能返回到查看操作发起的页面
2024-03-01 18:58:06 +08:00
dataeaseShu
aae22f34e7 fix(移动端): 查看仪表板后,返回时建议能返回到查看操作发起的页面 2024-03-01 18:57:19 +08:00
wisonic-s
2998043986 Merge pull request #8275 from dataease/pr@dev-v2@fix_indicator_name
fix(视图): 指标卡名称修改不生效 #8122
2024-03-01 16:19:19 +08:00
wisonic-s
57dca6ec88 fix(视图): 指标卡名称修改不生效 #8122 2024-03-01 16:18:45 +08:00
dataeaseShu
51fe632839 Merge pull request #8271 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 增加密码输入框图标
2024-03-01 15:32:27 +08:00
dataeaseShu
dbcfcd751e fix(移动端): 增加密码输入框图标 2024-03-01 15:31:32 +08:00
wisonic-s
8ba43c8835 Merge pull request #8269 from dataease/pr@dev-v2@fix_table_index_column_width
fix(视图): 表格开启序号后拖拽无法保存序号的列宽
2024-03-01 14:55:45 +08:00
wisonic-s
a8d359c25d fix(视图): 表格开启序号后拖拽无法保存序号的列宽 2024-03-01 14:55:05 +08:00
dataeaseShu
f528edd1f1 Merge pull request #8264 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 在移动端通过工作台我的收藏查看仪表板失败
2024-03-01 14:13:25 +08:00
dataeaseShu
d52e5a8efc fix(移动端): 在移动端通过工作台我的收藏查看仪表板失败 2024-03-01 14:12:26 +08:00
wisonic-s
d6ab331b71 Merge pull request #8263 from dataease/pr@dev-v2@fix_horizontal_bar_axis_format
fix(视图): 横向柱状图横轴格式化不显示
2024-03-01 12:44:27 +08:00
wisonic-s
f124fe7690 fix(视图): 横向柱状图横轴格式化不显示 2024-03-01 12:34:13 +08:00
fit2cloud-chenyw
f9e2a0293c Merge pull request #8262 from dataease/pr@dev-v2@fix_xpack_qr_login
fix(X-Pack): 扫码登录状态仅依赖飞书模块
2024-03-01 11:42:59 +08:00
fit2cloud-chenyw
b7abc3139d fix(X-Pack): 扫码登录状态仅依赖飞书模块 2024-03-01 11:42:07 +08:00
dataeaseShu
76d57a84c4 Merge pull request #8260 from dataease/pr@dev-v2_dzz_mobile
feat(仪表板): pc-移动端预览视图展示-交互设计
2024-03-01 10:46:44 +08:00
dataeaseShu
972bb8beb2 feat(仪表板): pc-移动端预览视图展示-交互设计 2024-03-01 10:46:11 +08:00
fit2cloud-chenyw
1c0adf84cf Merge pull request #8253 from dataease/pr@dev-v2@fix_sys_param
fix(X-Pack): 社区版本系统参数设置报错
2024-02-29 18:10:41 +08:00
fit2cloud-chenyw
8c040b312b fix(X-Pack): 社区版本系统参数设置报错 2024-02-29 18:09:06 +08:00
wisonic-s
8f7e65afc3 Merge pull request #8250 from dataease/pr@dev-v2@feat_table_stripe
Pr@dev v2@feat table stripe
2024-02-29 17:37:37 +08:00
wisonic-s
3049d42372 Merge remote-tracking branch 'origin/dev-v2' into dev-v2 2024-02-29 17:35:11 +08:00
wisonic-s
762c367f79 feat(视图): 表格支持斑马纹 2024-02-29 17:34:59 +08:00
fit2cloud-chenyw
1e0cbb19da Merge pull request #8249 from dataease/pr@dev-v2@fix_iframe_embedded
fix(嵌入式): iframe嵌入式模块树无法加载
2024-02-29 17:18:20 +08:00
fit2cloud-chenyw
a4c9289f3d fix(嵌入式): iframe嵌入式模块树无法加载 2024-02-29 17:17:24 +08:00
fit2cloud-chenyw
db77e242f0 Merge pull request #8248 from dataease/pr@dev-v2@chore_tinymce_package
chore(X-Pack): tinymce依赖切换到core
2024-02-29 16:59:14 +08:00
fit2cloud-chenyw
970ceb6d40 chore(X-Pack): tinymce依赖切换到core 2024-02-29 16:58:20 +08:00
fit2cloud-chenyw
be2071758c Merge pull request #8247 from dataease/pr@dev-v2@chore_version
chore: 版本号升级到2.4.0
2024-02-29 16:36:15 +08:00
fit2cloud-chenyw
c2f8055bb8 chore: 版本号升级到2.4.0 2024-02-29 16:35:23 +08:00
fit2cloud-chenyw
174a3ddb77 Merge pull request #8246 from dataease/pr@dev-v2@feat_platform_user_config
feat(X-Pack): 第三方平台用户组织角色配置
2024-02-29 16:28:41 +08:00
fit2cloud-chenyw
0cac70f1bb feat(X-Pack): 第三方平台用户组织角色配置 2024-02-29 16:27:27 +08:00
王嘉豪
bbb01fc8b0 Merge pull request #8245 from dataease/pr@dev-v2@fix_richtext-debug3
fix(仪表板): 修复因与xpack冲突导致富文本组件不可用问题
2024-02-29 16:02:51 +08:00
wangjiahao
213ad3ac80 fix(仪表板): 修复因与xpack冲突导致富文本组件不可用问题 2024-02-29 15:58:26 +08:00
dataeaseShu
d63af3e16c Merge pull request #8244 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 暂无数据
2024-02-29 15:41:58 +08:00
dataeaseShu
24bf19791a fix(移动端): 暂无数据 2024-02-29 15:41:09 +08:00
王嘉豪
a32f0130d1 Merge pull request #8242 from dataease/pr@dev-v2@fix_richtext-debug2
revert: 删除多余提交
2024-02-29 13:42:07 +08:00
wangjiahao
26a5447ed1 revert: 删除多余提交 2024-02-29 13:40:46 +08:00
王嘉豪
3cad208355 Merge pull request #8241 from dataease/pr@dev-v2@fix_richtext-debug
perf(数据大屏): 打开sourcemap
2024-02-29 12:49:37 +08:00
wangjiahao
fc98395b1f perf(数据大屏): 打开sourcemap 2024-02-29 12:47:48 +08:00
dataeaseShu
afdbb6eebd Merge pull request #8240 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 登录页面优化
2024-02-29 11:49:42 +08:00
dataeaseShu
028b90a354 fix(移动端): 登录页面优化 2024-02-29 11:48:57 +08:00
王嘉豪
e9bfd1ff14 Merge pull request #8238 from dataease/pr@dev-v2@fix_richtext-bold
fix(仪表板): 修复富文本组件华文仿宋等部分字体加粗没反应问题 #8174
2024-02-29 11:29:52 +08:00
wangjiahao
59ad3b036d fix(仪表板): 修复富文本组件华文仿宋等部分字体加粗没反应问题 #8174 2024-02-29 11:29:09 +08:00
王嘉豪
4d8fd8ac15 Merge pull request #8236 from dataease/pr@dev-v2@fix_template
fix(系统设置): 修复模版列表导入时中选择的分类可能和右侧展示的模版分类不一致问题
2024-02-29 11:04:01 +08:00
wangjiahao
1c83851ed5 fix(系统设置): 修复模版列表导入时中选择的分类可能和右侧展示的模版分类不一致问题 2024-02-29 11:02:13 +08:00
fit2cloud-chenyw
927d0f783b Merge pull request #8235 from dataease/pr@dev-v2@style_xpack_embedded_grid
style(X-Pack): 嵌入式列表列宽
2024-02-29 10:47:23 +08:00
fit2cloud-chenyw
1e3e060110 style(X-Pack): 嵌入式列表列宽 2024-02-29 10:45:46 +08:00
fit2cloud-chenyw
b02b65d6b2 Merge pull request #8233 from dataease/pr@dev-v2@fix_xpack_login_log
fix(X-Pack): 不存在的账号登录提示信息错误
2024-02-29 10:20:36 +08:00
fit2cloud-chenyw
ab63bef1a1 fix(X-Pack): 不存在的账号登录提示信息错误 2024-02-29 10:19:50 +08:00
dataeaseShu
a35b61d070 Merge pull request #8231 from dataease/pr@dev-v2_dzz_mobile
feat(移动端): 页面样式优化
2024-02-28 18:30:32 +08:00
dataeaseShu
778193099b feat(移动端): 页面样式优化 2024-02-28 18:28:04 +08:00
taojinlong
b90fcfcb7c Merge pull request #8228 from dataease/pr@dev-v2@engine
feat:【系统设置】支持引擎设置
2024-02-28 17:46:27 +08:00
taojinlong
23c3c6400b feat:【系统设置】支持引擎设置 2024-02-28 17:45:24 +08:00
taojinlong
1519947490 Merge pull request #8226 from dataease/pr@dev-v2@engine
feat:【系统设置】支持引擎设置
2024-02-28 16:53:09 +08:00
taojinlong
c7b6c274aa feat:【系统设置】支持引擎设置 2024-02-28 16:51:46 +08:00
fit2cloud-chenyw
a620aa11f8 Merge pull request #8225 from dataease/pr@dev-v2@chore_xpack_frontend
chore(X-Pack): tinymce依赖
2024-02-28 16:48:02 +08:00
fit2cloud-chenyw
e92809e7ee chore(X-Pack): tinymce依赖 2024-02-28 16:47:09 +08:00
fit2cloud-chenyw
3be34ca047 Merge pull request #8224 from dataease/pr@dev-v2@style_xpack_platform_config
style(X-Pack): 平台对接配置
2024-02-28 16:34:52 +08:00
fit2cloud-chenyw
568dee4c59 style(X-Pack): 平台对接配置 2024-02-28 16:33:00 +08:00
dataeaseShu
6c1cd0d021 Merge pull request #8222 from dataease/pr@dev-v2_dzz_mobile
feat(移动端): 移动端切换组织
2024-02-28 16:19:19 +08:00
jianneng-fit2cloud
2a87909994 Merge pull request #8221 from dataease/pr@dev-v2@sync-add-task-running-status-icon
style(同步管理-任务管理): 更新任务执行中状态的图标
2024-02-28 16:17:56 +08:00
dataeaseShu
0b024b5583 feat(移动端): 移动端切换组织 2024-02-28 16:16:43 +08:00
jianneng-fit2cloud
83e34704f9 style(同步管理-任务管理): 更新任务执行中状态的图标 2024-02-28 16:15:03 +08:00
junjun
13b43c1252 revert: pom 2024-02-28 16:10:28 +08:00
junjun
62e57cb756 build: package 2024-02-28 16:04:45 +08:00
Junjun
717ca0de8b Merge pull request #8219 from dataease/pr@dev-v2@refactor_calcite_sql
refactor: CalciteSql适配自定义函数
2024-02-28 15:56:07 +08:00
junjun
68297bceab refactor: CalciteSql适配自定义函数 2024-02-28 15:54:51 +08:00
fit2cloud-chenyw
d72132856e Merge pull request #8218 from dataease/pr@dev-v2@perf_xpack_appearance_login_foot
perf(X-Pack): 外观配置-登录页面页脚
2024-02-28 15:36:09 +08:00
fit2cloud-chenyw
3bd4b0665d perf(X-Pack): 外观配置-登录页面页脚 2024-02-28 15:33:14 +08:00
Junjun
fdfea3be57 Merge pull request #8216 from dataease/pr@dev-v2@rafactor_calcite
refactor: 优化calcite自定义函数性能
2024-02-28 15:15:19 +08:00
junjun
7618a12d24 refactor: 优化calcite自定义函数性能 2024-02-28 15:14:30 +08:00
王嘉豪
17994028a3 Merge pull request #8215 from dataease/pr@dev-v2@fix_cosole
fix(数据大屏): 修复控制台异常报错关闭sourcemap等问题
2024-02-28 15:12:48 +08:00
wangjiahao
f6a367a7c7 fix(数据大屏): 修复控制台异常报错关闭sourcemap等问题 2024-02-28 15:11:02 +08:00
wisonic-s
9aa5e2f763 Merge pull request #8214 from dataease/pr@dev-v2@feat_table_copy_to_clipboard
feat(视图): 表格右键复制指定单元格内容 #5884
2024-02-28 15:01:23 +08:00
wisonic-s
e2eec7b05e feat(视图): 表格右键复制指定单元格内容 #5884 2024-02-28 14:46:44 +08:00
王嘉豪
eeb81c981e Merge pull request #8212 from dataease/pr@dev-v2@fix_move-adaptor
fix(数据大屏): 修复保持宽高比时部分拖拽点拖拽时是同时出现位移问题
2024-02-28 14:41:32 +08:00
wangjiahao
5dca1eaf23 fix(数据大屏): 修复保持宽高比时部分拖拽点拖拽时是同时出现位移问题 2024-02-28 14:40:43 +08:00
Junjun
9814d2595d Merge pull request #8211 from dataease/pr@dev-v2@refactor_calcite
refactor: 优化calcite自定义函数性能
2024-02-28 13:52:18 +08:00
junjun
8113d635cf refactor: 优化calcite自定义函数性能 2024-02-28 13:50:34 +08:00
Junjun
bb95102c97 Merge pull request #8208 from dataease/pr@dev-v2@refactor_calcite_performance
refactor: 优化calcite自定义函数性能
2024-02-28 13:01:10 +08:00
王嘉豪
c493eafce0 Merge pull request #8209 from dataease/pr@dev-v2@fix_move-radio
fix(数据大屏): 修复宽高比保持时大幅度移动出现比例改变问题
2024-02-28 12:54:04 +08:00
wangjiahao
7c660f8445 fix(数据大屏): 修复宽高比保持时大幅度移动出现比例改变问题 2024-02-28 12:53:03 +08:00
junjun
f78eb9f2f6 refactor: 优化calcite自定义函数性能 2024-02-28 12:26:56 +08:00
王嘉豪
84dccd3481 Merge pull request #8203 from dataease/pr@dev-v2@fix_markline3
fix(数据大屏): 修复对标线未显示问题
2024-02-28 11:07:28 +08:00
wangjiahao
edc695ad53 fix(数据大屏): 修复对标线未显示问题 2024-02-28 11:05:58 +08:00
王嘉豪
bcade9567f Merge pull request #8198 from dataease/pr@dev-v2@fix_markline2
fix(数据大屏): 修复对标线未显示问题
2024-02-28 10:19:37 +08:00
wangjiahao
81c711ca41 fix(数据大屏): 修复对标线未显示问题 2024-02-28 10:18:38 +08:00
王嘉豪
5076141d19 Merge pull request #8197 from dataease/pr@dev-v2@fix_markline-adaptor
fix(数据大屏): 对齐标线调试
2024-02-28 09:04:13 +08:00
wangjiahao
392ca66e0c fix(数据大屏): 对齐标线调试 2024-02-28 09:03:14 +08:00
fit2cloud-chenyw
524d2042f4 Merge pull request #8194 from dataease/pr@dev-v2@perf_appearance_login
perf(X-Pack): 外观配置-登录页面实时渲染
2024-02-27 19:28:07 +08:00
fit2cloud-chenyw
e1ff70eb11 perf(X-Pack): 外观配置-登录页面实时渲染 2024-02-27 19:26:39 +08:00
dataeaseShu
7a35f7c647 Merge pull request #8193 from dataease/pr@dev-v2_dzz_mobile
feat(仪表板): 树列表侧边栏新增展开、收起功能
2024-02-27 18:50:38 +08:00
dataeaseShu
593a586c7b feat(仪表板): 树列表侧边栏新增展开、收起功能 2024-02-27 18:50:02 +08:00
Junjun
a089b7f9a5 Merge pull request #8192 from dataease/pr@dev-v2@fix_impala_page
fix: 修复Impala分页需先排序
2024-02-27 18:00:41 +08:00
junjun
c5d97a3d5f fix: 修复Impala分页需先排序 2024-02-27 17:59:00 +08:00
dataeaseShu
dc703f8a0a Merge pull request #8188 from dataease/pr@dev-v2_dzz_mobile
fix(仪表板): 次要按钮交互样式不对
2024-02-27 16:18:42 +08:00
dataeaseShu
e13c708655 fix(仪表板): 次要按钮交互样式不对 2024-02-27 16:18:00 +08:00
dataeaseShu
89e67eec38 Merge pull request #8182 from dataease/pr@dev-v2_dzz_mobile
fix(系统设置): 显示、隐藏 icon 的 hover文案不对
2024-02-27 15:10:40 +08:00
fit2cloud-chenyw
8a2ef36945 Merge pull request #8181 from dataease/pr@dev-v2@perf_appearance
perf(X-Pack): 外观配置相关页面
2024-02-27 15:10:04 +08:00
dataeaseShu
873d00835e fix(系统设置): 显示、隐藏 icon 的 hover文案不对 2024-02-27 15:08:39 +08:00
fit2cloud-chenyw
ce7de33d3a perf(X-Pack): 外观配置相关页面 2024-02-27 15:08:39 +08:00
wisonic-s
90988746dd Merge pull request #8178 from dataease/pr@dev-v2@refactor_optimize_chart_default_legend
refactor(视图): 优化视图默认图例配置
2024-02-27 15:02:13 +08:00
wisonic-s
4db2c3e273 refactor(视图): 优化视图默认图例配置 2024-02-27 14:56:01 +08:00
dataeaseShu
5401a1f9e6 Merge pull request #8177 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 移动端设计页面,图中圈住的头部位置固定,当组件较多时向下滚动,头部位置不变。
2024-02-27 14:36:59 +08:00
dataeaseShu
c25d94ab4f fix(移动端): 移动端设计页面,图中圈住的头部位置固定,当组件较多时向下滚动,头部位置不变。 2024-02-27 14:36:06 +08:00
jianneng-fit2cloud
476ed2a75e Merge pull request #8176 from dataease/pr@dev-v2@sync-add-terminationTask
feat(同步管理-任务管理): 支持终止执行中的任务
2024-02-27 12:30:52 +08:00
jianneng-fit2cloud
7f367f79a7 feat(同步管理-任务管理): 支持终止执行中的任务 2024-02-27 12:26:45 +08:00
dataeaseShu
0b3f049c87 Merge pull request #8171 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 目录无法滚动
2024-02-27 10:58:25 +08:00
dataeaseShu
37fc9208c6 fix(移动端): 目录无法滚动 2024-02-27 10:56:19 +08:00
dataeaseShu
8c98d8d366 Merge pull request #8170 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 适配ios
2024-02-27 10:17:04 +08:00
dataeaseShu
adfcc93487 fix(移动端): 适配ios 2024-02-27 10:16:14 +08:00
fit2cloud-chenyw
72484e69fc Merge pull request #8167 from dataease/pr@dev-v2@feat_xpack_appearance
feat(X-Pack): 外观配置
2024-02-26 18:36:22 +08:00
fit2cloud-chenyw
0e068e8b34 feat(X-Pack): 外观配置 2024-02-26 18:35:23 +08:00
dataeaseShu
6076ebabfa Merge pull request #8165 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 移动端设计页面,当组件被选择至画布后,又从画布中移除,画布中会有空白,组件没有自动往上吸附。
2024-02-26 18:01:42 +08:00
dataeaseShu
a1c1d10151 fix(移动端): 移动端设计页面,当组件被选择至画布后,又从画布中移除,画布中会有空白,组件没有自动往上吸附。 2024-02-26 18:00:48 +08:00
wisonic-s
a31ca93af7 Merge pull request #8163 from dataease/pr@dev-v2@feat_table_column_width_by_field
feat(视图): 明细表/汇总表支持按列设置宽度,拖拽调整宽度。#7707
2024-02-26 17:45:14 +08:00
wisonic-s
000b4acd96 feat(视图): 明细表/汇总表支持按列设置宽度,拖拽调整宽度。#7707 2024-02-26 17:42:53 +08:00
dataeaseShu
a78b57d3c1 Merge pull request #8160 from dataease/pr@dev-v2_dzz_mobile
fix(工具箱): 模板管理间距不对,正确为16px
2024-02-26 17:21:06 +08:00
dataeaseShu
d5e312b3ea fix(工具箱): 模板管理间距不对,正确为16px 2024-02-26 17:20:17 +08:00
dataeaseShu
b484922c89 Merge pull request #8159 from dataease/pr@dev-v2_dzz_mobile
fix(工具箱): 模板管理导入模板弹窗-选择分类-添加分类选项固定在下拉列表底部
2024-02-26 17:11:01 +08:00
dataeaseShu
89e777ce12 fix(工具箱): 模板管理导入模板弹窗-选择分类-添加分类选项固定在下拉列表底部 2024-02-26 17:10:29 +08:00
dataeaseShu
14c29cce1a Merge pull request #8156 from dataease/pr@dev-v2_dzz_mobile
feat(移动端): 查询时间组件
2024-02-26 16:28:25 +08:00
dataeaseShu
410ed4c78d feat(移动端): 查询时间组件 2024-02-26 16:23:18 +08:00
maninhill
a1091e1b1b Update README.md 2024-02-26 11:49:55 +08:00
dataeaseShu
9e43e7c2d0 Merge pull request #8146 from dataease/pr@dev-v2_dzz_mobile
fix(系统设置): 次要按钮-hover样式不对
2024-02-23 17:11:04 +08:00
dataeaseShu
7df3543533 fix(系统设置): 次要按钮-hover样式不对 2024-02-23 17:09:35 +08:00
jianneng-fit2cloud
9920e61485 Merge pull request #8143 from dataease/pr@dev-v2@sync-task-increment-sync
feat(同步管理-任务管理): 支持增量同步
2024-02-23 16:56:01 +08:00
王嘉豪
5904fbf0a3 Merge pull request #8144 from dataease/pr@dev@fix_water-init
fix(仪表板): 修复社区板仪表板因不支持水印设置导致的控制台报错问题
2024-02-23 16:55:17 +08:00
wangjiahao
45cd9cb300 fix(仪表板): 修复社区板仪表板因不支持水印设置导致的控制台报错问题 2024-02-23 16:53:49 +08:00
jianneng-fit2cloud
526c2de8f4 feat(同步管理-任务管理): 支持增量同步 2024-02-23 16:51:09 +08:00
dataeaseShu
13b73a5723 Merge pull request #8141 from dataease/pr@dev-v2_dzz_mobile
feat(仪表板): 树列表侧边栏新增展开、收起功能
2024-02-23 16:10:42 +08:00
dataeaseShu
f7fe6db8a3 feat(数据集): 树列表侧边栏新增展开、收起功能 2024-02-23 16:10:03 +08:00
dataeaseShu
4bdc1ad28a feat(仪表板): 树列表侧边栏新增展开、收起功能 2024-02-23 16:06:44 +08:00
dataeaseShu
a5328976c1 Merge pull request #8137 from dataease/pr@dev-v2_dzz_mobile
Pr@dev v2 dzz mobile
2024-02-23 11:09:09 +08:00
dataeaseShu
40a9155c34 feat(系统管理): 左侧侧边栏新增标题文案 2024-02-23 11:08:27 +08:00
dataeaseShu
e7d6954e52 fix(工作台): 模板中心间距不对,正确为16px 2024-02-22 17:31:43 +08:00
fit2cloudrd
5bc87ff66f Merge pull request #8132 from dataease/pr@v2_refactor_dockerfile
refactor: Dockerfile 文件中去掉和 X-Pack 相关的语句
2024-02-22 17:11:18 +08:00
xuwei-fit2cloud
25a99fe5c8 refactor: Dockerfile 文件中去掉和 X-Pack 相关的语句 2024-02-22 17:10:36 +08:00
dataeaseShu
251c950644 fix(仪表板): 弹窗内按钮组件次要按钮交互样式不对 2024-02-22 15:56:31 +08:00
王嘉豪
8db132bd12 Merge pull request #8130 from dataease/pr@dev-v2@fix_watermark
fix(仪表板): 修复社区板仪表板因不支持水印设置导致的控制台报错问题
2024-02-22 15:54:59 +08:00
wangjiahao
1557162d00 fix(仪表板): 修复社区板仪表板因不支持水印设置导致的控制台报错问题 2024-02-22 15:53:51 +08:00
dataeaseShu
f0d01853fc fix(仪表板): 颜色选择弹框中内置的颜色修改 2024-02-22 15:18:28 +08:00
dataeaseShu
e67cf7510a Merge pull request #8129 from dataease/pr@dev-v2_dzz_mobile
fix(仪表板): icon的背景圆角不对,与下方列表圆角一致
2024-02-22 15:05:21 +08:00
dataeaseShu
04e948b353 fix(仪表板): icon的背景圆角不对,与下方列表圆角一致 2024-02-22 15:04:18 +08:00
dataeaseShu
febf4715ea Merge pull request #8127 from dataease/pr@dev-v2_dzz_mobile
fix(工作台): 点击 logo 返回工作台
2024-02-22 14:55:08 +08:00
dataeaseShu
cf610c06fe fix(工作台): 点击 logo 返回工作台 2024-02-22 14:54:13 +08:00
dataeaseShu
d91a2bcf71 Merge pull request #8118 from dataease/pr@dev-v2_dzz_mobile
fix(系统管理): 外观设置
2024-02-21 17:25:43 +08:00
dataeaseShu
9ca7211530 fix(系统管理): 外观设置 2024-02-21 17:24:42 +08:00
fit2cloud-chenyw
6fb20c0aa2 Merge pull request #8115 from dataease/pr@dev-v2@feat_larksuite
feat(X-Pack): 国际版飞书配置以及扫码登录
2024-02-21 17:08:23 +08:00
fit2cloud-chenyw
3893505310 feat(X-Pack): 国际版飞书配置以及扫码登录 2024-02-21 17:07:18 +08:00
fit2cloud-chenyw
250b98b549 Merge pull request #8107 from dataease/pr@dev-v2@style_appearance_menu_icon
style(X-Pack): 外观配置菜单图标
2024-02-21 11:53:23 +08:00
fit2cloud-chenyw
61ce7b97dd style(X-Pack): 外观配置菜单图标 2024-02-21 11:52:14 +08:00
fit2cloud-chenyw
b893f14177 Merge pull request #8106 from dataease/pr@dev-v2@feat_appearance_page
feat(X-Pack): 外观配置页面
2024-02-21 11:48:42 +08:00
fit2cloud-chenyw
7120fd0bae feat(X-Pack): 外观配置页面 2024-02-21 11:47:40 +08:00
dataeaseShu
3f067eeca0 Merge pull request #8102 from dataease/pr@dev-v2_dzz_mobile
feat(移动端): 新增我的分享
2024-02-21 10:25:43 +08:00
dataeaseShu
90e2fa754e feat(移动端): 新增我的分享 2024-02-21 10:24:42 +08:00
fit2cloud-chenyw
d2b487bcbc Merge pull request #8095 from dataease/pr@dev-v2@style_platform_page
style(X-Pack): 平台对接页面优化
2024-02-20 18:20:00 +08:00
fit2cloud-chenyw
fdf0b67ebc style(X-Pack): 平台对接页面优化 2024-02-20 18:19:03 +08:00
dataeaseShu
923c5ea5ec Merge pull request #8089 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 登录页面高度不对
2024-02-20 17:03:35 +08:00
dataeaseShu
9bdd96f66f fix(移动端): 登录页面高度不对 2024-02-20 17:03:14 +08:00
fit2cloud-chenyw
436fddcdb3 Merge pull request #8088 from dataease/pr@dev-v2@perf_xpack_flyway
perf(X-Pack): flyway中声明的字符集以及排序相关语句
2024-02-20 16:45:36 +08:00
fit2cloud-chenyw
d4c8eb308a perf(X-Pack): flyway中声明的字符集以及排序相关语句 2024-02-20 16:44:40 +08:00
王嘉豪
949f0d334d Merge pull request #8087 from dataease/pr@dev-v2@refactor_rect
refactor(数据大屏): 修改图形组件默认样式
2024-02-20 16:32:23 +08:00
wangjiahao
4e4feb514e refactor(数据大屏): 修改图形组件默认样式 2024-02-20 16:30:15 +08:00
fit2cloud-chenyw
7210c1d31c Merge pull request #8084 from dataease/pr@dev-v2@feat_mobile_whitelist
feat: 移动端页面白名单
2024-02-20 16:08:56 +08:00
fit2cloud-chenyw
be1fce547a feat: 移动端页面白名单 2024-02-20 16:08:07 +08:00
fit2cloud-chenyw
e386cd09f7 Merge pull request #8083 from dataease/pr@dev-v2@feat_wecom_qr_login
feat(X-Pack): 企业微信扫码登录
2024-02-20 16:05:46 +08:00
fit2cloud-chenyw
c17d3e4366 feat(X-Pack): 企业微信扫码登录 2024-02-20 16:04:42 +08:00
dataeaseShu
e16635f3b1 Merge pull request #8082 from dataease/pr@dev-v2_dzz_mobile
fix(嵌入式): iframe嵌入高度丢失
2024-02-20 15:50:38 +08:00
dataeaseShu
07408d39ad fix(嵌入式): iframe嵌入高度丢失 2024-02-20 15:49:14 +08:00
fit2cloud-chenyw
d9f88fb3fe Merge pull request #8075 from dataease/pr@dev-v2@fix_embedded_import
fix: 嵌入式引入路径错误
2024-02-20 12:14:19 +08:00
fit2cloud-chenyw
7a3206293e fix: 嵌入式引入路径错误 2024-02-20 12:13:41 +08:00
fit2cloud-chenyw
072c582445 Merge pull request #8073 from dataease/pr@dev-v2@fix_embedded_axios
fix: 嵌入式请求前缀
2024-02-20 12:04:05 +08:00
fit2cloud-chenyw
823ce0de6e fix: 嵌入式请求前缀 2024-02-20 12:03:03 +08:00
fit2cloud-chenyw
e3e50c683a Merge pull request #8072 from dataease/pr@dev-v2@chore_npm_registry
chore: 前端npm使用淘宝最新源
2024-02-20 11:42:48 +08:00
fit2cloud-chenyw
82a9aedf9e chore: 前端npm使用淘宝最新源 2024-02-20 11:41:36 +08:00
fit2cloud-chenyw
d2be5fc4df Merge pull request #8071 from dataease/pr@dev-v2@chore_npm_config
chore: 前端npm使用官方源
2024-02-20 11:19:19 +08:00
fit2cloud-chenyw
a08484fc7a chore: 前端npm使用官方源 2024-02-20 11:18:28 +08:00
fit2cloud-chenyw
51fa0f2a35 Merge pull request #8069 from dataease/pr@dev-v2@chore_frontend_build_error
chore: 前端打包错误
2024-02-20 10:41:22 +08:00
fit2cloud-chenyw
30bd84a6c3 chore: 前端打包错误 2024-02-20 10:40:18 +08:00
fit2cloud-chenyw
d0387872ce Merge pull request #8068 from dataease/pr@dev-v2@style_wecom_config
style(X-Pack): 企业微信配置页面样式
2024-02-20 10:25:12 +08:00
fit2cloud-chenyw
8f376a15cf style(X-Pack): 企业微信配置页面样式 2024-02-20 10:23:24 +08:00
dataeaseShu
4a0c30944c Merge pull request #8067 from dataease/pr@dev-v2_dzz_mobile
fix(工具箱): 模板管理间距不对
2024-02-20 09:54:05 +08:00
dataeaseShu
ac0d5df512 fix(工具箱): 模板管理间距不对 2024-02-20 09:53:28 +08:00
王嘉豪
d1406a3686 Merge pull request #8065 from dataease/pr@dev-v2@feat——rich-text
feat(图表): 富文本视图支持指数格式化 #7444
2024-02-19 19:01:31 +08:00
wangjiahao
395acafeda feat(图表): 富文本视图支持指数格式化 #7444 2024-02-19 19:00:47 +08:00
王嘉豪
e8364de193 Merge pull request #8064 from dataease/pr@dev-v2@refactor_flyway
refactor(系统设置): 更新水印管理权限flyway
2024-02-19 18:12:26 +08:00
wangjiahao
6ff51a142a refactor(系统设置): 更新水印管理权限flyway 2024-02-19 18:11:39 +08:00
王嘉豪
356cee93f3 Merge pull request #8063 from dataease/pr@dev-v2@refactor_save-button
refactor(数据大屏): 保存按钮防止重复提交
2024-02-19 17:30:32 +08:00
wangjiahao
c094606dc3 refactor(数据大屏): 保存按钮防止重复提交 2024-02-19 17:29:00 +08:00
dataeaseShu
0728d6df16 Merge pull request #8061 from dataease/pr@dev-v2_dzz_mobile
fix(移动端): 构建报错
2024-02-19 17:27:58 +08:00
dataeaseShu
915c1286d4 fix(移动端): 构建报错 2024-02-19 17:27:07 +08:00
dataeaseShu
a6871f5429 Merge pull request #8060 from dataease/pr@dev-v2_dzz_mobile
feat(嵌入式): 模块嵌入支持 iframe 嵌入方式
2024-02-19 17:23:28 +08:00
dataeaseShu
0fd1857ae2 feat(嵌入式): 模块嵌入支持 iframe 嵌入方式 2024-02-19 17:22:45 +08:00
王嘉豪
0f58e9bce5 Merge pull request #8057 from dataease/pr@dev@refactor_rich-text-adaptor
refactor(数据大屏): 富文本组件支持撤销操作
2024-02-19 16:30:26 +08:00
wangjiahao
2205709244 refactor(数据大屏): 富文本组件支持撤销操作 2024-02-19 16:29:45 +08:00
dataeaseShu
3c113c4673 Merge pull request #8056 from dataease/pr@dev-v2_dzz_mobile
Pr@dev v2 dzz mobile
2024-02-19 16:17:57 +08:00
dataeaseShu
0daa83865f Merge branch 'dev-v2' into pr@dev-v2_dzz_mobile 2024-02-19 16:17:11 +08:00
dataeaseShu
fa09825b5d feat(移动端): 背景设置 2024-02-19 16:14:26 +08:00
王嘉豪
dc8531fa70 Merge pull request #8055 from dataease/pr@dev@refactor_graphical-add
refactor(数据大屏): 图形组件增加Svg矢量图形
2024-02-19 15:24:57 +08:00
wangjiahao
3e7165318c refactor(数据大屏): 图形组件增加Svg矢量图形 2024-02-19 15:24:20 +08:00
wisonic-s
53adc16e26 Merge pull request #8052 from dataease/pr@dev-v2@refactor_optimize_chart_default_label
refactor(视图): 优化视图的默认标签配置
2024-02-19 13:03:30 +08:00
wisonic-s
2e88d3cb42 refactor(视图): 优化视图的默认标签配置 2024-02-19 13:01:49 +08:00
wisonic-s
95dbe4125a Merge pull request #8051 from dataease/pr@dev-v2@fix_table_info_page_export
fix(视图): 修复明细表分页状态下只能导出当前页的数据 #7972
2024-02-19 11:53:51 +08:00
wisonic-s
823ec3b5d1 fix(视图): 修复明细表分页状态下只能导出当前页的数据 #7972 2024-02-19 11:51:40 +08:00
王嘉豪
092f0fc279 Merge pull request #8049 from dataease/pr@dev@feat_graphical-add
feat(数据大屏): 增加图形组件 #7274
2024-02-19 11:15:18 +08:00
wangjiahao
0a74c22171 feat(数据大屏): 增加图形组件 #7274 2024-02-19 11:14:35 +08:00
Junjun
a1fb195f39 Merge pull request #8047 from dataease/pr@dev-v2@fix_calcite
fix: 升级Calcite版本修复日期格式错乱 #8032
2024-02-19 10:31:00 +08:00
junjun
9ac0de8056 fix: 升级Calcite版本修复日期格式错乱 #8032 2024-02-19 10:30:00 +08:00
王嘉豪
9123a7699d Merge pull request #8046 from dataease/pr@dev@refactor_graphical
refactor(数据大屏): 图形组件样式变更
2024-02-18 18:41:06 +08:00
wangjiahao
16690ed1d1 refactor(数据大屏): 图形组件样式变更 2024-02-18 18:40:19 +08:00
王嘉豪
31c09d6d00 Merge pull request #8045 from dataease/pr@dev@feat_graphical
feat(数据大屏): 增加图形组件
2024-02-18 18:22:45 +08:00
wangjiahao
a85578ff7a feat(数据大屏): 增加图形组件 2024-02-18 18:21:08 +08:00
dataeaseShu
14b9c73ce1 Merge pull request #8044 from dataease/pr@dev-v2_query_com
fix(嵌入式): DIV嵌入式优化
2024-02-18 17:54:12 +08:00
dataeaseShu
81d34b1b82 fix(嵌入式): DIV嵌入式优化 2024-02-18 17:52:34 +08:00
dataeaseShu
520e725d7b Merge pull request #8040 from dataease/pr@dev-v2_query_com
fix(嵌入式): DIV嵌入优化
2024-02-18 15:13:24 +08:00
dataeaseShu
596e3350bb fix(嵌入式): DIV嵌入优化 2024-02-18 15:12:19 +08:00
王嘉豪
89cd24eef5 Merge pull request #8038 from dataease/pr@dev-v2@feat_workbranch
feat(工作台): 工作台我的收藏页增加直接取消收藏操作
2024-02-18 14:40:19 +08:00
wangjiahao
c15b098d46 feat(工作台): 工作台我的收藏页增加直接取消收藏操作 2024-02-18 14:38:51 +08:00
dataeaseShu
10148b3bff Merge pull request #8037 from dataease/pr@dev-v2_query_com
fix(嵌入式): 优化首次加载时长
2024-02-18 14:25:32 +08:00
dataeaseShu
fe27adf73a fix(嵌入式): 优化首次加载时长 2024-02-18 14:24:48 +08:00
dataeaseShu
b6e21fca5b Merge pull request #8036 from dataease/pr@dev-v2_query_com
Pr@dev v2 query com
2024-02-18 13:54:18 +08:00
dataeaseShu
918da1e1ef Merge branch 'dev-v2' into pr@dev-v2_query_com 2024-02-18 13:53:38 +08:00
dataeaseShu
c86bf2419d fix(嵌入式): DIV 嵌入视图优化 2024-02-18 13:50:53 +08:00
王嘉豪
16e87c73e6 Merge pull request #8034 from dataease/pr@dev-v2@fix_handel-move
refactor(数据大屏): 调整位置属性面板处手动设置宽高逻辑,适配保持宽高比例
2024-02-18 13:33:09 +08:00
wangjiahao
72b19f3942 refactor(数据大屏): 调整位置属性面板处手动设置宽高逻辑,适配保持宽高比例 2024-02-18 13:31:40 +08:00
王嘉豪
7f13cc605e Merge pull request #8033 from dataease/pr@dev-v2@fix_shape-move
fix(数据大屏): 修复组件角落处移动点保持宽高比拖动时出现闪动问题
2024-02-18 12:06:59 +08:00
wangjiahao
7fe2f46dc2 fix(数据大屏): 修复组件角落处移动点保持宽高比拖动时出现闪动问题 2024-02-18 12:05:42 +08:00
dataeaseShu
0204d60b07 Merge pull request #8030 from dataease/pr@dev-v2_query_com
fix(嵌入式): DIV 嵌入式的样式冲突问题
2024-02-18 10:18:04 +08:00
dataeaseShu
aacd299440 fix(嵌入式): DIV 嵌入式的样式冲突问题 2024-02-18 10:14:33 +08:00
fit2cloudrd
6363032d97 Merge pull request #8028 from dataease/pr@v2_installer_refactor_dectl
refactor: 优化 dectl 脚本逻辑
2024-02-08 11:36:13 +08:00
xuwei-fit2cloud
f776c0b7cd refactor: 优化 dectl 脚本逻辑 2024-02-08 11:35:12 +08:00
fit2cloudrd
551ae79c3c Merge pull request #8023 from dataease/pr@v2_installer_output
refactor: 整理 installer 脚本的输出信息
2024-02-07 14:39:08 +08:00
xuwei-fit2cloud
d604c3b464 refactor: 整理 installer 脚本的输出信息 2024-02-07 14:38:18 +08:00
fit2cloud-chenyw
f9bc0f84b7 Merge pull request #8021 from dataease/pr@dev-v2@feat_wecom_config
feat(X-Pack): 企业微信配置
2024-02-06 17:32:00 +08:00
fit2cloud-chenyw
088de6e92f feat(X-Pack): 企业微信配置 2024-02-06 17:30:53 +08:00
fit2cloud-chenyw
bf7353882d Merge pull request #8015 from dataease/pr@dev-v2@feat_context_path
feat: 增加访问前缀配置 close #7999
2024-02-06 11:43:40 +08:00
fit2cloud-chenyw
a1ceafec25 feat: 增加访问前缀配置 close #7999 2024-02-06 11:42:20 +08:00
fit2cloudrd
51c69e8b4d Merge pull request #8011 from dataease/pr@v2_add_quick_start
feat: 添加 v2 版本的 quick_start.sh 安装脚本
2024-02-05 18:55:50 +08:00
xuwei-fit2cloud
499af0b860 feat: 添加 v2 版本的 quick_start.sh 安装脚本 2024-02-05 18:55:17 +08:00
fit2cloud-chenyw
f0a180ed05 Merge pull request #8010 from dataease/pr@dev-v2@feat_dingtalk_login
feat(X-Pack): 钉钉扫码登录
2024-02-05 18:54:26 +08:00
fit2cloud-chenyw
eaec0c42dc feat(X-Pack): 钉钉扫码登录 2024-02-05 18:53:31 +08:00
fit2cloudrd
317ab8d19e Merge pull request #8004 from dataease/pr@v2_dectl_uninstall_tips
refactor: uninstall.sh 卸载脚本优化提示 #7955
2024-02-05 16:32:58 +08:00
xuwei-fit2cloud
848a95cbfb refactor: uninstall.sh 卸载脚本优化提示 #7955 2024-02-05 16:29:28 +08:00
fit2cloudrd
e040a05428 Merge pull request #8003 from dataease/pr@v2_dectl_miss_sync_task
fix: 修复 dectl 脚本在停止服务时无法停止同步管理服务的问题
2024-02-05 16:23:33 +08:00
xuwei-fit2cloud
770a0785b6 fix: 修复 dectl 脚本在停止服务时无法停止同步管理服务的问题 2024-02-05 16:22:52 +08:00
fit2cloudrd
2a582cfea5 Merge pull request #8002 from dataease/pr@v2_dectl_backup_restore
feat: dectl 增加备份和恢复功能 #6602
2024-02-05 16:20:28 +08:00
xuwei-fit2cloud
ceed75c545 feat: dectl 增加备份和恢复功能 #6602 2024-02-05 16:19:12 +08:00
王嘉豪
5dc2fd913d Merge pull request #7997 from dataease/pr@dev-v2@feat_component-radio
feat(数据大屏): 组件的宽高增加宽高比例锁定功能,可以等比放大缩小
2024-02-05 13:49:33 +08:00
wangjiahao
d56eb16582 feat(数据大屏): 组件的宽高增加宽高比例锁定功能,可以等比放大缩小 2024-02-05 13:46:35 +08:00
fit2cloud-chenyw
962b06f6dd Merge pull request #7979 from dataease/pr@dev-v2@feat_dingtalk_config
feat(X-Pack): 钉钉配置
2024-02-02 17:29:46 +08:00
fit2cloud-chenyw
66bab96275 feat(X-Pack): 钉钉配置 2024-02-02 17:28:18 +08:00
Junjun
621141d36d Merge pull request #7975 from dataease/pr@dev-v2@build_calcite_version
build: 升级Calcite版本
2024-02-02 11:23:11 +08:00
junjun
55753a0b84 build: 升级Calcite版本 2024-02-02 11:22:02 +08:00
dataeaseShu
4b8bda6630 Merge pull request #7974 from dataease/pr@dev-v2_query_com
fix(X-Pack): 系统-平台对接 icon大小为 16px;icon-hover 样式不对;icon之间间距不对,应该为8px;
2024-02-02 11:02:11 +08:00
dataeaseShu
a837c7699a fix(X-Pack): 系统-平台对接 icon大小为 16px;icon-hover 样式不对;icon之间间距不对,应该为8px; 2024-02-02 11:01:35 +08:00
dataeaseShu
a3884205c7 Merge pull request #7967 from dataease/pr@dev-v2_query_com
Pr@dev v2 query com
2024-02-01 18:15:18 +08:00
dataeaseShu
916b6b3ecf fix(数据源): 切换导航主菜单时,闪现其他的空状态图片 2024-02-01 17:17:01 +08:00
dataeaseShu
8296a38710 fix(数据集): 切换导航主菜单时,闪现其他的空状态图片 2024-02-01 17:16:37 +08:00
dataeaseShu
9e7651f1b7 fix(数据大屏): 切换导航主菜单时,闪现其他的空状态图片 2024-02-01 17:16:22 +08:00
dataeaseShu
1cd09f86ec fix(仪表板): 切换导航主菜单时,闪现其他的空状态图片 2024-02-01 17:16:02 +08:00
dataeaseShu
9fb2610f81 Merge pull request #7966 from dataease/pr@dev-v2_query_com
fix(数据集): 自定义SQL节点点击编辑字段
2024-02-01 14:44:50 +08:00
dataeaseShu
8a7ce99b9d fix(数据集): 自定义SQL节点点击编辑字段 2024-02-01 14:43:56 +08:00
dataeaseShu
821d30faf1 fix(移动端): ios页面异常 2024-02-01 14:35:46 +08:00
jianneng-fit2cloud
4a4bf36602 Merge pull request #7961 from dataease/pr@dev-v2@sync-menu-permissions-fix
fix(同步管理):修复非管理员查看数据连接管理菜单无权限问题
2024-02-01 12:50:30 +08:00
jianneng-fit2cloud
7172829138 fix(同步管理):修复非管理员查看数据连接管理菜单无权限问题 2024-02-01 12:42:50 +08:00
Junjun
5dfce7afa0 Merge pull request #7956 from dataease/pr@dev-v2@refactor_new_func
refactor: 使用Calcite新方法替换过时方法
2024-02-01 11:38:40 +08:00
junjun
5344368145 refactor: 使用Calcite新方法替换过时方法 2024-02-01 11:37:04 +08:00
Junjun
7f1e1554e2 Merge pull request #7949 from dataease/pr@dev-v2@fix_doris_bug
fix: 降低数值取值精度来规避doris自身bug
2024-01-31 17:44:01 +08:00
junjun
e150ef313f fix: 降低数值取值精度来规避doris自身bug 2024-01-31 17:42:30 +08:00
jianneng-fit2cloud
8b1c3f13f2 Merge pull request #7944 from dataease/pr@dev-v2@sync-mapping-dataType
feat(同步管理-任务管理): 创建任务映射字段时,支持根据不同版本的doris映射不同的字段类型
2024-01-31 16:15:45 +08:00
jianneng-fit2cloud
55b2b21e91 feat(同步管理-任务管理): 创建任务映射字段时,支持根据不同版本的doris映射不同的字段类型 2024-01-31 16:15:05 +08:00
dataeaseShu
3a84ac85c4 fix(移动端): 新增用户信息 2024-01-31 15:30:55 +08:00
ulleo
f5a66c937a Merge pull request #7934 from ulleo/dev-v2
feat(图表): 指标卡字体颜色可以跟随配色方案进行设置
2024-01-31 13:31:14 +08:00
ulleo
90c1f095c0 feat(图表): 指标卡字体颜色可以跟随配色方案进行设置 2024-01-31 13:29:16 +08:00
fit2cloud-chenyw
7fa08825bf Merge pull request #7931 from dataease/pr@dev-v2@fix_login_log_error
fix(X-Pack): 打包后用户登录日志无效
2024-01-31 11:10:40 +08:00
fit2cloud-chenyw
66cb0e3a3f fix(X-Pack): 打包后用户登录日志无效 2024-01-31 11:08:07 +08:00
fit2cloud-chenyw
84afe65d8f Merge pull request #7926 from dataease/pr@dev-v2@feat_log_live_time
feat(X-Pack): 日志保留时间
2024-01-30 18:49:52 +08:00
fit2cloud-chenyw
5eefb53ef6 feat(X-Pack): 日志保留时间 2024-01-30 18:46:06 +08:00
dataeaseShu
1116d1cd7d Merge pull request #7925 from dataease/pr@dev-v2_query_com
fix(工作台): 我的分享 样式不对
2024-01-30 18:38:31 +08:00
dataeaseShu
4842f3e2bc fix(工作台): 我的分享 样式不对 2024-01-30 18:36:35 +08:00
fit2cloudrd
ec5184f881 Merge pull request #7924 from dataease/pr@v2_installer_fit_ubuntu
refactor: installer脚本适配Ubuntu操作系统
2024-01-30 18:30:58 +08:00
xuwei-fit2cloud
546d44bcc1 refactor: installer脚本适配Ubuntu操作系统 2024-01-30 18:30:17 +08:00
wisonic-s
7c7d38be24 Merge pull request #7922 from dataease/pr@dev-v2@fix_pivot_null_main_dimension_sort
fix(视图-透视表): 修复主维度为空时使用排序导致视图渲染失败
2024-01-30 17:46:44 +08:00
wisonic
cb237f246e fix(视图-透视表): 修复主维度为空时使用排序导致视图渲染失败 2024-01-30 17:45:12 +08:00
dataeaseShu
2a5c67e289 Merge pull request #7919 from dataease/pr@dev-v2_query_com
fix: 关闭sourcemap
2024-01-30 17:09:43 +08:00
dataeaseShu
229629ef36 fix: 关闭sourcemap 2024-01-30 17:09:18 +08:00
fit2cloud-chenyw
58235aaa02 Merge pull request #7917 from dataease/pr@dev-v2@fix_log_grid
fix(X-Pack): 日志列表搜索框文案错误
2024-01-30 16:41:48 +08:00
fit2cloud-chenyw
4ffbfde76b fix(X-Pack): 日志列表搜索框文案错误 2024-01-30 16:39:53 +08:00
fit2cloud-chenyw
e5428f37fc Merge pull request #7916 from dataease/pr@dev-v2@fix_share_pwd_error
fix: 分享链接填写密码表单没有前端验证
2024-01-30 16:33:46 +08:00
dataeaseShu
6de06804e9 Merge pull request #7914 from dataease/pr@dev-v2_query_com
fix(查询组件): 时间粒度切换时动态时间自动切换
2024-01-30 16:30:12 +08:00
dataeaseShu
714868c14b fix(查询组件): 时间粒度切换时动态时间自动切换 2024-01-30 16:29:47 +08:00
fit2cloud-chenyw
c3737f4751 fix: 分享链接填写密码表单没有前端验证 2024-01-30 16:29:18 +08:00
fit2cloud-chenyw
76b3869a85 Merge pull request #7912 from dataease/pr@dev-v2@fix_embedded_tree_share
fix: 嵌入式场景分享链接错误
2024-01-30 16:16:45 +08:00
fit2cloud-chenyw
72866386b8 fix: 嵌入式场景分享链接错误 2024-01-30 16:14:36 +08:00
dataeaseShu
c62a1b5fdd Merge pull request #7911 from dataease/pr@dev-v2_query_com
fix(查询组件): 时间粒度为年月,时间范围使用月为单位无法生成动态时间默认值
2024-01-30 15:51:26 +08:00
dataeaseShu
3c34800c7a fix(查询组件): 时间粒度为年月,时间范围使用月为单位无法生成动态时间默认值 2024-01-30 15:50:40 +08:00
fit2cloud-chenyw
a5237b06dd Merge pull request #7910 from dataease/pr@dev-v2@feat_visualization_read_log
feat(*): 仪表板大屏查看日志
2024-01-30 15:43:26 +08:00
fit2cloud-chenyw
5a79b5a079 feat(*): 仪表板大屏查看日志 2024-01-30 15:41:00 +08:00
dataeaseShu
dd95472d52 Merge pull request #7909 from dataease/pr@dev-v2_query_com
fix: 前端依赖更新
2024-01-30 15:06:08 +08:00
dataeaseShu
3b91fc4f38 fix: 前端依赖更新 2024-01-30 15:05:42 +08:00
fit2cloud-chenyw
64e30b58a0 Merge pull request #7905 from dataease/pr@dev-v2@fix_org_log
fix(X-Pack): 日志aop导致新增组织报错
2024-01-30 14:46:09 +08:00
fit2cloud-chenyw
587acdce2e fix(X-Pack): 日志aop导致新增组织报错 2024-01-30 14:43:05 +08:00
fit2cloud-chenyw
7af660508c Merge pull request #7901 from dataease/pr@dev-v2@perf_xpack_log
perf(X-Pack): 日志模块使用异步线程避免与主线程事务相互影响
2024-01-30 11:42:23 +08:00
fit2cloud-chenyw
bf6f744281 perf(X-Pack): 日志模块使用异步线程避免与主线程事务相互影响 2024-01-30 11:39:52 +08:00
dataeaseShu
dd1a1a06fc Merge pull request #7900 from dataease/pr@dev-v2_query_com
fix: 打开sourcemap
2024-01-30 11:15:15 +08:00
dataeaseShu
f7860e4c7e fix: 打开sourcemap 2024-01-30 11:14:39 +08:00
dataeaseShu
d99c639235 Merge pull request #7899 from dataease/pr@dev-v2_query_com
fix(查询组件): 查询组件年范围测试
2024-01-30 10:46:01 +08:00
dataeaseShu
2e4048331a fix(查询组件): 查询组件年范围测试 2024-01-30 10:45:32 +08:00
dataeaseShu
0f07e82637 Merge pull request #7895 from dataease/pr@dev-v2_query_com
fix(查询组件): 查询组件年bug测试
2024-01-30 09:41:58 +08:00
dataeaseShu
bab9598a87 fix(查询组件): 查询组件年bug测试 2024-01-30 09:41:29 +08:00
dataeaseShu
fb2ecc2b9e Merge pull request #7891 from dataease/pr@dev-v2_query_com
fix: 去除打印
2024-01-29 19:11:29 +08:00
dataeaseShu
0860e6bbda fix: 去除打印 2024-01-29 19:10:55 +08:00
dataeaseShu
37020db3cd Merge pull request #7889 from dataease/pr@dev-v2_query_com
fix: 前端报错
2024-01-29 18:44:38 +08:00
dataeaseShu
d221ee0771 fix: 前端报错 2024-01-29 18:44:07 +08:00
dataeaseShu
73665bd585 Merge pull request #7888 from dataease/pr@dev-v2_query_com
fix(查询组件): 查询组件年不显示
2024-01-29 18:36:00 +08:00
dataeaseShu
263936e398 fix(查询组件): 查询组件年不显示 2024-01-29 18:35:24 +08:00
dataeaseShu
33371d5eec Merge pull request #7885 from dataease/pr@dev-v2_dzz
fix(查询组件): 时间范围年月不显示
2024-01-29 18:05:23 +08:00
dataeaseShu
6a11d5bd3c fix(查询组件): 时间范围年月不显示 2024-01-29 18:04:38 +08:00
dataeaseShu
4ed0c88530 Merge pull request #7882 from dataease/pr@dev-v2_dzz
fix(查询组件): 时间范围年月不显示
2024-01-29 17:39:14 +08:00
dataeaseShu
7395d52550 fix(查询组件): 时间范围年月不显示 2024-01-29 17:38:05 +08:00
Junjun
b13e417583 Merge pull request #7880 from dataease/pr@dev-v2@refactor_sql_info
refactor(数据集): 详细展示Calcite执行SQL时的报错提示
2024-01-29 16:53:49 +08:00
junjun
0c4616eb67 refactor(数据集): 详细展示Calcite执行SQL时的报错提示 2024-01-29 16:50:57 +08:00
dataeaseShu
b1987c190d feat(移动端): 新增用户登录 2024-01-29 16:38:19 +08:00
dataeaseShu
4d3dadd865 fix(移动端): 优化仪表板目录跳转逻辑 2024-01-29 15:28:38 +08:00
dataeaseShu
7c4e1d7c13 feat(移动端): 新增仪表板详情页 2024-01-29 15:27:52 +08:00
ulleo
4a5f3219cf Merge pull request #7877 from ulleo/dev-v2
fix(图表): 指标卡>高级>阈值设置,禁用后指标卡的数值颜色依然显示阈值设置中的颜色
2024-01-29 14:48:56 +08:00
ulleo
b7ed5b39e2 fix(图表): 指标卡>高级>阈值设置,禁用后指标卡的数值颜色依然显示阈值设置中的颜色 2024-01-29 14:48:11 +08:00
ulleo
e7171df04d Merge pull request #7875 from ulleo/dev-v2
fix(图表): 指标卡>样式>指标值>后缀颜色设置,初始化颜色不正确
2024-01-29 14:38:56 +08:00
ulleo
ed476a06a0 fix(图表): 指标卡>样式>指标值>后缀颜色设置,初始化颜色不正确 2024-01-29 14:37:30 +08:00
ulleo
54a3827646 Merge pull request #7874 from ulleo/dev-v2
fix(图表): 带钻取等操作的图表切换图表为水波图显示依然可以钻取
2024-01-29 14:23:30 +08:00
ulleo
b857b8f1b1 fix(图表): 带钻取等操作的图表切换图表为水波图显示依然可以钻取
切换到水波图、仪表盘、指标卡后将钻取框清空
2024-01-29 14:20:36 +08:00
dataeaseShu
7110b62382 Merge pull request #7872 from dataease/pr@dev-v2_dzz
fix: 【数据大屏】大屏配置-hover icon 文字提示样式不对
2024-01-29 10:01:06 +08:00
dataeaseShu
787a153632 fix: 【数据大屏】大屏配置-hover icon 文字提示样式不对 2024-01-29 10:00:37 +08:00
Junjun
39c436f57d Merge pull request #7871 from dataease/pr@dev-v2@fix_number
fix: 降低整数取值精度来规避doris自身bug
2024-01-29 09:48:46 +08:00
junjun
fc7a1c0032 fix: 降低整数取值精度来规避doris自身bug 2024-01-29 09:47:53 +08:00
王嘉豪
e0d0abe44e Merge pull request #7869 from dataease/pr@dev-v2@style_watermark
style: 水印样式优化
2024-01-28 19:51:25 +08:00
wangjiahao
c04c99f379 style: 水印样式优化 2024-01-28 19:49:30 +08:00
王嘉豪
6323fdd032 Merge pull request #7868 from dataease/pr@dev-v2@fix_forlder-change
fix: 修复资源文件夹可以移动到其自身的子文件夹造成移动后文件夹不显示问题
2024-01-28 19:18:46 +08:00
wangjiahao
096de8a3d1 fix: 修复资源文件夹可以移动到其自身的子文件夹造成移动后文件夹不显示问题 2024-01-28 19:16:31 +08:00
wisonic-s
1ae1871995 Merge pull request #7866 from dataease/pr@dev-v2@feat_table_head_sort
feat(视图-表格): 明细表/汇总表支持表头排序#6754
2024-01-28 19:02:28 +08:00
wisonic-s
434c7e9489 feat(视图-表格): 明细表/汇总表支持表头排序#6754 2024-01-28 19:01:17 +08:00
王嘉豪
3dcb2d1663 Merge pull request #7865 from dataease/pr@dev-v2@style_panel
style: 仪表板编辑框样式调整
2024-01-28 17:26:28 +08:00
wangjiahao
85c1b8885e style: 仪表板编辑框样式调整 2024-01-28 17:23:37 +08:00
王嘉豪
036c1a01cc Merge pull request #7861 from dataease/pr@dev-v2@refactor_cache
refactor: 优化系统升级后静态资源可能还是使用的历史的缓存版本造成错误的问题
2024-01-27 22:18:16 +08:00
wangjiahao
847300acfd refactor: 优化系统升级后静态资源可能还是使用的历史的缓存版本造成错误的问题 2024-01-27 22:16:01 +08:00
wisonic-s
9728415234 Merge pull request #7854 from dataease/pr@dev-v2@fix_pivot_del_quota
fix(视图-透视表): 指标字段清空时渲染失败
2024-01-26 11:13:00 +08:00
wisonic-s
f882278e82 fix(视图-透视表): 指标字段清空时渲染失败 2024-01-26 11:11:05 +08:00
wisonic-s
76be457ae1 Merge pull request #7850 from dataease/pr@dev-v2@fix_pivot_aggr_sort
Pr@dev v2@fix pivot aggr sort
2024-01-25 19:31:17 +08:00
wisonic-s
57f8304e25 Merge remote-tracking branch 'origin/dev-v2' into dev-v2 2024-01-25 19:29:55 +08:00
wisonic-s
21ed2c84d1 fix(视图-透视表): 透视表汇总排序错误 2024-01-25 19:29:46 +08:00
dataeaseShu
3fcbddcd02 fix: 移动端组件删除更新 2024-01-25 18:53:59 +08:00
ulleo
d86b6f91a9 Merge pull request #7843 from ulleo/dev-v2
feat(指标卡): 指标增加限制: 只能拖数值类型指标
2024-01-25 18:35:24 +08:00
ulleo
5eaa291bb2 feat(指标卡): 指标增加限制: 只能拖数值类型指标 2024-01-25 18:34:05 +08:00
ulleo
ebca9aa36a Merge pull request #7839 from ulleo/dev-v2
feat(指标卡): 指标增加限制: 只能拖一个指标
2024-01-25 18:14:07 +08:00
ulleo
5fdbe78794 feat(指标卡): 指标增加限制: 只能拖一个指标 2024-01-25 18:13:47 +08:00
dataeaseShu
d70fea56f9 fix: 移动端PC坐标转换自适应 2024-01-25 18:12:41 +08:00
Junjun
ae6badc8ea Merge pull request #7835 from dataease/pr@dev-v2@fix_chart
fix(视图): 修复列脱敏后视图报错的问题
2024-01-25 17:19:21 +08:00
junjun
6cf62480d0 fix(视图): 修复列脱敏后视图报错的问题 2024-01-25 17:10:46 +08:00
wisonic-s
9bb04e99ba Merge pull request #7834 from dataease/pr@dev-v2@fix_pivot_aggr_edit_style
fix(视图-透视表): 大屏页面汇总样式错误
2024-01-25 16:54:30 +08:00
wisonic-s
2d0c5cccd4 fix(视图-透视表): 大屏页面汇总样式错误 2024-01-25 16:53:02 +08:00
dataeaseShu
adc77145c7 fix: 移动端PC端通信优化 2024-01-25 16:52:34 +08:00
taojinlong
b205111806 Merge pull request #7833 from dataease/pr@dev-v2@fixds
Pr@dev v2@fixds
2024-01-25 16:49:12 +08:00
taojinlong
db00585e67 fix(数据源): DataEase v2 在 Excel 数据比较多的情况上传后数据为空 #7722 2024-01-25 16:48:00 +08:00
wisonic-s
42d530016d Merge pull request #7831 from dataease/pr@dev-v2@fix_pivot_font_align
fix(视图-透视表): 总计小计内容文本对齐无效
2024-01-25 15:43:57 +08:00
taojinlong
66cae1289a fix(数据源): API数据源验证有效性提示失败但数据表依然显示有效标识 2024-01-25 15:33:50 +08:00
wisonic-s
beb80a9453 fix(视图-透视表): 总计小计内容文本对齐无效 2024-01-25 15:28:10 +08:00
taojinlong
b64c5d04e0 Merge pull request #7829 from dataease/pr@dev-v2@fixds
refactor(数据源): 拆分接口
2024-01-25 14:43:45 +08:00
taojinlong
ac736abe0c refactor(数据源): 拆分接口 2024-01-25 14:38:44 +08:00
ulleo
5a6716b72b Merge pull request #7826 from ulleo/dev-v2
fix: 指标卡-高级-阈值 颜色设置后展示错误
2024-01-25 13:59:01 +08:00
ulleo
d83232bde0 fix: 指标卡-高级-阈值 颜色设置后展示错误
【仪表板】指标卡-样式-指标值-后缀-更换字体颜色-保存后刷新页面-在指标值处进行任意操作字体颜色变更为了默认颜色
【仪表板】指标卡-高级-阈值-判断条件有误-未满足条件也改变了字体颜色
2024-01-25 13:58:26 +08:00
taojinlong
aa0199a934 Merge pull request #7824 from dataease/pr@dev-v2@fixds
Pr@dev v2@fixds
2024-01-25 12:54:26 +08:00
taojinlong
3fca6dce19 fix(数据源): 校验状态没有记录改变 2024-01-25 12:53:40 +08:00
taojinlong
3401731a91 refactor: 拆分数据源接口 2024-01-25 12:52:40 +08:00
ulleo
ab6cf8ed5f Merge pull request #7817 from ulleo/dev-v2
fix: 【仪表板】指标卡-高级-阈值-介于条件-最小值为0被判断成了值为空
2024-01-25 10:18:14 +08:00
ulleo
bfb1619a1a fix: 【仪表板】指标卡-高级-阈值-介于条件-最小值为0被判断成了值为空 2024-01-25 10:09:35 +08:00
fit2cloudrd
8c8fd154ce Merge pull request #7815 from dataease/pr@dev-v2@perf_ds_log
fix: 数据源日志报错
2024-01-25 10:03:00 +08:00
dataeaseShu
9d0e6688af Merge pull request #7814 from dataease/pr@dev-v2_dzz
fix: 【仪表板、数据大屏】预览页-标题栏 未垂直居中对齐
2024-01-25 10:01:01 +08:00
dataeaseShu
671dd2e08b fix: 【仪表板、数据大屏】预览页-标题栏 未垂直居中对齐 2024-01-25 10:00:23 +08:00
wisonic-s
632cd607c5 Merge pull request #7806 from dataease/pr@dev-v2@feat_pivot_table_support
feat(视图-透视表): 支持透视表
2024-01-24 18:40:45 +08:00
wisonic-s
b8f2f4fad0 feat(视图-透视表): 支持透视表 2024-01-24 18:39:25 +08:00
taojinlong
2342eb240e Merge pull request #7800 from dataease/pr@dev-v2@fixds
fix: oracle 支持视图
2024-01-24 17:06:13 +08:00
taojinlong
03bb052183 fix: oracle 支持视图 2024-01-24 17:05:31 +08:00
fit2cloud-chenyw
df9be9b5ef fix: 数据源日志报错 2024-01-24 11:08:41 +08:00
dataeaseShu
07c8166e6a Merge pull request #7781 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2024-01-24 10:54:17 +08:00
dataeaseShu
714a19cf1f Merge branch 'dev-v2' into pr@dev-v2_dzz 2024-01-24 10:53:43 +08:00
dataeaseShu
a8eb3a00e6 feat: 查询组件年月范围 2024-01-24 10:49:52 +08:00
fit2cloud-chenyw
971f327994 Merge pull request #7779 from dataease/pr@dev-v2@perf_log_tips
perf: 日志列表过滤条件文案
2024-01-24 10:09:08 +08:00
fit2cloud-chenyw
bd3ff54eac perf: 日志列表过滤条件文案 2024-01-24 10:05:01 +08:00
jianneng-fit2cloud
73d7768c5b Merge pull request #7777 from dataease/pr@dev-v2@sync-latestUse-fix
fix(同步管理-数据连接管理): 查询最近创建时,添加根据源类型过滤,源或者目标源
2024-01-23 23:13:33 +08:00
jianneng-fit2cloud
8efe8b0ce5 fix(同步管理-数据连接管理): 查询最近创建时,添加根据源类型过滤,源或者目标源 2024-01-23 23:09:08 +08:00
fit2cloudrd
7bb9a610d2 Merge pull request #7776 from dataease/pr@v2_refactor_dectl
refactor: 镜像未变化时,升级安装不重复加载镜像文件
2024-01-23 19:10:16 +08:00
xuwei-fit2cloud
22522c8a5c refactor: 镜像未变化时,升级安装不重复加载镜像文件 2024-01-23 19:08:24 +08:00
fit2cloud-chenyw
44c8d58ead Merge pull request #7775 from dataease/pr@dev-v2@perf_log_grid_export
perf: 日志列表过滤及导出
2024-01-23 17:52:18 +08:00
王嘉豪
9c778ef73f Merge pull request #7774 from dataease/pr@dev-v2@refactor_template-market
refactor: 模版管理预览列表带入过滤条件查询
2024-01-23 17:47:21 +08:00
wangjiahao
067b8bc383 refactor: 模版管理预览列表带入过滤条件查询 2024-01-23 17:44:35 +08:00
fit2cloud-chenyw
3169c79971 perf: 日志列表过滤及导出 2024-01-23 17:43:41 +08:00
王嘉豪
1e9d8b26ec Merge pull request #7770 from dataease/pr@dev-v2@refactor_batch-opt
refactor: 批量操作优化
2024-01-23 16:01:18 +08:00
wangjiahao
18cfe958ff refactor: 批量操作优化 2024-01-23 15:58:51 +08:00
王嘉豪
db45b7c020 Merge pull request #7769 from dataease/pr@dev-v2@refactor_batch-opt
refactor: 优化指标卡批量操作逻辑
2024-01-23 15:38:40 +08:00
wangjiahao
dc12026faf refactor: 优化指标卡批量操作逻辑 2024-01-23 15:36:46 +08:00
fit2cloudrd
9089753efb Merge pull request #7766 from dataease/pr@v2_fix_dectl
fix: 修复dectl脚本执行条件的判断逻辑
2024-01-23 14:58:15 +08:00
xuwei-fit2cloud
4c6446b647 fix: 修复dectl脚本执行条件的判断逻辑 2024-01-23 14:57:36 +08:00
王嘉豪
c981b49dd4 Merge pull request #7765 from dataease/pr@dev-v2@fix_scroll
fix(数据大屏): 修复展开图表下拉框滚动滚轮导致画板缩放问题
2024-01-23 13:49:41 +08:00
wangjiahao
88e033ad7d fix(数据大屏): 修复展开图表下拉框滚动滚轮导致画板缩放问题 2024-01-23 13:47:37 +08:00
王嘉豪
ac62e11524 Merge pull request #7764 from dataease/pr@dev-v2@fix_group
fix(数据大屏): 修复组合以后,手动编辑组合W/H,改变的只有组合框,组合内的组件无大小变化问题
2024-01-23 13:35:47 +08:00
wangjiahao
9c0fc7a5fe fix(数据大屏): 修复组合以后,手动编辑组合W/H,改变的只有组合框,组合内的组件无大小变化问题 2024-01-23 13:33:04 +08:00
王嘉豪
662ee1410e Merge pull request #7763 from dataease/pr@dev-v2@refactor_screen
refactor(数据大屏): 优化组合操作
2024-01-23 12:39:46 +08:00
wangjiahao
90f5671544 refactor(数据大屏): 优化组合操作 2024-01-23 12:37:54 +08:00
taojinlong
c5b1838ec5 Merge pull request #7762 from dataease/pr@dev-v2@fixds
fix: 升级json-path依赖
2024-01-23 12:31:58 +08:00
taojinlong
02d31c6dca fix: 升级json-path依赖 2024-01-23 12:31:16 +08:00
Junjun
95ac564bb4 Merge pull request #7760 from dataease/pr@dev-v2@refactor_sql
refactor: 增加SQL片段预览执行SQL查看
2024-01-23 11:27:47 +08:00
junjun
6e79d60032 refactor: 增加SQL片段预览执行SQL查看 2024-01-23 11:26:39 +08:00
fit2cloudrd
662f222c4a Merge pull request #7759 from dataease/pr@dev-v2@perf_pom
perf: 升级json-path依赖
2024-01-23 11:14:58 +08:00
王嘉豪
fc26ead3fc Merge pull request #7756 from dataease/pr@dev-v2@refactor_dashboard
Pr@dev v2@refactor dashboard
2024-01-23 10:45:40 +08:00
wangjiahao
dfb53889e6 refactor: 优化批量设置时多选组件标签显示,但下拉为空的场景描述 2024-01-23 10:43:33 +08:00
fit2cloud-chenyw
783594e1ab perf: 升级json-path依赖 2024-01-23 10:25:35 +08:00
wangjiahao
383eb77513 refactor: 优化水印样式 2024-01-23 10:17:25 +08:00
王嘉豪
ae9de856ce Merge pull request #7755 from dataease/pr@dev-v2@revert_screen
revert: 回退多余提交
2024-01-23 10:07:20 +08:00
wangjiahao
10e5f5d1e5 revert: 回退多余提交 2024-01-23 10:05:20 +08:00
王嘉豪
1330253b02 Merge pull request #7754 from dataease/pr@dev-v2@revert_screen
revert: 回退多余提交
2024-01-23 10:00:41 +08:00
wangjiahao
fb7b9c602c revert: 回退多余提交 2024-01-23 09:58:30 +08:00
王嘉豪
a0721a2186 Merge pull request #7753 from dataease/pr@dev-v2@style_screen
Pr@dev v2@style screen
2024-01-22 18:53:43 +08:00
wangjiahao
4b6f21c6be style: 优化大屏样式 2024-01-22 18:51:18 +08:00
wangjiahao
c56d811259 Merge remote-tracking branch 'origin/dev-v2' into dev-v2 2024-01-22 18:29:38 +08:00
fit2cloudrd
af9664fb32 Merge pull request #7751 from dataease/pr@v2_refactor_dectl
refactor: 优化dectl脚本
2024-01-22 18:24:56 +08:00
xuwei-fit2cloud
e9c713150a refactor: 优化dectl脚本 2024-01-22 18:23:07 +08:00
wangjiahao
9bc751ffda refactor: 优化大屏水印展示效果 2024-01-22 17:56:13 +08:00
王嘉豪
884c865360 Merge pull request #7748 from dataease/pr@dev-v2@refactor_screen-watermark
refactor: 优化大屏水印展示效果
2024-01-22 17:49:38 +08:00
wangjiahao
ba517d0073 refactor: 优化大屏水印展示效果 2024-01-22 17:34:18 +08:00
dataeaseShu
389c38beca Merge pull request #7746 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2024-01-22 17:16:52 +08:00
dataeaseShu
58e2c74fec fix: 拼写报错 2024-01-22 17:15:47 +08:00
dataeaseShu
7169c34d45 Merge branch 'dev-v2' into pr@dev-v2_dzz 2024-01-22 17:14:01 +08:00
dataeaseShu
6b2d77ce44 feat: 年月时间范围组件 2024-01-22 17:12:39 +08:00
ulleo
d4a863f47d Merge pull request #7745 from ulleo/dev-v2
feat: 指标卡>指标值>后缀增加显示设置
2024-01-22 17:12:35 +08:00
ulleo
230384e2b1 feat: 指标卡>指标值>后缀增加显示设置 2024-01-22 17:11:15 +08:00
fit2cloud-chenyw
1f281a5958 Merge pull request #7743 from dataease/pr@dev-v2@feat_api_doc
feat: 增加api文档入口
2024-01-22 17:06:55 +08:00
fit2cloud-chenyw
65311f00f4 feat: 增加api文档入口 2024-01-22 17:03:59 +08:00
fit2cloud-chenyw
e5b38d9fd1 Merge pull request #7742 from dataease/pr@dev-v2@perf_log_grid
perf: 日志列表增加状态字段
2024-01-22 16:52:15 +08:00
fit2cloud-chenyw
c9243c8ab6 perf: 日志列表增加状态字段 2024-01-22 16:49:06 +08:00
ulleo
e105f811b6 Merge pull request #7740 from ulleo/dev-v2
fix: 【数据大屏】icon色值不对,暗色下对应N600-DARK(#A6A6A6)
2024-01-22 16:24:50 +08:00
ulleo
851eb58044 fix: 【数据大屏】icon色值不对,暗色下对应N600-DARK(#A6A6A6) 2024-01-22 16:04:00 +08:00
fit2cloudrd
93d66baa4a Merge pull request #7736 from dataease/pr@v2_enhance_dectl
refactor: 优化dectl脚本,获取当前版本的同时可以查询最新版本 #7492
2024-01-22 15:27:28 +08:00
xuwei-fit2cloud
5a93d15d5d refactor: 优化dectl脚本,获取当前版本的同时可以查询最新版本 #7492 2024-01-22 15:26:28 +08:00
王嘉豪
a4abd603e7 Merge pull request #7734 from dataease/pr@dev-v2@refactor_dashboard-scale
Pr@dev v2@refactor dashboard scale
2024-01-22 15:04:47 +08:00
wangjiahao
dbabb1fe64 refactor: 优化仪表板样式缩放比例,组件内边距缩放比例 2024-01-22 15:02:27 +08:00
wangjiahao
0e07afe3aa fix: 修复复制可视化资源出现权限变更的问题 2024-01-22 14:48:29 +08:00
王嘉豪
ce3b78e51d Merge pull request #7732 from dataease/pr@dev-v2@fix_copy-auth
fix: 修复复制可视化资源出现权限变更的问题
2024-01-22 13:40:01 +08:00
wangjiahao
9ec95b2b82 fix: 修复复制可视化资源出现权限变更的问题 2024-01-22 13:33:50 +08:00
fit2cloud-chenyw
d317dff1f8 Merge pull request #7731 from dataease/pr@dev-v2@perf_login_log
perf: 登录失败日志
2024-01-22 11:45:00 +08:00
fit2cloud-chenyw
953a613b72 perf: 登录失败日志 2024-01-22 11:40:37 +08:00
王嘉豪
8e74935357 Merge pull request #7730 from dataease/pr@dev-v2@refactor_view
refactor: 图表放大时禁用联动跳转等操作
2024-01-22 11:22:28 +08:00
wangjiahao
deeea0ae76 refactor: 图表放大时禁用联动跳转等操作 2024-01-22 11:20:18 +08:00
fit2cloudrd
753ae3c67a Update issue templates 2024-01-22 11:15:42 +08:00
fit2cloudrd
ed8c71d61e Update issue templates 2024-01-22 11:07:03 +08:00
王嘉豪
0c25455106 Merge pull request #7727 from dataease/pr@dev-v2@fix_screen
fix: 数据大屏非图表组件输入样式信息回车出现跳转问题
2024-01-22 11:01:40 +08:00
wangjiahao
3e41ca5587 fix: 数据大屏非图表组件输入样式信息回车出现跳转问题 2024-01-22 10:59:27 +08:00
王嘉豪
263e66f484 Merge pull request #7723 from dataease/pr@dev-v2@style_template
style: 优化模版按钮显示样式
2024-01-22 10:36:35 +08:00
wangjiahao
182c15943d style: 优化模版按钮显示样式 2024-01-22 10:33:19 +08:00
ulleo
5340c51235 Merge pull request #7719 from ulleo/dev-v2
fix: 指标卡字体不缩放
2024-01-19 18:19:46 +08:00
ulleo
e0735a8946 fix: 指标卡字体不缩放 2024-01-19 18:19:04 +08:00
ulleo
d07161138b Merge pull request #7718 from ulleo/dev-v2
feat: 图表增加指标卡
2024-01-19 18:07:53 +08:00
王嘉豪
36e72a65d4 Merge pull request #7717 from dataease/pr@dev-v2@fix_screen
Pr@dev v2@fix screen
2024-01-19 18:06:33 +08:00
ulleo
ba18375d9c feat: 图表增加指标卡 2024-01-19 18:06:33 +08:00
wangjiahao
e80444e420 fix: 修复部分场景模板中心没有出现应用按钮的问题 2024-01-19 18:04:02 +08:00
wangjiahao
671dd498a1 fix(数据大屏): 数据大屏键盘移动组件移动后没有触发保存的问题 #7695 2024-01-19 17:40:27 +08:00
wangjiahao
9275c7e352 fix: 修复没有仪表板创建权限,在工作台可以点击使用模板新建跳转到创建页面问题 2024-01-19 17:38:30 +08:00
wisonic-s
5e73fb07b3 Merge pull request #7705 from dataease/pr@dev-v2@fix_liquid_big_number
fix(视图-水波图): 数值过大显示异常
2024-01-18 18:54:46 +08:00
wisonic-s
e38f14b40d fix(视图-水波图): 数值过大显示异常 2024-01-18 18:53:22 +08:00
taojinlong
b9efdf30f4 Merge pull request #7703 from dataease/pr@dev-v2@fixds
fix: 限制 mysql 非法参数
2024-01-18 17:55:59 +08:00
taojinlong
4128adf5fc fix: 限制 mysql 非法参数 2024-01-18 17:53:34 +08:00
wisonic-s
34bd4fe0a0 Merge pull request #7701 from dataease/pr@dev-v2@fix_table_scroll_break_header
fix(视图-表格): 横向拖动滚动条表头显示异常#7510
2024-01-18 17:33:13 +08:00
wisonic-s
29f47068dd fix(视图-表格): 横向拖动滚动条表头显示异常#7510 2024-01-18 17:31:15 +08:00
taojinlong
fa4b8663f6 Merge pull request #7699 from dataease/pr@dev-v2@fixds
feat: 数据源、数据集过滤是区分大小写
2024-01-18 16:56:20 +08:00
taojinlong
4890307b65 feat: 支持db2 2024-01-18 16:55:50 +08:00
fit2cloud-chenyw
d96cf1d4ff Merge pull request #7697 from dataease/pr@dev-v2@style_log_inlet
style: 日志功能入口样式
2024-01-18 16:03:23 +08:00
fit2cloud-chenyw
5e5abc7db1 style: 日志功能入口样式 2024-01-18 16:01:10 +08:00
taojinlong
0a30b03187 feat: 数据源、数据集过滤是区分大小写 2024-01-18 15:49:13 +08:00
王嘉豪
dd78758598 Merge pull request #7694 from dataease/pr@dev-v2@refactor_richtext
refactor: 富文本视图富文本组件进入编辑状态自动聚焦在文档末尾
2024-01-18 14:01:46 +08:00
wangjiahao
ec4d3006f7 refactor: 富文本视图富文本组件进入编辑状态自动聚焦在文档末尾 2024-01-18 13:59:29 +08:00
wisonic-s
38a80e196d Merge pull request #7692 from dataease/pr@dev-v2@feat_chart_title_font_size
feat(视图-标题): 标题字体大小默认16#6729
2024-01-18 12:29:23 +08:00
wisonic-s
24f9fc46f2 feat(视图-标题): 标题字体大小默认16#6729 2024-01-18 12:25:38 +08:00
fit2cloud-chenyw
92b682d72d Merge pull request #7691 from dataease/pr@dev-v2@perf_resource_sync
perf: 同步游离资源
2024-01-18 12:15:33 +08:00
fit2cloud-chenyw
7c117335ff perf: 同步游离资源 2024-01-18 12:13:11 +08:00
dataeaseShu
3e44b9c988 Merge pull request #7690 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2024-01-18 11:10:12 +08:00
dataeaseShu
2198955bff Merge branch 'dev-v2' into pr@dev-v2_dzz 2024-01-18 11:09:20 +08:00
fit2cloud-chenyw
2b18180dd9 Merge pull request #7687 from dataease/pr@dev-v2@fix_spring_version_adapt
fix: springcloud、springboot版本适配
2024-01-18 10:53:25 +08:00
fit2cloud-chenyw
b0fb7106c7 fix: springcloud、springboot版本适配 2024-01-18 10:50:48 +08:00
dataeaseShu
8891141983 fix: 按钮 距离底部间距不对 2024-01-18 10:33:02 +08:00
dataeaseShu
36de38b5db fix: 仪表板风格-保存按钮,文字大小12px 2024-01-18 10:25:47 +08:00
dataeaseShu
a7d3fc21f4 fix: 选择数据源-没有数据源的空文件夹不显示在列表 2024-01-18 10:21:33 +08:00
Junjun
096fc226d4 Merge pull request #7684 from dataease/pr@dev-v2@build_calcite
build: 升级calcite依赖
2024-01-18 10:10:25 +08:00
junjun
601b3590a3 build: 升级calcite依赖 2024-01-18 10:09:35 +08:00
Junjun
8026883a5d Merge pull request #7683 from dataease/pr@dev-v2@refactor_dataset
refactor: 修复数据集预览报错提示
2024-01-18 10:06:16 +08:00
junjun
babf61f8e9 refactor: 修复数据集预览报错提示 2024-01-18 10:04:39 +08:00
fit2cloud-chenyw
bdaa71e914 Merge pull request #7680 from dataease/pr@dev-v2@perf_pom
feat: pom错误
2024-01-18 09:14:47 +08:00
fit2cloud-chenyw
f040c2db41 feat: pom错误 2024-01-18 09:12:38 +08:00
fit2cloud-chenyw
c815c7391b Merge pull request #7679 from dataease/pr@dev-v2@perf_rmonitor
feat: 首次升级企业版监测游离资源
2024-01-18 09:08:06 +08:00
fit2cloud-chenyw
9af8a75ebb feat: 首次升级企业版监测游离资源 2024-01-18 09:05:33 +08:00
fit2cloud-chenyw
77de69e20f Merge pull request #7677 from dataease/pr@dev-v2@feat_sync_resource
feat: 社区版资源同步到企业版
2024-01-17 19:07:45 +08:00
fit2cloud-chenyw
846aebaf6d feat: 社区版资源同步到企业版 2024-01-17 19:03:01 +08:00
jianneng-fit2cloud
f1b010816a Merge pull request #7672 from dataease/pr@dev-v2@menu-remove-border
style(左侧菜单树): 去掉描边
2024-01-17 18:12:44 +08:00
taojinlong
c6e18900ef Merge pull request #7675 from dataease/pr@dev-v2@fixds
refactor: 升级依赖
2024-01-17 17:53:55 +08:00
taojinlong
f6d656ae51 refactor: 升级依赖 2024-01-17 17:48:07 +08:00
dataeaseShu
2857573c11 Merge pull request #7674 from dataease/pr@dev-v2_dzz
fix: 批量管理新建计算字段字段类型不显示
2024-01-17 17:41:47 +08:00
dataeaseShu
ce7ce6b17c fix: 批量管理新建计算字段字段类型不显示 2024-01-17 17:41:04 +08:00
dataeaseShu
0b74a8ec36 feat: 移动端 2024-01-17 17:26:19 +08:00
jianneng-fit2cloud
6048682232 style(左侧菜单树): 去掉描边 2024-01-17 17:05:03 +08:00
王嘉豪
9497a774ad Merge pull request #7670 from dataease/pr@dev-v2@fix_screen
fix: 修复大尺寸数据大屏初始化未移动到中心点问题,可能吧位置坐标置空问题
2024-01-17 15:20:39 +08:00
wangjiahao
45858792f7 fix: 修复大尺寸数据大屏初始化未移动到中心点问题,可能吧位置坐标置空问题 2024-01-17 15:18:08 +08:00
jianneng-fit2cloud
575122be47 Merge pull request #7667 from dataease/pr@dev-v2@sync-TableField-add-precision
fix(同步管理-任务管理): 目标表字段无法设置小数精度问题
2024-01-17 12:44:01 +08:00
王嘉豪
0c346e4ebf Merge pull request #7668 from dataease/pr@dev-v2@fix_menu
fix: 修复右键图标后,鼠标点击图层位置,组件处弹出的菜单不会隐藏问题
2024-01-17 11:35:47 +08:00
wangjiahao
90b008e7f8 fix: 修复右键图标后,鼠标点击图层位置,组件处弹出的菜单不会隐藏问题 2024-01-17 11:33:47 +08:00
jianneng-fit2cloud
d1c7470e75 fix(同步管理-任务管理): 目标表字段无法设置小数精度问题 2024-01-17 11:30:17 +08:00
王嘉豪
7fc1e50c3d Merge pull request #7666 from dataease/pr@dev-v2@fix_cut
fix: 修复图表剪切后选择其他组件可直接对剪切图表组合并显示问题
2024-01-17 11:18:09 +08:00
wangjiahao
afe73c918b fix: 修复图表剪切后选择其他组件可直接对剪切图表组合并显示问题 2024-01-17 11:15:48 +08:00
王嘉豪
fbb403ddae Merge pull request #7664 from dataease/pr@dev-v2@refactor_recommond-template
refactor: 工作台模版展示优化
2024-01-17 10:57:23 +08:00
wangjiahao
278cee6d20 refactor: 工作台模版展示优化 2024-01-17 10:54:52 +08:00
fit2cloud-chenyw
207abf0f6e Merge pull request #7660 from dataease/pr@dev-v2@fix_flyway_conflict
fix: 2.3flyway冲突
2024-01-16 16:26:43 +08:00
fit2cloud-chenyw
e81befdc67 fix: 2.3flyway冲突 2024-01-16 16:24:05 +08:00
fit2cloud-chenyw
eabf2dcecc Merge pull request #7659 from dataease/pr@dev-v2@fix_flyway
fix: flyway错误包括desktop版本
2024-01-16 16:17:03 +08:00
fit2cloud-chenyw
2158db4f41 Merge branch 'dev-v2' into pr@dev-v2@fix_flyway 2024-01-16 16:16:20 +08:00
fit2cloud-chenyw
2daad1bd25 fix: flyway错误包括desktop版本 2024-01-16 16:07:39 +08:00
王嘉豪
12251436ef Merge pull request #7658 from dataease/pr@dev-v2@refactor_recommond-template
refactor: 工作台中的推荐模板中可以展示自定义的用户模板
2024-01-16 16:00:44 +08:00
王嘉豪
028f6170bb Merge branch 'dev-v2' into pr@dev-v2@refactor_recommond-template 2024-01-16 16:00:36 +08:00
wangjiahao
881a60dfa3 refactor: 工作台中的推荐模板中可以展示自定义的用户模板 2024-01-16 15:57:57 +08:00
王嘉豪
6aba4cecb9 Merge pull request #7654 from dataease/pr@dev-v2@refactor_template
refactor: 优化模版管理命名限制
2024-01-16 15:15:27 +08:00
wangjiahao
60ffb1bd5e refactor: 优化模版管理命名限制 2024-01-16 15:12:23 +08:00
fit2cloud-chenyw
443db1809f Merge pull request #7651 from dataease/pr@dev-v2@fix_task_module_typos_error
fix: 任务模块拼写错误
2024-01-16 14:36:20 +08:00
fit2cloud-chenyw
63dbe674d6 fix: 任务模块拼写错误 2024-01-16 14:33:12 +08:00
王嘉豪
f3be8d6204 Merge pull request #7647 from dataease/pr@dev-v2@fix_canvas
fix: 修复通过仪表板配置设置历史仪表板的图表标题字号,只有个别图表生效问题
2024-01-16 11:30:06 +08:00
wangjiahao
82947ef3e7 fix: 修复通过仪表板配置设置历史仪表板的图表标题字号,只有个别图表生效问题 2024-01-16 11:29:36 +08:00
王嘉豪
eec8f29cc9 Merge pull request #7646 from dataease/pr@dev-v2@fix_tab
fix(仪表板): 修复仪表板Tab内外相同字号在预览界面显示不同的问题
2024-01-16 10:35:33 +08:00
王嘉豪
18cd8ce3c5 Merge pull request #7645 from dataease/pr@dev-v2@revert_canvas
revert: 去除多余依赖
2024-01-16 10:35:02 +08:00
wangjiahao
9d9f7efbe9 fix(仪表板): 修复仪表板Tab内外相同字号在预览界面显示不同的问题 2024-01-16 10:33:42 +08:00
wangjiahao
e07d0ba640 revert: 去除多余依赖 2024-01-16 10:21:37 +08:00
王嘉豪
eda1b6286f Merge pull request #7641 from dataease/pr@dev-v2@refactor_canvas
Pr@dev v2@refactor canvas
2024-01-16 09:41:25 +08:00
wangjiahao
23dfe4ab7f refactor(数据大屏): 大屏位置定位数据变更为展示原始数据不再随缩放改变 2024-01-16 09:40:25 +08:00
wangjiahao
5823316316 refactor: 富文本新增阿里巴巴普惠体 2024-01-15 22:47:10 +08:00
wangjiahao
496624a152 fix(数据大屏): 修改分组中富文本编辑状态还可以移动问题 2024-01-15 22:38:37 +08:00
fit2cloud-chenyw
3a87318f4b Merge pull request #7639 from dataease/pr@dev-v2@feat_share_from_xpack
feat: 分享功能从xpack下放到core
2024-01-15 18:20:02 +08:00
fit2cloud-chenyw
20e44797f4 feat: 分享功能从xpack下放到core 2024-01-15 18:16:53 +08:00
taojinlong
3bc105cc4c Merge pull request #7638 from dataease/pr@dev-v2@fixDatasource
fix:【数据源】重命名数据源名称与编辑数据源名称长度限制规则不一致
2024-01-15 18:10:41 +08:00
taojinlong
539d407342 fix: 数据源校验返回信息 2024-01-15 18:08:48 +08:00
jianneng-fit2cloud
fbe9f2821a Merge pull request #7629 from dataease/pr@dev-v2@datasource-add-getDsTree-fun
feat(数据准备-数据源): 添加获取数据源目录的函数
2024-01-15 16:55:23 +08:00
fit2cloud-chenyw
b5eb2d8835 Merge pull request #7631 from dataease/pr@dev-v2@feat_view_embedded
fix: 登录日志导致社区版无lic无法登录
2024-01-15 16:25:11 +08:00
fit2cloud-chenyw
d813e44765 fix: 登录日志导致社区版无lic无法登录 2024-01-15 16:23:49 +08:00
jianneng-fit2cloud
bfff446cf4 feat(数据准备-数据源): 添加获取数据源目录的函数 2024-01-15 14:56:11 +08:00
fit2cloud-chenyw
fbbb7de86b Merge pull request #7627 from dataease/pr@dev-v2@perf_login_log
fix: 登录日志导致社区版无lic无法登录
2024-01-15 11:47:03 +08:00
fit2cloud-chenyw
66d98dfdbe fix: 登录日志导致社区版无lic无法登录 2024-01-15 11:46:03 +08:00
王嘉豪
9cfcf3d38b Merge pull request #7625 from dataease/pr@dev-v2@fix_group-richtext
fix(数据大屏): 修改分组中富文本编辑状态还可以移动问题
2024-01-15 11:35:45 +08:00
wangjiahao
e56eda3f07 fix(数据大屏): 修改分组中富文本编辑状态还可以移动问题 2024-01-15 11:34:38 +08:00
王嘉豪
67bc775a68 Merge pull request #7618 from dataease/pr@dev-v2@feat_alignment
feat(数据大屏): 支持多选几个组件后,上下左右快速对齐
2024-01-12 18:45:04 +08:00
wangjiahao
6b3782a926 feat(数据大屏): 支持多选几个组件后,上下左右快速对齐 2024-01-12 18:44:04 +08:00
fit2cloud-chenyw
aa04313ff4 Merge pull request #7616 from dataease/pr@dev-v2@perf_commit_sql
fix: 数据结构注释导致安装失败
2024-01-12 17:24:36 +08:00
fit2cloud-chenyw
297764a4a3 fix: 数据结构注释导致安装失败 2024-01-12 17:22:53 +08:00
taojinlong
fda351bb00 Merge pull request #7614 from dataease/pr@dev-v2@feat_timeout
fix: 解析sql出错
2024-01-12 16:24:53 +08:00
taojinlong
a90c2e65b9 fix: 解析sql出错 2024-01-12 16:24:16 +08:00
fit2cloud-chenyw
a8e29e11ad Merge pull request #7609 from dataease/pr@dev-v2@perf_sync_log
perf: 统一同步模块日志目录
2024-01-12 14:00:34 +08:00
fit2cloud-chenyw
6dbceb0fcf perf: 统一同步模块日志目录 2024-01-12 13:59:38 +08:00
fit2cloud-chenyw
7222a57a5b Merge pull request #7608 from dataease/pr@dev-v2@perf_installer_with_task
perf: 安装脚本增加任务模块
2024-01-12 13:03:14 +08:00
fit2cloud-chenyw
3eaee74baf perf: 安装脚本增加任务模块 2024-01-12 13:02:11 +08:00
fit2cloud-chenyw
b8f6930dec Merge pull request #7606 from dataease/pr@dev-v2@perf_sync
perf: 同步任务模块api依赖缺失
2024-01-12 11:23:19 +08:00
fit2cloud-chenyw
fac4205974 perf: 同步任务模块api依赖缺失 2024-01-12 11:22:16 +08:00
fit2cloud-chenyw
c9a752e198 perf: 同步任务模块 2024-01-12 10:35:21 +08:00
王嘉豪
5d9b8462d2 Merge pull request #7604 from dataease/pr@dev-v2@fix_console-error
fix: 修复新建可视化资源控制台有异常错误信息问题
2024-01-12 09:52:58 +08:00
wangjiahao
20cd55a1be fix: 修复新建可视化资源控制台有异常错误信息问题 2024-01-12 09:52:14 +08:00
王嘉豪
916a7ec456 Merge pull request #7602 from dataease/pr@dev-v2@feat_panel-sort
feat(仪表板): 仪表板点击组件可连续横向自动占位排列
2024-01-11 17:43:34 +08:00
wangjiahao
00b3f520e0 feat(仪表板): 仪表板点击组件可连续横向自动占位排列 2024-01-11 17:42:49 +08:00
taojinlong
91e286520d Merge pull request #7601 from dataease/pr@dev-v2@feat_timeout
feat: 【系统设置】支持系统参数设置-前端超时时间设置
2024-01-11 17:26:06 +08:00
taojinlong
a7c7f0b5da feat: 【系统设置】支持系统参数设置-前端超时时间设置 2024-01-11 17:01:17 +08:00
fit2cloud-chenyw
ecfca28ad2 Merge pull request #7590 from dataease/pr@dev-v2@perf_xpack_front_package
perf: xpack前端依赖更新
2024-01-11 15:58:01 +08:00
fit2cloud-chenyw
df66b0320c perf: xpack前端依赖更新 2024-01-11 15:56:59 +08:00
王嘉豪
88bc16e94c Merge pull request #7589 from dataease/pr@dev-v2@refactor_tab-length
refactor: 增加Tab标题字符限制长度为50
2024-01-11 15:56:34 +08:00
wangjiahao
cc4af0d423 refactor: 增加Tab标题字符限制长度为50 2024-01-11 15:55:05 +08:00
王嘉豪
4c951b3c93 Merge pull request #7588 from dataease/pr@dev-v2@refactor_size
refactor(数据大屏): 调整屏幕尺寸的上限
2024-01-11 15:49:38 +08:00
wangjiahao
1ef0a58e79 refactor(数据大屏): 调整屏幕尺寸的上限 2024-01-11 15:48:19 +08:00
fit2cloud-chenyw
2120436264 Merge pull request #7587 from dataease/pr@dev-v2@perf_task_menu
perf: 任务管理菜单路由
2024-01-11 15:28:57 +08:00
fit2cloud-chenyw
12380fe830 perf: 任务管理菜单路由 2024-01-11 15:28:20 +08:00
王嘉豪
c0d01a0a49 Merge pull request #7586 from dataease/pr@dev-v2@revert_commit
revert: 去掉注释代码
2024-01-11 15:12:52 +08:00
wangjiahao
c75cb1ae48 revert: 去掉注释代码 2024-01-11 15:12:05 +08:00
王嘉豪
515aa93af5 Merge pull request #7585 from dataease/pr@dev-v2@refactor_canvas
refactor: 画布样式逻辑调整
2024-01-11 15:11:17 +08:00
wangjiahao
1a0083d285 refactor: 画布样式逻辑调整 2024-01-11 15:09:17 +08:00
fit2cloud-chenyw
a42660c315 Merge pull request #7574 from dataease/pr@dev-v2@sync-task
feat(系统管理-同步管理):
2024-01-11 15:08:29 +08:00
jianneng-fit2cloud
78a7a6fa54 fix: 去掉无用的包引用 2024-01-11 15:06:30 +08:00
fit2cloud-chenyw
4953bb5d3c Merge pull request #7583 from dataease/pr@dev-v2@perf_remove_hutool
perf: 移除hutool
2024-01-11 14:44:26 +08:00
fit2cloud-chenyw
c9685da158 perf: 移除hutool 2024-01-11 14:43:23 +08:00
jianneng-fit2cloud
1de9d27115 Merge branch 'dev-v2' into pr@dev-v2@sync-task 2024-01-11 14:02:11 +08:00
dataeaseShu
9308b27ee3 Merge pull request #7582 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2024-01-11 14:00:00 +08:00
dataeaseShu
486688f52f Merge branch 'dev-v2' into pr@dev-v2_dzz 2024-01-11 13:40:34 +08:00
dataeaseShu
e52b5e1b9d fix: 查询条件点击删除后,右侧编辑还存在 2024-01-11 11:37:17 +08:00
dataeaseShu
f125dec4ba fix: Excel数据源替换数据,文件较大时加载时间长,且没有加载图标,体验不佳 2024-01-11 11:36:59 +08:00
王嘉豪
4e531af454 Merge pull request #7580 from dataease/pr@dev-v2@refactor_style
refactor: 可视化资源树水印等样式逻辑调整
2024-01-11 10:43:00 +08:00
wangjiahao
1ce8f6418c refactor: 可视化资源树水印等样式逻辑调整 2024-01-11 10:40:40 +08:00
王嘉豪
9c6ee9b18b Merge pull request #7519 from ZhaoQian1222/pr@dev-v2@update_table_desc
fix:添加数据库表字段描述
2024-01-11 10:35:31 +08:00
jianneng-fit2cloud
7aa24c4420 统一版本号 2024-01-10 17:54:37 +08:00
jianneng-fit2cloud
53c9d1731e feat(系统管理-同步管理):
1.添加目标数据源同步到数据准备
2.UI调整
2024-01-10 17:21:08 +08:00
fit2cloud-chenyw
60e9d88ba9 Merge pull request #7569 from dataease/pr@dev-v2@feat_update_version
perf: 升级版本号
2024-01-10 15:17:44 +08:00
fit2cloud-chenyw
a95fe5ee7b perf: 升级版本号 2024-01-10 15:16:43 +08:00
fit2cloud-chenyw
e963a1ef75 Merge pull request #7566 from dataease/pr@dev-v2@perf_sync_submodule_version
perf: 同步子模块版本
2024-01-10 14:10:21 +08:00
fit2cloud-chenyw
003e02089a perf: 特殊单词Wheres忽略typos 2024-01-10 14:08:12 +08:00
fit2cloud-chenyw
81ca0b5be2 perf: 特殊单词Whereas忽略typos 2024-01-10 14:06:18 +08:00
fit2cloud-chenyw
e95216e1d5 perf: 同步子模块版本 2024-01-10 14:02:58 +08:00
Junjun
704f1182f9 Merge pull request #7561 from dataease/pr@dev-v2@feat_api
feat: 数据集视图接口api
2024-01-10 10:27:52 +08:00
junjun
e5308b0738 feat: 数据集视图接口api 2024-01-10 10:26:12 +08:00
王嘉豪
33f3949036 Merge pull request #7555 from dataease/pr@dev-v2@feat_watermark
feat: 可视化资源支持显示水印
2024-01-09 17:10:29 +08:00
wangjiahao
f3413e91fa feat: 可视化资源支持显示水印 2024-01-09 17:08:28 +08:00
fit2cloud-chenyw
f00c378817 Merge pull request #7554 from dataease/pr@dev-v2@perf_log_build
perf: 日志模块打包无效
2024-01-09 14:52:48 +08:00
fit2cloud-chenyw
776629c02d perf: 日志模块打包无效 2024-01-09 14:51:32 +08:00
dataeaseShu
e71f1e1253 Merge pull request #7552 from dataease/pr@dev-v2_dzz
fix: 查询组件,组件间间隔不一致。
2024-01-09 11:47:41 +08:00
dataeaseShu
1c92d25932 fix: 查询组件,组件间间隔不一致。 2024-01-09 11:47:16 +08:00
fit2cloud-chenyw
875786b87a Merge pull request #7550 from dataease/pr@dev-v2@perf_log_flyway
perf: 日志模块flyway
2024-01-09 11:09:45 +08:00
fit2cloud-chenyw
da9d16486b perf: 日志模块flyway 2024-01-09 11:08:36 +08:00
fit2cloud-chenyw
0e640403cd Merge pull request #7549 from dataease/pr@dev-v2@feat_log
Pr@dev v2@feat log
2024-01-09 10:56:37 +08:00
fit2cloud-chenyw
c35d73691d perf: typos规则 2024-01-09 10:55:00 +08:00
fit2cloud-chenyw
ee8db44375 feat: 日志模块 2024-01-09 10:49:38 +08:00
dataeaseShu
9520ca45b6 Merge pull request #7547 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2024-01-09 10:37:25 +08:00
dataeaseShu
1e2d6f7145 Merge branch 'dev-v2' into pr@dev-v2_dzz 2024-01-09 10:36:16 +08:00
dataeaseShu
2b95be6022 fix: 不同数据源同名的表无法做关联(无法选中) 2024-01-09 10:34:38 +08:00
Junjun
d7eb9bd20a Merge pull request #7546 from dataease/pr@dev-v2@feat_api
feat: 数据集视图接口api
2024-01-09 10:18:25 +08:00
junjun
32770b055a feat: 数据集视图接口api 2024-01-09 10:14:01 +08:00
王嘉豪
68ac1e20e7 Merge pull request #7543 from dataease/pr@dev-v2@feat_watermark
feat: 可视化资源支持显示水印
2024-01-08 18:37:20 +08:00
wangjiahao
9497450d58 feat: 可视化资源支持显示水印 2024-01-08 18:34:44 +08:00
dataeaseShu
fec4d03824 Merge pull request #7538 from dataease/pr@dev-v2_dzz
feat: 嵌入式支持嵌入仪表板、数据大屏、数据源、数据集页面(带左侧的树形菜单)
2024-01-08 16:35:33 +08:00
dataeaseShu
33a68c46f4 feat: 嵌入式支持嵌入仪表板、数据大屏、数据源、数据集页面(带左侧的树形菜单) 2024-01-08 16:32:23 +08:00
zhaoqian
5a688dd3db fix:修正数据库表字段描述 2024-01-03 16:54:21 +08:00
taojinlong
a0ee331fdc fix:【数据源】重命名数据源名称与编辑数据源名称长度限制规则不一致 2024-01-03 15:54:01 +08:00
taojinlong
125da76b11 Merge pull request #7513 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2024-01-03 15:48:53 +08:00
taojinlong
a23cb61d64 Merge branch 'dev-v2' into pr@dev-v2@fixDatasource 2024-01-03 15:47:58 +08:00
taojinlong
c63c1c4779 fix: 识别csv 字段类型 2024-01-03 15:39:01 +08:00
fit2cloudrd
2d52f3a45e Merge pull request #7509 from dataease/dependabot/maven/cn.hutool-hutool-core-5.8.24
build(deps): bump cn.hutool:hutool-core from 5.8.16 to 5.8.24
2024-01-03 14:04:41 +08:00
dependabot[bot]
ecd195caa8 build(deps): bump cn.hutool:hutool-core from 5.8.16 to 5.8.24
Bumps [cn.hutool:hutool-core](https://github.com/dromara/hutool) from 5.8.16 to 5.8.24.
- [Release notes](https://github.com/dromara/hutool/releases)
- [Changelog](https://github.com/dromara/hutool/blob/v5-master/CHANGELOG.md)
- [Commits](https://github.com/dromara/hutool/commits/5.8.24)

---
updated-dependencies:
- dependency-name: cn.hutool:hutool-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-03 06:03:36 +00:00
王嘉豪
e156a9b6e5 Merge pull request #7491 from dataease/pr@dev-v2@refactor_api
refactor: 更新api文档
2024-01-02 14:10:54 +08:00
wangjiahao
86d3e47f60 refactor: 更新api文档 2024-01-02 14:09:07 +08:00
dataeaseShu
7ea552fbab Merge pull request #7483 from dataease/pr@dev-v2_dzz
fix: 数据源名称过长时-创建数据集选择数据源-✅与名称重叠
2024-01-02 10:29:26 +08:00
dataeaseShu
a5d49551cd fix: 数据源名称过长时-创建数据集选择数据源-✅与名称重叠 2024-01-02 10:27:56 +08:00
王嘉豪
779a0ab052 Merge pull request #7482 from dataease/pr@dev-v2@refactor_group
refactor: 组合组件预览优化
2023-12-29 19:12:00 +08:00
wangjiahao
d0e91241a5 refactor: 组合组件预览优化 2023-12-29 19:11:05 +08:00
王嘉豪
6732a476ba Merge pull request #7481 from dataease/pr@dev-v2@refactor_copy
refactor: 优化资源复制
2023-12-29 18:16:05 +08:00
wangjiahao
908a596641 refactor: 优化资源复制 2023-12-29 18:14:35 +08:00
taojinlong
a86103c013 Merge pull request #7479 from dataease/pr@dev-v2@fixDatasource
refactor: readme 2023 -> 2024
2023-12-29 16:23:20 +08:00
taojinlong
36252a0758 refactor: readme 2023 -> 2024 2023-12-29 16:21:58 +08:00
taojinlong
5e83d113b2 Merge pull request #7469 from dataease/pr@dev-v2@fixDatasource
fix:【数据源】-本地Excel文件创建的数据源数据预览为空
2023-12-29 12:20:55 +08:00
taojinlong
237c3c37bc fix:【数据源】-本地Excel文件创建的数据源数据预览为空 2023-12-29 12:16:21 +08:00
dataeaseShu
10f2eabc2d Merge pull request #7465 from dataease/pr@dev-v2_dzz
fix: 建议通过创建完上一个数据源后的继续创建操作的默认文件夹仍然保持为同一个
2023-12-29 11:27:07 +08:00
dataeaseShu
12f4743eab fix: 建议通过创建完上一个数据源后的继续创建操作的默认文件夹仍然保持为同一个 2023-12-29 11:26:43 +08:00
dataeaseShu
7ea61e91fe Merge pull request #7463 from dataease/pr@dev-v2_dzz
fix: 【系统设置】-查看世界村地图数据,加载时间过长,可能导致浏览器崩溃
2023-12-29 10:54:51 +08:00
dataeaseShu
32df66438e fix: 【系统设置】-查看世界村地图数据,加载时间过长,可能导致浏览器崩溃 2023-12-29 10:50:54 +08:00
fit2cloud-chenyw
fe172b1588 Merge pull request #7457 from dataease/pr@dev-v2@fix_embedded_permission
fix: 嵌入式权限
2023-12-28 18:49:58 +08:00
fit2cloud-chenyw
0307b1b3e9 fix: 嵌入式权限 2023-12-28 18:49:02 +08:00
dataeaseShu
6a6bca4d68 Merge pull request #7451 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-28 17:42:45 +08:00
dataeaseShu
ad9c38cbaf fix: 数据源删除最后一个参数 2023-12-28 17:39:31 +08:00
dataeaseShu
75fed43c4b fix: 搜索结果页的标题显示与设计稿不符 2023-12-28 17:25:46 +08:00
taojinlong
981758fa01 Merge pull request #7447 from dataease/pr@dev-v2@fixDatasource
fix: 【数据源】重命名数据源名称与编辑数据源名称长度限制规则不一致
2023-12-28 14:52:26 +08:00
ulleo
ff01f21543 Merge pull request #7446 from ulleo/dev-v2
feat: 图表标题右侧图标修改为按比例展示大小
2023-12-28 14:27:52 +08:00
ulleo
b854f44ce3 feat: 图表标题右侧图标修改为按比例展示大小 2023-12-28 14:26:54 +08:00
fit2cloud-chenyw
7c1da38a76 Merge pull request #7443 from dataease/pr@dev-v2@style_help_doc
style: 帮助文档popover使用hover触发
2023-12-28 14:13:54 +08:00
fit2cloud-chenyw
89c9a6eab8 style: 帮助文档popover使用hover触发 2023-12-28 14:12:50 +08:00
fit2cloud-chenyw
f4b9cf1692 Merge pull request #7442 from dataease/pr@dev-v2@style_toolbox
style: 工具箱样式
2023-12-28 13:39:26 +08:00
fit2cloud-chenyw
128563d07f style: 工具箱样式 2023-12-28 13:38:38 +08:00
Junjun
3d8200abb6 Merge pull request #7440 from dataease/pr@dev-v2@fix_rename
fix: 数据集重名校验
2023-12-28 12:55:56 +08:00
junjun
d4f5fb95bf fix: 数据集重名校验 2023-12-28 12:55:07 +08:00
fit2cloud-chenyw
8e4cfdd827 Merge pull request #7439 from dataease/pr@dev-v2@fix_authentication_sync
fix: 认证设置同步失败
2023-12-28 12:16:10 +08:00
fit2cloud-chenyw
d4c28df40d fix: 认证设置同步失败 2023-12-28 12:15:11 +08:00
taojinlong
c8cb514ce4 fix: 【数据源】重命名数据源名称与编辑数据源名称长度限制规则不一致 2023-12-28 12:09:38 +08:00
dataeaseShu
868d7721bc fix: 嵌入式字体 2023-12-28 12:01:24 +08:00
fit2cloud-chenyw
6df0fcc93f Merge pull request #7437 from dataease/pr@dev-v2@style_sys_setting
style: 系统设置样式
2023-12-28 11:59:32 +08:00
fit2cloud-chenyw
5fa516ced9 style: 系统设置样式 2023-12-28 11:57:31 +08:00
dataeaseShu
c0406566d2 Merge pull request #7431 from dataease/pr@dev-v2_dzz
fix: 嵌入式组合图
2023-12-28 11:11:32 +08:00
dataeaseShu
11645edbb9 fix: 嵌入式组合图 2023-12-28 11:10:54 +08:00
dataeaseShu
36a513383f Merge pull request #7428 from dataease/pr@dev-v2_dzz
fix: 【嵌入式】-视图预览中无法展示数据大屏中组合的图表
2023-12-28 10:39:45 +08:00
dataeaseShu
d90c8abcec fix: 【嵌入式】-视图预览中无法展示数据大屏中组合的图表 2023-12-28 10:37:43 +08:00
fit2cloud-chenyw
9125a25507 Merge pull request #7426 from dataease/pr@dev-v2@perf_template_market_i18n
perf: 模板管理文案
2023-12-28 09:54:00 +08:00
fit2cloud-chenyw
1fd31825fb perf: 模板管理文案 2023-12-28 09:52:22 +08:00
dataeaseShu
0541574096 Merge pull request #7425 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-28 09:49:30 +08:00
dataeaseShu
df08a6eab8 fix: API数据源数据表请求参数全部填满后最后一条参数无法删除 #7336 2023-12-28 09:48:16 +08:00
王嘉豪
7b920855ea Merge pull request #7424 from dataease/pr@dev-v2@refactor_scale
Pr@dev v2@refactor scale
2023-12-28 09:46:58 +08:00
wangjiahao
06b4465522 refactor: 缩放优化 2023-12-28 09:46:01 +08:00
dataeaseShu
288343cede fix: 仪表板内/数据大屏内修改仪表板/数据大屏名称-提示内容错误 2023-12-28 09:33:53 +08:00
wangjiahao
2d50f1d87b fix: 修改大屏预览分组位置定位不准确问题 2023-12-27 21:21:14 +08:00
王嘉豪
12eb78f596 Merge pull request #7422 from dataease/pr@dev-v2@fix_group-position
fix: 修改大屏预览分组位置定位不准确问题
2023-12-27 20:58:14 +08:00
wangjiahao
d3b9bb68b9 fix: 修改大屏预览分组位置定位不准确问题 2023-12-27 20:56:23 +08:00
王嘉豪
a635695756 Merge pull request #7421 from dataease/pr@dev-v2@fix_group-info
Pr@dev v2@fix group info
2023-12-27 18:49:19 +08:00
wangjiahao
0711ea8bc2 fix: 解决跨组合快捷键操作问题 2023-12-27 18:47:13 +08:00
wangjiahao
c61b7fcf6e fix: MAC平台,在大屏编辑界面按shift键后,无法使用command键选择图层进行组合 2023-12-27 18:41:45 +08:00
fit2cloud-chenyw
535645a55f Merge pull request #7415 from dataease/pr@dev-v2@style_embedded
style: 嵌入式管理样式
2023-12-27 17:27:02 +08:00
fit2cloud-chenyw
f1d8a310e8 style: 嵌入式管理样式 2023-12-27 17:25:58 +08:00
王嘉豪
2668a28555 Merge pull request #7414 from dataease/pr@dev-v2@fix_filter
fix: 在过滤组件使用默认值的情况下,视图过滤放大后展示的是组件默认值 #7314
2023-12-27 17:19:23 +08:00
wangjiahao
aacdcd26bf fix: 在过滤组件使用默认值的情况下,视图过滤放大后展示的是组件默认值 #7314 2023-12-27 17:18:26 +08:00
王嘉豪
b55d457d64 Merge pull request #7413 from dataease/pr@dev-v2@style_label
style: 文案提示修改
2023-12-27 16:28:24 +08:00
wangjiahao
e3bbfbcc15 style: 文案提示修改 2023-12-27 16:25:29 +08:00
fit2cloud-chenyw
87bc166a21 Merge pull request #7410 from dataease/pr@dev-v2@feat_version_number
feat: 升级版本号到2.2.0
2023-12-27 16:07:14 +08:00
fit2cloud-chenyw
ff301e26bf Merge branch 'dev-v2' into pr@dev-v2@feat_version_number 2023-12-27 16:06:42 +08:00
王嘉豪
5b89c9805c Merge pull request #7409 from dataease/pr@dev-v2@revert_pom
revert: 回退依赖
2023-12-27 15:55:51 +08:00
wangjiahao
48e17b8b8f revert: 回退依赖 2023-12-27 15:54:46 +08:00
fit2cloud-chenyw
21a694dd55 feat: 升级版本号到2.2.0 2023-12-27 15:53:42 +08:00
王嘉豪
1964142f2a Merge pull request #7408 from dataease/pr@dev-v2@refactor_mark
style: 样式优化
2023-12-27 15:50:47 +08:00
fit2cloud-chenyw
46ba2ccd98 Merge pull request #7407 from dataease/pr@dev-v2@style_toolbar_org_switcher
style: 导航栏-组织最大宽度为180px
2023-12-27 15:49:01 +08:00
wangjiahao
fee4c82b43 style: 样式优化 2023-12-27 15:47:39 +08:00
王嘉豪
09f6c7b64b Merge pull request #7406 from dataease/pr@dev-v2@refactor_label
refactor: 文案修改
2023-12-27 15:30:53 +08:00
王嘉豪
2a7655e885 Merge branch 'dev-v2' into pr@dev-v2@refactor_label 2023-12-27 15:30:46 +08:00
wisonic-s
b4b0598fc3 Merge pull request #7405 from dataease/pr@dev-v2@fix_table_page_font_color
fix(视图-明细表): 分页统一为灰色
2023-12-27 15:28:15 +08:00
wisonic-s
85d5e682ed fix(视图-明细表): 分页统一为灰色 2023-12-27 15:25:40 +08:00
wangjiahao
a6639f7b6d refactor: 文案修改 2023-12-27 15:20:29 +08:00
王嘉豪
4d63e9c842 Merge pull request #7402 from dataease/pr@dev-v2@fix_group
fix: 修复部分表格隐藏后打开没有立即渲染问题
2023-12-27 15:15:36 +08:00
wangjiahao
6a66e47ee0 fix: 修复部分表格隐藏后打开没有立即渲染问题 2023-12-27 15:13:32 +08:00
fit2cloud-chenyw
9d5ca20fb7 style: 导航栏-组织最大宽度为180px 2023-12-27 15:01:04 +08:00
dataeaseShu
3334618cea Merge pull request #7401 from dataease/pr@dev-v2_dzz
fix: 字体白名单
2023-12-27 14:47:37 +08:00
dataeaseShu
97a1ab1c4e fix: 字体白名单 2023-12-27 14:47:07 +08:00
fit2cloud-chenyw
e3db57eee9 Merge pull request #7400 from dataease/pr@dev-v2@perf_user_enable_tips
perf: 用户管理-切换状态按钮失效文案
2023-12-27 14:28:52 +08:00
dataeaseShu
cb804c8aff Merge pull request #7399 from dataease/pr@dev-v2_dzz
fix: 字体
2023-12-27 14:26:37 +08:00
dataeaseShu
acf5a67899 fix: 字体 2023-12-27 14:22:08 +08:00
fit2cloud-chenyw
8c61212781 perf: 用户管理-切换状态按钮失效文案 2023-12-27 14:05:22 +08:00
dataeaseShu
c9aef50d86 Merge pull request #7397 from dataease/pr@dev-v2_dzz
fix: 字体
2023-12-27 13:55:47 +08:00
dataeaseShu
f0820f1cac fix: 字体 2023-12-27 13:55:10 +08:00
Junjun
5f0ae95072 Merge pull request #7395 from dataease/pr@dev-v2@fix_filter
fix: 修复过滤组件过滤时间戳不显示的问题 #7313
2023-12-27 12:36:05 +08:00
junjun
31562676ca fix: 修复过滤组件过滤时间戳不显示的问题 #7313 2023-12-27 12:33:04 +08:00
fit2cloud-chenyw
793a98cff3 Merge pull request #7394 from dataease/pr@dev-v2@perf_mvn_package_script
perf: maven打包脚本
2023-12-27 12:32:49 +08:00
fit2cloud-chenyw
e0661b9228 perf: maven打包脚本 2023-12-27 12:31:42 +08:00
dataeaseShu
612cad625e Merge pull request #7392 from dataease/pr@dev-v2_dzz
fix: 字体
2023-12-27 12:17:55 +08:00
王嘉豪
3e1cb06eea Merge pull request #7391 from dataease/pr@dev-v2@style_template-manage
style: 文案提示修改
2023-12-27 12:17:35 +08:00
dataeaseShu
67f1e2cfa3 fix: 字体 2023-12-27 12:17:13 +08:00
wangjiahao
6e25bafd37 style: 文案提示修改 2023-12-27 12:15:19 +08:00
王嘉豪
3ee9ed8c99 Merge pull request #7389 from dataease/pr@dev-v2@style_group
style: 模版管理文案等优化
2023-12-27 12:01:07 +08:00
wangjiahao
d0c5536cfb style: 模版管理文案等优化 2023-12-27 12:00:26 +08:00
dataeaseShu
4fc33761c3 Merge pull request #7388 from dataease/pr@dev-v2_dzz
fix: 字体
2023-12-27 11:47:19 +08:00
dataeaseShu
d4d3c2dc09 fix: 字体 2023-12-27 11:45:06 +08:00
wisonic-s
0d03196feb Merge pull request #7386 from dataease/pr@dev-v2@fix_chart_dataset_field_filter
fix(视图): 数据集字段过滤包含指标
2023-12-27 11:39:23 +08:00
wisonic-s
59f4641d17 fix(视图): 数据集字段过滤包含指标 2023-12-27 11:37:38 +08:00
dataeaseShu
12d44bb4ae Merge pull request #7385 from dataease/pr@dev-v2_dzz
fix: 编译报错
2023-12-27 11:20:47 +08:00
dataeaseShu
096da3025c fix: 编译报错 2023-12-27 11:20:21 +08:00
dataeaseShu
40ca8d0279 Merge pull request #7384 from dataease/pr@dev-v2_dzz
fix: 编译报错
2023-12-27 11:07:46 +08:00
dataeaseShu
bfaad953d8 fix: 编译报错 2023-12-27 11:07:16 +08:00
dataeaseShu
13a729f66c Merge pull request #7383 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-27 10:57:27 +08:00
dataeaseShu
ff2edf3826 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-27 10:56:56 +08:00
dataeaseShu
acd722d4ba fix: 字体测试 2023-12-27 10:56:09 +08:00
王嘉豪
8a98d5c6bd Merge pull request #7382 from dataease/pr@dev-v2@fix_group
Pr@dev v2@fix group
2023-12-27 10:37:39 +08:00
wangjiahao
a5b061d74b fix: 修复模版管理重命名失效问题 2023-12-27 10:36:50 +08:00
dataeaseShu
3211485bb2 Merge pull request #7381 from dataease/pr@dev-v2_dzz
fix: 字体测试
2023-12-27 10:24:57 +08:00
dataeaseShu
b06dfc722a fix: 字体测试 2023-12-27 10:24:12 +08:00
fit2cloud-chenyw
d971f44c11 Merge pull request #7380 from dataease/pr@dev-v2@perf_mvn_package
perf: maven打包脚本
2023-12-27 09:56:43 +08:00
dataeaseShu
49ecb9b31a Merge pull request #7379 from dataease/pr@dev-v2_dzz
fix: 字体测试
2023-12-27 09:56:29 +08:00
fit2cloud-chenyw
84e5067528 perf: maven打包脚本 2023-12-27 09:55:28 +08:00
dataeaseShu
e057c402cb fix: 字体测试 2023-12-27 09:55:12 +08:00
wangjiahao
75f06e4a9d style: 分组区域自适应样式 2023-12-27 09:22:00 +08:00
王嘉豪
9a95e707d4 Merge pull request #7374 from dataease/pr@dev-v2@refactor_group
refactor: 大屏组合支持双击内部组件再解锁移动
2023-12-27 09:12:11 +08:00
wangjiahao
3b26820091 refactor: 大屏组合支持双击内部组件再解锁移动 2023-12-26 22:27:48 +08:00
fit2cloud-chenyw
496b0c2e5d Merge pull request #7371 from dataease/pr@dev-v2@perf_mvn_package
perf: maven打包脚本
2023-12-26 18:45:14 +08:00
fit2cloud-chenyw
f8e7898771 perf: maven打包脚本 2023-12-26 18:44:09 +08:00
dataeaseShu
72e2ae5ddb Merge pull request #7359 from dataease/pr@dev-v2_dzz
fix: 字体测试
2023-12-26 16:12:23 +08:00
dataeaseShu
8a75a7281d fix: 字体测试 2023-12-26 16:11:43 +08:00
dataeaseShu
acc6c299e3 Merge pull request #7357 from dataease/pr@dev-v2_dzz
fix: 字体报错测试
2023-12-26 15:47:31 +08:00
dataeaseShu
a826467fd5 fix: 字体报错测试 2023-12-26 15:46:59 +08:00
dataeaseShu
1e9ea50a62 Merge pull request #7355 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-26 15:14:49 +08:00
dataeaseShu
cc9fb2cf14 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-26 15:14:15 +08:00
dataeaseShu
d110724024 fix: 【工作台】组件样式不对 2023-12-26 15:12:37 +08:00
dataeaseShu
fae0e2492d fix: 查询组件,组件间间隔不一致。 2023-12-26 14:48:47 +08:00
dataeaseShu
ad65021940 Merge pull request #7349 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-26 11:19:29 +08:00
dataeaseShu
cd7e0938e4 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-26 11:15:27 +08:00
dataeaseShu
500cceaf35 fix: 【数据源】API 数据源界面莫名添加行问题 #7335 2023-12-26 11:10:11 +08:00
Junjun
1b8c81044b Merge pull request #7348 from dataease/pr@dev-v2@fix_spell
fix: 拼写错误
2023-12-26 10:59:23 +08:00
junjun
f65fde1a78 fix: 拼写错误 2023-12-26 10:58:37 +08:00
dataeaseShu
a50b4b7510 Merge pull request #7347 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-26 10:54:36 +08:00
dataeaseShu
2693c19434 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-26 10:53:48 +08:00
dataeaseShu
8b11111fc7 fix: 最近使用列表按照最近编辑时间排序错误 2023-12-26 10:52:18 +08:00
Junjun
3a484735b1 Merge pull request #7345 from dataease/pr@dev-v2@fix_filter
fix: 修复过滤组件过滤时间戳不显示的问题 #7313
2023-12-26 10:01:58 +08:00
junjun
198b690d16 fix: 修复过滤组件过滤时间戳不显示的问题 #7313 2023-12-26 10:00:30 +08:00
王嘉豪
e8a0ebd538 Merge pull request #7344 from dataease/pr@dev-v2@refactor_layer
Pr@dev v2@refactor layer
2023-12-25 21:54:12 +08:00
wangjiahao
6e23a564cb refactor: 大屏拖拽进入的组件图层放在最顶层 2023-12-25 21:52:25 +08:00
wangjiahao
32eea248c3 fix: 修复设置大屏组合内视图编辑时未同步缩放问题 2023-12-25 21:37:07 +08:00
王嘉豪
810576b1c2 Merge pull request #7342 from dataease/pr@dev-v2@refactor_style
Pr@dev v2@refactor style
2023-12-25 20:45:56 +08:00
wangjiahao
92afdd0c64 fix: 修复仪表板大屏资源树操作打开窗口不对问题 2023-12-25 20:39:08 +08:00
wangjiahao
6865bebaff refactor: 修改文案 2023-12-25 20:29:58 +08:00
wangjiahao
21069a148f refactor: 大屏分组锁定时,内部组件同步锁定 2023-12-25 20:23:14 +08:00
王嘉豪
2d0290d001 Merge pull request #7340 from dataease/pr@dev-v2@style_template-manage
style: 样式调整
2023-12-25 20:01:12 +08:00
wangjiahao
fd21624d20 style: 样式调整 2023-12-25 19:59:07 +08:00
fit2cloud-chenyw
1001e72922 Merge pull request #7339 from dataease/pr@dev-v2@feat_front_base_path
Pr@dev v2@feat front base path
2023-12-25 18:51:52 +08:00
fit2cloud-chenyw
614e0fc0a5 feat: 前端静态资源增加访问前缀适配打包脚本 2023-12-25 18:51:13 +08:00
fit2cloud-chenyw
b958aacf6c feat: 前端静态资源增加访问前缀 2023-12-25 18:49:43 +08:00
Junjun
b42d2547a9 Merge pull request #7337 from dataease/pr@dev-v2@fix_date
fix: 修复过滤组件过滤时间戳不显示的问题 #7313
2023-12-25 17:42:09 +08:00
junjun
d652d48241 fix: 修复过滤组件过滤时间戳不显示的问题 #7313 2023-12-25 17:41:07 +08:00
Junjun
8243438419 Merge pull request #7333 from dataease/pr@dev-v2@fix_filter
fix: 修复过滤组件过滤时间戳不显示的问题 #7313
2023-12-25 17:18:41 +08:00
junjun
c708761a4a fix: 修复过滤组件过滤时间戳不显示的问题 #7313 2023-12-25 17:17:42 +08:00
dataeaseShu
c63173b409 Merge pull request #7330 from dataease/pr@dev-v2_dzz
fix: 查询组件-删除查询条件-保存-点击添加查询条件-仍显示删除的查询条件
2023-12-25 16:42:51 +08:00
dataeaseShu
4152b42573 fix: 查询组件-删除查询条件-保存-点击添加查询条件-仍显示删除的查询条件 2023-12-25 16:38:01 +08:00
王嘉豪
a3da49e87e Merge pull request #7311 from dataease/pr@dev-v2@style_template-manage
style: 修改模版管理添加分类样式
2023-12-25 12:00:01 +08:00
wangjiahao
a09b45e093 style: 修改模版管理添加分类样式 2023-12-25 11:42:47 +08:00
fit2cloud-chenyw
2fc64c13a2 Merge pull request #7309 from dataease/pr@dev-v2@perf_white_list_otf
perf: 字体文件白名单
2023-12-25 11:20:45 +08:00
fit2cloud-chenyw
e243798f3c perf: 字体文件白名单 2023-12-25 11:19:55 +08:00
dataeaseShu
02ff46df15 Merge pull request #7307 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-25 10:54:05 +08:00
dataeaseShu
bc2f8ac020 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-25 10:52:42 +08:00
fit2cloudrd
c20aef8814 Merge pull request #7306 from dataease/pr@dev-v2@perf_modify_admin_pwd
perf: 允许社区版修改admin密码
2023-12-25 09:51:26 +07:00
taojinlong
0e6e1ad1e3 Merge pull request #7305 from dataease/pr@dev-v2@fixDatasource
fix: 【数据源】-本地Excel文件创建的数据源数据预览为空
2023-12-25 10:50:18 +08:00
dataeaseShu
63f1a6f170 fix: 【查询组件】-时间范围设置动态默认时间,退出编辑后,默认时间清空 2023-12-25 10:50:01 +08:00
王嘉豪
e2cbc538f2 Merge pull request #7302 from dataease/pr@dev-v2@style_template
style: 样式调整
2023-12-22 19:31:09 +08:00
wangjiahao
808c3f2d9d style: 样式调整 2023-12-22 19:30:22 +08:00
fit2cloud-chenyw
4e46148ba7 perf: 允许社区版修改admin密码 2023-12-22 17:23:59 +08:00
fit2cloud-chenyw
c19b17921e feat: 日志模块 2023-12-22 15:39:01 +08:00
王嘉豪
412b2e589b Merge pull request #7294 from dataease/pr@dev-v2@refactor_template-manage
refactor: 优化模版管理批量操作
2023-12-22 14:54:15 +08:00
wangjiahao
87921b27d5 refactor: 优化模版管理批量操作 2023-12-22 14:51:31 +08:00
ulleo
ede9a9b9bf Merge pull request #7293 from ulleo/dev-v2
fix: 数据大屏>提示>显示单选框文字颜色不正确
2023-12-22 14:31:14 +08:00
ulleo
309a8241fc fix: 数据大屏>提示>显示单选框文字颜色不正确 2023-12-22 14:22:44 +08:00
王嘉豪
aae521b847 Merge pull request #7279 from dataease/pr@dev-v2@fix_package
fix: 打包报错
2023-12-22 10:37:27 +08:00
wangjiahao
8927d9e51a fix: 打包报错 2023-12-22 10:33:38 +08:00
王嘉豪
d79f4f53be Merge pull request #7272 from dataease/pr@dev-v2@feat_batch
feat: 模版管理支持批量操作
2023-12-21 21:23:00 +08:00
wangjiahao
042fd6e07c feat: 模版管理支持批量操作 2023-12-21 21:21:15 +08:00
王嘉豪
53273aebfc Merge pull request #7265 from dataease/pr@dev-v2@refactor_template-manage
Pr@dev v2@refactor template manage
2023-12-21 16:46:07 +08:00
wangjiahao
3ebeb687ca refactor: 优化模版管理 2023-12-21 16:43:13 +08:00
taojinlong
797e94d72b fix: 【数据源】-本地Excel文件创建的数据源数据预览为空 2023-12-21 16:28:32 +08:00
Junjun
a81ee84663 Merge pull request #7264 from dataease/pr@dev-v2@refactor_tips
refactor: 计算字段提示文案修改 #7260
2023-12-21 16:26:34 +08:00
junjun
546ba0cec0 refactor: 计算字段提示文案修改 #7260 2023-12-21 16:25:41 +08:00
fit2cloudrd
b7542140ee Merge pull request #7263 from dataease/pr@v2_install_script
refactor: 优化安装脚本提示 #7247
2023-12-21 16:09:48 +08:00
xuwei-fit2cloud
c146405ccd refactor: 优化安装脚本提示 #7247 2023-12-21 16:09:03 +08:00
taojinlong
24cbddf2c2 Merge pull request #7258 from dataease/pr@dev-v2@fixDatasource
fix: 【查询组件】-时间范围绑定参数,无法获取可绑定参数
2023-12-21 15:32:11 +08:00
taojinlong
5a0d12a7d7 fix: 【查询组件】-时间范围绑定参数,无法获取可绑定参数 2023-12-21 15:30:23 +08:00
Junjun
af6eaa196b Merge pull request #7246 from dataease/pr@dev-v2@feat_api
feat: 数据集视图接口api
2023-12-21 11:16:48 +08:00
junjun
bbbc249a2e feat: 数据集视图接口api 2023-12-21 11:15:27 +08:00
dataeaseShu
9d88a17080 Merge pull request #7243 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-21 10:46:05 +08:00
dataeaseShu
0d227a1d8a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-21 10:44:56 +08:00
dataeaseShu
85728287f4 fix: 日期范围参数化 2023-12-21 10:41:48 +08:00
dataeaseShu
079c9bfe7f Merge pull request #7241 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-21 09:53:08 +08:00
dataeaseShu
0a2d333c5e Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-21 09:52:25 +08:00
dataeaseShu
25f42831b4 fix: 日期范围参数 2023-12-21 09:46:55 +08:00
fit2cloud-chenyw
055ff852b1 Merge pull request #7239 from dataease/pr@dev-v2@perf_api_doc_sys
perf: 系统设置api接口文档
2023-12-20 17:57:29 +08:00
fit2cloud-chenyw
5c009d5473 perf: 系统设置api接口文档 2023-12-20 17:55:37 +08:00
taojinlong
b71f60563d Merge pull request #7236 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2023-12-20 17:01:33 +08:00
taojinlong
fc3b3cec3a fix: 数据源设置同步时间 2023-12-20 17:00:40 +08:00
taojinlong
51a5695a60 fix: 识别excel字段类型 2023-12-20 17:00:02 +08:00
fit2cloud-chenyw
672879fb31 Merge pull request #7232 from dataease/pr@dev-v2@perf_api_doc_sort
perf: api接口文档排序
2023-12-20 15:19:15 +08:00
fit2cloud-chenyw
d164027911 perf: api接口文档排序 2023-12-20 15:17:46 +08:00
dataeaseShu
fb8b7a0b55 Merge pull request #7227 from dataease/pr@dev-v2_dzz
fix: 删除注释导致报错
2023-12-20 14:44:28 +08:00
dataeaseShu
8828cf33a6 fix: 删除注释导致报错 2023-12-20 14:43:49 +08:00
dataeaseShu
28eb597381 Merge pull request #7225 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-20 14:34:57 +08:00
dataeaseShu
65ada898cb Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-20 14:34:23 +08:00
dataeaseShu
1333f1f0f7 fix: 增加阿里巴巴普惠体字体 2023-12-20 14:21:21 +08:00
dataeaseShu
9199a30cc7 fix: 查询组件的动态时间默认值没有随时间推移而自动更新 2023-12-20 14:20:50 +08:00
fit2cloud-chenyw
d085ae4565 Merge pull request #7223 from dataease/pr@dev-v2@feat_xpack_api_doc
feat: xpack模块相关api接口文档
2023-12-20 13:28:27 +08:00
fit2cloud-chenyw
545dc1853d feat: xpack模块相关api接口文档 2023-12-20 13:27:07 +08:00
Zhimin Ruan
705a9c150b Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-12-20 09:32:19 +08:00
Zhimin Ruan
eb0fcac721 chore:删除没用的注释 2023-12-20 09:32:11 +08:00
maninhill
332ba3f2d8 chore:去掉没用的注释 2023-12-20 09:23:42 +08:00
maninhill
5a48eb439a chore:去掉没用的注释 2023-12-20 09:23:06 +08:00
maninhill
fc6917efee chore:去掉没用的注释 2023-12-20 09:22:01 +08:00
maninhill
cfc5e7ba36 chore:去掉没用的注释 2023-12-20 09:21:19 +08:00
maninhill
3fbf613467 chore:去掉没用的注释 2023-12-20 09:20:21 +08:00
maninhill
8fbb3b632f chore:去掉没用的注释 2023-12-20 09:18:14 +08:00
maninhill
2c02922b3b chore:去掉没用的 console 日志 2023-12-20 09:16:31 +08:00
maninhill
d21337eac5 chore:去掉没用的注释 2023-12-20 09:10:59 +08:00
fit2cloud-chenyw
60d03dfdb2 Merge pull request #7218 from dataease/pr@dev-v2@feat_api_doc
feat: api接口文档
2023-12-19 19:24:30 +08:00
fit2cloud-chenyw
efdb7ff3f3 feat: api接口文档 2023-12-19 19:23:32 +08:00
fit2cloudrd
f853a2a124 Merge pull request #7209 from dataease/pr@v2_fix_upgrade_script
fix: 修复升级脚本问题
2023-12-19 15:27:45 +08:00
xuwei-fit2cloud
e15a3469fc fix: 修复升级脚本问题 2023-12-19 15:26:54 +08:00
fit2cloudrd
3d013cccec Update issue templates 2023-12-19 11:17:19 +08:00
wangjiahao
acb504c508 refactor: 批量操作时,需要屏蔽其他无关操作 2023-12-18 20:27:24 +08:00
王嘉豪
c5ed39bbba Merge pull request #7202 from dataease/pr@dev-v2@fix_tab
fix: 修复预览时Tab组件也可修改标题问题
2023-12-18 20:13:14 +08:00
王嘉豪
d2e545c511 Merge pull request #7201 from dataease/pr@dev-v2@fix_shortkey
fix: 修复设置大屏百分比时容易触发删除热键问题 #7131
2023-12-18 20:11:07 +08:00
wangjiahao
dafad8e2e6 fix: 修复预览时Tab组件也可修改标题问题 2023-12-18 20:10:40 +08:00
wangjiahao
8616ecc1d5 fix: 修复设置大屏百分比时容易触发删除热键问题 #7131 2023-12-18 20:00:45 +08:00
王嘉豪
d1f66ce127 Merge pull request #7200 from dataease/pr@dev-v2@refactor_copy
refactor: 优化复制操作
2023-12-18 19:25:36 +08:00
wangjiahao
531b28c687 refactor: 优化复制操作 2023-12-18 19:24:58 +08:00
fit2cloudrd
94ff4fe6f2 Merge pull request #7198 from dataease/pr@v2_fix_dectl
refactor: 优化运行模式转换脚本
2023-12-18 18:05:00 +08:00
xuwei-fit2cloud
dbfc219214 refactor: 优化运行模式转换脚本 2023-12-18 18:04:11 +08:00
dataeaseShu
bcee7260fc Merge pull request #7194 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-18 16:20:56 +08:00
dataeaseShu
c50ef171f3 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-18 16:16:58 +08:00
dataeaseShu
6d75ab54fc fix: 新建计算字段提示不准确 #7168 2023-12-18 16:04:39 +08:00
王嘉豪
e729df0713 Merge pull request #7189 from dataease/pr@dev-v2@refactor_resource-tree
refactor: 复制等资源树操作优化
2023-12-18 14:46:22 +08:00
wangjiahao
eaa0610432 refactor: 复制等资源树操作优化 2023-12-18 14:41:26 +08:00
fit2cloud-chenyw
0bd1fb7506 Merge pull request #7187 from dataease/pr@dev-v2@fix_batch_import_user_i18n
fix: 用户批量导入国际化错误
2023-12-18 14:10:18 +08:00
fit2cloud-chenyw
eeee99be12 fix: 用户批量导入国际化错误 2023-12-18 14:09:41 +08:00
fit2cloud-chenyw
61b40e57a3 Merge pull request #7186 from dataease/pr@dev-v2@fix_import_user
fix: 用户批量导入使用的不是默认密码
2023-12-18 13:37:50 +08:00
fit2cloud-chenyw
cc212b8215 fix: 用户批量导入使用的不是默认密码 2023-12-18 13:35:54 +08:00
王嘉豪
dd49eedf34 Merge pull request #7171 from dataease/pr@dev-v2@feat_group-menu
refactor: 数据大屏右键菜单优化
2023-12-14 20:18:56 +08:00
王嘉豪
abf6454c0c Merge pull request #7170 from dataease/pr@dev-v2@feat_group-layer
refactor: 图层样式优化
2023-12-14 20:18:05 +08:00
wangjiahao
8dfe8fb77d refactor: 数据大屏右键菜单优化 2023-12-14 20:17:00 +08:00
wangjiahao
5e2f2b183e refactor: 图层样式优化 2023-12-14 19:26:46 +08:00
dataeaseShu
e64b6cff02 Merge pull request #7163 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-14 15:49:34 +08:00
dataeaseShu
ec5750d5ee Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-14 15:48:43 +08:00
dataeaseShu
22b0b3c81a fix: 建议通过创建完上一个数据源后的继续创建操作的默认文件夹仍然保持为同一个 2023-12-14 15:42:53 +08:00
王嘉豪
26c2404824 Merge pull request #7162 from dataease/pr@dev-v2@feat_group-opt
Pr@dev v2@feat group opt
2023-12-14 15:32:00 +08:00
wangjiahao
ac7046ed27 feat(数据大屏): 支持数据大屏分组内部组件直接穿透操作 2023-12-14 15:29:33 +08:00
dataeaseShu
09b3775717 Merge pull request #7161 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-14 15:13:23 +08:00
dataeaseShu
4471807092 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-14 15:12:44 +08:00
dataeaseShu
ae5eaf003f fix: 【用户管理】筛选条件,组件优化 2023-12-14 15:12:07 +08:00
dataeaseShu
46a90e3014 Merge pull request #7153 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-14 11:13:48 +08:00
dataeaseShu
0771b63d5a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-14 11:13:22 +08:00
dataeaseShu
178734d81e fix: 查询组件,支持下拉选项为必填 2023-12-14 11:00:14 +08:00
wangjiahao
c1b74b1826 style: 大屏分组样式调整 2023-12-13 22:30:49 +08:00
fit2cloudrd
0b44a050e1 Merge pull request #7147 from dataease/fit2cloudrd-patch-1
Update .gitattributes
2023-12-13 18:24:30 +08:00
fit2cloudrd
dd1bff102f Update .gitattributes 2023-12-13 18:24:10 +08:00
王嘉豪
4d720155ce Merge pull request #7145 from dataease/pr@dev-v2@feat_group-adptor
feat(数据大屏): 支持分组内部移动定位操作
2023-12-13 17:43:15 +08:00
wangjiahao
7a14372864 feat(数据大屏): 支持分组内部移动定位操作 2023-12-13 17:38:37 +08:00
wisonic-s
c035461bd0 Merge pull request #7143 from dataease/pr@dev-v2@fix_table_normal_desensitization
fix(视图-汇总表): 脱敏字段显示不正确。
2023-12-13 16:44:12 +08:00
wisonic-s
615b23816a fix(视图-汇总表): 脱敏字段显示不正确。 2023-12-13 16:42:26 +08:00
王嘉豪
fb5169f104 Merge pull request #7142 from dataease/pr@dev-v2@feat_real-list-adaptor
feat(数据大屏): 组合到一个分组后,在图层管理中,可以查看该分组下的组件列表
2023-12-13 15:24:20 +08:00
wangjiahao
ad03dd723f feat(数据大屏): 组合到一个分组后,在图层管理中,可以查看该分组下的组件列表 2023-12-13 15:20:41 +08:00
dataeaseShu
f22162aa6b Merge pull request #7141 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-13 15:03:23 +08:00
dataeaseShu
db5f47758a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-13 15:00:33 +08:00
dataeaseShu
9615ef83cc fix: 动态时间范围 2023-12-13 14:59:57 +08:00
wisonic-s
3dbd40a2f5 Merge pull request #7139 from dataease/pr@dev-v2@fix_table_page_drill
Pr@dev v2@fix table page drill
2023-12-13 14:28:55 +08:00
wisonic-s
7798f92cf9 Merge remote-tracking branch 'origin/dev-v2' into dev-v2 2023-12-13 14:18:48 +08:00
wisonic-s
0e602170e2 fix(视图-表格): 表格组合后点击页面下钻。 2023-12-13 14:18:37 +08:00
王嘉豪
b3263e8d09 Merge pull request #7136 from dataease/pr@dev-v2@feat_real-list
feat(数据大屏): 组合到一个分组后,在图层管理中,可以查看该分组下的组件列表
2023-12-13 13:31:51 +08:00
wangjiahao
f3274c0528 feat(数据大屏): 组合到一个分组后,在图层管理中,可以查看该分组下的组件列表 2023-12-13 13:29:35 +08:00
dataeaseShu
ad3d4e5b4b fix: 【模板中心】按钮 未做自适应宽度 2023-12-13 11:56:37 +08:00
王嘉豪
cd35fe45e8 Merge pull request #7129 from dataease/pr@dev-v2@feat_canvas-scale-adaptor
feat: 画布放大缩小其视图支持并同比放大缩小
2023-12-12 17:07:43 +08:00
wangjiahao
b5b353ce72 feat: 画布放大缩小其视图支持并同比放大缩小 2023-12-12 17:06:26 +08:00
dataeaseShu
e89e2bffe7 Merge pull request #7128 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-12 16:50:42 +08:00
dataeaseShu
9dc760773d Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-12 16:49:28 +08:00
dataeaseShu
b4198a82e3 fix: 开源版可以看到行列权限菜单,但切换后显示空白页面 2023-12-12 16:44:41 +08:00
fit2cloud-chenyw
25cac29366 Merge pull request #7127 from dataease/pr@dev-v2@perf_xpack_component
perf: xpack行列权限前端组件
2023-12-12 16:24:04 +08:00
fit2cloud-chenyw
38a17e960b perf: xpack行列权限前端组件 2023-12-12 16:21:57 +08:00
dataeaseShu
653b3e55b1 fix: 建议创建数据集的下拉框支持搜索,数据源过多的时候目前无法查找 2023-12-12 15:38:16 +08:00
王嘉豪
5c22997a6d Merge pull request #7125 from dataease/pr@dev-v2@feat_canvas-scale
feat: 画布放大缩小其视图支持并同比放大缩小
2023-12-12 15:27:41 +08:00
wangjiahao
fb24f91579 feat: 画布放大缩小其视图支持并同比放大缩小 2023-12-12 15:26:08 +08:00
dataeaseShu
4bc6f82a23 fix: 小屏幕下,用户列表横向滑动,列表内容会与操作按钮重叠 2023-12-12 15:10:18 +08:00
王嘉豪
1a455b529b Merge pull request #7103 from dataease/pr@dev-v2@fix_template
Pr@dev v2@fix template
2023-12-11 13:10:25 +08:00
wangjiahao
f76ca3f250 fix: 修复在仪表板文件夹上应用模板创建仪表板,保存时没有自动选择文件夹问题 2023-12-11 13:08:56 +08:00
wangjiahao
e2503d3cf7 refactor: 修改模版中心默认展开分类 2023-12-11 12:42:10 +08:00
maninhill
84ba535155 Merge pull request #7093 from dataease/dependabot/maven/org.bouncycastle-bcprov-jdk15to18-1.74
build(deps): bump org.bouncycastle:bcprov-jdk15to18 from 1.72 to 1.74
2023-12-08 22:04:20 +08:00
maninhill
cc21bd1d21 Merge pull request #7094 from dataease/dependabot/maven/com.h2database-h2-2.2.220
build(deps): bump com.h2database:h2 from 1.4.199 to 2.2.220
2023-12-08 22:04:10 +08:00
dependabot[bot]
62ad7f1a01 build(deps): bump com.h2database:h2 from 1.4.199 to 2.2.220
Bumps [com.h2database:h2](https://github.com/h2database/h2database) from 1.4.199 to 2.2.220.
- [Release notes](https://github.com/h2database/h2database/releases)
- [Commits](https://github.com/h2database/h2database/compare/version-1.4.199...version-2.2.220)

---
updated-dependencies:
- dependency-name: com.h2database:h2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-08 14:03:33 +00:00
dependabot[bot]
414caf85da build(deps): bump org.bouncycastle:bcprov-jdk15to18 from 1.72 to 1.74
Bumps [org.bouncycastle:bcprov-jdk15to18](https://github.com/bcgit/bc-java) from 1.72 to 1.74.
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

---
updated-dependencies:
- dependency-name: org.bouncycastle:bcprov-jdk15to18
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-08 14:02:44 +00:00
maninhill
4bb88e5bee Update README.md 2023-12-08 12:41:18 +08:00
wisonic-s
ee9155da4a Merge pull request #7079 from dataease/pr@dev-v2@refactor_filter_com
fix: 脱敏字段删除改为标记
2023-12-07 17:58:28 +08:00
wisonic-s
58f02b5eec fix: 脱敏字段删除改为标记 2023-12-07 17:57:08 +08:00
fit2cloud-chenyw
90523b0d56 Merge pull request #7078 from dataease/pr@dev-v2@fix_auth_change
fix: 权限设置存在未保存变更切换权限维度逻辑
2023-12-07 17:42:04 +08:00
fit2cloud-chenyw
fc17707b4e fix: 权限设置存在未保存变更切换权限维度逻辑 2023-12-07 17:40:12 +08:00
wisonic-s
df3a938548 Merge pull request #7076 from dataease/pr@dev-v2@fix_filter_com
fix: 查询组件去除包含列权限脱敏和禁用的列
2023-12-07 16:53:02 +08:00
wisonic-s
6c5b3561e5 fix: 查询组件去除包含列权限脱敏和禁用的列 2023-12-07 16:50:04 +08:00
fit2cloudrd
7abb01e06d Merge pull request #7075 from dataease/fit2cloudrd-patch-1
Update V2.1__ddl.sql
2023-12-07 16:21:42 +08:00
fit2cloudrd
9a0ba8c2a4 Update V2.1__ddl.sql 2023-12-07 16:21:21 +08:00
fit2cloudrd
df8e923d91 Merge pull request #7074 from dataease/fit2cloudrd-patch-1
Update V2.0__core_ddl.sql
2023-12-07 16:18:36 +08:00
fit2cloudrd
3616e2b6dd Update V2.0__core_ddl.sql 2023-12-07 16:16:33 +08:00
fit2cloud-chenyw
e3dda8dd9e Merge pull request #7073 from dataease/pr@dev-v2@fix_qrtz_flyway
fix: 定时器相关flyway
2023-12-07 15:53:27 +08:00
fit2cloud-chenyw
8714dca004 fix: 定时器相关flyway 2023-12-07 15:51:58 +08:00
maninhill
e9968c0f72 Update README.md 2023-12-07 10:41:54 +08:00
fit2cloud-chenyw
2784ad552e Merge pull request #7062 from dataease/pr@dev-v2@fix_desktop_flyway
fix: 桌面版flyway
2023-12-06 21:01:58 +08:00
fit2cloud-chenyw
9c6ef1ca5c fix: 桌面版flyway 2023-12-06 21:00:35 +08:00
王嘉豪
64df2f08a4 Merge pull request #7059 from dataease/pr@dev-v2@style_font
style: 文案修改
2023-12-06 19:48:26 +08:00
wangjiahao
b0d71b48e2 style: 文案修改 2023-12-06 19:47:22 +08:00
王嘉豪
62e072aa61 Merge pull request #7057 from dataease/pr@dev-v2@refactor_flyway
refactor: 更新flyway
2023-12-06 19:42:44 +08:00
wangjiahao
a8ea9459af refactor: 更新flyway 2023-12-06 19:40:02 +08:00
王嘉豪
35d034c003 Merge pull request #7052 from dataease/pr@dev-v2@pref_change-url
pref: 更换模版中心地址
2023-12-06 17:34:39 +08:00
wangjiahao
153ad2bbab pref: 更换模版中心地址 2023-12-06 17:33:21 +08:00
王嘉豪
0ac6745ae7 Merge pull request #7043 from dataease/pr@dev-v2@pref_source-map
pref: 关闭sourceMap
2023-12-06 15:37:50 +08:00
wangjiahao
b2dd7c053a pref: 关闭sourceMap 2023-12-06 15:34:52 +08:00
dataeaseShu
89ef6d5fe8 Merge pull request #7042 from dataease/pr@dev-v2_dzz
fix: 【工作台】填充色内的图标大小不对,与仪表板等模块的大小一致
2023-12-06 15:32:51 +08:00
dataeaseShu
19c94167d0 fix: 【工作台】填充色内的图标大小不对,与仪表板等模块的大小一致 2023-12-06 15:30:38 +08:00
fit2cloudrd
68bd1f49d1 Merge pull request #7039 from dataease/pr@v2_geo
fix: 修改安装脚本文案
2023-12-06 14:58:48 +08:00
xuwei-fit2cloud
27a0706e3d fix: 修改安装脚本文案 2023-12-06 14:58:11 +08:00
王嘉豪
70611f0f12 Merge pull request #7037 from dataease/pr@dev@fix_template-rich-text
fix: 修复富文本示例数据为加入到模版中的问题
2023-12-06 14:05:26 +08:00
wangjiahao
c7b1bced81 fix: 修复富文本示例数据为加入到模版中的问题 2023-12-06 14:03:15 +08:00
王嘉豪
d81f3a7b9b Merge pull request #7034 from dataease/pr@dev@refactor_template-auth
refactor: 模版中心增加权限校验
2023-12-06 13:27:38 +08:00
wangjiahao
b7736aa46c refactor: 模版中心增加权限校验 2023-12-06 13:26:26 +08:00
fit2cloud-chenyw
9f67ed00a1 Merge pull request #7033 from dataease/pr@dev-v2@geometry_upload_validate
perf: 地理信息上传地图文件验证
2023-12-06 11:41:58 +08:00
fit2cloud-chenyw
54c8831dfc perf: 地理信息上传地图文件验证 2023-12-06 11:41:01 +08:00
fit2cloud-chenyw
a245a8008e Merge pull request #7032 from dataease/pr@dev-v2@style_geometry_tree
style: 地理信息树节点超出长度未处理样式
2023-12-06 11:22:46 +08:00
fit2cloud-chenyw
19feb13f74 style: 地理信息树节点超出长度未处理样式 2023-12-06 11:20:40 +08:00
dataeaseShu
eb75365c45 Merge pull request #7030 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-06 10:17:55 +08:00
dataeaseShu
ae7e533591 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-06 10:16:43 +08:00
dataeaseShu
0f6b9c0617 fix: 图标背景颜色替换 2023-12-06 10:14:23 +08:00
fit2cloudrd
165f2781a3 Merge pull request #7028 from dataease/pr@v2_geo
fix: 持久化自定义地图文件
2023-12-06 09:54:28 +08:00
xuwei-fit2cloud
570040a829 fix: 持久化自定义地图文件 2023-12-06 09:53:45 +08:00
fit2cloud-chenyw
38a87a5df9 Merge pull request #7025 from dataease/dev-v2@perf_about_page
fix: 关于页面备注为空显示效果
2023-12-05 21:42:47 +08:00
fit2cloud-chenyw
6e35a33b7b fix: 关于页面备注为空显示效果 2023-12-05 21:41:08 +08:00
fit2cloud-chenyw
858257949f Merge pull request #7024 from dataease/pr@dev-v2@fix_resource_user_deleted
fix: 删除用户后其名下资源无法查看
2023-12-05 21:12:56 +08:00
fit2cloud-chenyw
614006f1c4 fix: 删除用户后其名下资源无法查看 2023-12-05 21:12:15 +08:00
fit2cloud-chenyw
7933f0663e Merge pull request #7022 from dataease/pr@dev-v2@perf_apisix_script
perf: apisix支持Origin请求头穿透
2023-12-05 19:15:58 +08:00
fit2cloud-chenyw
2313a78398 perf: apisix支持Origin请求头穿透 2023-12-05 19:15:00 +08:00
fit2cloud-chenyw
826be69ff6 Merge pull request #7021 from dataease/pr@dev-v2@feat_lark_valid
feat: 飞书有效性状态
2023-12-05 19:12:33 +08:00
fit2cloud-chenyw
93ed208b1f feat: 飞书有效性状态 2023-12-05 19:11:32 +08:00
taojinlong
1b6890bfd8 Merge pull request #7020 from dataease/pr@dev-v2@fixDatasource
fix: 【系统设置】-基础设置中数据源检测时间间隔没有限制数值边界
2023-12-05 04:07:54 -06:00
fit2cloud-chenyw
368d1ded1a Merge pull request #7018 from dataease/pr@dev-v2@perf_embedded_log
feat: 嵌入式应用日志
2023-12-05 17:42:03 +08:00
fit2cloud-chenyw
daf841b0a4 feat: 嵌入式应用日志 2023-12-05 17:40:46 +08:00
王嘉豪
59739532cd Merge pull request #7013 from dataease/pr@dev-v2@fix_tab-canvas
fix: 修复画布区域删除Tab组件tab页后激活的tab页无法立即渲染问题
2023-12-05 16:39:36 +08:00
wangjiahao
b3a687a914 fix: 修复画布区域删除Tab组件tab页后激活的tab页无法立即渲染问题 2023-12-05 16:38:52 +08:00
taojinlong
64f9a4e5fb fix: 【系统设置】-基础设置中数据源检测时间间隔没有限制数值边界 2023-12-05 16:19:10 +08:00
dataeaseShu
4d9a6c580a Merge pull request #7010 from dataease/pr@dev-v2_dzz
fix: 查询组件字段切换
2023-12-05 15:23:10 +08:00
dataeaseShu
79f73b0f2e fix: 查询组件字段切换 2023-12-05 15:22:33 +08:00
王嘉豪
805118dc2f Merge pull request #7008 from dataease/pr@dev-v2@fix_template-error-tips
fix: 修复模版中存在过滤组件时应用有报错提示问题
2023-12-05 15:18:08 +08:00
wangjiahao
eae5cc7da7 fix: 修复模版中存在过滤组件时应用有报错提示问题 2023-12-05 15:15:27 +08:00
dataeaseShu
983b2f7e58 Merge pull request #7007 from dataease/pr@dev-v2_dzz
test: 查询组件测试
2023-12-05 14:56:37 +08:00
dataeaseShu
abb50f3ead test: 查询组件测试 2023-12-05 14:55:46 +08:00
dataeaseShu
68f9b7277c Merge pull request #7005 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-05 14:13:35 +08:00
dataeaseShu
1cd3b6f068 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-05 14:13:04 +08:00
dataeaseShu
5190155d00 test: 查询条件测试 2023-12-05 14:11:13 +08:00
王嘉豪
950917cd3d Merge pull request #7004 from dataease/pr@dev@refactor_catch
refactor: 及时清理模版缓存
2023-12-05 13:38:20 +08:00
wangjiahao
47d5546395 refactor: 及时清理模版缓存 2023-12-05 13:23:02 +08:00
dataeaseShu
c0159772d0 Merge pull request #7001 from dataease/pr@dev-v2_dzz
fix: 字段参数不能为空
2023-12-05 10:56:58 +08:00
dataeaseShu
7cf02e77ca fix: 字段参数不能为空 2023-12-05 10:56:06 +08:00
王嘉豪
3733fe16e1 Merge pull request #7000 from dataease/pr@dev-v2@refactor_template-manage
refactor: 优化最近使用查询逻辑
2023-12-05 10:47:33 +08:00
dataeaseShu
0b79c11a03 Merge pull request #6998 from dataease/pr@dev-v2_dzz
fix: 查询组件配置去除缓存
2023-12-05 10:43:29 +08:00
dataeaseShu
550f40e358 fix: 查询组件配置去除缓存 2023-12-05 10:42:47 +08:00
wangjiahao
a94bac0dd5 refactor: 优化最近使用查询逻辑 2023-12-05 10:42:34 +08:00
dataeaseShu
6ebf22aa7e Merge pull request #6997 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-05 10:39:26 +08:00
dataeaseShu
d394bbdcc8 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-05 10:35:06 +08:00
dataeaseShu
feda7d12f8 fix: 复制数据集并替换table保存提示异常 2023-12-05 10:12:06 +08:00
王嘉豪
5efb9a207e Merge pull request #6995 from dataease/pr@dev-v2@refactor_template-manage
refactor: 模版管理支持多标签
2023-12-05 09:59:24 +08:00
wangjiahao
7b30ad483e refactor: 模版管理支持多标签 2023-12-05 09:58:03 +08:00
王嘉豪
018eb21b7b Merge pull request #6993 from dataease/pr@dev-v2@refactor_template-manage
Pr@dev v2@refactor template manage
2023-12-05 09:36:47 +08:00
wangjiahao
4297c21bef refactor: 模版管理支持多标签 2023-12-05 09:35:43 +08:00
wangjiahao
61582af011 style: 调整新建可视化资源入口样式 2023-12-04 19:55:41 +08:00
fit2cloud-chenyw
7aa587817c Merge pull request #6992 from dataease/pr@dev-v2@perf_lark_login_limit
feat: 飞书用户登录受限
2023-12-04 17:58:31 +08:00
fit2cloud-chenyw
482d166680 feat: 飞书用户登录受限 2023-12-04 17:57:45 +08:00
fit2cloud-chenyw
d60c1ebda8 Merge pull request #6991 from dataease/pr@dev-v2@feat_lark_validate
Pr@dev v2@feat lark validate
2023-12-04 16:28:14 +08:00
fit2cloud-chenyw
5292051a96 feat: 飞书配置信息验证 2023-12-04 16:27:44 +08:00
fit2cloud-chenyw
0cb2efd354 feat: 飞书配置信息验证 2023-12-04 16:25:29 +08:00
taojinlong
7669f6c8c1 Merge pull request #6990 from dataease/pr@dev-v2@fixDatasource
fix: API 数据源更新数据
2023-12-04 02:23:18 -06:00
taojinlong
0db5bb3eec fix: API 数据源更新数据 2023-12-04 16:22:22 +08:00
王嘉豪
2b7e430b53 Merge pull request #6987 from dataease/pr@dev-v2@fix_img-upload
fix: 修复反复切换图片组件样式中缩略图没有变化问题
2023-12-04 15:30:45 +08:00
wangjiahao
79ef6d7ae2 fix: 修复反复切换图片组件样式中缩略图没有变化问题 2023-12-04 15:30:00 +08:00
王嘉豪
014c5c5b83 * fix: 修复使用快捷键反复切换桌面应用导致的数据大屏组件移动失效问题
Pr@dev v2@fix app switch
2023-12-04 15:09:20 +08:00
wangjiahao
df2627bd9f fix: 修复使用快捷键反复切换桌面应用导致的数据大屏组件移动失效问题 2023-12-04 15:08:16 +08:00
dataeaseShu
fb3b61f799 Merge pull request #6985 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-04 14:41:36 +08:00
dataeaseShu
3de4575a8a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-04 14:39:41 +08:00
dataeaseShu
470949f7eb fix: 【系统设置】-模板管理-修改模板名称长度=50,模板的「···」按钮被挤出显示图标范围 2023-12-04 13:53:31 +08:00
fit2cloud-chenyw
0b2fc63f6d Merge pull request #6983 from dataease/pr@dev-v2@perf_user_limit
fix: 受限用户浏览器循环刷新错误
2023-12-04 13:29:44 +08:00
fit2cloud-chenyw
375d6b984c fix: 受限用户浏览器循环刷新错误 2023-12-04 13:28:46 +08:00
王嘉豪
36e03c5f3e fix: 修复首页公共链接分享文案,模版中心分类
* refactor: UI

* refactor: UI

* refactor: UI

* refactor: UI

* refactor: 优化文案样式等

* fix: 修复首页公共链接分享文案,模版中心分类
2023-12-04 13:19:16 +08:00
wangjiahao
5b762ec871 fix: 修复首页公共链接分享文案,模版中心分类 2023-12-04 13:18:01 +08:00
fit2cloud-chenyw
d1659894be Merge pull request #6981 from dataease/pr@dev-v2@fix_user_import_error
fix: 用户批量导入失败
2023-12-04 12:53:54 +08:00
fit2cloud-chenyw
d658387b60 fix: 用户批量导入失败 2023-12-04 12:53:14 +08:00
wangjiahao
6e8e8ef4fc Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-12-04 12:41:15 +08:00
王嘉豪
229ed8ad45 refactor: 优化文案样式等
* refactor: UI

* refactor: UI

* refactor: UI

* refactor: UI

* refactor: 优化文案样式等
2023-12-04 12:40:54 +08:00
wangjiahao
f29efdd2be refactor: 优化文案样式等 2023-12-04 12:38:26 +08:00
fit2cloud-chenyw
c64d54ade5 Merge pull request #6979 from dataease/pr@dev-v2@perf_lic_limit_user
perf: 许可证机制
2023-12-04 12:16:42 +08:00
fit2cloud-chenyw
f6b34ffe12 perf: 许可证机制 2023-12-04 12:15:49 +08:00
wangjiahao
d2522886cb Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2
 Conflicts:
	core/core-frontend/src/views/template-market/component/CategoryTemplateV2.vue
	core/core-frontend/src/views/template-market/index.vue
2023-12-04 11:53:40 +08:00
dataeaseShu
e701b54d08 Merge pull request #6978 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-12-04 11:19:28 +08:00
dataeaseShu
e15524b460 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-12-04 11:18:15 +08:00
dataeaseShu
b7455ede80 fix: 【查询组件】-查询条件设置默认值为固定时间,保存后默认值被置空 2023-12-04 11:00:48 +08:00
王嘉豪
76a4a23689 style: UI (#6974)
* refactor: UI

* refactor: UI

* refactor: UI
2023-12-03 23:37:09 +08:00
wangjiahao
999209757b refactor: UI 2023-12-03 23:35:51 +08:00
wangjiahao
d0d957b695 refactor: UI 2023-12-03 23:18:04 +08:00
fit2cloud-chenyw
6aff064fab Merge pull request #6973 from dataease/pr@dev-v2@fix_ask_page
fix: ask页面文案
2023-12-03 17:22:36 +08:00
fit2cloud-chenyw
829d5d94f4 fix: ask页面文案 2023-12-03 17:21:30 +08:00
fit2cloud-chenyw
8c2fef30a8 Merge pull request #6972 from dataease/pr@dev-v2@fix_embedded_app_name
fix: 嵌入式应用名称长度限制
2023-12-03 17:19:28 +08:00
fit2cloud-chenyw
78ee1b8aa9 fix: 嵌入式应用名称长度限制 2023-12-03 17:18:29 +08:00
fit2cloud-chenyw
38509e1217 Merge pull request #6971 from dataease/pr@dev-v2@fix_pwd_validator
fix: 修改密码验证规则
2023-12-03 17:04:20 +08:00
fit2cloud-chenyw
c4068322ce fix: 修改密码验证规则 2023-12-03 17:03:33 +08:00
fit2cloud-chenyw
7d103e326d Merge pull request #6970 from dataease/pr@dev-v2@perf_ask_token
perf: askToken认证机制
2023-12-03 16:49:54 +08:00
fit2cloud-chenyw
1c3d6fd2e3 perf: askToken认证机制 2023-12-03 16:48:55 +08:00
fit2cloud-chenyw
1fbc2521a7 Merge pull request #6969 from dataease/pr@dev-v2@perf_lic_limit
perf: 企业版许可限制机制
2023-12-03 15:00:17 +08:00
fit2cloud-chenyw
6af4c59fe8 perf: 企业版许可限制机制 2023-12-03 14:59:25 +08:00
fit2cloud-chenyw
c1b11ed31f Merge pull request #6968 from dataease/pr@dev-v2@perf_menu_cache
perf: 菜单缓存机制禁止持久化
2023-12-03 12:29:14 +08:00
fit2cloud-chenyw
a6b047b60b perf: 菜单缓存机制禁止持久化 2023-12-03 12:28:27 +08:00
fit2cloud-chenyw
4d19cc55de Merge pull request #6967 from dataease/pr@dev-v2@feat_distributed_i18n
perf: 分布式国际化
2023-12-03 12:11:17 +08:00
fit2cloud-chenyw
49a0ef79bc perf: 分布式国际化 2023-12-03 12:10:19 +08:00
maninhill
9f6d5e1eb4 Update README.md 2023-12-03 11:56:56 +08:00
maninhill
b5f5f3744c Update README.md 2023-12-02 23:14:26 +08:00
wangjiahao
4bca0ebfbc refactor: UI 2023-12-01 21:35:02 +08:00
wangjiahao
d5d57c6a48 refactor: UI 2023-12-01 18:41:42 +08:00
taojinlong
cde9664013 Merge pull request #6962 from dataease/pr@dev-v2@fixDatasource
fix:  【数据集】列权限自定义脱敏格式显示不正确
2023-12-01 03:21:20 -06:00
fit2cloud-chenyw
6060978ee3 Merge pull request #6961 from dataease/pr@dev-v2@feat_toolbox_menu
style: 工作台样式恢复
2023-12-01 17:13:15 +08:00
fit2cloud-chenyw
bbf0093f8c Merge branch 'dev-v2' into pr@dev-v2@feat_toolbox_menu 2023-12-01 17:11:56 +08:00
fit2cloud-chenyw
53f61613d6 style: 工作台样式恢复 2023-12-01 17:08:31 +08:00
taojinlong
d1107c5625 fix: 【数据集】列权限自定义脱敏格式显示不正确 2023-12-01 16:39:49 +08:00
王嘉豪
925ed694c6 Merge pull request #6960 from dataease/pr@dev-v2@style_UI-adjust
refactor: UI调整,增加调试信息
2023-12-01 16:27:19 +08:00
wangjiahao
c355e6a66e refactor: UI调整,增加调试信息 2023-12-01 16:26:08 +08:00
fit2cloud-chenyw
ccb75f5388 Merge pull request #6959 from dataease/pr@dev-v2@style_workbranch_restore
style: 工作台样式恢复
2023-12-01 16:00:57 +08:00
fit2cloud-chenyw
46c983b863 style: 工作台样式恢复 2023-12-01 15:58:55 +08:00
fit2cloud-chenyw
062ac32209 Merge pull request #6957 from dataease/pr@dev-v2@perf_embedded_validate_domain
perf: 嵌入式校验域名
2023-12-01 15:41:37 +08:00
fit2cloud-chenyw
86a0a96094 perf: 嵌入式校验域名 2023-12-01 15:40:42 +08:00
fit2cloud-chenyw
5ff9cca7b3 Merge pull request #6955 from dataease/pr@dev-v2@perf_embedded_token_validate
perf: 嵌入式持续校验
2023-12-01 14:27:02 +08:00
fit2cloud-chenyw
8a5230f7a7 perf: 嵌入式持续校验 2023-12-01 14:25:19 +08:00
王嘉豪
93a7b23180 Merge pull request #6951 from dataease/pr@dev-v2@style_UI-UPDATE
style: UI调整
2023-11-30 23:16:16 +08:00
wangjiahao
476cc0be75 style: UI调整 2023-11-30 23:15:09 +08:00
fit2cloud-chenyw
590a704b61 Merge pull request #6950 from dataease/pr@dev-v2@perf_front_package
perf: 降低前端打包时间
2023-11-30 20:28:27 +08:00
fit2cloud-chenyw
932c98aeec perf: 降低前端打包时间 2023-11-30 20:27:11 +08:00
fit2cloud-chenyw
ee68dbcbe2 Merge pull request #6949 from dataease/pr@dev-v2@perf_version_number
perf: 升级版本号
2023-11-30 19:58:33 +08:00
fit2cloud-chenyw
246765d989 perf: 升级版本号 2023-11-30 19:57:37 +08:00
王嘉豪
03498c9088 Merge pull request #6948 from dataease/pr@dev-v2@style_UI
style: UI调整
2023-11-30 19:41:49 +08:00
wangjiahao
1b0813f853 style: UI调整 2023-11-30 19:40:42 +08:00
fit2cloud-chenyw
6317ba8a9e Merge pull request #6946 from dataease/pr@dev-v2@perf_lark_setting
perf: 飞书设置页面重构
2023-11-30 17:08:00 +08:00
fit2cloud-chenyw
03c27f7e10 perf: 飞书设置页面重构 2023-11-30 17:04:26 +08:00
taojinlong
600bacef33 Merge pull request #6940 from dataease/pr@dev-v2@fixDatasource
refactor: 升级版本号
2023-11-30 00:03:42 -06:00
taojinlong
d61bbef03f refactor: 升级版本号 2023-11-30 14:02:44 +08:00
wisonic-s
f765203ac4 Merge pull request #6937 from dataease/pr@dev-v2@fix_area_gradient
fix: 面积图开启渐变后颜色随大小改变
2023-11-30 11:18:51 +08:00
wisonic-s
18a8f9ff8f fix: 面积图开启渐变后颜色随大小改变 2023-11-30 11:17:29 +08:00
taojinlong
9cfdf0f9a5 Merge pull request #6936 from dataease/pr@dev-v2@fixDatasource
feat: 读取数据源更新频率配置
2023-11-29 19:30:04 -06:00
taojinlong
60bfa919bc feat: 读取数据源更新频率配置 2023-11-30 09:29:21 +08:00
王嘉豪
86a68b3d3c Merge pull request #6935 from dataease/pr@dev-v2@refactor_create
refactor: 使用模板中心创建UI优化
2023-11-30 00:02:48 +08:00
wangjiahao
23a3cbd5d0 refactor: 使用模板中心创建UI优化 2023-11-30 00:01:55 +08:00
taojinlong
0e4667e5c9 Merge pull request #6933 from dataease/pr@dev-v2@fixDatasource
feat: 读取数据源更新频率配置
2023-11-29 05:26:47 -06:00
taojinlong
1afa7e612f feat: 读取数据源更新频率配置 2023-11-29 19:05:24 +08:00
fit2cloud-chenyw
cd58637d0f Merge pull request #6932 from dataease/pr@dev-v2@perf_hide_sync_task
perf: 隐藏同步任务菜单
2023-11-29 18:46:16 +08:00
fit2cloud-chenyw
1e40c280ef perf: 隐藏同步任务菜单 2023-11-29 18:45:16 +08:00
fit2cloud-chenyw
c617a7e86f Merge pull request #6930 from dataease/pr@dev-v2@perf_hide_bind_setting
perf: 隐藏绑定设置
2023-11-29 18:35:46 +08:00
fit2cloud-chenyw
0ded6b3719 perf: 隐藏绑定设置 2023-11-29 18:34:47 +08:00
fit2cloud-chenyw
642b93a52f Merge pull request #6928 from dataease/pr@dev-v2@perf_lic_controller
perf: 许可控制
2023-11-29 18:28:22 +08:00
fit2cloud-chenyw
1bdbfaf3b3 perf: 许可控制 2023-11-29 18:27:35 +08:00
dataeaseShu
e08d92d1b7 Merge pull request #6927 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-29 17:59:07 +08:00
dataeaseShu
defc522ed9 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-29 17:58:35 +08:00
dataeaseShu
3fb2921e72 fix: 动态时间切换bug 2023-11-29 17:58:10 +08:00
fit2cloud-chenyw
c177304b18 Merge pull request #6926 from dataease/pr@dev-v2@perf_platform_login_tips
perf: 自动创建用户文案
2023-11-29 17:38:01 +08:00
fit2cloud-chenyw
7ae8074065 perf: 自动创建用户文案 2023-11-29 17:37:13 +08:00
fit2cloud-chenyw
83fec2e45f Merge pull request #6925 from dataease/pr@dev-v2@style_top_bar
style: 头部返回工作台右侧间距调整为20px
2023-11-29 17:32:08 +08:00
fit2cloud-chenyw
24c780e2be style: 头部返回工作台右侧间距调整为20px 2023-11-29 17:31:16 +08:00
wisonic-s
5f5822fbae Merge pull request #6924 from dataease/pr@dev-v2@fix_null_value_linkage
fix: 空值联动异常
2023-11-29 17:26:14 +08:00
wisonic-s
ff4411a1ae fix: 空值联动异常 2023-11-29 17:22:08 +08:00
fit2cloud-chenyw
567851fce9 Merge pull request #6922 from dataease/pr@dev-v2@perf_console_log
perf: 删除控制台打印
2023-11-29 17:07:52 +08:00
fit2cloud-chenyw
70332464f4 perf: 删除控制台打印 2023-11-29 17:06:53 +08:00
dataeaseShu
af8ca616f5 Merge pull request #6921 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-29 16:58:12 +08:00
dataeaseShu
35b8205855 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-29 16:57:43 +08:00
dataeaseShu
5ef255705e fix: 快速创建-使用模板创建 2023-11-29 16:55:43 +08:00
王嘉豪
272bb354de Merge pull request #6916 from dataease/pr@dev-v2@style_update
Pr@dev v2@style update
2023-11-29 13:35:17 +08:00
wangjiahao
fa557b136c Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-11-29 13:33:35 +08:00
wangjiahao
b3f65f02b1 style: 样式调整 2023-11-29 13:25:15 +08:00
王嘉豪
b0f079dfe5 Merge pull request #6915 from dataease/pr@dev-v2@refactor_market
refactor: 模板管理模板市场合并为模板中心
2023-11-29 13:18:04 +08:00
wangjiahao
6dc0ea250b refactor: 模板管理模板市场合并为模板中心 2023-11-29 13:11:50 +08:00
junjun
3d21167a32 Merge remote-tracking branch 'origin/dev-v2' into dev-v2 2023-11-28 16:40:03 +08:00
junjun
6fa389e6eb Revert "fix: calcite version"
This reverts commit f232e7fcba.
2023-11-28 16:39:48 +08:00
taojinlong
f787bd0ae3 Merge pull request #6900 from dataease/pr@dev-v2@fixDatasource
fix: 替换excel文件失败
2023-11-28 02:34:52 -06:00
taojinlong
a84e27d687 fix: 替换excel文件失败 2023-11-28 16:33:07 +08:00
dataeaseShu
24103273a1 Merge pull request #6892 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-28 14:37:09 +08:00
dataeaseShu
b9fa60cdd9 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-28 14:36:29 +08:00
dataeaseShu
1313d2afc3 fix: 日期过滤组件支持动态值 2023-11-28 14:35:00 +08:00
junjun
f232e7fcba fix: calcite version 2023-11-28 12:36:10 +08:00
王嘉豪
36846e9753 Merge pull request #6889 from dataease/pr@dev-v2@refactor_market-manage
refactor: 模版管理UI变更
2023-11-28 12:19:05 +08:00
wangjiahao
dd51482a48 refactor: 模版管理UI变更 2023-11-28 12:06:55 +08:00
Junjun
faa242e374 Merge pull request #6885 from dataease/pr@dev-v2@fix_calcitev
fix: calcite version
2023-11-28 10:47:05 +08:00
junjun
aca9e57be5 fix: calcite version 2023-11-28 10:45:58 +08:00
王嘉豪
3c1ba64d81 Merge pull request #6884 from dataease/pr@dev-v2@refactor_market-UI
refactor: UI调整
2023-11-28 10:33:43 +08:00
wangjiahao
9235e71401 refactor: UI调整 2023-11-28 10:29:50 +08:00
Junjun
81a3ebf51a Merge pull request #6882 from dataease/pr@dev-v2@fix_calcite
fix: calcite version
2023-11-28 09:42:51 +08:00
junjun
786ddd5834 fix: calcite version 2023-11-28 09:41:14 +08:00
Junjun
50ef7b5768 Merge pull request #6880 from dataease/pr@dev-v2@feat_calcite
feat: 升级calcite(迁移自定义calcite代码至calcite-de)
2023-11-27 22:10:49 +08:00
junjun
5b158cd0bf feat: 升级calcite(迁移自定义calcite代码至calcite-de) 2023-11-27 22:08:05 +08:00
Junjun
bb39956bd4 Merge pull request #6876 from dataease/pr@dev-v2@fix_id
fix: id序列化
2023-11-27 18:43:54 +08:00
junjun
bbc95c6d8c fix: id序列化 2023-11-27 18:42:31 +08:00
Junjun
a3af0caa47 Merge pull request #6871 from dataease/pr@dev-v2@feat_calcite
feat: 升级calcite(迁移自定义calcite代码至calcite-de)
2023-11-27 17:55:34 +08:00
junjun
c63e06449c feat: 升级calcite(迁移自定义calcite代码至calcite-de) 2023-11-27 17:54:38 +08:00
Junjun
09da6bbd2a Merge pull request #6868 from dataease/pr@dev-v2@revert_calcite
revert: revert
2023-11-27 17:09:30 +08:00
junjun
7dff8a5606 revert: revert 2023-11-27 17:08:41 +08:00
dataeaseShu
98231a9bd2 Merge pull request #6867 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-27 17:00:02 +08:00
dataeaseShu
30479ddfc1 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-27 16:59:17 +08:00
dataeaseShu
c6e8498d10 fix: 动态时间 2023-11-27 16:54:21 +08:00
王嘉豪
896cc6c27e Merge pull request #6866 from dataease/pr@dev-v2@refactor_market
refactor: 模版市场UI优化
2023-11-27 16:40:39 +08:00
王嘉豪
b563b81a56 Merge branch 'dev-v2' into pr@dev-v2@refactor_market 2023-11-27 16:40:09 +08:00
wangjiahao
8d68fb916b refactor: 模版市场UI优化 2023-11-27 16:33:55 +08:00
Junjun
5969444127 Merge pull request #6863 from dataease/pr@dev-v2@feat_calcite
feat: 升级calcite(迁移自定义calcite代码至calcite-de)
2023-11-27 14:02:14 +08:00
junjun
b084095f66 feat: 升级calcite(迁移自定义calcite代码至calcite-de) 2023-11-27 14:00:43 +08:00
fit2cloud-chenyw
04dc406bc8 Merge pull request #6856 from dataease/pr@dev-v2@perf_platform_login
feat: 第三方平台登录对接禁止自动创建用户设置
2023-11-27 11:19:44 +08:00
fit2cloud-chenyw
e6f0a4b9c0 Merge branch 'dev-v2' into pr@dev-v2@perf_platform_login 2023-11-27 11:18:49 +08:00
fit2cloud-chenyw
4b1f78a1ea feat: 第三方平台登录对接禁止自动创建用户设置 2023-11-27 11:13:30 +08:00
fit2cloud-chenyw
c2cc49ffbb Merge pull request #6855 from dataease/pr@dev-v2@perf_sys_setting_flyway
perf: 参数设置flyway
2023-11-27 10:56:22 +08:00
fit2cloud-chenyw
99b233167e perf: 参数设置flyway 2023-11-27 10:51:10 +08:00
fit2cloudrd
0d64e7ab95 Merge pull request #6854 from dataease/pr@v2_modify_originlist
refactor: 修改跨域设置
2023-11-27 10:30:57 +08:00
xuwei-fit2cloud
3cf30b1794 refactor: 修改跨域设置 2023-11-27 10:27:53 +08:00
fit2cloud-chenyw
98381dec47 Merge pull request #6852 from dataease/pr@dev-v2@perf_auto_create_user
perf: 自动创建用户设置(xpack)
2023-11-27 09:09:27 +08:00
fit2cloud-chenyw
4b9038f4f1 perf: 自动创建用户设置(xpack) 2023-11-27 09:05:34 +08:00
fit2cloud-chenyw
9a21b85f60 Merge pull request #6851 from dataease/pr@dev-v2@perf_aksk
perf: ak/sk创建
2023-11-25 16:57:54 +08:00
fit2cloud-chenyw
583ba3d81c perf: ak/sk创建 2023-11-25 16:57:06 +08:00
fit2cloud-chenyw
ee3a04d36b Merge pull request #6850 from dataease/pr@dev-v2@feat_apikey_flyway
feat: ak/sk相关flyway
2023-11-25 16:51:14 +08:00
fit2cloud-chenyw
0db2aeb29a feat: ak/sk相关flyway 2023-11-25 16:50:11 +08:00
fit2cloud-chenyw
b65c310b9c Merge pull request #6849 from dataease/pr@dev-v2@perf_apisix_aksk
perf: apisix集成ak/sk机制
2023-11-25 16:41:55 +08:00
fit2cloud-chenyw
278f394962 perf: apisix集成ak/sk机制 2023-11-25 16:41:10 +08:00
fit2cloud-chenyw
4f8c8c8964 Merge pull request #6848 from dataease/pr@dev-v2@fix_no_license_error
fix: 社区版本浏览器控制台报错没有许可
2023-11-25 16:40:04 +08:00
fit2cloud-chenyw
359b8116f8 fix: 社区版本浏览器控制台报错没有许可 2023-11-25 16:39:16 +08:00
fit2cloud-chenyw
3a0c1b1e1d Merge pull request #6847 from dataease/pr@dev-v2@feat_aksk_auth
feat: ak/sk认证校验
2023-11-25 16:16:58 +08:00
fit2cloud-chenyw
0d48370fe4 feat: ak/sk认证校验 2023-11-25 16:16:05 +08:00
fit2cloud-chenyw
432a8d0fca Merge pull request #6846 from dataease/pr@dev-v2@feat_apikey_page
feat: ApiKey配置页
2023-11-25 11:47:49 +08:00
fit2cloud-chenyw
011bebd86e feat: ApiKey配置页 2023-11-25 11:46:21 +08:00
fit2cloud-chenyw
a54a126b94 Merge pull request #6844 from dataease/pr@dev-v2@perf_lic_tips
perf: 企业版license文案信息
2023-11-24 18:05:59 +08:00
fit2cloud-chenyw
bcbf186858 perf: 企业版license文案信息 2023-11-24 18:05:15 +08:00
fit2cloud-chenyw
d3a64e1247 Merge pull request #6843 from dataease/pr@dev-v2@perf_about_copywriting
perf: license文案信息
2023-11-24 17:41:38 +08:00
fit2cloud-chenyw
7f1788415b perf: license文案信息 2023-11-24 17:40:15 +08:00
fit2cloud-chenyw
3b2e29d79c Merge pull request #6842 from dataease/pr@dev-v2@feat_geo_persistence
feat: 自定义地图目录持久化
2023-11-24 17:26:40 +08:00
fit2cloud-chenyw
c07b1d7fee feat: 自定义地图目录持久化 2023-11-24 17:25:40 +08:00
fit2cloud-chenyw
5b06365d5e Merge pull request #6841 from dataease/pr@dev-v2@feat_custom_geometry
feat: 自定义地图设置
2023-11-24 17:20:57 +08:00
fit2cloud-chenyw
60b0f322e7 feat: 自定义地图设置 2023-11-24 17:19:55 +08:00
dataeaseShu
f9aac282b6 Merge pull request #6833 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-24 09:51:15 +08:00
dataeaseShu
4cb022654e Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-24 09:50:27 +08:00
dataeaseShu
00e2713da4 fix: 【工作台】间距不对 2023-11-24 09:49:37 +08:00
fit2cloud-chenyw
831a92b91c Merge pull request #6829 from dataease/pr@dev-v2@perf_cors_config
perf: 跨域配置
2023-11-23 22:29:08 +08:00
fit2cloud-chenyw
4c8e859329 perf: 跨域配置 2023-11-23 22:28:17 +08:00
fit2cloud-chenyw
8f99a9dd1c Merge pull request #6828 from dataease/pr@dev-v2@fix_miss_code
fix: 漏提代码
2023-11-23 22:20:40 +08:00
fit2cloud-chenyw
f30ecd1812 fix: 漏提代码 2023-11-23 22:19:35 +08:00
fit2cloud-chenyw
8df0b54183 Merge pull request #6827 from dataease/pr@dev-v2@feat_geo_json_upload
feat: 地理信息文件上传
2023-11-23 22:17:32 +08:00
fit2cloud-chenyw
e9a5bbe0a1 feat: 地理信息文件上传 2023-11-23 22:14:37 +08:00
fit2cloud-chenyw
9f067e3255 Merge pull request #6825 from dataease/pr@dev-v2@fix_authentication_status
fix: 查询第三方平台状态错误
2023-11-23 20:44:56 +08:00
fit2cloud-chenyw
92ada5b068 fix: 查询第三方平台状态错误 2023-11-23 20:43:21 +08:00
fit2cloud-chenyw
a73848f3d8 Merge pull request #6821 from dataease/pr@dev-v2@feat_basic_setting
feat: 系统参数-基础设置
2023-11-23 17:33:03 +08:00
fit2cloud-chenyw
e778f41989 feat: 系统参数-基础设置 2023-11-23 17:31:48 +08:00
dataeaseShu
77524634af Merge pull request #6819 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-23 17:06:53 +08:00
dataeaseShu
6177bbab7c Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-23 17:05:50 +08:00
dataeaseShu
16f6e76730 fix: 嵌入式的场景下,部分静态资源无法加载。 2023-11-23 17:04:56 +08:00
fit2cloud-chenyw
1d16aa76ee Merge pull request #6813 from dataease/pr@dev-v2@perf_lark_qr_style
perf: 飞书扫码登录样式优化
2023-11-23 13:29:37 +08:00
fit2cloud-chenyw
db62421454 perf: 飞书扫码登录样式优化 2023-11-23 13:28:24 +08:00
dataeaseShu
bdecb41032 Merge pull request #6807 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-23 10:19:26 +08:00
dataeaseShu
ea19bc38b0 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-23 10:18:17 +08:00
dataeaseShu
251b6c3a29 fix: 嵌入式的场景下,部分静态资源无法加载。 2023-11-23 09:48:38 +08:00
fit2cloud-chenyw
9e75cacd6d Merge pull request #6804 from dataease/pr@dev-v2@feat_lark_setting
feat: 飞书扫码登录
2023-11-22 23:02:03 +08:00
fit2cloud-chenyw
076e3ced48 feat: 飞书扫码登录 2023-11-22 22:32:10 +08:00
fit2cloud-chenyw
da5ccc873d Merge pull request #6784 from dataease/pr@dev-v2@feat_lark_setting
feat: 飞书设置
2023-11-21 18:23:29 +08:00
fit2cloud-chenyw
a8e9cc8843 feat: 飞书设置 2023-11-21 18:21:46 +08:00
王嘉豪
2efb7db320 Merge pull request #6783 from dataease/pr@dev-v2@fix_map-export
fix: 修复地图导出图片,PDF出现区域空白问题
2023-11-21 17:09:43 +08:00
wangjiahao
296c6de279 fix: 修复地图导出图片,PDF出现区域空白问题 2023-11-21 17:08:49 +08:00
ulleo
ad0cad2a2d Merge pull request #6781 from ulleo/dev-v2
fix: 编辑页面下,新添加图表后,设置图表导致联动、跳转,导致原有图表的联动、跳转标识丢失
2023-11-21 16:16:49 +08:00
ulleo
7f113dd609 fix: 编辑页面下,新添加图表后,设置图表导致联动、跳转,导致原有图表的联动、跳转标识丢失 2023-11-21 16:15:34 +08:00
fit2cloud-chenyw
ad75e6df49 Merge pull request #6778 from dataease/pr@dev-v2@perf_embedded_limit
Pr@dev v2@perf embedded limit
2023-11-21 12:22:20 +08:00
fit2cloud-chenyw
3fa33d5784 perf: 嵌入式应用跨域设置 2023-11-21 12:21:14 +08:00
王嘉豪
36e4a28b47 Merge pull request #6775 from dataease/pr@dev-v2@refactor_scale
refactor: 大屏编辑预览状态禁用鼠标比例伸缩功能
2023-11-21 11:13:35 +08:00
wangjiahao
167f708ee6 refactor: 大屏编辑预览状态禁用鼠标比例伸缩功能 2023-11-21 11:12:40 +08:00
fit2cloud-chenyw
07024cd7e5 perf: 嵌入式应用个数限制 2023-11-21 11:04:32 +08:00
王嘉豪
74e5fb7834 Merge pull request #6774 from dataease/pr@dev-v2@fix_scale
fix: 修复大屏伸缩比例直接输入数字未生效问题
2023-11-21 10:59:12 +08:00
wangjiahao
59c6793b04 fix: 修复大屏伸缩比例直接输入数字未生效问题 2023-11-21 10:56:48 +08:00
王嘉豪
219b46e08a Merge pull request #6773 from dataease/pr@dev-v2@style_preview
style: 优化预览页按钮样式
2023-11-21 10:51:28 +08:00
wangjiahao
a0e1b00ee1 style: 优化预览页按钮样式 2023-11-21 10:50:02 +08:00
fit2cloud-chenyw
b0046a4427 Merge pull request #6771 from dataease/pr@dev-v2@perf_ds_task_sql
feat: 任务管理flyway
2023-11-21 10:13:08 +08:00
fit2cloud-chenyw
8756cc41d8 feat: 任务管理flyway 2023-11-21 10:11:57 +08:00
王嘉豪
341dd0763b Merge pull request #6770 from dataease/pr@dev@refactor_template-market
refactor: 对接V2模版市场正式环境优化
2023-11-20 19:53:50 +08:00
wangjiahao
372b747bd2 refactor: 对接V2模版市场正式环境优化 2023-11-20 19:51:24 +08:00
fit2cloud-chenyw
4b14332163 Merge pull request #6756 from dataease/pr@dev-v2@feat_embedded_manage
feat: 嵌入式管理
2023-11-17 23:36:24 +08:00
fit2cloud-chenyw
24c1810cd6 feat: 嵌入式管理 2023-11-17 23:35:07 +08:00
fit2cloud-chenyw
715e76c7be Merge pull request #6752 from dataease/pr@dev-v2@fix_org_switcher
fix: 无法切换组织
2023-11-17 17:52:53 +08:00
王嘉豪
670d46349a Merge pull request #6753 from dataease/pr@dev-v2@refactor_view-count
fix: 修复富文本图表不识别记录数字段问题
2023-11-17 17:51:15 +08:00
wangjiahao
1651f5413a fix: 修复富文本图表不识别记录数字段问题 2023-11-17 17:48:50 +08:00
fit2cloud-chenyw
21749d5935 fix: 无法切换组织 2023-11-17 17:48:23 +08:00
王嘉豪
0d2d245653 Merge pull request #6750 from dataease/pr@dev-v2@refactor_view-manage
refactor: 仪表板、数据大屏中的图表联动字段使用图表制作中参与的字段
2023-11-17 17:27:30 +08:00
wangjiahao
d25b9ac0dd refactor: 仪表板、数据大屏中的图表联动字段使用图表制作中参与的字段 2023-11-17 17:26:30 +08:00
fit2cloud-chenyw
fe77de49ca Merge pull request #6748 from dataease/pr@dev-v2@feat_api_doc
feat: api文档
2023-11-17 17:20:49 +08:00
fit2cloud-chenyw
f8f48da89d feat: api文档 2023-11-17 17:19:41 +08:00
王嘉豪
08cc003980 Merge pull request #6741 from dataease/pr@dev-v2@refactor_template
refactor: 优化模版样式应用逻辑等
2023-11-17 16:14:49 +08:00
wangjiahao
fd0e546ca5 refactor: 优化模版样式应用逻辑等 2023-11-17 16:12:52 +08:00
Junjun
15b0e45ef1 Merge pull request #6739 from dataease/pr@dev-v2@fix_id
fix: id序列化
2023-11-17 16:06:36 +08:00
junjun
ba2b063341 fix: id序列化 2023-11-17 16:05:12 +08:00
fit2cloud-chenyw
d198844b7e Merge pull request #6731 from dataease/pr@dev-v2@feat_sync
feat: 同步管理
2023-11-16 20:10:56 +08:00
fit2cloud-chenyw
a02697a3ef feat: 同步管理 2023-11-16 20:09:12 +08:00
fit2cloud-chenyw
4de3b8d755 Merge pull request #6727 from dataease/pr@dev-v2@perf_xpack_embedded
perf: xpack嵌入式版
2023-11-16 17:19:56 +08:00
fit2cloud-chenyw
fe1c7dadab perf: xpack嵌入式版 2023-11-16 17:18:54 +08:00
ulleo
c4a5bdb40a Merge pull request #6723 from ulleo/dev-v2
feat: 编辑备注输入框增加placeholder提示
2023-11-16 16:12:03 +08:00
ulleo
99f7027760 feat: 编辑备注输入框增加placeholder提示 2023-11-16 16:10:35 +08:00
dataeaseShu
29b6b679f0 Merge pull request #6720 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-16 15:22:58 +08:00
dataeaseShu
69d69794ee Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-16 15:00:52 +08:00
dataeaseShu
03d34fef34 fix: UI库升级 2023-11-16 15:00:28 +08:00
Junjun
392e44290c Merge pull request #6714 from dataease/pr@dev-v2@feat_api
feat: 增加根据数据集ID获取count接口
2023-11-16 11:52:33 +08:00
junjun
25a7e54610 feat: 增加根据数据集ID获取count接口 2023-11-16 11:49:44 +08:00
王嘉豪
9c41375c6b Merge pull request #6713 from dataease/pr@dev-v2@refactor_commmon
Pr@dev v2@refactor commmon
2023-11-16 11:17:50 +08:00
wangjiahao
40259fbef9 refactor: 文案优化 2023-11-16 11:12:56 +08:00
wangjiahao
a4357579d3 refactor: 更新图片默认尺寸 2023-11-16 09:16:57 +08:00
wangjiahao
a11c9a65b7 refactor: 修改帮助文档链接 2023-11-16 09:15:01 +08:00
fit2cloud-chenyw
847fa55c93 Merge pull request #6707 from dataease/pr@dev-v2@perf_xpack
perf: xpack机制
2023-11-15 18:29:11 +08:00
fit2cloud-chenyw
d77813d074 perf: xpack机制 2023-11-15 18:27:51 +08:00
dataeaseShu
f7270c873b Merge pull request #6700 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-15 15:57:39 +08:00
dataeaseShu
ff46f3b046 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-15 15:56:56 +08:00
dataeaseShu
9f7187ac53 fix: UI库升级 2023-11-15 15:55:08 +08:00
maninhill
09f080d703 Update README.md 2023-11-15 10:51:27 +08:00
dataeaseShu
9c15ebf4c2 Merge pull request #6689 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-15 09:57:02 +08:00
dataeaseShu
326bd4d9c8 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-15 09:56:18 +08:00
dataeaseShu
5316ca9c6e fix: vue-codemirror 2023-11-15 09:55:37 +08:00
Junjun
6d47614d1f Merge pull request #6688 from dataease/pr@dev-v2@fix_type
fix: 修复一些数据库不支持的类型
2023-11-15 09:35:03 +08:00
junjun
cde4f62579 fix: 修复一些数据库不支持的类型 2023-11-15 09:32:54 +08:00
王嘉豪
a5e21bd8b7 Merge pull request #6686 from dataease/pr@dev-v2@fix_template-app
fix: 模版部分导入应用问题修复
2023-11-14 23:40:27 +08:00
wangjiahao
5e5c388531 fix: 模版部分导入应用问题修复 2023-11-14 23:38:54 +08:00
王嘉豪
0bfbd63c6f Merge pull request #6645 from Djooxx/dev-v2
fix-NPE
2023-11-14 15:39:08 +08:00
dataeaseShu
a17e0b8480 Merge pull request #6676 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-14 15:15:32 +08:00
dataeaseShu
322d8172d2 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-14 15:14:47 +08:00
dataeaseShu
3726bf09bd fix: 删除无用依赖 2023-11-14 15:13:48 +08:00
王嘉豪
b759f67848 Merge pull request #6674 from dataease/pr@dev-v2@revert_template
revert: revert
2023-11-14 14:41:02 +08:00
wangjiahao
7826536479 revert: revert 2023-11-14 14:38:15 +08:00
王嘉豪
b89c7a0714 Merge pull request #6673 from dataease/pr@dev-v2@refactor_template
refactor: 富文本、表格等模版适配优化
2023-11-14 13:17:26 +08:00
wangjiahao
b6a4419707 refactor: 富文本、表格等模版适配优化 2023-11-14 13:16:08 +08:00
fit2cloud-chenyw
a8cfe028e6 Merge pull request #6671 from dataease/pr@dev-v2@perf_xpack_base_config
perf: 删除xpack-base空配置文件
2023-11-14 11:34:41 +08:00
fit2cloud-chenyw
d33296ac1d perf: 删除xpack-base空配置文件 2023-11-14 11:33:30 +08:00
王嘉豪
cd8afcb432 Merge pull request #6669 from dataease/pr@dev-v2@fix_template
fix: 打包问题
2023-11-13 18:15:48 +08:00
wangjiahao
7692783af5 fix: 打包问题 2023-11-13 18:15:07 +08:00
dataeaseShu
3786aec205 Merge pull request #6668 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-13 17:45:14 +08:00
dataeaseShu
afce036c46 fix: 数据集重命名字段后,字段名过长的情况下,右侧功能菜单消失,无法进行其他操作 2023-11-13 17:44:03 +08:00
dataeaseShu
93c8cf223b fix: 过滤组件参数化获取数据不是最新的 2023-11-13 17:35:10 +08:00
王嘉豪
3d07d09fa0 Merge pull request #6665 from dataease/pr@dev-v2@fix_template-market
fix: 打包问题
2023-11-13 16:28:24 +08:00
wangjiahao
9c452d1cd2 fix: 打包问题 2023-11-13 16:08:09 +08:00
王嘉豪
b9e38d3717 Merge pull request #6658 from dataease/pr@dev@refactor_template-market
refactor: 模版市场优化
2023-11-13 15:03:42 +08:00
wangjiahao
e636ead79f refactor: 模版市场优化 2023-11-13 15:01:39 +08:00
fit2cloud-chenyw
c0f201c599 Merge pull request #6649 from dataease/pr@dev-v2@feat_allatori_jar
feat: allatori依赖包
2023-11-12 17:51:32 +08:00
fit2cloud-chenyw
83ac46faf2 feat: allatori依赖包 2023-11-12 17:50:41 +08:00
fit2cloud-chenyw
340034ffe1 Merge pull request #6648 from dataease/pr@dev-v2@perf_cache
perf: 混淆模式缓存key失效
2023-11-12 16:02:48 +08:00
fit2cloud-chenyw
fb90dcfe66 perf: 混淆模式缓存key失效 2023-11-12 16:01:03 +08:00
fit2cloud-chenyw
5cfffcfbe3 Merge pull request #6647 from dataease/pr@dev-v2@feat_allatori
feat: allatori机制
2023-11-12 15:01:32 +08:00
fit2cloud-chenyw
08edbabf5a feat: allatori机制 2023-11-12 14:59:27 +08:00
HaHa
a06a156996 fix-NPE 2023-11-11 01:35:27 +08:00
dataeaseShu
7ade926aef Merge pull request #6640 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-10 17:25:50 +08:00
dataeaseShu
2f2da81081 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-10 17:24:55 +08:00
dataeaseShu
acc88c2a52 fix: 创建数据源-高级设置-查询超时的上下尖头位置优化 2023-11-10 17:23:36 +08:00
dataeaseShu
a9654bbd45 fix: 资源列表树,如果子目录展开后没有收起,那么上层目录点击收起无响应 2023-11-10 17:05:09 +08:00
dataeaseShu
fcf256dbaf Merge pull request #6633 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-10 14:04:25 +08:00
dataeaseShu
352dc49877 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-10 14:03:44 +08:00
dataeaseShu
f22f4cb164 fix: 数据复制报错 2023-11-10 14:00:45 +08:00
王嘉豪
399ed238f6 Merge pull request #6625 from dataease/pr@dev-v2@feat_template-market
feat: 模版市场
2023-11-10 08:42:23 +08:00
wangjiahao
2d864eea23 feat: 模版市场 2023-11-10 08:39:42 +08:00
dataeaseShu
abc46e7e8a Merge pull request #6611 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-09 10:10:48 +08:00
dataeaseShu
da3412fa04 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-09 10:09:51 +08:00
dataeaseShu
e6ebbf01ba fix: 数据集复制 2023-11-09 10:08:45 +08:00
taojinlong
c5dd598647 Merge pull request #6608 from dataease/pr@dev-v2@fixDatasource
fix: 初始化数据引擎失败
2023-11-08 04:14:02 -06:00
taojinlong
29f36f1474 fix: 初始化数据引擎失败 2023-11-08 18:12:07 +08:00
fit2cloud-chenyw
bf8cd7e593 Merge pull request #6606 from dataease/pr@dev-v2@feat_template_sql
feat: 模版管理菜单sql
2023-11-08 17:44:27 +08:00
fit2cloud-chenyw
90f0d83546 feat: 模版管理菜单sql 2023-11-08 17:43:45 +08:00
fit2cloud-chenyw
53c1d2549a Merge pull request #6605 from dataease/pr@dev@feat_template_menu
Pr@dev@feat template menu
2023-11-08 17:15:10 +08:00
fit2cloud-chenyw
cb671dcb76 perf: 代码中暴漏本地之外的数据库 2023-11-08 16:59:54 +08:00
fit2cloud-chenyw
75cfcd4941 feat: 模版菜单 2023-11-08 16:59:00 +08:00
dataeaseShu
0ca9f1f4fd Merge pull request #6598 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-08 16:19:40 +08:00
dataeaseShu
fdab12aa5d fix: 创建数据源-高级设置-查询超时的上下尖头位置优化 2023-11-08 16:18:52 +08:00
dataeaseShu
86fb749c48 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-08 16:12:44 +08:00
dataeaseShu
674b3fbe66 fix: 自定义SQL编辑页无法调节左侧侧边栏宽度 #6535 2023-11-08 16:00:41 +08:00
dataeaseShu
303be6026e fix: 支持数据源的复制 2023-11-08 15:48:13 +08:00
fit2cloudrd
19d93070b9 Merge pull request #6592 from dataease/pr@dev-v2_version_check
refactor: 安装脚本增加版本判断
2023-11-08 15:34:10 +08:00
xuwei-fit2cloud
f85b6b2f03 refactor: 安装脚本增加版本判断 2023-11-08 15:31:51 +08:00
dataeaseShu
60966fb6e3 fix: 支持数据集的复制 2023-11-08 14:50:22 +08:00
王嘉豪
0451646e0b Merge pull request #6589 from dataease/pr@dev-v2@style_style-type
style: 修改样式类型
2023-11-08 14:41:04 +08:00
wangjiahao
8c83226e49 style: 修改样式类型 2023-11-08 14:40:01 +08:00
dataeaseShu
94ec27862c fix: 添加一个数据集后能否直接关闭数据集创建页面或者给个选择 2023-11-08 14:02:19 +08:00
fit2cloudrd
ce949c1bbb Merge pull request #6582 from dataease/pr@dev-v2_fix_desktop_flyway
fix: 修复desktop flyway
2023-11-08 11:25:26 +08:00
xuwei-fit2cloud
a496217b0a fix: 修复desktop flyway 2023-11-08 11:24:31 +08:00
王嘉豪
466aecc512 Merge pull request #6581 from dataease/pr@dev-v2@feat_template-market
feat: 模版市场
2023-11-08 10:48:09 +08:00
wangjiahao
2a881be1fd feat: 模版市场 2023-11-08 10:45:34 +08:00
fit2cloudrd
d8ccdbad1d Merge pull request #6573 from dataease/pr@dev-v2_compose_version
fix: 修复compose文件版本
2023-11-07 17:34:19 +08:00
xuwei-fit2cloud
48dbf78e23 fix: 修复compose文件版本 2023-11-07 17:33:39 +08:00
fit2cloudrd
1eab52f1b0 Merge pull request #6571 from dataease/pr@dev-v2_healthcheck
refactor: 修改healthcheck文案
2023-11-07 17:28:54 +08:00
xuwei-fit2cloud
56f83891b2 refactor: 修改healthcheck文案 2023-11-07 17:28:16 +08:00
fit2cloudrd
9fa81f273e Merge pull request #6569 from dataease/pr@dev-v2_healthcheck
refactor: 修改healthcheck方法
2023-11-07 17:24:02 +08:00
xuwei-fit2cloud
6cf59b443e refactor: 修改healthcheck方法 2023-11-07 17:23:07 +08:00
dataeaseShu
c08a334d5a Merge pull request #6564 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-11-07 15:46:54 +08:00
dataeaseShu
a888a09cd0 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-11-07 15:46:02 +08:00
dataeaseShu
605f87cb82 fix: 数据集 SQL 数据集,数据比较返回结果错误 2023-11-07 15:43:14 +08:00
ulleo
1ac9470795 Merge pull request #6556 from ulleo/dev-v2
fix: 公共链接文案错误
2023-11-07 11:28:13 +08:00
ulleo
9134bec40e fix: 公共链接文案错误 2023-11-07 11:26:28 +08:00
王嘉豪
af74e023f3 Merge pull request #6552 from dataease/pr@dev-v2@revert_revert-useless
revert: revert
2023-11-06 18:16:19 +08:00
wangjiahao
2b80021f0f revert: revert 2023-11-06 18:15:04 +08:00
王嘉豪
85c1ce9080 Merge pull request #6551 from dataease/pr@dev-v2@feat_template-manage
Pr@dev v2@feat template manage
2023-11-06 18:10:24 +08:00
wangjiahao
cc525bd69b feat: 系统模版管理 2023-11-06 18:08:25 +08:00
wangjiahao
da62aebb89 Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-11-06 14:38:54 +08:00
fit2cloud-chenyw
5cf3b68648 Merge pull request #6534 from dataease/pr@dev-v2@feat_sys_param_front
feat: 系统参数前端页面
2023-11-04 19:52:08 +08:00
fit2cloud-chenyw
c4b64f8ecc feat: 系统参数前端页面 2023-11-04 19:50:24 +08:00
wangjiahao
0d351acf23 Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-11-02 15:16:01 +08:00
王嘉豪
d09588f19d Merge pull request #6515 from dataease/pr@dev-v2@fix_panel-tips
refactor: 社区版仪表板无需展示创建者
2023-11-02 15:15:47 +08:00
wangjiahao
b02232be7f Merge branch 'dev-v2' of github.com:dataease/dataease into dev-v2 2023-11-02 15:15:30 +08:00
fit2cloudrd
6b5aa6134e Merge pull request #6504 from dataease/pr@dev_v2_url
chore: 调整在线升级地址
2023-11-02 12:03:53 +08:00
xuwei-fit2cloud
a2c6e8b3f9 chore: 调整在线升级地址 2023-11-02 12:02:58 +08:00
wangjiahao
5fff25b291 refactor: 社区版仪表板无需展示创建者 2023-11-02 11:00:30 +08:00
maninhill
45ffb348a5 Update README.md 2023-11-02 10:40:38 +08:00
maninhill
d6c5cb797f Update README.md 2023-11-02 08:57:56 +08:00
maninhill
6285f0beba Update README.md 2023-11-01 21:27:14 +08:00
dataeaseShu
c601cee7c3 fix: 嵌入式隐藏跳转 2023-11-01 17:28:01 +08:00
wisonic-s
3b6df22e0c Merge pull request #6492 from dataease/pr@dev-v2@fix_tooltip
Pr@dev v2@fix tooltip
2023-11-01 17:04:38 +08:00
wisonic-s
ee2c03e1eb fix: 切换视图时数据集加载异常 2023-11-01 17:03:02 +08:00
wisonic-s
669e800fa3 fix: 提示异常 2023-11-01 17:02:20 +08:00
fit2cloud-chenyw
119594f98a Merge pull request #6490 from dataease/pr@dev-v2@perf_workbranch_style
perf: 工作台样式
2023-11-01 16:55:45 +08:00
fit2cloud-chenyw
5746a1e6aa perf: 工作台样式 2023-11-01 16:54:36 +08:00
fit2cloudrd
fa176bc232 Merge pull request #6488 from dataease/pr@dev_v2_xw
chore: 调整安装脚本
2023-11-01 16:43:42 +08:00
xuwei-fit2cloud
9b7e21303d chore: 调整安装脚本 2023-11-01 16:40:32 +08:00
fit2cloud-chenyw
43ed77c5e2 Merge pull request #6482 from dataease/pr@dev-v2@perf_authentication_sync
perf: 认证设置同步失败错误提示
2023-11-01 16:00:57 +08:00
fit2cloud-chenyw
88416917f3 perf: 认证设置同步失败错误提示 2023-11-01 15:59:32 +08:00
fit2cloud-chenyw
4234edf99f Merge pull request #6480 from dataease/pr@dev-v2@perf_ds_status
perf: 数据源同步状态接口
2023-11-01 15:38:13 +08:00
fit2cloud-chenyw
f39ab20bfb perf: 数据源同步状态接口 2023-11-01 15:37:07 +08:00
王嘉豪
a0e3be4f2e Merge pull request #6478 from dataease/pr@dev-v2@refactor_panel-tab
refactor: 优化Tab移除操作,修复组件操作按钮区域可能被遮挡问题
2023-11-01 15:29:17 +08:00
wangjiahao
0d140ed37e refactor: 优化Tab移除操作,修复组件操作按钮区域可能被遮挡问题 2023-11-01 15:27:24 +08:00
fit2cloud-chenyw
adbc915b56 Merge pull request #6476 from dataease/pr@dev-v2@perf_chart_check_auth
perf: 视图校验数据集权限
2023-11-01 15:13:59 +08:00
fit2cloud-chenyw
ee3698ad18 perf: 视图校验数据集权限 2023-11-01 15:12:47 +08:00
fit2cloudrd
b570c7fe09 Merge pull request #6474 from dataease/pr@dev_v2_modify_edition
chore: 调整版本信息
2023-11-01 15:00:50 +08:00
xuwei-fit2cloud
f7dfccc6f4 chore: 调整版本信息 2023-11-01 14:59:43 +08:00
fit2cloud-chenyw
bff2b41f9b Merge pull request #6472 from dataease/pr@dev-v2@perf_license_copywriting
Pr@dev v2@perf license copywriting
2023-11-01 14:53:03 +08:00
fit2cloud-chenyw
57e4e7a4af perf: 许可证版本文案拼写错误 2023-11-01 14:52:00 +08:00
fit2cloud-chenyw
b4d0596949 perf: 许可证版本文案 2023-11-01 14:50:38 +08:00
fit2cloud-chenyw
2be9cbd07d Merge pull request #6471 from dataease/pr@dev-v2@perf_version
perf: 版本升级提示
2023-11-01 14:38:54 +08:00
fit2cloud-chenyw
5d455e1859 perf: 版本升级提示 2023-11-01 14:37:14 +08:00
fit2cloud-chenyw
86adee8e23 Merge pull request #6470 from dataease/pr@dev-v2@perf_dataset_xpack_interact
perf: 数据集调用鉴权接口
2023-11-01 14:26:12 +08:00
fit2cloud-chenyw
a9234ab77e perf: 数据集调用鉴权接口 2023-11-01 14:24:56 +08:00
fit2cloud-chenyw
429c185b12 Merge pull request #6468 from dataease/pr@dev-v2@fix_xpack_interative
perf: core模块获取用户名称
2023-11-01 12:36:59 +08:00
fit2cloud-chenyw
3af1fcd2a5 perf: core模块获取用户名称 2023-11-01 12:35:58 +08:00
fit2cloud-chenyw
9ed7d63113 Merge pull request #6467 from dataease/pr@dev-v2@perf_lic_version
perf: 社区版关于页面文案
2023-11-01 11:59:14 +08:00
fit2cloud-chenyw
efc0d24b6c perf: 社区版关于页面文案 2023-11-01 11:58:00 +08:00
fit2cloud-chenyw
ebb06745eb Merge pull request #6466 from dataease/pr@dev-v2@perf_init_script
perf: 初始化脚本
2023-11-01 10:55:11 +08:00
fit2cloud-chenyw
ddc33390b8 perf: 初始化脚本 2023-11-01 10:52:51 +08:00
fit2cloud-chenyw
07bbea4169 Merge pull request #6464 from dataease/pr@dev-v2@perf_driver_path
perf: 数据源驱动文件路径
2023-11-01 10:15:00 +08:00
fit2cloud-chenyw
a4fd42f586 perf: 数据源驱动文件路径 2023-11-01 10:13:41 +08:00
fit2cloudrd
9519f521ae Merge pull request #6463 from dataease/pr@dev_v2_modify_version
chore: 调整镜像名称
2023-11-01 10:12:48 +08:00
xuwei-fit2cloud
ad571de581 chore: 调整镜像名称 2023-11-01 10:11:37 +08:00
wisonic-s
16e69fccf3 Merge pull request #6462 from dataease/pr@dev-v2@fix_wordcloud_click_position
fix: 词云图点击事件位置优化
2023-10-31 22:40:11 +08:00
wisonic-s
c36c3639a3 fix: 词云图点击事件位置优化 2023-10-31 22:38:22 +08:00
wisonic-s
f67502a335 Merge pull request #6461 from dataease/pr@dev-v2@fix_label_color
fix: 单系列条形图和柱状图标签颜色修改无效
2023-10-31 22:17:47 +08:00
wisonic-s
a3e51bce30 fix: 单系列条形图和柱状图标签颜色修改无效 2023-10-31 22:16:09 +08:00
dataeaseShu
3ca1774cf2 Merge pull request #6456 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-31 17:41:17 +08:00
dataeaseShu
d1799baaf3 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-31 17:40:33 +08:00
王嘉豪
d93e598e70 Merge pull request #6452 from dataease/pr@dev@refactor_icon
refactor: 更新图标文案等
2023-10-31 16:50:03 +08:00
wangjiahao
0c5d8362dc refactor: 更新图标文案等 2023-10-31 16:41:42 +08:00
dataeaseShu
5102b6e89e fix: 仪表板、数据大屏的添加图标优化 2023-10-31 16:20:08 +08:00
王嘉豪
cebfa9979e Merge pull request #6445 from dataease/pr@dev@feat_help-model
feat: 添加帮助模块
2023-10-31 12:00:31 +08:00
wangjiahao
6e3fa75747 feat: 添加帮助模块 2023-10-31 11:56:44 +08:00
fit2cloud-chenyw
a657e9a652 Merge pull request #6441 from dataease/pr@dev-v2@perf_del_user
perf: 禁止删除admin账号
2023-10-31 10:06:54 +08:00
fit2cloud-chenyw
4c22bb679b perf: 禁止删除admin账号 2023-10-31 10:05:51 +08:00
fit2cloud-chenyw
cb59e83411 Merge pull request #6440 from dataease/pr@dev-v2@perf_hide_unfinished
perf: 隐藏用户中心中未完成模块入口
2023-10-31 10:02:39 +08:00
fit2cloud-chenyw
a2faad2e9f perf: 隐藏用户中心中未完成模块入口 2023-10-31 10:01:43 +08:00
fit2cloud-chenyw
0344daabce Merge pull request #6439 from dataease/pr@dev-v2@fix_login_refresh_error
fix: 偶尔出现登录后需要刷新一次才能进入页面
2023-10-31 09:19:45 +08:00
fit2cloud-chenyw
c1b1de8e98 fix: 偶尔出现登录后需要刷新一次才能进入页面 2023-10-31 09:18:47 +08:00
fit2cloud-chenyw
861144e183 Merge pull request #6438 from dataease/pr@dev-v2@perf_auth_menu
perf: 权限矩阵中角色菜单文案
2023-10-31 08:58:10 +08:00
fit2cloud-chenyw
68ae3005a4 perf: 权限矩阵中角色菜单文案 2023-10-31 08:57:01 +08:00
fit2cloud-chenyw
9a03e27f98 Merge pull request #6437 from dataease/pr@dev-v2@perf_modify_pwd
fix: 修改密码页面错误提示
2023-10-31 08:49:29 +08:00
fit2cloud-chenyw
90339eb2a8 fix: 修改密码页面错误提示 2023-10-31 08:48:29 +08:00
fit2cloud-chenyw
020f53bbb9 Merge pull request #6436 from dataease/pr@dev-v2@fix_share_head
fix: 仪表板头部分享按钮弹框未能及时更新
2023-10-31 08:42:08 +08:00
fit2cloud-chenyw
6415ce2018 fix: 仪表板头部分享按钮弹框未能及时更新 2023-10-31 08:40:54 +08:00
fit2cloud-chenyw
86a1da3243 Merge pull request #6435 from dataease/pr@dev-v2@feat_geometry_config
Pr@dev v2@feat geometry config
2023-10-30 21:56:41 +08:00
fit2cloud-chenyw
636af91cd1 perf: 地理信息 2023-10-30 21:53:58 +08:00
wisonic-s
d75a5c05d5 Merge pull request #6432 from dataease/pr@dev-v2@fix_dynamic_tooltip
fix: 动态提示异常
2023-10-30 18:20:38 +08:00
wisonic-s
7136c021d6 fix: 动态提示异常 2023-10-30 18:18:24 +08:00
dataeaseShu
14a94c0028 Merge pull request #6429 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-30 16:46:27 +08:00
dataeaseShu
51da8f8cf5 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-30 16:06:35 +08:00
dataeaseShu
67ba42bc4b fix: 过滤组件选项值来源下拉框会被数据撑开,建议优化 2023-10-30 16:05:52 +08:00
王嘉豪
6d4a1e99b6 Merge pull request #6427 from dataease/pr@dev-v2@refactor_matrix
refactor: 矩阵移动定位优化
2023-10-30 15:50:04 +08:00
wangjiahao
a699d0b6a0 refactor: 矩阵移动定位优化 2023-10-30 15:49:04 +08:00
taojinlong
cdbf52fb5f Merge pull request #6426 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2023-10-30 02:39:28 -05:00
taojinlong
e5747ba8f5 fix: 解析API数据结构 2023-10-30 15:37:08 +08:00
王嘉豪
063c38929f Merge pull request #6424 from dataease/pr@dev-v2@fix_panel
fix: 修复仪表板批量复制可能出现的重合问题
2023-10-30 15:27:43 +08:00
wangjiahao
f75c57077e fix: 修复仪表板批量复制可能出现的重合问题 2023-10-30 15:26:39 +08:00
dataeaseShu
cb3b0314c4 Merge pull request #6420 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-30 14:33:32 +08:00
dataeaseShu
539e00e358 fix: 仪表板编辑/大屏编辑界面,图片上传控件没有显示「+」号 2023-10-30 14:32:08 +08:00
dataeaseShu
de5208cd01 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-30 14:25:35 +08:00
dataeaseShu
b741d53f6c fix: 数据库数据源创建界面,端口号应该放在数据库名之前 2023-10-30 14:24:56 +08:00
dataeaseShu
4530235234 Merge pull request #6417 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-30 14:08:04 +08:00
dataeaseShu
a21762efaa Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-30 14:07:12 +08:00
dataeaseShu
82f940ea8b fix: 过滤组件参数化获取数据不是最新的 2023-10-30 14:05:38 +08:00
taojinlong
cb9d94639a fix: API数据源API地址错误提示信息优化 2023-10-30 13:00:25 +08:00
王嘉豪
6151a995b9 Merge pull request #6415 from dataease/pr@dev-v2@refactor_screen
refactor: 文案、大屏背景优化
2023-10-30 12:16:02 +08:00
wangjiahao
d470e2b1c9 refactor: 文案、大屏背景优化 2023-10-30 12:01:33 +08:00
taojinlong
27912dfb1b fix: 校验连接池参数 2023-10-30 11:58:04 +08:00
dataeaseShu
69b5bb0a2d Merge pull request #6414 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-30 11:50:06 +08:00
dataeaseShu
3b971cda59 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-30 11:49:16 +08:00
dataeaseShu
6637f8b57f fix: 大屏编辑界面缺少图表/组件添加控件,无法添加图表/组件 2023-10-30 11:48:40 +08:00
王嘉豪
fd88f001e9 Merge pull request #6413 from dataease/pr@dev-v2@fix_wheelscroll
refactor: 鼠标滚轮放大效果优化
2023-10-30 11:31:08 +08:00
wangjiahao
9054d175f6 refactor: 鼠标滚轮放大效果优化 2023-10-30 11:29:52 +08:00
王嘉豪
0cbe7782e1 Merge pull request #6412 from dataease/pr@dev-v2@fix_wheelscroll
fix: 修复鼠标滚轮影响大屏画布放大问题
2023-10-30 11:06:02 +08:00
wangjiahao
f1cdab14f6 fix: 修复鼠标滚轮影响大屏画布放大问题 2023-10-30 11:02:10 +08:00
dataeaseShu
f0936ab0cb Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-30 10:27:34 +08:00
dataeaseShu
f8c74631de fix: 过滤组件过滤地理位置类型的字段,查询条件展示类型没有对应的类型 2023-10-30 10:25:44 +08:00
fit2cloud-chenyw
84eabc60ae feat: 地理信息配置 2023-10-30 10:20:28 +08:00
dataeaseShu
2f0293aa6f fix: 首次将过滤组件添加至tab组件中不做修改的情况下可以控制tab组件外的图表 2023-10-30 10:05:49 +08:00
dataeaseShu
b9037a7ce3 Merge pull request #6407 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-27 17:42:10 +08:00
dataeaseShu
277986698a fix: 视图预览失败,提示资源不存在 2023-10-27 17:41:14 +08:00
dataeaseShu
03a3e933e2 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-27 17:39:09 +08:00
dataeaseShu
69fe0169dd fix: 仪表板和数据大屏中无法显示图片 2023-10-27 17:38:36 +08:00
dataeaseShu
e0012c4359 Merge pull request #6403 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-27 15:18:25 +08:00
dataeaseShu
f82d9ad3e7 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-27 15:17:41 +08:00
dataeaseShu
8bdba6e74b fix: 大屏编辑界面的URL错误 2023-10-27 15:16:29 +08:00
fit2cloud-chenyw
a421f6bdaf Merge pull request #6402 from dataease/pr@dev-v2@feat_system_setting
feat: 系统参数漏提代码
2023-10-27 14:33:38 +08:00
fit2cloud-chenyw
dda31903e4 feat: 系统参数漏提代码 2023-10-27 14:32:26 +08:00
fit2cloud-chenyw
db5ae8c3c7 Merge pull request #6401 from dataease/pr@dev-v2@feat_sys_setting
feat: 系统设置-系统参数
2023-10-27 13:46:26 +08:00
fit2cloud-chenyw
339630cc22 feat: 系统设置-系统参数 2023-10-27 13:45:08 +08:00
王嘉豪
dfd0400e23 Merge pull request #6400 from dataease/pr@dev-v2@refactor_redo-unode
refactor: 增加redo、undo画布动作监控并可显示保存按钮
2023-10-27 13:34:51 +08:00
wangjiahao
6314e75397 refactor: 增加redo、undo画布动作监控并可显示保存按钮 2023-10-27 13:32:26 +08:00
taojinlong
5ae30cc181 Merge pull request #6399 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2023-10-26 23:17:31 -05:00
dataeaseShu
5589442c62 Merge pull request #6398 from dataease/pr@dev-v2_dzz
fix: 过滤组件间距调整
2023-10-27 12:07:54 +08:00
dataeaseShu
73d7911226 fix: 过滤组件间距调整 2023-10-27 12:07:09 +08:00
Junjun
3d8f4b91cd Merge pull request #6397 from dataease/pr@dev-v2@fix_sql
fix: SQL中order by关键字处理
2023-10-27 12:06:25 +08:00
junjun
cf9d5e5d9c fix: SQL中order by关键字处理 2023-10-27 12:03:06 +08:00
Junjun
a09b928cbf Merge pull request #6394 from dataease/pr@dev-v2@fix_sql
fix: SQL中order by关键字处理
2023-10-27 11:29:00 +08:00
junjun
073c13ca41 fix: SQL中order by关键字处理 2023-10-27 11:27:09 +08:00
dataeaseShu
ef2489a5eb Merge pull request #6393 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-27 11:03:18 +08:00
dataeaseShu
a92eab74fe Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-27 11:02:39 +08:00
dataeaseShu
017af37bfe fix: 过滤组件上一个规则开启参数化再次添加规则时参数化选项自动开启但没有弹窗显示 2023-10-27 11:02:02 +08:00
dataeaseShu
9a2010403a Merge pull request #6392 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-27 10:24:58 +08:00
dataeaseShu
751051d293 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-27 10:24:18 +08:00
dataeaseShu
e908613d31 fix: 过滤组件弹窗显示不全 2023-10-27 10:23:03 +08:00
dataeaseShu
7d1d453146 fix: 保存数据集无法搜索到指定目录 2023-10-27 10:22:49 +08:00
fit2cloud-chenyw
66d8f3a354 Merge pull request #6391 from dataease/pr@dev-v2@feat_sys_setting_sql
feat: 系统设置菜单sql
2023-10-27 10:17:40 +08:00
fit2cloud-chenyw
a9d6b7e5f8 feat: 系统设置菜单sql 2023-10-27 10:14:59 +08:00
fit2cloud-chenyw
db52fb8f4a Merge pull request #6390 from dataease/pr@dev-v2@feat_sys_param
feat: 增加参数设置
2023-10-27 10:07:36 +08:00
fit2cloud-chenyw
439a1d830c fix: typos拼写错误 2023-10-27 10:07:01 +08:00
dataeaseShu
df983cc9a2 Merge pull request #6389 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-27 10:01:48 +08:00
dataeaseShu
ef9f84670e Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-27 10:01:04 +08:00
fit2cloud-chenyw
3c78321c28 feat: 增加参数设置 2023-10-27 09:59:41 +08:00
dataeaseShu
ea8d866bbb fix: stylelint警告 2023-10-27 09:58:21 +08:00
dataeaseShu
75eb500d4e Merge pull request #6382 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-26 17:08:31 +08:00
Junjun
6a9898247e Merge pull request #6381 from dataease/pr@dev-v2@fix_type
fix: 尝试将DECIMAL(20,0)换成BIGINT
2023-10-26 17:08:13 +08:00
dataeaseShu
bb2ec7b22a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-26 17:07:47 +08:00
junjun
0997f3a1aa fix: 尝试将DECIMAL(20,0)换成BIGINT 2023-10-26 17:06:44 +08:00
dataeaseShu
3420a5e614 fix: 嵌入式添加参数 2023-10-26 17:06:17 +08:00
taojinlong
8a6c102420 fix: 校验连接池参数 2023-10-26 16:58:32 +08:00
dataeaseShu
e49471b634 Merge pull request #6379 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-26 16:36:30 +08:00
dataeaseShu
7b9c3998f6 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-26 16:35:40 +08:00
taojinlong
29d5ceb7f4 fix: 上传Excel 2023-10-26 16:34:53 +08:00
dataeaseShu
2eec1220ef fix: 创建数据源,备注信息建议使用单行文本框 2023-10-26 16:28:22 +08:00
taojinlong
244b07a3cf fix: 限制 mysql 非法参数 2023-10-26 16:04:20 +08:00
taojinlong
250f46081e Merge pull request #6377 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2023-10-26 02:53:11 -05:00
taojinlong
2a601cfdd6 fix: 数据源更新记录 2023-10-26 15:49:13 +08:00
dataeaseShu
ab80ba229b Merge pull request #6375 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-26 15:10:42 +08:00
dataeaseShu
c6774322b5 Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-26 15:09:42 +08:00
dataeaseShu
04a78f0f93 fix: 自定义SQL运行结果样式 2023-10-26 15:08:34 +08:00
taojinlong
c77e2f7983 fix: MongoDB-BI数据源创建界面缺少高级设置选项 2023-10-26 15:07:39 +08:00
王嘉豪
f82c0ed78a Merge pull request #6371 from dataease/pr@dev-v2@fix_layer-rename
Pr@dev v2@fix layer rename
2023-10-26 10:44:05 +08:00
wangjiahao
80211d8c84 fix: 修复图层重命名点击画布区域Blur未触发问题 2023-10-26 10:41:56 +08:00
wangjiahao
0df7211d40 fix: 修复大屏复制占位、表格快速隐藏显示切换未渲染问题、Mac录屏操作与大屏快捷键冲突问题 2023-10-26 00:24:00 +08:00
maninhill
86df8c4ddc Update README.md 2023-10-25 20:50:48 +08:00
王嘉豪
c2c871676f Merge pull request #6365 from dataease/pr@dev-v2@fix_history-view
fix: 部分存量视图不显示问题
2023-10-25 17:52:18 +08:00
wangjiahao
f0612c6896 fix: 部分存量视图不显示问题 2023-10-25 17:48:48 +08:00
taojinlong
5fbb84482c Merge pull request #6364 from dataease/pr@dev-v2@fixDatasource
fix: 数据源移动校验
2023-10-25 03:50:33 -05:00
taojinlong
2d97fd672b fix: 数据集行权限 2023-10-25 16:49:54 +08:00
taojinlong
6b6eda00c8 fix: 数据源移动校验 2023-10-25 16:42:08 +08:00
taojinlong
aafce2af6c Merge pull request #6363 from dataease/pr@dev-v2@fixDatasource
Pr@dev v2@fix datasource
2023-10-25 03:05:09 -05:00
taojinlong
2bc4eabc4b Merge branch 'dev-v2' into pr@dev-v2@fixDatasource 2023-10-25 16:04:23 +08:00
taojinlong
65ae8e84b4 fix: 数据集脱敏 2023-10-25 15:58:02 +08:00
wisonic-s
45e7f2395a Merge pull request #6361 from dataease/pr@dev-v2@fix_line_sub_dimension
fix: 折线图存在子维度时提示类别显示错误
2023-10-25 15:54:07 +08:00
wisonic-s
74f840e0fc fix: 折线图存在子维度时提示类别显示错误 2023-10-25 15:49:09 +08:00
王嘉豪
4a422b3b63 Merge pull request #6360 from dataease/pr@dev-v2@fix_proper-watch
fix: 快捷键增加el-popover的弹框监控,防止el-popover内部操作影响大屏快捷键
2023-10-25 15:47:40 +08:00
wangjiahao
4ae936859f fix: 快捷键增加el-popover的弹框监控,防止el-popover内部操作影响大屏快捷键 2023-10-25 15:45:41 +08:00
maninhill
3bb4a31ba3 Update README.md 2023-10-25 14:51:07 +08:00
maninhill
619141fd60 Update README.md 2023-10-25 14:43:57 +08:00
wisonic-s
7280e21a59 Merge pull request #6358 from dataease/pr@dev-v2@refactor_prop_switch_style
refactor: 视图编辑属性开关样式调整
2023-10-25 14:33:53 +08:00
wisonic-s
023c17bd46 refactor: 视图编辑属性开关样式调整 2023-10-25 14:30:58 +08:00
王嘉豪
1ed3767bcd Merge pull request #6354 from dataease/pr@dev-v2@fix_batch-table-pagemode
fix: 修复复用明细表翻页模式切换失败问题
2023-10-25 13:19:57 +08:00
wangjiahao
8483fd828f fix: 修复复用明细表翻页模式切换失败问题 2023-10-25 13:18:43 +08:00
taojinlong
fe2ce6ef58 fix: 去掉db2数据源 2023-10-25 11:47:51 +08:00
fit2cloud-chenyw
cb539ac59f Merge pull request #6352 from dataease/pr@dev-v2@fix_visualization_robustness
fix: 大屏删除文件夹兼容脏数据
2023-10-25 11:40:44 +08:00
fit2cloud-chenyw
a17641c7b6 fix: 大屏删除文件夹兼容脏数据 2023-10-25 11:39:37 +08:00
fit2cloud-chenyw
dc09137d95 Merge pull request #6350 from dataease/pr@dev-v2@fix_cross_permission_by_url
fix: 非admin账号可以通过直接访问url方式访问系统设置页面
2023-10-25 11:11:47 +08:00
fit2cloud-chenyw
e963a95ffc fix: 非admin账号可以通过直接访问url方式访问系统设置页面 2023-10-25 11:10:17 +08:00
fit2cloud-chenyw
796edb0be5 Merge pull request #6349 from dataease/pr@dev-v2@fix_link_pwd
fix: 公共链接带密码跳转报错
2023-10-25 10:42:42 +08:00
fit2cloud-chenyw
0e46bad962 fix: 公共链接带密码跳转报错 2023-10-25 10:41:01 +08:00
王嘉豪
306942017f Merge pull request #6348 from dataease/pr@dev-v2@refactor_new-chart-tips
refactor: 首次添加图表的图标显示时机优化
2023-10-25 10:34:37 +08:00
wangjiahao
50b83c75f5 refactor: 首次添加图表的图标显示时机优化 2023-10-25 10:32:26 +08:00
dataeaseShu
f8bc74aaf9 Merge pull request #6347 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-25 10:25:04 +08:00
dataeaseShu
9d527dc2eb Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-25 10:24:15 +08:00
dataeaseShu
c7ef351bff fix: 仪表板主题-查询组件标题颜色设置没有生效 2023-10-25 10:22:02 +08:00
maninhill
0fa8a70f63 Update README.md 2023-10-25 10:01:58 +08:00
王嘉豪
244ed186d4 Merge pull request #6346 from dataease/pr@dev-v2@fix_new-delete
fix: 修复新建时切换Tab删除资源有异常提示问题
2023-10-25 09:58:12 +08:00
wangjiahao
9c9c8110b3 fix: 修复新建时切换Tab删除资源有异常提示问题 2023-10-25 09:55:25 +08:00
maninhill
22a0d04c33 Update README.md 2023-10-25 09:50:48 +08:00
maninhill
bf14018639 Update README.md 2023-10-25 09:42:04 +08:00
maninhill
dfa32a9305 Update README.md 2023-10-25 09:10:47 +08:00
maninhill
fc81e80252 Update README.md 2023-10-25 09:10:02 +08:00
maninhill
53cee7e0a7 Update README.md 2023-10-25 09:09:32 +08:00
wisonic-s
46ad4e1b59 Merge pull request #6344 from dataease/pr@dev-v2@feat_threshold_assist_line_switch
feat: 阈值/辅助线开关
2023-10-24 19:40:29 +08:00
wisonic-s
a6012476b0 feat: 阈值/辅助线开关 2023-10-24 19:39:07 +08:00
dataeaseShu
b2144a4678 Merge pull request #6343 from dataease/pr@dev-v2_dzz
fix: 新建关联数据集,无法设置关联字段
2023-10-24 18:21:08 +08:00
dataeaseShu
1818dc178c fix: 新建关联数据集,无法设置关联字段 2023-10-24 18:19:58 +08:00
王嘉豪
1bb2d2d324 Merge pull request #6341 from dataease/pr@dev-v2@style_track-bar
style: 联动下钻弹框样式变更
2023-10-24 17:57:27 +08:00
wangjiahao
7ae7424b6e style: 联动下钻弹框样式变更 2023-10-24 17:56:03 +08:00
王嘉豪
7b6c2e6e7d Merge pull request #6338 from dataease/pr@dev-v2@refactor_view
refactor: 视图放大隐藏标题
2023-10-24 17:08:05 +08:00
wangjiahao
9ceb361fb9 refactor: 视图放大隐藏标题 2023-10-24 17:03:03 +08:00
fit2cloud-chenyw
e8e5ff5211 Merge pull request #6337 from dataease/pr@dev-v2@refactor_drivers
refactor: 增加数据源驱动包
2023-10-24 16:45:38 +08:00
fit2cloud-chenyw
a482d8d2c3 refactor: 增加数据源驱动包 2023-10-24 16:44:16 +08:00
Junjun
33305cbdce Merge pull request #6335 from dataease/pr@dev-v2@fix_bool
fix: calcite中布尔类型将使用true/false表示,而不是1/0
2023-10-24 16:30:19 +08:00
junjun
8a5993fc58 fix: calcite中布尔类型将使用true/false表示,而不是1/0 2023-10-24 16:28:19 +08:00
dataeaseShu
ab44ebca43 Merge pull request #6332 from dataease/pr@dev-v2_dzz
Pr@dev v2 dzz
2023-10-24 14:58:52 +08:00
dataeaseShu
c635da1c6a Merge branch 'dev-v2' into pr@dev-v2_dzz 2023-10-24 14:58:12 +08:00
dataeaseShu
ea82cd89c3 fix: eslint fix 2023-10-24 14:56:20 +08:00
ulleo
92ee67d2bf Merge pull request #6331 from ulleo/dev-v2
feat: 图表标题增加备注设置
2023-10-24 14:42:37 +08:00
ulleo
da85d49c94 feat: 图表标题增加备注设置 2023-10-24 14:39:58 +08:00
fit2cloud-chenyw
2a53655bb3 Merge pull request #6328 from dataease/pr@dev-v2@fix_eslint_error
fix: eslint导致打包报错
2023-10-24 11:25:43 +08:00
fit2cloud-chenyw
b6744ad279 fix: eslint导致打包报错 2023-10-24 11:23:58 +08:00
maninhill
cb48921b2b Update README.md 2023-10-24 11:22:52 +08:00
wisonic-s
b14c9fb3da Merge pull request #6327 from dataease/pr@dev-v2@fix_dynamic_field_error_status
fix: 仪表盘/水波图动态值无效时边框显示为红色
2023-10-24 11:21:24 +08:00
wisonic-s
4f778aa9ec fix: 仪表盘/水波图动态值无效时边框显示为红色 2023-10-24 11:19:41 +08:00
dataeaseShu
a6bc2d9ee7 Merge pull request #6325 from dataease/pr@dev-v2_dzz
fix: Oracle 数据源创建界面的连接方式没有必填项标记,单选项没有默认选项
2023-10-24 10:39:47 +08:00
dataeaseShu
0c65938e5a fix: Oracle 数据源创建界面的连接方式没有必填项标记,单选项没有默认选项 2023-10-24 10:38:19 +08:00
王嘉豪
27e1fa35c0 Merge pull request #6324 from dataease/pr@dev-v2@style_query-component
style: 查询组件编辑栏样式修改
2023-10-24 10:19:15 +08:00
wangjiahao
e665e94d00 style: 查询组件编辑栏样式修改 2023-10-24 10:16:31 +08:00
fit2cloudrd
36454aa1a9 Update README.md 2023-10-24 09:59:25 +08:00
maninhill
ded38386eb Update README.md 2023-10-24 09:54:17 +08:00
fit2cloud-chenyw
58e7aa1cea refactor: 挂载子模块 2023-10-24 09:17:46 +08:00
fit2cloud-chenyw
afd05faf63 refactor: 初始化dev-v2 2023-10-23 22:00:14 +08:00
fit2cloud-chenyw
910d5b26ab refactor: 初始化v2 2023-10-23 21:58:50 +08:00
11744 changed files with 207836 additions and 528643 deletions

8
.gitattributes vendored
View File

@@ -1 +1,9 @@
*.sql linguist-language=java
*.java linguist-language=Java
*.md linguist-language=Java
*.yml linguist-language=Java
*.html linguist-language=Java
*.js linguist-language=Java
*.xml linguist-language=Java
*.css linguist-language=Java
*.ts linguist-language=Java

View File

@@ -7,4 +7,7 @@ assignees: xuwei-fit2cloud, yayanpei-fit2cloud
---
DataEase 版本:
**请描述您的需求或者改进建议.**

View File

@@ -3,7 +3,7 @@ name: Bug 提交
about: 提交产品缺陷帮助我们更好的改进
title: "[Bug]"
labels: 状态:待处理
assignees: BBchicken-9527, zrfit
assignees: BBchicken-9527, Shenguobin0102
---

View File

@@ -1,13 +0,0 @@
on: [push, pull_request, release]
name: DataEase pull request handler
jobs:
generic_handler:
name: Generic handler for DataEase Repos
runs-on: ubuntu-latest
steps:
- name: Add labels
uses: jumpserver/action-generic-handler@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUBTOKEN }}

View File

@@ -1,16 +0,0 @@
name: Issue Open Check
on:
issues:
types: [opened]
jobs:
issue-open-add-labels:
runs-on: ubuntu-latest
steps:
- name: Add labels
uses: actions-cool/issues-helper@v2
if: ${{ !github.event.comment.pull_request.pull_request }}
with:
actions: 'add-labels'
labels: '状态:待处理'

View File

@@ -1,17 +0,0 @@
on:
schedule:
- cron: "0 1 * * *"
name: Check recent handle issues
jobs:
check-recent-issues-not-handle:
runs-on: ubuntu-latest
steps:
- name: Check recent issues and send msg
uses: jumpserver/action-issues-alert@master
with:
hook: ${{ secrets.WECHAT_GROUP_WEB_HOOK }}
type: recent
env:
GITHUB_TOKEN: ${{ secrets.GITHUBTOKEN }}

View File

@@ -1,16 +0,0 @@
name: sync2gitee
on: [push]
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- name: Mirror the Github organization repos to Gitee.
uses: Yikun/hub-mirror-action@master
with:
src: 'github/dataease'
dst: 'gitee/fit2cloud-feizhiyun'
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
static_list: "DataEase"
force_update: true

68
.gitignore vendored
View File

@@ -18,44 +18,36 @@
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/.idea/
.idea/
target/
.vscode/
.lh/
*.iml
.DS_Store
node_modules
/dist
node/
# local env files
.env.demo
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.lh
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.lock
*.classpath
*.project
.settings/
.lh
### Spring flatten ###
.flattened-pom.xml
hs_err_pid*
node_modules/
dist/
package-lock.json
.DS_Store
.stylelintcache
core/core-frontend/release/
plugins/vite-test
core/core-frontend/.stylelintcache
/core/core-backend/src/main/resources/static/
/core/core-backend/src/test
/core/core-frontend/node/
/core/core-frontend/lib/
/core/core-frontend/components.d.ts
core/core-frontend/src/assets/fsSvg.js
core/core-frontend/src/assets/fsSvg.html
.flattened-pom.xml
/core/core-backend/
/core/frontend/
/core/mobile/
/sdk/dataease-plugin-common/
/sdk/dataease-plugin-datasource/
/sdk/dataease-plugin-filter/
/sdk/dataease-plugin-interface/
/sdk/dataease-plugin-view/
/extensions/
.vite/
/core/backend/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "de-xpack"]
path = de-xpack
url = git@github.com:dataease/de-xpack.git

View File

@@ -1,29 +1,8 @@
[default.extend-words]
Rela = "Rela"
eles = "eles"
delink = "delink"
testng = "testng"
ba = "ba"
referer = "referer"
keynode = "keynode"
SCHEM = "SCHEM"
ser = "ser"
Referer = "Referer"
Encryp = "Encryp"
OT = "OT"
Wheres = "Wheres"
[files]
extend-exclude = [
"public/",
"amap-wx/",
"m-icon/",
"uni-card/",
"uni-col/",
"uni-link/",
"uni-list/",
"uni-list-item/",
"uni-row/",
"migration/",
"mapFiles/",
"core/frontend/src/views/chart/components/table/TableNormal.vue",
"core/backend/src/main/java/io/dataease/ext/ExtSysUserMapper.xml",
"core/backend/src/main/java/io/dataease/ext/AuthMapper.xml",
"installer/dataease/templates/be.conf"
]
extend-exclude = ["mapFiles/**"]

View File

@@ -1,23 +1,19 @@
FROM registry.cn-qingdao.aliyuncs.com/dataease/fabric8-java-alpine-openjdk8-jre:edge-chromium-11
FROM registry.cn-qingdao.aliyuncs.com/dataease/alpine-openjdk17-jre
ARG IMAGE_TAG
RUN mkdir -p /opt/apps /opt/dataease/data/feature/full /opt/dataease/drivers /opt/dataease/plugins/default
RUN mkdir -p /opt/apps/config /opt/dataease2.0/drivers/ /opt/dataease2.0/cache/ /opt/dataease2.0/data/map /opt/dataease2.0/data/static-resource/ /opt/dataease2.0/data/appearance/
ADD core/mapFiles/full/ /opt/dataease/data/feature/full/
ADD drivers/* /opt/dataease2.0/drivers/
ADD mapFiles/ /opt/dataease2.0/data/map/
ADD staticResource/ /opt/dataease2.0/data/static-resource/
ADD core/drivers/* /opt/dataease/drivers/
WORKDIR /opt/apps
ADD plugins/default/ /opt/dataease/plugins/default/
ADD core/core-backend/target/CoreApplication.jar /opt/apps/app.jar
ADD core/backend/target/backend-$IMAGE_TAG.jar /opt/apps
ENV JAVA_APP_JAR=/opt/apps/app.jar
ENV JAVA_APP_JAR=/opt/apps/backend-$IMAGE_TAG.jar
HEALTHCHECK --interval=15s --timeout=5s --retries=20 --start-period=30s CMD curl -f 127.0.0.1:8100
ENV AB_OFF=true
ENV JAVA_OPTIONS=-Dfile.encoding=utf-8
HEALTHCHECK --interval=15s --timeout=5s --retries=20 --start-period=30s CMD curl -f 127.0.0.1:8081
CMD ["/deployments/run-java.sh"]
CMD java -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dataease2.0/logs/dump.hprof -jar /opt/apps/app.jar

View File

@@ -3,33 +3,25 @@
<p align="center">
<a href="https://www.gnu.org/licenses/gpl-3.0.html"><img src="https://img.shields.io/github/license/dataease/dataease?color=%231890FF" alt="License: GPL v3"></a>
<a href="https://app.codacy.com/gh/dataease/dataease?utm_source=github.com&utm_medium=referral&utm_content=dataease/dataease&utm_campaign=Badge_Grade_Dashboard"><img src="https://app.codacy.com/project/badge/Grade/da67574fd82b473992781d1386b937ef" alt="Codacy"></a>
<a href="https://github.com/dataease/dataease/releases/latest"><img src="https://img.shields.io/github/v/release/dataease/dataease" alt="Latest release"></a>
<a href="https://github.com/dataease/dataease"><img src="https://img.shields.io/github/stars/dataease/dataease?color=%231890FF&style=flat-square" alt="Stars"></a>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2F1dataease%2Fdataease?ref=badge_shield"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fdataease%2Fdataease.svg?type=shield" alt="FOSSA Status"></a>
</p>
<hr/>
## 什么是 DataEase?
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分享。
![de-architecture](https://dataease.io/images/screenshot/de-chart-new.jpg)
<p align="center">
<img src="https://github.com/dataease/dataease/assets/41712985/f951e258-a328-43a9-aa37-ee470d37ed63" alt="DataEase 概览图" border="0" />
</p>
**DataEase 的功能包括:**
**DataEase 的优势:**
- 图表展示:支持 PC 端、移动端、大屏;
- 图表制作:支持丰富的图表类型(Apache ECharts / AntV)、支持拖拉拽方式快速制作仪表板;
- 数据引擎:支持直连模式、本地模式(基于 Apache Doris / Kettle 实现);
- 数据连接:支持数据仓库/数据湖、OLAP 数据库、OLTP 数据库、Excel 数据文件、API 等各种数据源。
## DataEase 的优势
- 开源开放:零门槛,线上快速获取和安装;快速获取用户反馈、按月发布新版本;
- 开源开放:零门槛,线上快速获取和安装,按月迭代;
- 简单易用:极易上手,通过鼠标点击和拖拽即可完成分析;
- 秒级响应:集成 Apache Doris,超大数据量下秒级查询返回延时;
- 全场景支持:多平台安装和多样化嵌入支持;
- 安全分享:支持多种数据分享方式,确保数据安全。
## DataEase 支持的数据源
**DataEase 支持的数据源:**
<p align="center">
<img src="https://dataease.io/images/dataSource/excel.jpg" alt="excel" border="0" width="155" height="107"/>
@@ -37,76 +29,33 @@ DataEase 是开源的数据可视化分析工具,帮助用户快速分析数
<img src="https://dataease.io/images/dataSource/oracle.jpg" alt="oracle" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/sqlservel.jpg" alt="sqlserver" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/mariadb.jpg" alt="mariadb" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/elasticsearch.jpg" alt="elasticsearch" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/clickhouse.jpg" alt="clickhouse" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/doris.jpg" alt="doris" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/mongodb.jpg" alt="mongodb" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/redshift.jpg" alt="redshift" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/hive.png" alt="hive" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/DB2.jpg" alt="DB2" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/API.jpg" alt="API" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/TiDB.jpg" alt="TiDB" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/StarRocks.jpg" alt="StarRocks" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/PrestoDB.jpg" alt="PrestoDB" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/dm.jpg" alt="dm" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/kingbase.jpg" alt="KingBase" border="0" width="155" height="107"/>
<img src="https://dataease.io/images/dataSource/kylin.jpg" alt="Kylin" border="0" width="180" height="107"/>
</p>
## DataEase 模板市场
**DataEase 的技术栈:**
- [模板市场](https://dataease.io/templates/)
- 前端:[Vue.js](https://vuejs.org/)、[Element](https://element.eleme.cn/)
- 图库:[AntV](https://antv.vision/zh)
- 后端:[Spring Boot](https://spring.io/projects/spring-boot)
- 数据库:[MySQL](https://www.mysql.com/)
- 数据处理:[Apache Calcite](https://github.com/apache/calcite/)、[Apache SeaTunnel](https://github.com/apache/seatunnel)
- 基础设施:[Docker](https://www.docker.com/)
![模板市场](https://dataease.io/images/templates/templates.gif)
## 快速开始
**在线体验**
- 环境地址:<https://dataease.fit2cloud.com/>
- 用户名:demo
- 密码:dataease
**一键安装**
仅需两步快速安装 DataEase:
1. 准备一台不小于 8 G内存的 64位 Linux 主机;
2. 以 root 用户执行如下命令一键安装 DataEase。
```sh
curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start.sh | bash
```
**学习资料**
## DataEase 快速入门
- [在线文档](https://dataease.io/docs/)
- [社区论坛](https://bbs.fit2cloud.com/c/de/6)
**加入微信交流群**
<img src="https://dataease.oss-cn-hangzhou.aliyuncs.com/img/wechat-helper.png" width="156" height="156"/>
## DataEase 的技术栈
- 前端:[Vue.js](https://vuejs.org/)、[Element](https://element.eleme.cn/)
- 图库:[Apache ECharts](https://github.com/apache/echarts)、[AntV](https://antv.vision/zh)
- 后端:[Spring Boot](https://spring.io/projects/spring-boot)
- 中间件:[MySQL](https://www.mysql.com/)
- 数据处理:[Kettle](https://github.com/pentaho/pentaho-kettle)、[Apache Doris](https://github.com/apache/doris/)
- 基础设施:[Docker](https://www.docker.com/)
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=dataease/dataease&type=Date)](https://star-history.com/#dataease/dataease&Date)
## FOSSA Status
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fdataease%2Fdataease.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fdataease%2Fdataease?ref=badge_large)
- [快速入门视频](https://www.bilibili.com/video/BV1Z84y1X7eF/)
## License
Copyright (c) 2014-2023 [FIT2CLOUD 飞致云](https://fit2cloud.com/), All rights reserved.
Copyright (c) 2014-2024 [FIT2CLOUD 飞致云](https://fit2cloud.com/), All rights reserved.
Licensed under The GNU General Public License version 3 (GPLv3) (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

61
core/.gitignore vendored
View File

@@ -1,61 +0,0 @@
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/.idea/
target/
*.iml
.DS_Store
node_modules
/dist
node/
# local env files
.env.demo
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.lh
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.lock
*.classpath
*.project
.settings/
.lh
### Spring flatten ###
.flattened-pom.xml
package-lock.json

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
cd ./frontend
npm run lint-staged

View File

@@ -1,35 +0,0 @@
# Created by .ignore support plugin (hsz.mobi)
.DS_Store
node_modules
node/
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
*.iml
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
src/main/resources/static
src/main/resources/templates
src/test/
target
.settings
.project
.classpath
.factorypath
src/main/resources/jmeter/lib/

View File

@@ -1,544 +0,0 @@
<?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"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>dataease-server</artifactId>
<groupId>io.dataease</groupId>
<version>${dataease.version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>backend</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<shiro.version>1.9.1</shiro.version>
<java.version>11</java.version>
<graalvm.version>20.1.0</graalvm.version>
<jwt.version>3.12.1</jwt.version>
<buji.version>4.0.0</buji.version>
<pac4j.version>3.3.0</pac4j.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-jre</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- flyway -->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>${jwt.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.fit2cloud</groupId>
<artifactId>quartz-spring-boot-starter</artifactId>
<version>0.0.7</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
<!--xpath不加这个依赖会报错-->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.2.0</version>
</dependency>
<!--开启 cache 缓存 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.7.0</version>
<scope>test</scope>
</dependency>
<!-- ehcache 缓存 -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.dataease</groupId>
<artifactId>dataease-plugin-interface</artifactId>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.dataease</groupId>
<artifactId>dataease-plugin-view</artifactId>
</dependency>
<dependency>
<groupId>io.dataease</groupId>
<artifactId>dataease-plugin-datasource</artifactId>
</dependency>
<!-- kettle及数据源依赖 -->
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-core</artifactId>
<version>8.3.0.18-1112</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>8.3.0.18-1112</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>metastore</artifactId>
<version>8.3.0.18-1112</version>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.pentaho.di.plugins</groupId>
<artifactId>pdi-engine-configuration-impl</artifactId>
<version>8.3.0.7-683</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>jconsole</artifactId>
</exclusion>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>tools</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.3</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.4</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>static/**/*.woff</exclude>
<exclude>static/**/*.woff2</exclude>
<exclude>static/**/*.ttf</exclude>
<exclude>static/**/*.ico</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>static/**/*.woff</include>
<include>static/**/*.woff2</include>
<include>static/**/*.ttf</include>
<include>static/**/*.ico</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>src/main/resources/static</directory>
<includes>
<include>**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>src/main/resources/templates</directory>
<includes>
<include>**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<!-- Overlay guacamole-common-js (zip) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>1.3.8</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>whole</id>
<properties>
<profiles.active>whole</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<?m2e execute onConfiguration?>
<id>main-class-placement</id>
<phase>generate-resources</phase>
<configuration>
<target>
<move todir="src/main/resources/static">
<fileset dir="../frontend/dist">
<exclude name="*.html"/>
</fileset>
</move>
<move todir="src/main/resources/templates">
<fileset dir="../frontend/dist">
<include name="*.html"/>
</fileset>
</move>
<copy todir="src/main/resources/static/de-app">
<fileset dir="../mobile/dist">
<exclude name="*.html"/>
</fileset>
</copy>
<copy file="../mobile/dist/index.html"
tofile="src/main/resources/templates/app.html"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>stage</id>
<properties>
<profiles.active>stage</profiles.active>
</properties>
</profile>
</profiles>
<repositories>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>interval:15</updatePolicy>
</snapshots>
</repository>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
</repository>
</repositories>
</project>

View File

@@ -1,24 +0,0 @@
package io.dataease;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration;
import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.PropertySource;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableCaching
@SpringBootApplication(exclude = {
QuartzAutoConfiguration.class,
LdapAutoConfiguration.class
})
@ServletComponentScan
@EnableScheduling
@PropertySource(value = {"file:/opt/dataease/conf/dataease.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

View File

@@ -1,19 +0,0 @@
package io.dataease.auth.annotation;
import io.dataease.commons.constants.DePermissionType;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DeCleaner {
DePermissionType value();
int paramIndex() default 0;
String key() default "";
}

View File

@@ -1,34 +0,0 @@
package io.dataease.auth.annotation;
import io.dataease.commons.constants.SysLogConstants.OPERATE_TYPE;
import io.dataease.commons.constants.SysLogConstants.SOURCE_TYPE;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface DeLog {
OPERATE_TYPE operatetype();
SOURCE_TYPE sourcetype();
int positionIndex() default -1;
String positionKey() default "";
int sourceIndex() default 0;
String sourceKey() default "";
int targetIndex() default -1;
String targetKey() default "";
SOURCE_TYPE targetType() default SOURCE_TYPE.USER;
String value() default "";
}

View File

@@ -1,22 +0,0 @@
package io.dataease.auth.annotation;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.ResourceAuthLevel;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface DePermission {
DePermissionType type();
ResourceAuthLevel level() default ResourceAuthLevel.COMMON_LEVEL_USE;
String value() default "";
int paramIndex() default 0;
}

View File

@@ -1,16 +0,0 @@
package io.dataease.auth.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface DePermissionProxy {
String value() default "";
int paramIndex() default 0;
}

View File

@@ -1,21 +0,0 @@
package io.dataease.auth.annotation;
import org.apache.shiro.authz.annotation.Logical;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface DePermissions {
DePermission[] value();
Logical logical() default Logical.AND;
}

View File

@@ -1,24 +0,0 @@
package io.dataease.auth.annotation;
import org.springframework.core.annotation.AliasFor;
import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DeRateLimiter {
long DEFAULT_REQUEST = 2;
@AliasFor("max") long value() default DEFAULT_REQUEST;
@AliasFor("value") long max() default DEFAULT_REQUEST;
String key() default "";
long timeout() default 500;
TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}

View File

@@ -1,17 +0,0 @@
package io.dataease.auth.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Documented
@Target(ElementType.METHOD)
@Retention(RUNTIME)
public @interface SqlInjectValidator {
String[] value() default {};
}

View File

@@ -1,62 +0,0 @@
package io.dataease.auth.aop;
import io.dataease.auth.annotation.DeCleaner;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.utils.AopUtils;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.LogUtil;
import io.dataease.service.decatch.DeCatchProcess;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
@Aspect
@Component
public class DeCleanerAnnotationHandler {
@AfterReturning(value = "@annotation(io.dataease.auth.annotation.DeCleaner)")
public void CleanerAround(JoinPoint point) {
try {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
DeCleaner deCleaner = method.getAnnotation(DeCleaner.class);
DePermissionType type = deCleaner.value();
String key = deCleaner.key();
Object[] args = point.getArgs();
Object paramValue = null;
if (ObjectUtils.isNotEmpty(key) && ArrayUtils.isNotEmpty(args)) {
int pi = deCleaner.paramIndex();
Object arg = point.getArgs()[pi];
paramValue = AopUtils.getParamValue(arg, key, 0);
}
switch (type.name()) {
case "DATASOURCE":
catchProcess().cleanDataSource(paramValue);
break;
case "DATASET":
catchProcess().cleanDataSet(paramValue);
break;
default:
catchProcess().cleanPanel(paramValue);
break;
}
} catch (Throwable e) {
LogUtil.error(e.getMessage(), e);
throw new RuntimeException(e);
}
}
public DeCatchProcess catchProcess() {
return CommonBeanFactory.getBean(DeCatchProcess.class);
}
}

View File

@@ -1,135 +0,0 @@
package io.dataease.auth.aop;
import io.dataease.auth.annotation.DeLog;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.utils.AopUtils;
import io.dataease.controller.ResultHolder;
import io.dataease.dto.SysLogDTO;
import io.dataease.dto.log.FolderItem;
import io.dataease.service.sys.log.LogManager;
import io.dataease.service.sys.log.LogService;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Aspect
@Component
public class DeLogAnnotationHandler {
@Resource
private LogManager logManager;
@Resource
private LogService logService;
private static final List<Integer> before = new ArrayList<>();
@PostConstruct
public void init() {
before.add(SysLogConstants.OPERATE_TYPE.DELETE.getValue());
before.add(SysLogConstants.OPERATE_TYPE.UNSHARE.getValue());
before.add(SysLogConstants.OPERATE_TYPE.UNAUTHORIZE.getValue());
}
private SysLogDTO exec(JoinPoint point, DeLog deLog) throws Exception {
Object[] args = point.getArgs();
if (ArrayUtils.isEmpty(args)) return null;
SysLogConstants.OPERATE_TYPE operatetype = deLog.operatetype();
SysLogConstants.SOURCE_TYPE sourcetype = deLog.sourcetype();
String sourceKey = StringUtils.isNotBlank(deLog.sourceKey()) ? deLog.sourceKey() : deLog.value();
int sourceIndex = deLog.sourceIndex();
if (args.length <= sourceIndex) return null;
Object arg = args[sourceIndex];
Object sourceIdValue = AopUtils.getParamValue(arg, sourceKey, 0);
if (ObjectUtils.isEmpty(sourceIdValue)) return null;
SysLogDTO sysLogDTO = new SysLogDTO();
sysLogDTO.setOperateType(operatetype.getValue());
sysLogDTO.setSourceType(sourcetype.getValue());
sysLogDTO.setSourceId(sourceIdValue.toString());
FolderItem sourceInfo = logManager.nameWithId(sourceIdValue.toString(), sourcetype.getValue());
if (ObjectUtils.isEmpty(sourceInfo)) {
return null;
}
sysLogDTO.setSourceName(sourceInfo.getName());
// 填充资源位置信息
int positionIndex = deLog.positionIndex();
if (positionIndex > -1 && args.length > positionIndex) {
String positionKey = deLog.positionKey();
Object positionArg = args[positionIndex];
Object bottomPositionValue = AopUtils.getParamValue(positionArg, positionKey, 0);
if (ObjectUtils.isNotEmpty(bottomPositionValue)) {
if (sourcetype == SysLogConstants.SOURCE_TYPE.DATASOURCE) {
FolderItem folderItem = logManager.dsTypeInfo(bottomPositionValue.toString());
List<FolderItem> items = new ArrayList<>();
items.add(folderItem);
sysLogDTO.setPositions(items);
} else {
List<FolderItem> parentsAndSelf = logManager.parentsAndSelf(bottomPositionValue.toString(), sourcetype);
sysLogDTO.setPositions(parentsAndSelf);
}
}
}
// 填充资源目标位置信息
int targetIndex = deLog.targetIndex();
if (targetIndex > -1 && args.length > targetIndex) {
String targetKey = deLog.targetKey();
Object targetArg = args[targetIndex];
SysLogConstants.SOURCE_TYPE targetType = deLog.targetType();
Object bottomTargetValue = AopUtils.getParamValue(targetArg, targetKey, 0);
if (ObjectUtils.isNotEmpty(bottomTargetValue)) {
List<FolderItem> parentsAndSelf = logManager.parentsAndSelf(bottomTargetValue.toString(), targetType);
sysLogDTO.setRemarks(parentsAndSelf);
}
}
return sysLogDTO;
}
@Around(value = "@annotation(io.dataease.auth.annotation.DeLog)")
public Object logAround(ProceedingJoinPoint point) throws Throwable {
SysLogDTO logDTO = null;
Object result = null;
DeLog log = getLog(point);
if (before.contains(log.operatetype().getValue())) {
// 前置处理 比如删除操作 需要在数据删除之前查询
logDTO = exec(point, log);
result = point.proceed(point.getArgs());
} else {
// 后置处理 比如保存操作 需要在保存之后才有主键
result = point.proceed(point.getArgs());
logDTO = exec(point, log);
}
if (ObjectUtils.isNotEmpty(result) && result instanceof ResultHolder && !((ResultHolder) result).isSuccess()) {
return result;
}
Optional.ofNullable(logDTO).ifPresent(logService::saveLog);
return result;
}
private DeLog getLog(JoinPoint point) {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
return method.getAnnotation(DeLog.class);
}
}

View File

@@ -1,164 +0,0 @@
package io.dataease.auth.aop;
import io.dataease.auth.annotation.DePermission;
import io.dataease.auth.annotation.DePermissions;
import io.dataease.auth.entity.AuthItem;
import io.dataease.auth.util.ReflectUtil;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.dto.log.FolderItem;
import io.dataease.i18n.Translator;
import io.dataease.service.sys.log.LogManager;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.UnauthorizedException;
import org.apache.shiro.authz.annotation.Logical;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
@Aspect
@Component
public class DePermissionAnnotationHandler {
@Resource
private LogManager logManager;
@Around(value = "@annotation(io.dataease.auth.annotation.DePermissions)")
public Object PermissionsAround(ProceedingJoinPoint point) throws Throwable {
if (AuthUtils.getUser().getIsAdmin()) {
return point.proceed(point.getArgs());
}
Boolean access = false;
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
DePermissions annotation = method.getAnnotation(DePermissions.class);
Logical logical = annotation.logical();
DePermission[] dePermissions = annotation.value();
Object[] args = point.getArgs();
if (logical == Logical.AND) {
access = true;
for (int i = 0; i < dePermissions.length; i++) {
DePermission permission = dePermissions[i];
boolean currentAccess = access(args[permission.paramIndex()], permission, 0);
if (!currentAccess) {
access = false;
break;
}
}
} else {
List<Exception> exceptions = new ArrayList<>();
for (int i = 0; i < dePermissions.length; i++) {
DePermission permission = dePermissions[i];
try {
boolean currentAccess = access(args[permission.paramIndex()], permission, 0);
if (currentAccess) {
access = true;
break;
}
} catch (Exception e) {
exceptions.add(e);
}
}
if (!access && exceptions.size() > 0) {
throw exceptions.get(0);
}
}
return access ? point.proceed(point.getArgs()) : null;
}
@Around(value = "@annotation(io.dataease.auth.annotation.DePermission)")
public Object PermissionAround(ProceedingJoinPoint point) throws Throwable {
Boolean access = false;
if (AuthUtils.getUser().getIsAdmin()) {
return point.proceed(point.getArgs());
}
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
DePermission annotation = method.getAnnotation(DePermission.class);
Object arg = point.getArgs()[annotation.paramIndex()];
if (access(arg, annotation, 0)) {
access = true;
}
return access ? point.proceed(point.getArgs()) : null;
}
private Boolean access(Object arg, DePermission annotation, int layer) throws Exception {
if (ObjectUtils.isEmpty(arg))
return true;
String type = annotation.type().name().toLowerCase();
String value = annotation.value();
Integer requireLevel = annotation.level().getLevel();
Set<String> resourceIds = AuthUtils.permissionByType(type).stream().filter(
item -> item.getLevel() >= requireLevel).map(AuthItem::getAuthSource).collect(Collectors.toSet());
Class<?> parameterType = arg.getClass();
if (parameterType.isPrimitive() || ReflectUtil.isWrapClass(parameterType) || ReflectUtil.isString(parameterType)) {
boolean permissionValid = resourceIds.contains(arg);
if (permissionValid)
return true;
throw new UnauthorizedException(msgI18n(arg, annotation));
} else if (ReflectUtil.isArray(parameterType)) {
for (int i = 0; i < Array.getLength(arg); i++) {
Object o = Array.get(arg, i);
if (!access(o, annotation, layer)) {
return false;
}
}
} else if (ReflectUtil.isCollection(parameterType)) {
Object[] array = ((Collection) arg).toArray();
for (int i = 0; i < array.length; i++) {
Object o = array[i];
if (!access(o, annotation, layer)) {
return false;
}
}
} else if (ReflectUtil.isMap(parameterType)) {
Map<String, Object> argMap = (Map) arg;
String[] values = value.split(".");
Object o = argMap.get(values[layer]);
return access(o, annotation, ++layer);
} else {
// 当作自定义类处理
String[] values = value.split("\\.");
String fieldName = values[layer];
Object fieldValue = ReflectUtil.getFieldValue(arg, fieldName);
return access(fieldValue, annotation, ++layer);
}
return true;
}
private String msgI18n(Object arg, DePermission annotation) {
int sourceTypeValue = 0;
DePermissionType type = annotation.type();
if (type == DePermissionType.DATASOURCE) {
sourceTypeValue = 1;
}
if (type == DePermissionType.DATASET) {
sourceTypeValue = 2;
}
if (type == DePermissionType.PANEL) {
sourceTypeValue = 3;
}
String name = arg.toString();
if (sourceTypeValue > 0) {
FolderItem sourceInfo = logManager.nameWithId(arg.toString(), sourceTypeValue);
if (ObjectUtils.isNotEmpty(sourceInfo))
name = StringUtils.isNotBlank(sourceInfo.getName()) ? sourceInfo.getName() : arg.toString();
}
String msg = Translator.get("I18N_NO_PERMISSION") + "[" + Translator.get("I18N_" + annotation.level().name()) + ": " + Translator.get("SOURCE_TYPE_" + annotation.type().name()) + ": " + name + "]," + Translator.get("I18N_PLEASE_CONCAT_ADMIN");
return msg;
}
}

View File

@@ -1,129 +0,0 @@
package io.dataease.auth.aop;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import io.dataease.auth.annotation.DePermissionProxy;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.LogUtil;
import io.dataease.dto.PermissionProxy;
import io.dataease.exception.DataEaseException;
@Aspect
@Component
@Order(0)
public class DePermissionProxyHandler {
@Around(value = "@annotation(io.dataease.auth.annotation.DePermissionProxy)")
public Object proxyAround(ProceedingJoinPoint point) {
try {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
DePermissionProxy annotation = method.getAnnotation(DePermissionProxy.class);
Object[] args = point.getArgs();
if (null == args || args.length == 0) {
return point.proceed(args);
}
Object arg = point.getArgs()[annotation.paramIndex()];
PermissionProxy proxy = getProxy(arg, annotation, 0);
if (null != proxy && null != proxy.getUserId()) {
AuthUtils.setProxyUser(proxy.getUserId());
}
return point.proceed(args);
} catch (Throwable throwable) {
LogUtil.error(throwable.getMessage(), throwable);
DataEaseException.throwException(throwable);
} finally {
AuthUtils.cleanProxyUser();
}
return null;
}
private PermissionProxy getProxy(Object arg, DePermissionProxy annotation, int layer) throws Exception {
if (null == arg)
return null;
String value = annotation.value();
Class<?> parameterType = arg.getClass();
if (arg instanceof PermissionProxy) {
return (PermissionProxy) arg;
} else if (isArray(parameterType)) {
return null;
} else if (isCollection(parameterType)) {
return null;
} else if (isMap(parameterType)) {
Map<String, Object> argMap = (Map) arg;
String[] values = value.split(".");
Object o = argMap.get(values[layer]);
return getProxy(o, annotation, ++layer);
} else {
// 当作自定义类处理
String[] values = value.split("\\.");
String fieldName = values[layer];
Object fieldValue = getFieldValue(arg, fieldName);
return getProxy(fieldValue, annotation, ++layer);
}
}
private Object getFieldValue(Object o, String fieldName) throws Exception {
Class<?> aClass = o.getClass();
while (null != aClass.getSuperclass()) {
Field[] declaredFields = aClass.getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
Field field = declaredFields[i];
String name = field.getName();
if (StringUtils.equals(name, fieldName)) {
field.setAccessible(true);
return field.get(o);
}
}
aClass = aClass.getSuperclass();
}
throw new NoSuchFieldException(fieldName);
}
private final static String[] wrapClasies = {
"java.lang.Boolean",
"java.lang.Character",
"java.lang.Integer",
"java.lang.Byte",
"java.lang.Short",
"java.lang.Long",
"java.lang.Float",
"java.lang.Double",
};
private Boolean isString(Class clz) {
return StringUtils.equals("java.lang.String", clz.getName());
}
private Boolean isArray(Class clz) {
return clz.isArray();
}
private Boolean isCollection(Class clz) {
return Collection.class.isAssignableFrom(clz);
}
private Boolean isMap(Class clz) {
return Map.class.isAssignableFrom(clz);
}
private Boolean isWrapClass(Class clz) {
return Arrays.stream(wrapClasies).anyMatch(item -> StringUtils.equals(item, clz.getName()));
}
}

View File

@@ -1,55 +0,0 @@
package io.dataease.auth.aop;
import cn.hutool.core.util.StrUtil;
import io.dataease.auth.annotation.DeRateLimiter;
import io.dataease.auth.service.DeLimitService;
import io.dataease.commons.utils.IPUtils;
import io.dataease.commons.utils.ServletUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
@Aspect
@Component
public class DeRateLimiterHandler {
private final static String SEPARATOR = ":";
@Resource
private DeLimitService deLimitService;
@Around(value = "@annotation(io.dataease.auth.annotation.DeRateLimiter)")
public Object around(ProceedingJoinPoint point) throws Throwable {
MethodSignature signature = (MethodSignature) point.getSignature();
Method method = signature.getMethod();
DeRateLimiter rateLimiter = AnnotationUtils.findAnnotation(method, DeRateLimiter.class);
if (rateLimiter != null) {
String key = rateLimiter.key();
if (StrUtil.isBlank(key)) {
key = method.getDeclaringClass().getName() + StrUtil.DOT + method.getName();
}
key = key + SEPARATOR + IPUtils.get();
long max = rateLimiter.max();
long timeout = rateLimiter.timeout();
TimeUnit timeUnit = rateLimiter.timeUnit();
Boolean limited = deLimitService.checkRestricted(key, max, timeout, timeUnit);
if (limited) {
String msg = "The current API [%s] is limited, please try again later!";
String requestURI = ServletUtils.request().getRequestURI();
throw new RuntimeException(String.format(msg, requestURI));
}
}
return point.proceed();
}
}

View File

@@ -1,69 +0,0 @@
package io.dataease.auth.aop;
import cn.hutool.core.util.ArrayUtil;
import io.dataease.auth.annotation.SqlInjectValidator;
import io.dataease.commons.exception.DEException;
import io.dataease.plugins.common.request.KeywordRequest;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Component
@Aspect
public class SqlInjectAop {
@Around(value = "@annotation(io.dataease.auth.annotation.SqlInjectValidator)")
public Object around(ProceedingJoinPoint point) {
try {
Signature signature = point.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
Object[] args = point.getArgs();
if (args == null || args.length == 0) {
return point.proceed();
}
KeywordRequest request = null;
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof KeywordRequest) {
request = (KeywordRequest) args[i];
break;
}
}
if (request == null) return point.proceed(args);
SqlInjectValidator annotation = AnnotationUtils.findAnnotation(method, SqlInjectValidator.class);
String[] value = annotation.value();
boolean illegal = isIllegal(value, request.getOrders());
if (illegal) {
DEException.throwException("Illegal sort exp");
}
return point.proceed(args);
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
private boolean isIllegal(String[] value, List<String> orderList) {
if (CollectionUtils.isEmpty(orderList) || ArrayUtil.isEmpty(value)) return false;
Set<String> wordList = Arrays.stream(value).collect(Collectors.toSet());
wordList.add("asc");
wordList.add("desc");
return orderList.stream().anyMatch(exp ->
Arrays.stream(exp.toLowerCase().split(",")).anyMatch(word ->
Arrays.stream(word.split(" ")).anyMatch(item ->
StringUtils.isNotBlank(item.trim()) && !wordList.contains(item.trim()))));
}
}

View File

@@ -1,97 +0,0 @@
package io.dataease.auth.api;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.auth.api.dto.LoginDto;
import io.dataease.auth.api.dto.SeizeLoginDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Map;
@Api(tags = "登录:登录管理")
@ApiSupport(order = 10)
@RequestMapping("/api/auth")
public interface AuthApi {
@ApiOperation("登录")
@PostMapping("/login")
Object login(LoginDto loginDto) throws Exception;
@ApiOperation("移动端登录")
@PostMapping("/mobileLogin")
Object mobileLogin(LoginDto loginDto) throws Exception;
@PostMapping("/seizeLogin")
Object seizeLogin(SeizeLoginDto loginDto) throws Exception;
@ApiOperation("获取用户信息")
@PostMapping("/userInfo")
CurrentUserDto userInfo();
@ApiOperation("是否使用初始密码")
@PostMapping("/useInitPwd")
Boolean useInitPwd();
@ApiOperation("不再提示修改密码")
@PostMapping("/removeNoti")
void removeNoti();
@ApiOperation("用户初始密码")
@PostMapping("/defaultPwd")
String defaultPwd();
@ApiOperation("登出")
@PostMapping("/logout")
String logout();
@ApiIgnore
@PostMapping("/deLogout")
String deLogout();
@ApiOperation("验证账号")
@PostMapping("/validateName")
Boolean validateName(Map<String, String> nameDto);
@ApiOperation("是否开启ldap")
@PostMapping("/isOpenLdap")
boolean isOpenLdap();
@ApiOperation("是否开启oidc")
@PostMapping("/isOpenOidc")
boolean isOpenOidc();
@ApiOperation("是否开启cas")
@PostMapping("/isOpenCas")
boolean isOpenCas();
@ApiOperation("是否开启企业微信")
@PostMapping("/isOpenWecom")
boolean isOpenWecom();
@ApiOperation("是否开启钉钉")
@PostMapping("/isOpenDingtalk")
boolean isOpenDingtalk();
@ApiOperation("是否开启飞书")
@PostMapping("/isOpenLark")
boolean isOpenLark();
@ApiOperation("是否开启国际飞书")
@PostMapping("/isOpenLarksuite")
boolean isOpenLarksuite();
@ApiIgnore
@PostMapping("/isPluginLoaded")
boolean isPluginLoaded();
@ApiIgnore
@GetMapping("/getPublicKey")
String getPublicKey();
}

View File

@@ -1,29 +0,0 @@
package io.dataease.auth.api;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.api.dto.DynamicMenuDto;
import io.dataease.controller.handler.annotation.I18n;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Api(tags = "登录:动态菜单")
@ApiSupport(order = 20)
@RequestMapping("/api/dynamicMenu")
public interface DynamicMenuApi {
/**
* 根据heads中获取的token 获取username 获取对应权限的菜单
*
* @return
*/
@ApiOperation("查询")
@PostMapping("/menus")
@I18n
List<DynamicMenuDto> menus();
}

View File

@@ -1,16 +0,0 @@
package io.dataease.auth.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class CurrentRoleDto implements Serializable {
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("名称")
private String name;
}

View File

@@ -1,25 +0,0 @@
package io.dataease.auth.api.dto;
import io.dataease.auth.entity.SysUserEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
public class CurrentUserDto extends SysUserEntity implements Serializable {
@ApiModelProperty("角色集合")
private List<CurrentRoleDto> roles;
@ApiModelProperty("权限集合")
private List<String> permissions;
public CurrentUserDto(String username, String nickName) {
super.setUsername(username);
super.setNickName(nickName);
}
}

View File

@@ -1,42 +0,0 @@
package io.dataease.auth.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class DynamicMenuDto implements Serializable {
@ApiModelProperty("路径")
private String path;
@ApiModelProperty("组件")
private String component;
@ApiModelProperty("重定向")
private String redirect;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("元数据")
private MenuMeta meta;
@ApiModelProperty("父ID")
private Long pid;
@ApiModelProperty("ID")
private Long id;
@ApiModelProperty("权限")
private String permission;
@ApiModelProperty("是否隐藏")
private Boolean hidden;
@ApiModelProperty("类型")
private Integer type;
@ApiModelProperty("菜单序号")
private Integer menuSort;
@ApiModelProperty("是否插件")
private Boolean isPlugin;
@ApiModelProperty(hidden = true)
private Boolean noLayout;
@ApiModelProperty("子节点")
private List<DynamicMenuDto> children;
}

View File

@@ -1,24 +0,0 @@
package io.dataease.auth.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class LoginDto implements Serializable {
@ApiModelProperty(value = "账号", required = true)
private String username;
@ApiModelProperty(value = "密码", required = true)
private String password;
/**
* 0: 默认登录
* 1:ldap登录
* 2:单点登录
*/
@ApiModelProperty(value = "登录方式{0:普通登录, 1:ldap登录}", required = true, allowableValues = "0, 1")
private int loginType;
}

View File

@@ -1,15 +0,0 @@
package io.dataease.auth.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class MenuMeta implements Serializable {
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("图标")
private String icon;
}

View File

@@ -1,13 +0,0 @@
package io.dataease.auth.api.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class SeizeLoginDto implements Serializable {
private static final long serialVersionUID = -3318473577764636483L;
private String token;
}

View File

@@ -1,31 +0,0 @@
package io.dataease.auth.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import java.util.Collections;
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//1,允许任何来源
corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*"));
//2,允许任何请求头
corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);
//3,允许任何方法
corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
//4,允许凭证
corsConfiguration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
}

View File

@@ -1,136 +0,0 @@
package io.dataease.auth.config;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.auth.entity.ASKToken;
import io.dataease.auth.entity.JWTToken;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.handler.ApiKeyHandler;
import io.dataease.auth.service.AuthUserService;
import io.dataease.auth.util.JWTUtils;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.TokenCacheUtils;
import io.dataease.listener.util.CacheUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Component
public class F2CRealm extends AuthorizingRealm {
@Autowired
@Lazy // shiro组件加载过早 让authUserService等一等再注入 否则 注入的可能不是代理对象
private AuthUserService authUserService;
@Override
public boolean supports(AuthenticationToken token) {
return token instanceof JWTToken || token instanceof ASKToken;
}
// 验证资源权限
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
CurrentUserDto userDto = (CurrentUserDto) principals.getPrimaryPrincipal();
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
Set<String> role = new HashSet<>(
userDto.getRoles().stream().map(item -> (item.getId() + "")).collect(Collectors.toSet()));
simpleAuthorizationInfo.addRoles(role);
Set<String> permission = new HashSet<>(userDto.getPermissions());
simpleAuthorizationInfo.addStringPermissions(permission);
return simpleAuthorizationInfo;
}
// 验证登录权限
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException {
if (auth instanceof ASKToken) {
if (!authUserService.pluginLoaded()) {
throw new AuthenticationException("license error");
}
Object accessKey = auth.getPrincipal();
Object signature = auth.getCredentials();
Long userId = ApiKeyHandler.getUser(accessKey.toString(), signature.toString());
SysUserEntity userEntity = userWithId(userId);
CurrentUserDto currentUserDto = queryCacheUserDto(userEntity);
return new SimpleAuthenticationInfo(currentUserDto, signature, "f2cReam");
}
try {
CacheUtils.get("lic_info", "lic");
} catch (Exception e) {
LogUtil.error(e);
throw new AuthenticationException("license error");
}
TokenInfo tokenInfo;
String token;
try {
token = (String) auth.getCredentials();
// 解密获得username,用于和数据库进行对比
tokenInfo = JWTUtils.tokenInfoByToken(token);
if (TokenCacheUtils.invalid(token)) {
throw new AuthenticationException("token invalid");
}
} catch (Exception e) {
throw new AuthenticationException(e);
}
Long userId = tokenInfo.getUserId();
String username = tokenInfo.getUsername();
if (username == null) {
throw new AuthenticationException("token invalid");
}
SysUserEntity user = userWithId(userId);
String pass = null;
try {
pass = user.getPassword();
} catch (Exception e) {
e.printStackTrace();
}
if (!JWTUtils.verify(token, tokenInfo, pass)) {
throw new AuthenticationException("Username or password error");
}
CurrentUserDto currentUserDto = queryCacheUserDto(user);
return new SimpleAuthenticationInfo(currentUserDto, token, "f2cReam");
}
public SysUserEntity userWithId(Long userId) {
SysUserEntity user = authUserService.getUserById(userId);
if (user == null) {
throw new AuthenticationException("User didn't existed!");
}
if (user.getEnabled() == 0) {
throw new AuthenticationException("User is valid!");
}
return user;
}
public CurrentUserDto queryCacheUserDto(SysUserEntity user) {
// 使用缓存
List<CurrentRoleDto> currentRoleDtos = authUserService.roleInfos(user.getUserId());
// 使用缓存
List<String> permissions = authUserService.permissions(user.getUserId());
CurrentUserDto currentUserDto = BeanUtils.copyBean(new CurrentUserDto(), user);
currentUserDto.setRoles(currentRoleDtos);
currentUserDto.setPermissions(permissions);
return currentUserDto;
}
}

View File

@@ -1,24 +0,0 @@
package io.dataease.auth.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Data
@Component
public class RsaProperties {
public static String privateKey;
public static String publicKey;
@Value("${rsa.private_key}")
public void setPrivateKey(String privateKey) {
RsaProperties.privateKey = privateKey;
}
@Value("${rsa.public_key}")
public void setPublicKey(String publicKey) {
RsaProperties.publicKey = publicKey;
}
}

View File

@@ -1,82 +0,0 @@
package io.dataease.auth.config;
import io.dataease.auth.service.ShiroService;
import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
import org.apache.shiro.mgt.DefaultSubjectDAO;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import java.util.LinkedHashMap;
import java.util.Map;
import io.dataease.auth.filter.*;
import org.springframework.context.annotation.DependsOn;
@Configuration
public class ShiroConfig {
@Bean("securityManager")
public DefaultWebSecurityManager getManager(F2CRealm f2cRealm) {
DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
// 使用自己的realm
manager.setRealm(f2cRealm);
/*
* 关闭shiro自带的session,详情见文档
* http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29
*/
DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO();
DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator();
defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
manager.setSubjectDAO(subjectDAO);
return manager;
}
@Bean("shiroFilter")
public ShiroFilterFactoryBean factory(DefaultWebSecurityManager securityManager, ShiroService shiroService) {
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
// 添加自己的过滤器并且取名为jwt
Map<String, Filter> filterMap = new LinkedHashMap<>();
filterMap.put("f2cPerms", new F2CPermissionsFilter());
filterMap.put("jwt", new JWTFilter());
filterMap.put("logout", new F2CLogoutFilter());
filterMap.put("link", new F2CLinkFilter());
filterMap.put("doc", new F2CDocFilter());
factoryBean.setSecurityManager(securityManager);
factoryBean.setLoginUrl("/login");
factoryBean.setUnauthorizedUrl("/login");
factoryBean.setFilterChainDefinitionMap(shiroService.loadFilterChainDefinitionMap());
factoryBean.setFilters(filterMap);
return factoryBean;
}
/**
* 下面的代码是添加注解支持
*/
@Bean
@DependsOn("lifecycleBeanPostProcessor")
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
return defaultAdvisorAutoProxyCreator;
}
@Bean
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
}

View File

@@ -1,77 +0,0 @@
package io.dataease.auth.config.cas;
import io.dataease.auth.service.impl.ShiroServiceImpl;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.service.system.SystemParameterService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.util.AntPathMatcher;
import org.jasig.cas.client.authentication.UrlPatternMatcherStrategy;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@Component
public class CasStrategy implements UrlPatternMatcherStrategy {
private static Set<String> releaseTypes = new HashSet<>();
@PostConstruct
public void init() {
releaseTypes.add("anon");
releaseTypes.add("link");
releaseTypes.add("doc");
}
@Override
public boolean matches(String s) {
SystemParameterService service = CommonBeanFactory.getBean(SystemParameterService.class);
String serviceValue = service.getValue("cas.callBack");
if (StringUtils.isBlank(serviceValue)) return false;
String serverName = serviceValue.substring(0, serviceValue.indexOf("/cas/callBack"));
int beginIndex = -1;
if ((beginIndex = s.indexOf(serverName)) != -1) {
s = s.substring(beginIndex + serverName.length());
}
if (StringUtils.equals("/", s)) {
if (fromLink(serverName)) return true;
return false;
}
if (StringUtils.equals("/login", s)) return false;
if (StringUtils.startsWith(s, "/cas/callBack")) return false;
if (StringUtils.equals("/api/auth/deLogout", s)) return true;
if (s.startsWith("/link.html")) return true;
AntPathMatcher antPathMatcher = new AntPathMatcher();
ShiroServiceImpl shiroService = CommonBeanFactory.getBean(ShiroServiceImpl.class);
Map<String, String> stringStringMap = shiroService.loadFilterChainDefinitionMap();
for (Map.Entry<String, String> entry : stringStringMap.entrySet()) {
if (releaseTypes.contains(entry.getValue())) {
boolean matches = antPathMatcher.matches(entry.getKey(), s);
if (matches) {
return true;
}
}
}
return false;
}
@Override
public void setPattern(String s) {
}
private Boolean fromLink(String serverName) {
String referrer = ServletUtils.request().getHeader("referer");
if (StringUtils.isBlank(referrer)) return false;
int beginIndex = -1;
if ((beginIndex = referrer.indexOf(serverName)) != -1) {
referrer = referrer.substring(beginIndex + serverName.length());
return referrer.startsWith("/link.html");
}
return false;
}
}

View File

@@ -1,25 +0,0 @@
package io.dataease.auth.entity;
import org.apache.shiro.authc.AuthenticationToken;
public class ASKToken implements AuthenticationToken {
private String accessKey;
private String signature;
public ASKToken(String accessKey, String signature) {
this.accessKey = accessKey;
this.signature = signature;
}
@Override
public Object getPrincipal() {
return accessKey;
}
@Override
public Object getCredentials() {
return signature;
}
}

View File

@@ -1,17 +0,0 @@
package io.dataease.auth.entity;
import lombok.Data;
@Data
public class AccountLockStatus {
private Boolean locked = false;
private String username;
private Long unlockTime;
private Integer relieveTimes;
private Integer remainderTimes;
}

View File

@@ -1,39 +0,0 @@
package io.dataease.auth.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Objects;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class AuthItem implements Serializable {
private static final long serialVersionUID = 7909546616315767531L;
private String authSource;
private Integer level;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AuthItem authItem = (AuthItem) o;
return Objects.equals(authSource, authItem.authSource) &&
Objects.equals(level, authItem.level);
}
@Override
public int hashCode() {
return Objects.hash(authSource, level);
}
}

View File

@@ -1,22 +0,0 @@
package io.dataease.auth.entity;
import org.apache.shiro.authc.AuthenticationToken;
public class JWTToken implements AuthenticationToken {
private String token;
public JWTToken(String token) {
this.token = token;
}
@Override
public Object getPrincipal() {
return token;
}
@Override
public Object getCredentials() {
return token;
}
}

View File

@@ -1,47 +0,0 @@
package io.dataease.auth.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class SysUserEntity implements Serializable {
@ApiModelProperty(hidden = true)
private Long userId;
@ApiModelProperty("账号")
private String username;
@ApiModelProperty("姓名")
private String nickName;
@ApiModelProperty("组织ID")
private Long deptId;
@ApiModelProperty("组织名称")
private String deptName;
@ApiModelProperty(hidden = true)
private String password;
@ApiModelProperty("状态")
private Integer enabled;
@ApiModelProperty("邮箱")
private String email;
@ApiModelProperty("电话")
private String phone;
@ApiModelProperty(hidden = true)
private String language;
@ApiModelProperty(hidden = true)
private Boolean isAdmin;
@ApiModelProperty(hidden = true)
private Integer from;
}

View File

@@ -1,19 +0,0 @@
package io.dataease.auth.entity;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
@Data
@Builder
public class TokenInfo implements Serializable {
private String username;
private Long userId;
public String format() {
return username + "," + userId;
}
}

View File

@@ -1,106 +0,0 @@
package io.dataease.auth.filter;
import cn.hutool.core.util.ArrayUtil;
import com.auth0.jwt.algorithms.Algorithm;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.service.AuthUserService;
import io.dataease.auth.util.JWTUtils;
import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.LogUtil;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.web.filter.AccessControlFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import static io.dataease.commons.license.F2CLicenseResponse.Status;
public class F2CDocFilter extends AccessControlFilter {
private static final String RESULT_URI_KEY = "result_uri_key";
private static final String NOLIC_PAGE = "nolic.html";
private static final String NO_LOGIN_PAGE = "/nologin.html";
private static final String DEFAULT_FAILED_PAGE = "/";
@Override
protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object o) throws Exception {
HttpServletRequest request = (HttpServletRequest) servletRequest;
try {
DefaultLicenseService defaultLicenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
Status status = f2CLicenseResponse.getStatus();
if (status != Status.valid) {
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
return false;
}
} catch (Exception e) {
request.setAttribute(RESULT_URI_KEY, NOLIC_PAGE);
LogUtil.error(e.getMessage(), e);
return false;
}
try {
Boolean isLogin = validateLogin(request);
if (!isLogin) {
request.setAttribute(RESULT_URI_KEY, NO_LOGIN_PAGE);
return false;
}
} catch (Exception e) {
request.setAttribute(RESULT_URI_KEY, NO_LOGIN_PAGE);
LogUtil.error(e.getMessage(), e);
return false;
}
return true;
}
private Boolean validateLogin(HttpServletRequest request) throws Exception {
String authorization = request.getHeader("Authorization");
if (StringUtils.isBlank(authorization)) {
Cookie[] cookies = request.getCookies();
if (ArrayUtil.isNotEmpty(cookies)) {
Cookie cookie = Arrays.stream(cookies).filter(item -> StringUtils.equals(item.getName(), "Authorization")).findFirst().orElse(null);
if (ObjectUtils.isNotEmpty(cookie) && StringUtils.isNotBlank(cookie.getValue())) {
authorization = cookie.getValue();
}
}
}
if (StringUtils.isBlank(authorization)) {
return false;
}
TokenInfo tokenInfo = JWTUtils.tokenInfoByToken(authorization);
AuthUserService authUserService = CommonBeanFactory.getBean(AuthUserService.class);
SysUserEntity user = authUserService.getUserById(tokenInfo.getUserId());
if (user == null) {
return false;
}
String password = user.getPassword();
boolean verify = JWTUtils.verify(authorization, tokenInfo, password);
return verify;
}
@Override
protected boolean onAccessDenied(ServletRequest req, ServletResponse res) throws Exception {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
Object attribute = request.getAttribute(RESULT_URI_KEY);
String path = ObjectUtils.isNotEmpty(attribute) ? attribute.toString() : DEFAULT_FAILED_PAGE;
path += ("?_t" + System.currentTimeMillis());
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
response.setHeader("Expires", "0");
request.getRequestDispatcher(path).forward(request, response);
return false;
}
}

View File

@@ -1,46 +0,0 @@
package io.dataease.auth.filter;
import cn.hutool.core.util.ObjectUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.interfaces.DecodedJWT;
import io.dataease.auth.util.JWTUtils;
import io.dataease.auth.util.LinkUtil;
import io.dataease.commons.utils.LogUtil;
import io.dataease.plugins.common.base.domain.PanelLink;
import org.apache.shiro.web.filter.authc.AnonymousFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class F2CLinkFilter extends AnonymousFilter {
public static final String LINK_TOKEN_KEY = "LINK-PWD-TOKEN";
@Override
protected boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) {
try {
HttpServletRequest req = (HttpServletRequest) request;
String linkToken = req.getHeader(LINK_TOKEN_KEY);
DecodedJWT jwt = JWT.decode(linkToken);
String resourceId = jwt.getClaim("resourceId").asString();
Long userId = jwt.getClaim("userId").asLong();
PanelLink panelLink = LinkUtil.queryLink(resourceId, userId);
if (ObjectUtil.isEmpty(panelLink)) return false;
String pwd;
if (!panelLink.getEnablePwd()) {
panelLink.setPwd("dataease");
pwd = panelLink.getPwd();
} else {
pwd = panelLink.getPwd();
}
return JWTUtils.verifyLink(linkToken, resourceId, userId, pwd);
} catch (Exception e) {
LogUtil.error(e);
}
return false;
}
}

View File

@@ -1,26 +0,0 @@
package io.dataease.auth.filter;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.LogoutFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class F2CLogoutFilter extends LogoutFilter {
private static final Logger logger = LoggerFactory.getLogger(F2CLogoutFilter.class);
@Override
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
Subject subject = getSubject(request, response);
try {
subject.logout();
} catch (Exception ex) {
logger.error("退出登录错误", ex);
}
return true;
}
}

View File

@@ -1,28 +0,0 @@
package io.dataease.auth.filter;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class F2CPermissionsFilter extends PermissionsAuthorizationFilter {
@Override
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
Subject subject = getSubject(request, response);
String[] perms = (String[]) mappedValue;
if (perms != null && perms.length > 0) {
for (String str : perms) {
// 判断访问的用户是否拥有mappedValue权限
if (subject.isPermitted(str)) {
return true;
}
}
return false;
}
return true;
}
}

View File

@@ -1,149 +0,0 @@
package io.dataease.auth.filter;
import io.dataease.auth.entity.ASKToken;
import io.dataease.auth.entity.JWTToken;
import io.dataease.auth.handler.ApiKeyHandler;
import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.TokenCacheUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JWTFilter extends BasicHttpAuthenticationFilter {
public final static String expireMessage = "Login token is expire.";
public final static String licMessage = "license invalid";
/**
* 判断用户是否想要登入。
* 检测header里面是否包含Authorization字段即可
*/
@Override
protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) {
HttpServletRequest req = (HttpServletRequest) request;
String authorization = req.getHeader("Authorization");
return authorization != null;
}
/**
*
*/
@Override
protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
if (ApiKeyHandler.isApiKeyCall(httpServletRequest)) {
DefaultLicenseService licenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
F2CLicenseResponse licenseResponse = null;
try {
licenseResponse = licenseService.validateLicense();
} catch (Exception e) {
throw new AuthenticationException(licMessage);
}
if (licenseResponse.getStatus() != F2CLicenseResponse.Status.valid) {
throw new AuthenticationException(licMessage);
}
ASKToken askToken = ApiKeyHandler.buildToken(httpServletRequest);
getSubject(request, response).login(askToken);
return true;
}
String authorization = httpServletRequest.getHeader("Authorization");
if (StringUtils.startsWith(authorization, "Basic")) {
return false;
}
if (TokenCacheUtils.invalid(authorization)) {
throw new AuthenticationException(expireMessage);
}
JWTToken token = new JWTToken(authorization);
Subject subject = getSubject(request, response);
// 提交给realm进行登入,如果错误他会抛出异常并被捕获
subject.login(token);
return true;
}
/**
*
*/
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
// 先判断是不是api调用
HttpServletRequest hRequest = (HttpServletRequest) request;
if (isLoginAttempt(request, response) || ApiKeyHandler.isApiKeyCall(hRequest)) {
try {
boolean loginSuccess = executeLogin(request, response);
return loginSuccess;
} catch (Exception e) {
LogUtil.error(e);
if (e instanceof AuthenticationException && StringUtils.equals(e.getMessage(), expireMessage)) {
responseExpire(request, response, e);
} else if (StringUtils.equals(licMessage, e.getMessage())) {
responseLicError(request, response, e);
} else {
tokenError(request, response, e);
}
}
}
return false;
}
/**
* 对跨域提供支持
*/
@Override
protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
// 跨域时会首先发送一个option请求,这里我们给option请求直接返回正常状态
if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
httpServletResponse.setStatus(HttpStatus.OK.value());
return false;
}
return super.preHandle(request, response);
}
private void tokenError(ServletRequest req, ServletResponse resp, Exception e1) {
HttpServletResponse httpServletResponse = (HttpServletResponse) resp;
httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status");
httpServletResponse.setHeader("authentication-status", "invalid");
}
private void responseExpire(ServletRequest req, ServletResponse resp, Exception e1) {
HttpServletResponse httpServletResponse = (HttpServletResponse) resp;
httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status");
httpServletResponse.setHeader("authentication-status", "login_expire");
}
private void responseLicError(ServletRequest req, ServletResponse resp, Exception e1) {
HttpServletResponse httpServletResponse = (HttpServletResponse) resp;
httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status");
httpServletResponse.setHeader("authentication-status", licMessage);
}
}

View File

@@ -1,87 +0,0 @@
package io.dataease.auth.handler;
import io.dataease.auth.entity.ASKToken;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto;
import io.dataease.plugins.xpack.ukey.service.UkeyXpackService;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.UUID;
public class ApiKeyHandler {
public static final String API_ACCESS_KEY = "accessKey";
public static final String API_SIGNATURE = "signature";
public static String random = UUID.randomUUID().toString() + UUID.randomUUID().toString();
public static Long getUser(HttpServletRequest request) {
if (request == null) {
return null;
}
return getUser(request.getHeader(API_ACCESS_KEY), request.getHeader(API_SIGNATURE));
}
public static ASKToken buildToken(HttpServletRequest request) {
if (request == null) {
return null;
}
String accessKey = request.getHeader(API_ACCESS_KEY);
String signature = request.getHeader(API_SIGNATURE);
ASKToken askToken = new ASKToken(accessKey, signature);
return askToken;
}
public static Boolean isApiKeyCall(HttpServletRequest request) {
if (request == null) {
return false;
}
if (StringUtils.isBlank(request.getHeader(API_ACCESS_KEY)) || StringUtils.isBlank(request.getHeader(API_SIGNATURE))) {
return false;
}
return true;
}
public static XpackUkeyDto ukey(String accessKey) {
UkeyXpackService ukeyXpackService = SpringContextUtil.getBean(UkeyXpackService.class);
XpackUkeyDto userKey = ukeyXpackService.getUserKey(accessKey);
return userKey;
}
public static Long getUser(String accessKey, String signature) {
if (StringUtils.isBlank(accessKey) || StringUtils.isBlank(signature)) {
return null;
}
XpackUkeyDto userKey = ukey(accessKey);
if (userKey == null) {
throw new RuntimeException("invalid accessKey");
}
String signatureDecrypt;
try {
signatureDecrypt = CodingUtil.aesDecrypt(signature, userKey.getSecretKey(), accessKey);
} catch (Throwable t) {
throw new RuntimeException("invalid signature");
}
String[] signatureArray = StringUtils.split(StringUtils.trimToNull(signatureDecrypt), "|");
if (signatureArray.length < 2) {
throw new RuntimeException("invalid signature");
}
if (!StringUtils.equals(accessKey, signatureArray[0])) {
throw new RuntimeException("invalid signature");
}
long signatureTime = 0l;
try {
signatureTime = Long.valueOf(signatureArray[signatureArray.length - 1]).longValue();
} catch (Exception e) {
throw new RuntimeException(e);
}
if (Math.abs(System.currentTimeMillis() - signatureTime) > 1800000) {
//签名30分钟超时
throw new RuntimeException("expired signature");
}
return userKey.getUserId();
}
}

View File

@@ -1,450 +0,0 @@
package io.dataease.auth.server;
import io.dataease.auth.api.AuthApi;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.auth.api.dto.LoginDto;
import io.dataease.auth.api.dto.SeizeLoginDto;
import io.dataease.auth.config.RsaProperties;
import io.dataease.auth.entity.AccountLockStatus;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.service.AuthUserService;
import io.dataease.auth.util.JWTUtils;
import io.dataease.auth.util.RsaUtil;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.*;
import io.dataease.controller.sys.request.LdapAddRequest;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.entity.XpackLdapUserEntity;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.util.PluginUtils;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.ldap.dto.request.LdapValidateRequest;
import io.dataease.plugins.xpack.ldap.dto.response.ValidateResult;
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
import io.dataease.service.sys.SysUserService;
import io.dataease.service.system.SystemParameterService;
import io.dataease.websocket.entity.WsMessage;
import io.dataease.websocket.service.WsService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@RestController
public class AuthServer implements AuthApi {
private static final String LDAP_EMAIL_SUFFIX = "@ldap.com";
@Value("${dataease.init_password:DataEase123..}")
private String DEFAULT_PWD;
@Autowired
private AuthUserService authUserService;
@Autowired
private SysUserService sysUserService;
@Resource
private SystemParameterService systemParameterService;
@Autowired
private WsService wsService;
@Override
public Object mobileLogin(@RequestBody LoginDto loginDto) throws Exception {
String username = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, loginDto.getUsername());
String pwd = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, loginDto.getPassword());
AccountLockStatus accountLockStatus = authUserService.lockStatus(username, 0);
if (accountLockStatus.getLocked()) {
String msg = Translator.get("I18N_ACCOUNT_LOCKED");
msg = String.format(msg, username, accountLockStatus.getRelieveTimes().toString());
DataEaseException.throwException(msg);
}
SysUserEntity user = authUserService.getUserByName(username);
if (ObjectUtils.isEmpty(user)) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
if (user.getEnabled() == 0) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_user_is_disable"), lockStatus));
}
String realPwd = user.getPassword();
pwd = CodingUtil.md5(pwd);
if (!StringUtils.equals(pwd, realPwd)) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
TokenInfo tokenInfo = TokenInfo.builder().userId(user.getUserId()).username(username).build();
String token = JWTUtils.sign(tokenInfo, realPwd, false);
// 记录token操作时间
Map<String, Object> result = new HashMap<>();
result.put("token", token);
ServletUtils.setToken(token);
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.LOGIN, SysLogConstants.SOURCE_TYPE.USER, user.getUserId(), null, null, null);
authUserService.unlockAccount(username, 0);
authUserService.clearCache(user.getUserId());
return result;
}
@Override
public Object login(@RequestBody LoginDto loginDto) throws Exception {
Map<String, Object> result = new HashMap<>();
String username = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, loginDto.getUsername());
String pwd = RsaUtil.decryptByPrivateKey(RsaProperties.privateKey, loginDto.getPassword());
// 增加ldap登录方式
Integer loginType = loginDto.getLoginType();
boolean isSupportLdap = authUserService.supportLdap();
if (loginType == 1 && isSupportLdap) {
AccountLockStatus accountLockStatus = authUserService.lockStatus(username, 1);
if (accountLockStatus.getLocked()) {
String msg = Translator.get("I18N_ACCOUNT_LOCKED");
msg = String.format(msg, username, accountLockStatus.getRelieveTimes().toString());
DataEaseException.throwException(msg);
}
LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class);
LdapValidateRequest request = LdapValidateRequest.builder().userName(username).password(pwd).build();
ValidateResult<XpackLdapUserEntity> validateResult = ldapXpackService.login(request);
if (!validateResult.isSuccess()) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 1);
DataEaseException.throwException(appendLoginErrorMsg(validateResult.getMsg(), lockStatus));
}
XpackLdapUserEntity ldapUserEntity = validateResult.getData();
if (StringUtils.isBlank(ldapUserEntity.getEmail())) {
ldapUserEntity.setEmail(username + LDAP_EMAIL_SUFFIX);
}
SysUserEntity user = authUserService.getLdapUserByName(username);
if (ObjectUtils.isEmpty(user) || ObjectUtils.isEmpty(user.getUserId())) {
LdapAddRequest ldapAddRequest = new LdapAddRequest();
ldapAddRequest.setUsers(new ArrayList<XpackLdapUserEntity>() {
{
add(ldapUserEntity);
}
});
ldapAddRequest.setEnabled(1L);
ldapAddRequest.setRoleIds(new ArrayList<Long>() {
{
add(2L);
}
});
sysUserService.validateExistUser(ldapUserEntity.getUsername(), ldapUserEntity.getNickname(),
ldapUserEntity.getEmail());
sysUserService.saveLdapUsers(ldapAddRequest);
}
username = validateResult.getData().getUsername();
}
// 增加ldap登录方式
AccountLockStatus accountLockStatus = authUserService.lockStatus(username, 0);
if (accountLockStatus.getLocked()) {
String msg = Translator.get("I18N_ACCOUNT_LOCKED");
msg = String.format(msg, username, accountLockStatus.getRelieveTimes().toString());
DataEaseException.throwException(msg);
}
SysUserEntity user = authUserService.getUserByName(username);
if (ObjectUtils.isEmpty(user)) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
// 验证登录类型是否与用户类型相同
if (!sysUserService.validateLoginType(user.getFrom(), loginType)) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_login_type_error"), lockStatus));
}
if (user.getEnabled() == 0) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_user_is_disable"), lockStatus));
}
String realPwd = user.getPassword();
// 普通登录需要验证密码
if (loginType == 0 || !isSupportLdap) {
// 私钥解密
// md5加密
pwd = CodingUtil.md5(pwd);
if (!StringUtils.equals(pwd, realPwd)) {
AccountLockStatus lockStatus = authUserService.recordLoginFail(username, 0);
DataEaseException.throwException(appendLoginErrorMsg(Translator.get("i18n_id_or_pwd_error"), lockStatus));
}
if (user.getIsAdmin() && user.getPassword().equals("40b8893ea9ebc2d631c4bb42bb1e8996")) {
result.put("passwordModified", false);
}
}
TokenInfo tokenInfo = TokenInfo.builder().userId(user.getUserId()).username(username).build();
String token = JWTUtils.sign(tokenInfo, realPwd);
// 记录token操作时间
result.put("token", token);
ServletUtils.setToken(token);
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.LOGIN, SysLogConstants.SOURCE_TYPE.USER, user.getUserId(), null, null, null);
authUserService.unlockAccount(username, ObjectUtils.isEmpty(loginType) ? 0 : loginType);
authUserService.clearCache(user.getUserId());
return result;
}
@Override
public Object seizeLogin(@RequestBody SeizeLoginDto loginDto) throws Exception {
String token = loginDto.getToken();
Map<String, Object> result = new HashMap<>();
result.put("token", token);
ServletUtils.setToken(token);
TokenInfo tokenInfo = JWTUtils.tokenInfoByToken(token);
Long userId = tokenInfo.getUserId();
JWTUtils.seizeSign(userId, token);
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.LOGIN, SysLogConstants.SOURCE_TYPE.USER, userId, null, null, null);
WsMessage message = new WsMessage(userId, "/web-seize-topic", IPUtils.get());
wsService.releaseMessage(message);
authUserService.clearCache(userId);
Thread.sleep(3000L);
return result;
}
private String appendLoginErrorMsg(String msg, AccountLockStatus lockStatus) {
if (ObjectUtils.isEmpty(lockStatus)) return msg;
if (ObjectUtils.isNotEmpty(lockStatus.getRemainderTimes())) {
String i18n = Translator.get("i18n_login_remainder_times");
msg += String.format(i18n, lockStatus.getRemainderTimes());
}
return msg;
}
@Override
public CurrentUserDto userInfo() {
CurrentUserDto userDto = (CurrentUserDto) SecurityUtils.getSubject().getPrincipal();
if (ObjectUtils.isEmpty(userDto)) {
String token = ServletUtils.getToken();
Long userId = JWTUtils.tokenInfoByToken(token).getUserId();
SysUserEntity user = authUserService.getUserById(userId);
CurrentUserDto currentUserDto = BeanUtils.copyBean(new CurrentUserDto(), user, "password");
List<CurrentRoleDto> currentRoleDtos = authUserService.roleInfos(user.getUserId());
List<String> permissions = authUserService.permissions(user.getUserId());
currentUserDto.setRoles(currentRoleDtos);
currentUserDto.setPermissions(permissions);
return currentUserDto;
}
userDto.setPassword(null);
return userDto;
}
@Override
public Boolean useInitPwd() {
CurrentUserDto user = AuthUtils.getUser();
if (null == user || 0 != user.getFrom()) {
return false;
}
String md5 = CodingUtil.md5(DEFAULT_PWD);
boolean isInitPwd = StringUtils.equals(AuthUtils.getUser().getPassword(), md5);
if (isInitPwd) {
return sysUserService.needPwdNoti(user.getUserId());
}
return false;
}
@Override
public void removeNoti() {
sysUserService.saveUserAssist(false);
}
@Override
public String defaultPwd() {
return DEFAULT_PWD;
}
@Override
public String deLogout() {
String token = ServletUtils.getToken();
if (StringUtils.isEmpty(token) || StringUtils.equals("null", token) || StringUtils.equals("undefined", token)) {
return "success";
}
SecurityUtils.getSubject().logout();
String result = null;
Integer defaultLoginType = systemParameterService.defaultLoginType();
if (defaultLoginType == 3 && isOpenCas()) {
HttpServletRequest request = ServletUtils.request();
HttpSession session = request.getSession();
session.invalidate();
CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class);
result = casXpackService.logout();
}
try {
Long userId = JWTUtils.tokenInfoByToken(token).getUserId();
authUserService.clearCache(userId);
if (StringUtils.isBlank(result)) {
result = "success";
}
TokenCacheUtils.add(token, userId);
} catch (Exception e) {
LogUtil.error(e);
if (StringUtils.isBlank(result)) {
result = "fail";
}
}
return result;
}
@Override
public String logout() {
String token = ServletUtils.getToken();
if (isOpenOidc()) {
HttpServletRequest request = ServletUtils.request();
String idToken = request.getHeader("IdToken");
if (StringUtils.isNotBlank(idToken)) {
try {
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
oidcXpackService.logout(idToken);
} catch (Exception e) {
LogUtil.error(e.getMessage(), e);
DEException.throwException("oidc_logout_error");
}
}
}
if (StringUtils.isEmpty(token) || StringUtils.equals("null", token) || StringUtils.equals("undefined", token)) {
return "success";
}
SecurityUtils.getSubject().logout();
String result = null;
Integer defaultLoginType = systemParameterService.defaultLoginType();
if (defaultLoginType == 3 && isOpenCas()) {
try {
HttpServletRequest request = ServletUtils.request();
HttpSession session = request.getSession();
session.invalidate();
CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class);
result = casXpackService.logout();
} catch (Exception e) {
LogUtil.error(e.getMessage(), e);
DEException.throwException("cas_logout_error");
}
}
try {
Long userId = JWTUtils.tokenInfoByToken(token).getUserId();
authUserService.clearCache(userId);
if (StringUtils.isBlank(result)) {
result = "success";
}
TokenCacheUtils.add(token, userId);
} catch (Exception e) {
LogUtil.error(e);
if (StringUtils.isBlank(result)) {
result = "fail";
}
}
return result;
}
@Override
public Boolean validateName(@RequestBody Map<String, String> nameDto) {
String userName = nameDto.get("userName");
if (StringUtils.isEmpty(userName))
return false;
SysUserEntity userEntity = authUserService.getUserByName(userName);
return !ObjectUtils.isEmpty(userEntity);
}
@Override
public boolean isOpenLdap() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportLdap();
}
@Override
public boolean isOpenOidc() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportOidc();
}
@Override
public boolean isOpenCas() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportCas();
}
@Override
public boolean isOpenWecom() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportWecom();
}
@Override
public boolean isOpenDingtalk() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportDingtalk();
}
@Override
public boolean isOpenLark() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportLark();
}
@Override
public boolean isOpenLarksuite() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.supportLarksuite();
}
@Override
public boolean isPluginLoaded() {
Boolean licValid = PluginUtils.licValid();
if (!licValid)
return false;
return authUserService.pluginLoaded();
}
@Override
public String getPublicKey() {
return RsaProperties.publicKey;
}
}

View File

@@ -1,20 +0,0 @@
package io.dataease.auth.server;
import io.dataease.auth.api.DynamicMenuApi;
import io.dataease.auth.api.dto.DynamicMenuDto;
import io.dataease.auth.service.DynamicMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DynamicMenuServer implements DynamicMenuApi {
@Autowired
private DynamicMenuService dynamicMenuService;
@Override
public List<DynamicMenuDto> menus() {
return dynamicMenuService.load(null);
}
}

View File

@@ -1,69 +0,0 @@
package io.dataease.auth.service;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.entity.AccountLockStatus;
import io.dataease.auth.entity.SysUserEntity;
import java.util.List;
public interface AuthUserService {
SysUserEntity getUserById(Long userId);
SysUserEntity getUserByName(String username);
SysUserEntity getLdapUserByName(String username);
SysUserEntity getCasUserByName(String username);
SysUserEntity getUserBySub(String sub, Integer from);
SysUserEntity getUserByWecomId(String weComId);
SysUserEntity getUserByDingtalkId(String dingtalkId);
SysUserEntity getUserByLarkId(String larkId);
SysUserEntity getUserByLarksuiteId(String larksuiteId);
List<String> roles(Long userId);
List<String> permissions(Long userId);
List<CurrentRoleDto> roleInfos(Long userId);
void clearCache(Long userId);
boolean supportLdap();
Boolean supportOidc();
Boolean supportCas();
Boolean supportWecom();
Boolean supportDingtalk();
Boolean supportLark();
Boolean supportLarksuite();
Boolean supportLoginLimit();
Boolean pluginLoaded();
void checkAdmin(String uname, String pwd);
AccountLockStatus recordLoginFail(String username, Integer logintype);
void unlockAccount(String username, Integer logintype);
AccountLockStatus lockStatus(String username, Integer logintype);
void clearAllLock();
Boolean checkScanCreateLimit();
}

View File

@@ -1,8 +0,0 @@
package io.dataease.auth.service;
import java.util.concurrent.TimeUnit;
public interface DeLimitService {
Boolean checkRestricted(String key, long max, long timeout, TimeUnit timeUnit);
}

View File

@@ -1,10 +0,0 @@
package io.dataease.auth.service;
import io.dataease.auth.api.dto.DynamicMenuDto;
import java.util.List;
public interface DynamicMenuService {
List<DynamicMenuDto> load(String userId);
}

View File

@@ -1,34 +0,0 @@
package io.dataease.auth.service;
import io.dataease.auth.entity.AuthItem;
import io.dataease.commons.model.AuthURD;
import java.util.List;
import java.util.Set;
public interface ExtAuthService {
Set<Long> userIdsByRD(AuthURD request);
AuthURD resourceTarget(String resourceId);
List<AuthItem> dataSourceIdByUser(Long userId);
List<AuthItem> dataSetIdByUser(Long userId);
List<AuthItem> panelIdByUser(Long userId);
List<AuthItem> dataSourceIdByRole(Long roleId);
List<AuthItem> dataSetIdByRole(Long roleId);
List<AuthItem> panelIdByRole(Long roleId);
List<AuthItem> dataSourceIdByDept(Long deptId);
List<AuthItem> dataSetIdByDept(Long deptId);
List<AuthItem> panelIdByDept(Long deptId);
void clearUserResource(Long userId);
void clearDeptResource(Long deptId);
void clearRoleResource(Long roleId);
List<String> parentResource(String resourceId, String type);
}

View File

@@ -1,41 +0,0 @@
package io.dataease.auth.service;
import java.util.List;
import org.apache.shiro.authc.AuthenticationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.commons.utils.BeanUtils;
@Service
public class ProxyAuthService {
@Autowired
@Lazy
private AuthUserService authUserService;
public CurrentUserDto queryCacheUserDto(Long userId) {
SysUserEntity user = authUserService.getUserById(userId);
if (user == null) {
throw new AuthenticationException("User didn't existed!");
}
if (user.getEnabled() == 0) {
throw new AuthenticationException("User is valid!");
}
// 使用缓存
List<CurrentRoleDto> currentRoleDtos = authUserService.roleInfos(user.getUserId());
// 使用缓存
List<String> permissions = authUserService.permissions(user.getUserId());
CurrentUserDto currentUserDto = BeanUtils.copyBean(new CurrentUserDto(), user);
currentUserDto.setRoles(currentRoleDtos);
currentUserDto.setPermissions(permissions);
return currentUserDto;
}
}

View File

@@ -1,35 +0,0 @@
package io.dataease.auth.service;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import java.util.Map;
public interface ShiroService {
/**
* 初始化权限 -> 拿全部权限
*
* @param :
* @return: java.util.Map<java.lang.String, java.lang.String>
*/
Map<String, String> loadFilterChainDefinitionMap();
/**
* 在对uri权限进行增删改操作时,需要调用此方法进行动态刷新加载数据库中的uri权限
*
* @param shiroFilterFactoryBean
* @param roleId
* @param isRemoveSession:
* @return: void
*/
void updatePermission(ShiroFilterFactoryBean shiroFilterFactoryBean, Integer roleId, Boolean isRemoveSession);
/**
* shiro动态权限加载 -> 原理:删除shiro缓存,重新执行doGetAuthorizationInfo方法授权角色和权限
*
* @param roleId
* @param isRemoveSession:
* @return: void
*/
void updatePermissionByRoleId(Integer roleId, Boolean isRemoveSession);
}

View File

@@ -1,379 +0,0 @@
package io.dataease.auth.service.impl;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.entity.AccountLockStatus;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.auth.service.AuthUserService;
import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.constants.ParamConstants;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.commons.utils.LogUtil;
import io.dataease.exception.DataEaseException;
import io.dataease.ext.AuthMapper;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysLoginLimit;
import io.dataease.plugins.common.base.domain.SysLoginLimitExample;
import io.dataease.plugins.common.base.domain.SysUser;
import io.dataease.plugins.common.base.mapper.SysLoginLimitMapper;
import io.dataease.plugins.common.base.mapper.SysUserMapper;
import io.dataease.plugins.common.service.PluginCommonService;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.util.PluginUtils;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService;
import io.dataease.plugins.xpack.lark.service.LarkXpackService;
import io.dataease.plugins.xpack.larksuite.service.LarksuiteXpackService;
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
import io.dataease.plugins.xpack.loginlimit.dto.response.LoginLimitInfo;
import io.dataease.plugins.xpack.loginlimit.service.LoginLimitXpackService;
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
import io.dataease.plugins.xpack.wecom.service.WecomXpackService;
import io.dataease.service.sys.SysUserService;
import io.dataease.service.system.EmailService;
import io.dataease.service.system.SystemParameterService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import static io.dataease.commons.constants.ParamConstants.BASIC.LOCKED_EMAIL;
@Service
public class AuthUserServiceImpl implements AuthUserService {
@Resource
private AuthMapper authMapper;
@Resource
private SysUserMapper sysUserMapper;
@Resource
private DynamicMenuServiceImpl dynamicMenuService;
@Resource
private SysLoginLimitMapper sysLoginLimitMapper;
@Resource
private SystemParameterService systemParameterService;
@Resource
private EmailService emailService;
@Lazy
@Resource
private SysUserService sysUserService;
/**
* 此处需被F2CRealm登录认证调用 也就是说每次请求都会被调用 所以最好加上缓存
*
* @param userId
* @return
*/
@Cacheable(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId")
@Override
public SysUserEntity getUserById(Long userId) {
return authMapper.findUser(userId);
}
public SysUserEntity getUserByIdNoCache(Long userId) {
return authMapper.findUser(userId);
}
@Override
public SysUserEntity getUserByName(String username) {
return authMapper.findUserByName(username);
}
@Override
public SysUserEntity getLdapUserByName(String username) {
return authMapper.findLdapUserByName(username);
}
@Override
public SysUserEntity getCasUserByName(String username) {
return authMapper.findCasUserByName(username);
}
@Override
public SysUserEntity getUserBySub(String sub, Integer from) {
return authMapper.findUserBySub(sub, from);
}
@Override
public SysUserEntity getUserByWecomId(String weComId) {
return authMapper.findWecomUser(weComId);
}
@Override
public SysUserEntity getUserByDingtalkId(String dingtalkId) {
return authMapper.findDingtalkUser(dingtalkId);
}
@Override
public SysUserEntity getUserByLarkId(String larkId) {
return authMapper.findLarkUser(larkId);
}
@Override
public SysUserEntity getUserByLarksuiteId(String larksuiteId) {
return authMapper.findLarksuiteUser(larksuiteId);
}
@Override
public List<String> roles(Long userId) {
return authMapper.roleCodes(userId);
}
/**
* 此处需被F2CRealm登录认证调用 也就是说每次请求都会被调用 所以最好加上缓存
*
* @param userId
* @return
*/
@Cacheable(value = AuthConstants.USER_PERMISSION_CACHE_NAME, key = "'user' + #userId")
@Override
public List<String> permissions(Long userId) {
try {
// 用户登录获取菜单权限时同时更新插件菜单表
dynamicMenuService.syncPluginMenu(PluginUtils.pluginMenus());
} catch (Exception e) {
LogUtil.error(e);
//ignore
}
List<String> permissions;
SysUser sysUser = sysUserMapper.selectByPrimaryKey(userId);
if (sysUser.getIsAdmin() != null && sysUser.getIsAdmin()) {
permissions = authMapper.permissionsAll();
} else {
permissions = authMapper.permissions(userId);
}
return Optional.ofNullable(permissions).orElse(new ArrayList<>()).stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList());
}
/**
* 此处需被F2CRealm登录认证调用 也就是说每次请求都会被调用 所以最好加上缓存
*
* @param userId
* @return
*/
@Cacheable(value = AuthConstants.USER_ROLE_CACHE_NAME, key = "'user' + #userId")
@Override
public List<CurrentRoleDto> roleInfos(Long userId) {
return authMapper.roles(userId);
}
/**
* 一波清除3个缓存
*
* @param userId
*/
@Caching(evict = {
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId"),
@CacheEvict(value = AuthConstants.USER_ROLE_CACHE_NAME, key = "'user' + #userId"),
@CacheEvict(value = AuthConstants.USER_PERMISSION_CACHE_NAME, key = "'user' + #userId")
})
@Override
public void clearCache(Long userId) {
LogUtil.info("正在清除用户缓存【{}】", userId);
}
@Override
public boolean supportLdap() {
Map<String, LdapXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LdapXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class);
if (ObjectUtils.isEmpty(ldapXpackService)) return false;
return ldapXpackService.isOpen();
}
@Override
public Boolean supportOidc() {
Map<String, OidcXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((OidcXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
if (ObjectUtils.isEmpty(oidcXpackService)) return false;
return oidcXpackService.isSupportOIDC();
}
@Override
public Boolean supportCas() {
Map<String, CasXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((CasXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class);
if (ObjectUtils.isEmpty(casXpackService)) return false;
return casXpackService.supportCas();
}
@Override
public Boolean supportWecom() {
Map<String, WecomXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((WecomXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
WecomXpackService wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class);
if (ObjectUtils.isEmpty(wecomXpackService)) return false;
return wecomXpackService.isOpen();
}
@Override
public Boolean supportDingtalk() {
Map<String, DingtalkXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((DingtalkXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
DingtalkXpackService dingtalkXpackService = SpringContextUtil.getBean(DingtalkXpackService.class);
if (ObjectUtils.isEmpty(dingtalkXpackService)) return false;
return dingtalkXpackService.isOpen();
}
@Override
public Boolean supportLark() {
Map<String, LarkXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LarkXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class);
if (ObjectUtils.isEmpty(larkXpackService)) return false;
return larkXpackService.isOpen();
}
@Override
public Boolean supportLarksuite() {
Map<String, LarksuiteXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LarksuiteXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
LarksuiteXpackService larkXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class);
if (ObjectUtils.isEmpty(larkXpackService)) return false;
return larkXpackService.isOpen();
}
@Override
public Boolean supportLoginLimit() {
Map<String, LoginLimitXpackService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((LoginLimitXpackService.class));
if (beansOfType.keySet().size() == 0) return false;
LoginLimitXpackService loginLimitXpackService = SpringContextUtil.getBean(LoginLimitXpackService.class);
if (ObjectUtils.isEmpty(loginLimitXpackService)) return false;
return loginLimitXpackService.isOpen();
}
@Override
public Boolean pluginLoaded() {
Map<String, PluginCommonService> beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType((PluginCommonService.class));
if (beansOfType.keySet().size() == 0) return false;
PluginCommonService pluginCommonService = SpringContextUtil.getBean(PluginCommonService.class);
if (ObjectUtils.isEmpty(pluginCommonService)) return false;
return pluginCommonService.isPluginLoaded();
}
@Override
public void checkAdmin(String uname, String pwd) {
SysUserEntity user = getUserByName(uname);
if (ObjectUtils.isEmpty(user)) {
DataEaseException.throwException(Translator.get("i18n_user_not_exist"));
}
if (!user.getIsAdmin()) {
DataEaseException.throwException(Translator.get("i18n_not_admin_error"));
}
String realPwd = user.getPassword();
pwd = CodingUtil.md5(pwd);
if (!StringUtils.equals(pwd, realPwd)) {
DataEaseException.throwException(Translator.get("i18n_id_or_pwd_error"));
}
}
@Override
public AccountLockStatus recordLoginFail(String username, Integer logintype) {
if (!supportLoginLimit()) return null;
long now = System.currentTimeMillis();
SysLoginLimit sysLoginLimit = new SysLoginLimit();
sysLoginLimit.setUsername(username);
sysLoginLimit.setLoginType(logintype);
sysLoginLimit.setRecordTime(now);
sysLoginLimitMapper.insert(sysLoginLimit);
AccountLockStatus accountLockStatus = lockStatus(username, logintype);
if (ObjectUtils.isNotEmpty(accountLockStatus) && accountLockStatus.getLocked()) {
sendLockedEmail(username);
}
return accountLockStatus;
}
public void sendLockedEmail(String username) {
String value = systemParameterService.getValue(LOCKED_EMAIL.getValue());
if (StringUtils.isNotBlank(value) && StringUtils.equals("true", value)) {
String email = sysUserService.adminEmail();
if (StringUtils.isBlank(email)) return;
String format = "账号【%s】登录失败次数过多,已被锁定!";
String content = String.format(format, username);
try {
emailService.send(email, "账号锁定通知", content);
} catch (Exception e) {
LogUtil.error(e.getMessage(), e);
systemParameterService.disabledLockedEmail();
}
}
}
@Override
public void unlockAccount(String username, Integer logintype) {
SysLoginLimitExample example = new SysLoginLimitExample();
example.createCriteria().andUsernameEqualTo(username).andLoginTypeEqualTo(logintype);
sysLoginLimitMapper.deleteByExample(example);
}
@Override
public AccountLockStatus lockStatus(String username, Integer logintype) {
AccountLockStatus accountLockStatus = new AccountLockStatus();
accountLockStatus.setUsername(username);
if (!supportLoginLimit()) return accountLockStatus;
LoginLimitXpackService loginLimitXpackService = SpringContextUtil.getBean(LoginLimitXpackService.class);
LoginLimitInfo info = loginLimitXpackService.info();
Integer limitTimes = info.getLimitTimes();
Integer relieveTimes = info.getRelieveTimes();
long now = System.currentTimeMillis();
long longRelieveTimes = Long.parseLong(relieveTimes.toString());
long dividingPointTime = now - (longRelieveTimes * 60L * 1000L);
SysLoginLimitExample example = new SysLoginLimitExample();
example.createCriteria().andUsernameEqualTo(username).andLoginTypeEqualTo(logintype).andRecordTimeGreaterThan(dividingPointTime);
List<SysLoginLimit> sysLoginLimits = sysLoginLimitMapper.selectByExample(example);
accountLockStatus.setRemainderTimes(limitTimes);
if (CollectionUtils.isNotEmpty(sysLoginLimits)) {
boolean needLock = sysLoginLimits.size() >= limitTimes;
accountLockStatus.setRemainderTimes(limitTimes - sysLoginLimits.size());
accountLockStatus.setLocked(needLock);
if (needLock) {
long unlockTime = now + (longRelieveTimes * 60L * 1000L);
accountLockStatus.setUnlockTime(unlockTime);
accountLockStatus.setRelieveTimes(relieveTimes);
accountLockStatus.setRemainderTimes(0);
}
}
example.clear();
example.createCriteria().andUsernameEqualTo(username).andLoginTypeEqualTo(logintype).andRecordTimeLessThanOrEqualTo(dividingPointTime);
sysLoginLimitMapper.deleteByExample(example);
return accountLockStatus;
}
@Override
public void clearAllLock() {
SysLoginLimitExample example = new SysLoginLimitExample();
sysLoginLimitMapper.deleteByExample(example);
}
@Override
public Boolean checkScanCreateLimit() {
String value = systemParameterService.getValue(ParamConstants.BASIC.SCAN_CREATE_USER.getValue());
return StringUtils.isNotBlank(value) && StringUtils.equals("true", value);
}
}

View File

@@ -1,129 +0,0 @@
package io.dataease.auth.service.impl;
import io.dataease.auth.api.dto.DynamicMenuDto;
import io.dataease.auth.api.dto.MenuMeta;
import io.dataease.auth.service.DynamicMenuService;
import io.dataease.plugins.common.base.domain.SysMenu;
import io.dataease.plugins.common.base.mapper.SysMenuMapper;
import io.dataease.ext.ExtPluginSysMenuMapper;
import io.dataease.ext.ExtSysMenuMapper;
import io.dataease.plugins.common.dto.PluginSysMenu;
import io.dataease.plugins.util.PluginUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class DynamicMenuServiceImpl implements DynamicMenuService {
@Autowired(required = false)
private SysMenuMapper sysMenuMapper;
@Resource
private ExtPluginSysMenuMapper extPluginSysMenuMapper;
@Resource
private ExtSysMenuMapper extSysMenuMapper;
@Override
public List<DynamicMenuDto> load(String userId) {
List<SysMenu> sysMenus = extSysMenuMapper.querySysMenu();
List<DynamicMenuDto> dynamicMenuDtos = sysMenus.stream().map(this::convert).collect(Collectors.toList());
//增加插件中的菜单
List<PluginSysMenu> pluginSysMenus = PluginUtils.pluginMenus();
if (CollectionUtils.isNotEmpty(pluginSysMenus)) {
pluginSysMenus = pluginSysMenus.stream().filter(menu -> menu.getType() <= 1).collect(Collectors.toList());
List<DynamicMenuDto> pluginDtos = pluginSysMenus.stream().map(this::convert).collect(Collectors.toList());
dynamicMenuDtos.addAll(pluginDtos);
}
dynamicMenuDtos = dynamicMenuDtos.stream().sorted((s1, s2) -> {
int sortIndex1 = null == s1.getMenuSort() ? 999 : s1.getMenuSort();
int sortIndex2 = null == s2.getMenuSort() ? 999 : s2.getMenuSort();
return sortIndex1 - sortIndex2;
}).collect(Collectors.toList());
dynamicMenuDtos.sort((s1, s2) -> s1.getHidden().compareTo(s2.getHidden()));
return buildTree(dynamicMenuDtos);
}
private DynamicMenuDto convert(SysMenu sysMenu) {
DynamicMenuDto dynamicMenuDto = new DynamicMenuDto();
dynamicMenuDto.setId(sysMenu.getMenuId());
dynamicMenuDto.setPid(sysMenu.getPid());
dynamicMenuDto.setName(sysMenu.getName());
dynamicMenuDto.setPath(sysMenu.getPath());
dynamicMenuDto.setRedirect(null);
dynamicMenuDto.setType(sysMenu.getType());
dynamicMenuDto.setComponent(sysMenu.getComponent());
MenuMeta menuMeta = new MenuMeta();
menuMeta.setTitle(sysMenu.getTitle());
menuMeta.setIcon(sysMenu.getIcon());
dynamicMenuDto.setMeta(menuMeta);
dynamicMenuDto.setPermission(sysMenu.getPermission());
dynamicMenuDto.setMenuSort(sysMenu.getMenuSort());
dynamicMenuDto.setHidden(sysMenu.getHidden());
dynamicMenuDto.setIsPlugin(false);
return dynamicMenuDto;
}
private DynamicMenuDto convert(PluginSysMenu sysMenu) {
DynamicMenuDto dynamicMenuDto = new DynamicMenuDto();
dynamicMenuDto.setId(sysMenu.getMenuId());
dynamicMenuDto.setPid(sysMenu.getPid());
dynamicMenuDto.setName(sysMenu.getName());
dynamicMenuDto.setPath(sysMenu.getPath());
dynamicMenuDto.setRedirect(null);
dynamicMenuDto.setType(sysMenu.getType());
dynamicMenuDto.setComponent(sysMenu.getComponent());
MenuMeta menuMeta = new MenuMeta();
menuMeta.setTitle(sysMenu.getTitle());
menuMeta.setIcon(sysMenu.getIcon());
dynamicMenuDto.setMeta(menuMeta);
dynamicMenuDto.setPermission(sysMenu.getPermission());
dynamicMenuDto.setMenuSort(sysMenu.getMenuSort());
dynamicMenuDto.setHidden(sysMenu.getHidden());
dynamicMenuDto.setIsPlugin(true);
dynamicMenuDto.setNoLayout(!!sysMenu.isNoLayout());
return dynamicMenuDto;
}
private List<DynamicMenuDto> buildTree(List<DynamicMenuDto> lists) {
List<DynamicMenuDto> rootNodes = new ArrayList<>();
lists.forEach(node -> {
if (isParent(node.getPid())) {
rootNodes.add(node);
}
lists.forEach(tNode -> {
if (tNode.getPid().equals(node.getId())) {
if (node.getChildren() == null) {
node.setChildren(new ArrayList<DynamicMenuDto>());
node.setRedirect(node.getPath() + "/" + tNode.getPath());//第一个子节点的path
}
node.getChildren().add(tNode);
}
});
});
return rootNodes;
}
private Boolean isParent(Long pid) {
return null == pid || pid == 0L;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void syncPluginMenu(List<PluginSysMenu> pluginSysMenuList) {
extPluginSysMenuMapper.deletePluginMenu();
if (CollectionUtils.isNotEmpty(pluginSysMenuList)) {
extPluginSysMenuMapper.savePluginMenu(pluginSysMenuList);
}
}
}

View File

@@ -1,204 +0,0 @@
package io.dataease.auth.service.impl;
import io.dataease.auth.entity.AuthItem;
import io.dataease.auth.service.ExtAuthService;
import io.dataease.commons.constants.SysAuthConstants;
import io.dataease.plugins.common.base.domain.SysAuth;
import io.dataease.ext.ExtAuthMapper;
import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.model.AuthURD;
import io.dataease.commons.utils.LogUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class ExtAuthServiceImpl implements ExtAuthService {
private static final List<AuthItem> emptyResult = new ArrayList();
@Resource
private ExtAuthMapper extAuthMapper;
@Override
public Set<Long> userIdsByRD(AuthURD request) {
Set<Long> result = new HashSet<>();
List<Long> roleIds = request.getRoleIds();
List<Long> deptIds = request.getDeptIds();
if (!CollectionUtils.isEmpty(roleIds)) {
result.addAll(extAuthMapper.queryUserIdWithRoleIds(roleIds));
}
if (!CollectionUtils.isEmpty(deptIds)) {
result.addAll(extAuthMapper.queryUserIdWithDeptIds(deptIds));
}
return result;
}
@Override
public AuthURD resourceTarget(String resourceId) {
AuthURD authURD = new AuthURD();
List<SysAuth> sysAuths = extAuthMapper.queryByResource(resourceId);
Map<String, List<SysAuth>> authMap = sysAuths.stream().collect(Collectors.groupingBy(SysAuth::getAuthTargetType));
if (!CollectionUtils.isEmpty(authMap.get("user"))) {
authURD.setUserIds(authMap.get("user").stream().map(item -> Long.parseLong(item.getAuthTarget())).collect(Collectors.toList()));
}
if (!CollectionUtils.isEmpty(authMap.get("role"))) {
authURD.setRoleIds(authMap.get("role").stream().map(item -> Long.parseLong(item.getAuthTarget())).collect(Collectors.toList()));
}
if (!CollectionUtils.isEmpty(authMap.get("dept"))) {
authURD.setDeptIds(authMap.get("dept").stream().map(item -> Long.parseLong(item.getAuthTarget())).collect(Collectors.toList()));
}
return authURD;
}
@Cacheable(value = AuthConstants.USER_LINK_NAME, key = "'user' + #userId")
@Override
public List<AuthItem> dataSourceIdByUser(Long userId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_USER,
userId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE
);
}
@Cacheable(value = AuthConstants.USER_DATASET_NAME, key = "'user' + #userId")
@Override
public List<AuthItem> dataSetIdByUser(Long userId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_USER,
userId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASET
);
}
@Cacheable(value = AuthConstants.USER_PANEL_NAME, key = "'user' + #userId")
@Override
public List<AuthItem> panelIdByUser(Long userId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_USER,
userId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_PANEL
);
}
@Cacheable(value = AuthConstants.ROLE_LINK_NAME, key = "'role' + #roleId")
@Override
public List<AuthItem> dataSourceIdByRole(Long roleId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_ROLE,
roleId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE
);
}
@Cacheable(value = AuthConstants.ROLE_DATASET_NAME, key = "'role' + #roleId")
@Override
public List<AuthItem> dataSetIdByRole(Long roleId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_ROLE,
roleId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASET
);
}
@Cacheable(value = AuthConstants.ROLE_PANEL_NAME, key = "'role' + #roleId")
@Override
public List<AuthItem> panelIdByRole(Long roleId) {
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_ROLE,
roleId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_PANEL
);
}
@Cacheable(value = AuthConstants.DEPT_LINK_NAME, key = "'dept' + #deptId")
@Override
public List<AuthItem> dataSourceIdByDept(Long deptId) {
if (ObjectUtils.isEmpty(deptId)) return emptyResult;
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_DEPT,
deptId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE
);
}
@Cacheable(value = AuthConstants.DEPT_DATASET_NAME, key = "'dept' + #deptId")
@Override
public List<AuthItem> dataSetIdByDept(Long deptId) {
if (ObjectUtils.isEmpty(deptId)) return emptyResult;
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_DEPT,
deptId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_DATASET
);
}
@Cacheable(value = AuthConstants.DEPT_PANEL_NAME, key = "'dept' + #deptId")
@Override
public List<AuthItem> panelIdByDept(Long deptId) {
if (ObjectUtils.isEmpty(deptId)) return emptyResult;
return extAuthMapper.queryAuthItems(
SysAuthConstants.AUTH_TARGET_TYPE_DEPT,
deptId.toString(),
SysAuthConstants.AUTH_SOURCE_TYPE_PANEL
);
}
@Caching(evict = {
@CacheEvict(value = AuthConstants.USER_LINK_NAME, key = "'user' + #userId"),
@CacheEvict(value = AuthConstants.USER_DATASET_NAME, key = "'user' + #userId"),
@CacheEvict(value = AuthConstants.USER_PANEL_NAME, key = "'user' + #userId")
})
public void clearUserResource(Long userId) {
LogUtil.info("all permission resource of user {} is cleaning...", userId);
}
@Caching(evict = {
@CacheEvict(value = AuthConstants.DEPT_LINK_NAME, key = "'dept' + #deptId"),
@CacheEvict(value = AuthConstants.DEPT_DATASET_NAME, key = "'dept' + #deptId"),
@CacheEvict(value = AuthConstants.DEPT_PANEL_NAME, key = "'dept' + #deptId")
})
public void clearDeptResource(Long deptId) {
LogUtil.info("all permission resource of dept {} is cleaning...", deptId);
}
@Caching(evict = {
@CacheEvict(value = AuthConstants.ROLE_LINK_NAME, key = "'role' + #roleId"),
@CacheEvict(value = AuthConstants.ROLE_DATASET_NAME, key = "'role' + #roleId"),
@CacheEvict(value = AuthConstants.ROLE_PANEL_NAME, key = "'role' + #roleId")
})
public void clearRoleResource(Long roleId) {
LogUtil.info("all permission resource of role {} is cleaning...", roleId);
}
@Override
public List<String> parentResource(String resourceId, String type) {
String s = extAuthMapper.parentResource(resourceId, type);
if (StringUtils.isNotBlank(s)) {
String[] split = s.split(",");
List<String> results = new ArrayList<>();
for (int i = 0; i < split.length; i++) {
String s1 = split[i];
if (StringUtils.isNotBlank(s1)) {
results.add(s1);
}
}
return CollectionUtils.isEmpty(results) ? null : results;
}
return null;
}
}

View File

@@ -1,51 +0,0 @@
package io.dataease.auth.service.impl;
import io.dataease.auth.service.DeLimitService;
import io.dataease.commons.condition.RedisStatusCondition;
import io.dataease.commons.utils.LogUtil;
import org.slf4j.Logger;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.Instant;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
@Conditional({RedisStatusCondition.class})
@Component
@Primary
public class RedisLimitServiceImpl implements DeLimitService {
Logger log = LogUtil.getLogger();
private final static String REDIS_LIMIT_KEY_PREFIX = "limit:";
@Resource
private RedisScript<Long> limitRedisScript;
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public Boolean checkRestricted(String key, long max, long timeout, TimeUnit timeUnit) {
key = REDIS_LIMIT_KEY_PREFIX + key;
long ttl = timeUnit.toMillis(timeout);
long now = Instant.now().toEpochMilli();
long expired = now - ttl;
Long executeTimes = stringRedisTemplate.execute(limitRedisScript, Collections.singletonList(key), now + "", ttl + "", expired + "", max + "");
if (executeTimes != null) {
if (executeTimes == 0) {
log.error("【{}】在单位时间 {} 毫秒内已达到访问上限,当前接口上限 {}", key, ttl, max);
return true;
} else {
log.info("【{}】在单位时间 {} 毫秒内访问 {} 次", key, ttl, executeTimes);
return false;
}
}
return false;
}
}

View File

@@ -1,154 +0,0 @@
package io.dataease.auth.service.impl;
import io.dataease.auth.service.ShiroService;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.springframework.stereotype.Service;
import java.util.LinkedHashMap;
import java.util.Map;
@Service
public class ShiroServiceImpl implements ShiroService {
private final static String ANON = "anon";
private final static String DOC = "doc";
@Override
public Map<String, String> loadFilterChainDefinitionMap() {
// 权限控制map
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
// 配置过滤:不会被拦截的链接 -> 放行 start
// ----------------------------------------------------------
// 放行Swagger2页面,需要放行这些
filterChainDefinitionMap.put("/doc.html**", DOC);
filterChainDefinitionMap.put("/deApi**", DOC);
filterChainDefinitionMap.put("/swagger-ui.html", ANON);
filterChainDefinitionMap.put("/swagger-ui/**", ANON);
filterChainDefinitionMap.put("/swagger/**", ANON);
filterChainDefinitionMap.put("/webjars/**", ANON);
filterChainDefinitionMap.put("/swagger-resources/**", DOC);
filterChainDefinitionMap.put("/v2/**", DOC);
filterChainDefinitionMap.put("/v3/**", DOC);
filterChainDefinitionMap.put("/**.gif", ANON);
filterChainDefinitionMap.put("/**.png", ANON);
filterChainDefinitionMap.put("/static/**", ANON);
filterChainDefinitionMap.put("/css/**", ANON);
filterChainDefinitionMap.put("/js/**", ANON);
filterChainDefinitionMap.put("/img/**", ANON);
filterChainDefinitionMap.put("/fonts/**", ANON);
filterChainDefinitionMap.put("/favicon.ico", ANON);
filterChainDefinitionMap.put("/", ANON);
filterChainDefinitionMap.put("/login", ANON);
filterChainDefinitionMap.put("/link/**", ANON);
filterChainDefinitionMap.put("/index.html", ANON);
filterChainDefinitionMap.put("/link.html", ANON);
filterChainDefinitionMap.put("/board/**", ANON);
filterChainDefinitionMap.put("/websocket/**", ANON);
filterChainDefinitionMap.put("/system/defaultLoginType", ANON);
// 获取主题信息
filterChainDefinitionMap.put("/plugin/theme/themes", ANON);
filterChainDefinitionMap.put("/plugin/theme/items/**", ANON);
filterChainDefinitionMap.put("/plugin/view/types", ANON);
filterChainDefinitionMap.put("/static-resource/**", ANON);
// 验证链接
filterChainDefinitionMap.put("/api/link/validate**", ANON);
filterChainDefinitionMap.put("/api/map/areaEntitys/**", ANON);
filterChainDefinitionMap.put("/api/map/globalEntitys/**", ANON);
filterChainDefinitionMap.put("/linkJump/queryPanelJumpInfo/**", ANON);
filterChainDefinitionMap.put("/linkJump/queryTargetPanelJumpInfo", ANON);
//外部跳转参数
filterChainDefinitionMap.put("/outerParams/**", ANON);
filterChainDefinitionMap.put("/tempMobileLink/**", ANON);
filterChainDefinitionMap.put("/de-app/**", ANON);
filterChainDefinitionMap.put("/app.html", ANON);
filterChainDefinitionMap.put("/**/*.json", ANON);
filterChainDefinitionMap.put("/system/ui/**", ANON);
filterChainDefinitionMap.put("/system/filedown/**", ANON);
filterChainDefinitionMap.put("/system/showpicture/**", ANON);
filterChainDefinitionMap.put("/**/*.js", ANON);
filterChainDefinitionMap.put("/**/*.css", ANON);
filterChainDefinitionMap.put("/**/*.map", ANON);
filterChainDefinitionMap.put("/**/*.svg", ANON);
filterChainDefinitionMap.put("/api/auth/login", ANON);
filterChainDefinitionMap.put("/api/auth/seizeLogin", ANON);
filterChainDefinitionMap.put("/api/auth/logout", ANON);
filterChainDefinitionMap.put("/api/auth/mobileLogin", ANON);
filterChainDefinitionMap.put("/api/auth/isPluginLoaded", ANON);
filterChainDefinitionMap.put("/system/requestTimeOut", ANON);
filterChainDefinitionMap.put("/api/auth/validateName", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenLdap", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenOidc", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenWecom", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenDingtalk", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenLark", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenCas", ANON);
filterChainDefinitionMap.put("/api/auth/isOpenLarksuite", ANON);
filterChainDefinitionMap.put("/api/auth/getPublicKey", ANON);
filterChainDefinitionMap.put("/api/pluginCommon/component/*", ANON);
filterChainDefinitionMap.put("/api/pluginCommon/staticInfo/**", ANON);
filterChainDefinitionMap.put("/plugin/oidc/authInfo", ANON);
filterChainDefinitionMap.put("/sso/callBack*", ANON);
filterChainDefinitionMap.put("/cas/callBack*", ANON);
filterChainDefinitionMap.put("/plugin/wecom/callBack*", ANON);
filterChainDefinitionMap.put("/plugin/wecom/bind*", ANON);
filterChainDefinitionMap.put("/plugin/wecom/getQrParam", ANON);
filterChainDefinitionMap.put("/plugin/dingtalk/callBack*", ANON);
filterChainDefinitionMap.put("/plugin/dingtalk/bind*", ANON);
filterChainDefinitionMap.put("/plugin/dingtalk/getQrParam", ANON);
filterChainDefinitionMap.put("/plugin/lark/callBack*", ANON);
filterChainDefinitionMap.put("/plugin/lark/bind*", ANON);
filterChainDefinitionMap.put("/plugin/lark/getQrParam", ANON);
filterChainDefinitionMap.put("/plugin/lark/appId", ANON);
filterChainDefinitionMap.put("/plugin/larksuite/callBack*", ANON);
filterChainDefinitionMap.put("/plugin/larksuite/bind*", ANON);
filterChainDefinitionMap.put("/plugin/larksuite/getQrParam", ANON);
filterChainDefinitionMap.put("/cas/reset/**", ANON);
filterChainDefinitionMap.put("/cas/loginPage", ANON);
filterChainDefinitionMap.put("/pdf-template/queryAll", ANON);
filterChainDefinitionMap.put("/unauth", ANON);
filterChainDefinitionMap.put("/display/**", ANON);
filterChainDefinitionMap.put("/tokenExpired", ANON);
filterChainDefinitionMap.put("/downline", ANON);
filterChainDefinitionMap.put("/common-files/**", ANON);
filterChainDefinitionMap.put("/linkage/getPanelAllLinkageInfo/**", ANON);
filterChainDefinitionMap.put("/api/link/resourceDetail/**", "link");
filterChainDefinitionMap.put("/api/link/viewDetail/**", "link");
filterChainDefinitionMap.put("/api/link/viewLog", "link");
filterChainDefinitionMap.put("/panel/group/exportDetails", ANON);
filterChainDefinitionMap.put("/dataset/field/linkMultFieldValues", "link");
filterChainDefinitionMap.put("/dataset/field/linkMappingFieldValues", "link");
filterChainDefinitionMap.put("/systemInfo/proxyUserLoginInfo", ANON);
filterChainDefinitionMap.put("/system/onlineMapKey", ANON);
filterChainDefinitionMap.put("/**", "authc");
filterChainDefinitionMap.put("/**", "jwt");
return filterChainDefinitionMap;
}
@Override
public void updatePermission(ShiroFilterFactoryBean shiroFilterFactoryBean, Integer roleId,
Boolean isRemoveSession) {
}
@Override
public void updatePermissionByRoleId(Integer roleId, Boolean isRemoveSession) {
}
}

View File

@@ -1,26 +0,0 @@
package io.dataease.auth.service.impl;
import com.google.common.util.concurrent.RateLimiter;
import io.dataease.auth.service.DeLimitService;
import org.springframework.stereotype.Service;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
@Service
public class StandaloneLimitServiceImpl implements DeLimitService {
private static ConcurrentHashMap<String, RateLimiter> RATE_LIMITER = new ConcurrentHashMap<>();
@Override
public Boolean checkRestricted(String key, long max, long timeout, TimeUnit timeUnit) {
RateLimiter rateLimiter = null;
if (!RATE_LIMITER.containsKey(key)) {
RATE_LIMITER.put(key, RateLimiter.create(max));
}
rateLimiter = RATE_LIMITER.get(key);
return !rateLimiter.tryAcquire(timeout, timeUnit);
}
}

View File

@@ -1,190 +0,0 @@
package io.dataease.auth.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.JWTCreator.Builder;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.Verification;
import com.google.gson.Gson;
import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.entity.TokenInfo.TokenInfoBuilder;
import io.dataease.commons.model.OnlineUserModel;
import io.dataease.commons.utils.*;
import io.dataease.exception.DataEaseException;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.env.Environment;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
public class JWTUtils {
private static Long expireTime;
/**
* 校验token是否正确
*
* @param token 密钥
* @param secret 用户的密码
* @return 是否正确
*/
public static boolean verify(String token, TokenInfo tokenInfo, String secret) {
Algorithm algorithm = Algorithm.HMAC256(secret);
Verification verification = JWT.require(algorithm)
.withClaim("username", tokenInfo.getUsername())
.withClaim("userId", tokenInfo.getUserId());
JWTVerifier verifier = verification.build();
verifySign(algorithm, token);
verifier.verify(token);
return true;
}
public static void verifySign(Algorithm algorithm, String token) {
DecodedJWT decode = JWT.decode(token);
algorithm.verify(decode);
}
/**
* 获得token中的信息无需secret解密也能获得
*
* @return token中包含的用户名
*/
public static TokenInfo tokenInfoByToken(String token) {
DecodedJWT jwt = JWT.decode(token);
String username = jwt.getClaim("username").asString();
Long userId = jwt.getClaim("userId").asLong();
if (StringUtils.isEmpty(username) || ObjectUtils.isEmpty(userId)) {
DataEaseException.throwException("token格式错误!");
}
TokenInfoBuilder tokenInfoBuilder = TokenInfo.builder().username(username).userId(userId);
return tokenInfoBuilder.build();
}
/**
* @param tokenInfo 用户信息
* @param secret 用户的密码
* @return 加密的token
*/
public static String sign(TokenInfo tokenInfo, String secret) {
return sign(tokenInfo, secret, true);
}
private static boolean tokenValid(OnlineUserModel model) {
String token = model.getToken();
// 如果已经加入黑名单 则直接返回无效
boolean invalid = TokenCacheUtils.invalid(token);
if (invalid) return false;
Long loginTime = model.getLoginTime();
if (ObjectUtils.isEmpty(expireTime)) {
expireTime = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.login_timeout", Long.class, 480L);
}
long expireTimeMillis = expireTime * 60000L;
// 如果当前时间减去登录时间小于超时时间则说明token未过期 返回有效状态
return System.currentTimeMillis() - loginTime < expireTimeMillis;
}
private static String models2Json(OnlineUserModel model, boolean withCurToken, String token) {
Set<OnlineUserModel> models = new LinkedHashSet<>();
models.add(model);
Gson gson = new Gson();
List<OnlineUserModel> userModels = models.stream().map(item -> {
item.setToken(null);
return item;
}).collect(Collectors.toList());
if (withCurToken) {
userModels.get(0).setToken(token);
}
String json = gson.toJson(userModels);
try {
return URLEncoder.encode(json, "utf-8");
} catch (Exception e) {
return null;
}
}
public static String seizeSign(Long userId, String token) {
Optional.ofNullable(TokenCacheUtils.onlineUserToken(userId)).ifPresent(model -> TokenCacheUtils.add(model.getToken(), userId));
TokenCacheUtils.add2OnlinePools(token, userId);
return IPUtils.get();
}
public static String sign(TokenInfo tokenInfo, String secret, boolean writeOnline) {
Long userId = tokenInfo.getUserId();
String multiLoginType = null;
if (writeOnline && StringUtils.equals("1", (multiLoginType = TokenCacheUtils.multiLoginType()))) {
OnlineUserModel userModel = TokenCacheUtils.onlineUserToken(userId);
if (ObjectUtils.isNotEmpty(userModel) && tokenValid(userModel)) {
HttpServletResponse response = ServletUtils.response();
Cookie cookie_token = new Cookie("MultiLoginError1", models2Json(userModel, false, null));
cookie_token.setPath("/");
cookie_token.setPath("/");
response.addCookie(cookie_token);
DataEaseException.throwException("MultiLoginError1");
}
}
if (ObjectUtils.isEmpty(expireTime)) {
expireTime = CommonBeanFactory.getBean(Environment.class).getProperty("dataease.login_timeout", Long.class, 480L);
}
long expireTimeMillis = expireTime * 60000L;
Date date = new Date(System.currentTimeMillis() + expireTimeMillis);
Algorithm algorithm = Algorithm.HMAC256(secret);
Builder builder = JWT.create()
.withClaim("username", tokenInfo.getUsername())
.withClaim("userId", userId);
String sign = builder.withExpiresAt(date).sign(algorithm);
if (StringUtils.equals("2", multiLoginType)) {
OnlineUserModel userModel = TokenCacheUtils.onlineUserToken(userId);
if (ObjectUtils.isNotEmpty(userModel) && tokenValid(userModel)) {
HttpServletResponse response = ServletUtils.response();
Cookie cookie_token = new Cookie("MultiLoginError2", models2Json(userModel, true, sign));
cookie_token.setPath("/");
response.addCookie(cookie_token);
DataEaseException.throwException("MultiLoginError");
}
}
if (writeOnline && !StringUtils.equals("0", multiLoginType)) {
TokenCacheUtils.add2OnlinePools(sign, userId);
}
return sign;
}
public static String signLink(String resourceId, Long userId, String secret) {
Algorithm algorithm = Algorithm.HMAC256(secret);
if (userId == null) {
return JWT.create().withClaim("resourceId", resourceId).sign(algorithm);
} else {
return JWT.create().withClaim("resourceId", resourceId).withClaim("userId", userId).sign(algorithm);
}
}
public static boolean verifyLink(String token, String resourceId, Long userId, String secret) {
Algorithm algorithm = Algorithm.HMAC256(secret);
JWTVerifier verifier;
if (userId == null) {
verifier = JWT.require(algorithm).withClaim("resourceId", resourceId).build();
} else {
verifier = JWT.require(algorithm).withClaim("resourceId", resourceId).withClaim("userId", userId).build();
}
try {
verifier.verify(token);
return true;
} catch (Exception e) {
return false;
}
}
}

View File

@@ -1,22 +0,0 @@
package io.dataease.auth.util;
import io.dataease.plugins.common.base.domain.PanelLink;
import io.dataease.service.panel.PanelLinkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class LinkUtil {
private static PanelLinkService panelLinkService;
@Autowired
public void setPanelLinkService(PanelLinkService panelLinkService) {
LinkUtil.panelLinkService = panelLinkService;
}
public static PanelLink queryLink(String resourceId, Long user) {
return panelLinkService.findOne(resourceId, user);
}
}

View File

@@ -1,59 +0,0 @@
package io.dataease.auth.util;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
public class ReflectUtil {
public static Object getFieldValue(Object o, String fieldName) throws Exception {
Class<?> aClass = o.getClass();
while (null != aClass.getSuperclass()) {
Field[] declaredFields = aClass.getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
Field field = declaredFields[i];
String name = field.getName();
if (StringUtils.equals(name, fieldName)) {
field.setAccessible(true);
return field.get(o);
}
}
aClass = aClass.getSuperclass();
}
throw new NoSuchFieldException(fieldName);
}
private final static String[] wrapClasies = {
"java.lang.Boolean",
"java.lang.Character",
"java.lang.Integer",
"java.lang.Byte",
"java.lang.Short",
"java.lang.Long",
"java.lang.Float",
"java.lang.Double",
};
public static Boolean isString(Class clz) {
return StringUtils.equals("java.lang.String", clz.getName());
}
public static Boolean isArray(Class clz) {
return clz.isArray();
}
public static Boolean isCollection(Class clz) {
return Collection.class.isAssignableFrom(clz);
}
public static Boolean isMap(Class clz) {
return Map.class.isAssignableFrom(clz);
}
public static Boolean isWrapClass(Class clz) {
return Arrays.stream(wrapClasies).anyMatch(item -> StringUtils.equals(item, clz.getName()));
}
}

View File

@@ -1,62 +0,0 @@
package io.dataease.auth.util;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.ArrayUtils;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
public class RsaUtil {
/**
* 私钥解密
*
* @param privateKeyText 私钥
* @param text 待解密的文本
* @return /
* @throws Exception /
*/
public static String decryptByPrivateKey(String privateKeyText, String text) throws Exception {
PKCS8EncodedKeySpec pkcs8EncodedKeySpec5 = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyText));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec5);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
// 下面该用分段加密
byte[] result = null;
byte[] b = Base64.decodeBase64(text);
for (int i = 0; i < b.length; i += 64) {
byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(b, i, i + 64));
result = ArrayUtils.addAll(result, doFinal);
}
return new String(result);
}
/**
* 公钥加密
*
* @param publicKeyText 公钥
* @param text 待加密的文本
* @return /
*/
public static String encryptByPublicKey(String publicKeyText, String text) throws Exception {
X509EncodedKeySpec x509EncodedKeySpec2 = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyText));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec2);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
// 下面该用分段加密
byte[] result = null;
byte[] b = text.getBytes("utf-8");
for (int i = 0; i < b.length; i += 50) {
byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(b, i, i + 50));
result = ArrayUtils.addAll(result, doFinal);
}
return Base64.encodeBase64String(result);
}
}

View File

@@ -1,26 +0,0 @@
package io.dataease.commons.condition;
import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
import io.dataease.commons.utils.CommonBeanFactory;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class LicStatusCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
DefaultLicenseService defaultLicenseService = CommonBeanFactory.getBean(DefaultLicenseService.class);
if (ObjectUtils.isNotEmpty(defaultLicenseService)) {
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
return F2CLicenseResponse.Status.valid == f2CLicenseResponse.getStatus();
}
return false;
}
}

View File

@@ -1,23 +0,0 @@
package io.dataease.commons.condition;
import io.dataease.commons.utils.CommonBeanFactory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class RedisStatusCondition implements Condition {
private static final String DEFAULT_TYPE = "ehcache";
private static final String TARGET_TYPE = "redis";
private static final String TYPE_KEY = "spring.cache.type";
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
Environment environment = context.getEnvironment();
String ehcacheType = environment.getProperty(TYPE_KEY, String.class, DEFAULT_TYPE);
return StringUtils.equals(TARGET_TYPE, ehcacheType);
}
}

View File

@@ -1,28 +0,0 @@
package io.dataease.commons.constants;
public class AuthConstants {
public final static String TOKEN_KEY = "Authorization";
public final static String USER_CACHE_NAME = "users_info";
public final static String USER_ROLE_CACHE_NAME = "users_roles_info";
public final static String USER_PERMISSION_CACHE_NAME = "users_permissions_info";
public final static String ID_TOKEN_KEY = "IdToken";
public final static String USER_LINK_NAME = "user_link";
public final static String USER_DATASET_NAME = "user_dataset";
public final static String USER_PANEL_NAME = "user_panel";
public final static String ROLE_LINK_NAME = "role_link";
public final static String ROLE_DATASET_NAME = "role_dataset";
public final static String ROLE_PANEL_NAME = "role_panel";
public final static String DEPT_LINK_NAME = "dept_link";
public final static String DEPT_DATASET_NAME = "dept_dataset";
public final static String DEPT_PANEL_NAME = "dept_panel";
public static final String DE_DOWN_ERROR_KEY = "de-down-error-msg";
}

View File

@@ -1,6 +0,0 @@
package io.dataease.commons.constants;
public class DatasetMode {
public static final String EXTRACT = "1";
public static final String DIRECT = "0";
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum DePermissionType {
DATASOURCE, DATASET, PANEL
}

View File

@@ -1,18 +0,0 @@
package io.dataease.commons.constants;
public enum FileType {
JMX(".jmx"), CSV(".csv"), JSON(".json"), PDF(".pdf"),
JPG(".jpg"), PNG(".png"), JPEG(".jpeg"), DOC(".doc"),
XLSX(".xlsx"), DOCX(".docx"), JAR(".jar");
// 保存后缀
private String suffix;
FileType(String suffix) {
this.suffix = suffix;
}
public String suffix() {
return this.suffix;
}
}

View File

@@ -1,6 +0,0 @@
package io.dataease.commons.constants;
public class I18nConstants {
public static final String LANG_COOKIE_NAME = "DE_USER_LANG";
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum IssuesManagePlatform {
Tapd, Jira, Local, Zentao
}

View File

@@ -1,8 +0,0 @@
package io.dataease.commons.constants;
public class JdbcConstants {
public final static String VIEW_CACHE_KEY = "view_cache";
public final static String PANEL_CACHE_KEY="panel_cache-";
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum JobStatus {
Prepare, Underway, Completed, Error
}

View File

@@ -1,37 +0,0 @@
package io.dataease.commons.constants;
public interface NoticeConstants {
interface TaskType {
String JENKINS_TASK = "JENKINS_TASK";
String TEST_PLAN_TASK = "TEST_PLAN_TASK";
String REVIEW_TASK = "REVIEW_TASK";
String DEFECT_TASK = "DEFECT_TASK";
}
interface Mode {
String API = "API";
String SCHEDULE = "SCHEDULE";
}
interface Type {
String EMAIL = "EMAIL";
String NAIL_ROBOT = "NAIL_ROBOT";
String WECHAT_ROBOT = "WECHAT_ROBOT";
}
interface Event {
String EXECUTE_SUCCESSFUL = "EXECUTE_SUCCESSFUL";
String EXECUTE_FAILED = "EXECUTE_FAILED";
String CREATE = "CREATE";
String UPDATE = "UPDATE";
String DELETE = "DELETE";
String COMMENT = "COMMENT";
}
interface RelatedUser {
String FOUNDER = "FOUNDER";//创建人
String EXECUTOR = "EXECUTOR";//负责人(评审人)
String MAINTAINER = "MAINTAINER";//维护人
}
}

View File

@@ -1,83 +0,0 @@
package io.dataease.commons.constants;
/**
* Author: wangjiahao
* Date: 2021-03-22
* Description:
*/
public class PanelConstants {
public final static String COMPONENT_TYPE_VIEW = "view";
public final static String COMPONENT_TYPE_PUBLIC = "public";
public final static String TEMPLATE_TYPE_SYSTEM = "system";
public final static String TEMPLATE_TYPE_SELF = "self";
public final static String PANEL_NODE_TYPE_FOlDER = "folder";
public final static String PANEL_NODE_TYPE_PANEL = "panel";
public final static String OPT_TYPE_INSERT = "insert";
public final static String OPT_TYPE_UPDATE = "update";
public final static String PANEL_GATHER_DEFAULT_PANEL = "default_panel";
public final static String PANEL_GATHER_PANEL_LIST = "panel_list";
//新建仪表板来源
public static final class NEW_PANEL_FROM {
// 直接新建
public static final String NEW = "new";
// 内部模板新建
public static final String NEW_INNER_TEMPLATE = "new_inner_template";
// 外部模板新建
public static final String NEW_OUTER_TEMPLATE = "new_outer_template";
// 模板市场新建
public static final String NEW_MARKET_TEMPLATE = "new_market_template";
}
//仪表板类型
public static final class PANEL_TYPE {
// 普通仪表板
public static final String SELF = "self";
// 默认仪表板
public static final String SYSTEM = "system";
}
//仪表板查询来源
public static final class QUERY_FROM {
// 普通查询
public static final String NORMAL = "normal";
// 编辑查询
public static final String EDIT = "edit";
}
//应用数据源来源
public static final class APP_DATASOURCE_FROM {
// 新建
public static final String NEW = "new";
// 复用
public static final String HISTORY = "history";
}
}

View File

@@ -1,181 +0,0 @@
package io.dataease.commons.constants;
public interface ParamConstants {
String getValue();
enum Type implements ParamConstants {
PASSWORD("password"),
TEXT("text"),
JSON("json");
private String value;
Type(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
enum Classify implements ParamConstants {
MAIL("smtp"),
BASE("base"),
LDAP("ldap"),
UI("ui"),
REGISTRY("registry");
private String value;
Classify(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
enum Registry implements ParamConstants {
URL("registry.url"),
REPO("registry.repo"),
USERNAME("registry.username"),
PASSWORD("registry.password");
private String value;
Registry(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
}
enum I18n implements ParamConstants {
LANGUAGE("i18n.language");
private String value;
I18n(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
enum MAIL implements ParamConstants {
SERVER("smtp.host"),
PORT("smtp.port"),
ACCOUNT("smtp.account"),
PASSWORD("smtp.password"),
SSL("smtp.ssl"),
TLS("smtp.tls"),
RECIPIENTS("smtp.recipient");
private String value;
private MAIL(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
}
enum BASIC implements ParamConstants {
FRONT_TIME_OUT("basic.frontTimeOut"),
MSG_TIME_OUT("basic.msgTimeOut"),
LOG_TIME_OUT("basic.logTimeOut"),
DS_CHECK_INTERVAL("basic.dsCheckInterval"),
DS_CHECK_INTERVAL_TYPE("basic.dsCheckIntervalType"),
DEFAULT_LOGIN_TYPE("basic.loginType"),
OPEN_HOME_PAGE("ui.openHomePage"),
AUTO_MOBILE("ui.autoMobile"),
OPEN_MARKET_PAGE("ui.openMarketPage"),
TEMPLATE_MARKET_ULR("basic.templateMarketUlr"),
LOGIN_LIMIT_LIMITTIMES("loginlimit.limitTimes"),
LOGIN_LIMIT_RELIEVETIMES("loginlimit.relieveTimes"),
LOGIN_LIMIT_OPEN("loginlimit.open"),
LOCKED_EMAIL("loginlimit.lockedEmail"),
SCAN_CREATE_USER("loginlimit.scanCreateUser"),
MULTI_LOGIN("loginlimit.multiLogin"),
TEMPLATE_ACCESS_KEY("basic.templateAccessKey");
private String value;
public String getValue() {
return this.value;
}
private BASIC(String value) {
this.value = value;
}
}
enum BASE implements ParamConstants {
URL("base.url");
private String value;
private BASE(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
}
enum LDAP implements ParamConstants {
URL("ldap.url"),
DN("ldap.dn"),
PASSWORD("ldap.password"),
OU("ldap.ou"),
FILTER("ldap.filter"),
MAPPING("ldap.mapping"),
OPEN("ldap.open");
private String value;
LDAP(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
}
}

View File

@@ -1,14 +0,0 @@
package io.dataease.commons.constants;
public class RedisConstants {
public static final String GLOBAL_REDIS_TOPIC = "global_redis_topic";
public static final String PLUGIN_INSTALL_MSG = "pluginMsgService";
public static final String WEBSOCKET_MSG = "wsMsgService";
public static final String DS_REDIS_TOPIC = "ds_redis_topic";
}

View File

@@ -1,39 +0,0 @@
package io.dataease.commons.constants;
public enum ResourceAuthLevel {
COMMON_LEVEL_USE(1),
PANEL_LEVEL_VIEW(1),
PANEL_LEVEL_EXPORT(3),
PANEL_LEVEL_MANAGE(5),
PANEL_LEVEL_GRANT(15),
DATASET_LEVEL_USE(1),
DATASET_LEVEL_MANAGE(3),
DATASET_LEVEL_GRANT(15),
LINK_LEVEL_USE(1),
LINK_LEVEL_MANAGE(3),
LINK_LEVEL_GRANT(15),
DATASOURCE_LEVEL_USE(1),
DATASOURCE_LEVEL_MANAGE(3),
DATASOURCE_LEVEL_GRANT(15);
private Integer level;
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
ResourceAuthLevel(Integer level) {
this.level = level;
}
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum ScheduleGroup {
API_TEST, PERFORMANCE_TEST, API_SCENARIO_TEST, TEST_PLAN_TEST, SWAGGER_IMPORT
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum ScheduleType {
CRON, SIMPLE, SIMPLE_CRON
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public class SessionConstants {
public static final String ATTR_USER = "user";
}

View File

@@ -1,32 +0,0 @@
package io.dataease.commons.constants;
import java.io.File;
import static io.dataease.commons.utils.StaticResourceUtils.ensureSuffix;
/**
* Author: wangjiahao
* Date: 2022/4/28
* Description:
*/
public class StaticResourceConstants {
public static final String FILE_PROTOCOL = "file://";
public static final String FILE_SEPARATOR = File.separator;
public static final String USER_HOME = "/opt/dataease/data";
public static String WORK_DIR = ensureSuffix(USER_HOME, FILE_SEPARATOR) + "static-resource" + FILE_SEPARATOR;
/**
* Upload prefix.
*/
public final static String UPLOAD_URL_PREFIX = "static-resource";
/**
* url separator.
*/
public static final String URL_SEPARATOR = "/";
}

View File

@@ -1,22 +0,0 @@
package io.dataease.commons.constants;
/**
* Author: wangjiahao
* Date: 2022/4/2
* Description:
*/
public class SysAuthConstants {
public final static String AUTH_TARGET_TYPE_USER = "user";
public final static String AUTH_TARGET_TYPE_ROLE = "role";
public final static String AUTH_TARGET_TYPE_DEPT = "dept";
public final static String AUTH_SOURCE_TYPE_PANEL = "panel";
public final static String AUTH_SOURCE_TYPE_DATASET = "dataset";
public final static String AUTH_SOURCE_TYPE_DATASOURCE = "link";
}

View File

@@ -1,90 +0,0 @@
package io.dataease.commons.constants;
import java.util.Arrays;
import java.util.Optional;
public class SysLogConstants {
public static String operateTypeName(Integer value) {
Optional<OPERATE_TYPE> any = Arrays.stream(OPERATE_TYPE.class.getEnumConstants()).filter(e -> e.value == value).findAny();
if (any.isPresent()) return any.get().name;
return null;
}
public enum OPERATE_TYPE {
CREATE(1, "OPERATE_TYPE_CREATE"),
MODIFY(2, "OPERATE_TYPE_MODIFY"),
DELETE(3, "OPERATE_TYPE_DELETE"),
SHARE(4, "OPERATE_TYPE_SHARE"),
UNSHARE(5, "OPERATE_TYPE_UNSHARE"),
AUTHORIZE(6, "OPERATE_TYPE_AUTHORIZE"),
UNAUTHORIZE(7, "OPERATE_TYPE_UNAUTHORIZE"),
CREATELINK(8, "OPERATE_TYPE_CREATELINK"),
DELETELINK(9, "OPERATE_TYPE_DELETELINK"),
MODIFYLINK(10, "OPERATE_TYPE_MODIFYLINK"),
UPLOADFILE(11, "OPERATE_TYPE_UPLOADFILE"),
LOGIN(12, "OPERATE_TYPE_LOGIN"),
PC_VIEW(13, "OPERATE_TYPE_PC_VIEW"),
MB_VIEW(14, "OPERATE_TYPE_MB_VIEW"),
EXPORT(15, "OPERATE_TYPE_EXPORT"),
BIND(16, "OPERATE_TYPE_BIND"),
UNBIND(17, "OPERATE_TYPE_UNBIND");
private Integer value;
private String name;
OPERATE_TYPE(Integer value, String name) {
this.value = value;
this.name = name;
}
public Integer getValue() {
return value;
}
public String getName() {
return name;
}
}
public static String sourceTypeName(Integer value) {
Optional<SOURCE_TYPE> any = Arrays.stream(SOURCE_TYPE.class.getEnumConstants()).filter(e -> e.value == value).findAny();
if (any.isPresent()) return any.get().name;
return null;
}
public enum SOURCE_TYPE {
DATASOURCE(1, "SOURCE_TYPE_DATASOURCE"),
DATASET(2, "SOURCE_TYPE_DATASET"),
PANEL(3, "SOURCE_TYPE_PANEL"),
VIEW(4, "SOURCE_TYPE_VIEW"),
LINK(5, "SOURCE_TYPE_LINK"),
USER(6, "SOURCE_TYPE_USER"),
DEPT(7, "SOURCE_TYPE_DEPT"),
ROLE(8, "SOURCE_TYPE_ROLE"),
DRIVER(9, "SOURCE_TYPE_DRIVER"),
DRIVER_FILE(10, "SOURCE_TYPE_DRIVER_FILE"),
MENU(11, "SOURCE_TYPE_MENU"),
APIKEY(12, "SOURCE_TYPE_APIKEY");
private Integer value;
private String name;
SOURCE_TYPE(Integer value, String name) {
this.value = value;
this.name = name;
}
public Integer getValue() {
return value;
}
public String getName() {
return name;
}
}
}

View File

@@ -1,8 +0,0 @@
package io.dataease.commons.constants;
public class SysMsgConstants {
public final static String SYS_MSG_CHANNEL = "sys_msg_channel";
public final static String SYS_MSG_TYPE = "sys_msg_type";
public final static String SYS_MSG_USER_SUBSCRIBE = "sys_msg_user_subscribe";
}

View File

@@ -1,27 +0,0 @@
package io.dataease.commons.constants;
/**
* Author: wangjiahao
* Date: 2021-03-22
* Description:
*/
public class SystemConstants {
public static final class WITH_EXTEND {
public final static String NOW = "now";
public final static String PARENT = "parent";
public final static String CHILDREN = "children";
}
public static final class PRIVILEGE_VALUE {
public final static Integer ON = 1;
public final static Integer OFF = 0;
}
public static final class AUTH_SOURCE {
public final static String MENU = "menu";
}
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum TaskStatus {
Underway, Stopped, Pending, Exec
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum TriggerType {
Cron, Custom
}

View File

@@ -1,5 +0,0 @@
package io.dataease.commons.constants;
public enum UpdateType {
all_scope, add_scope
}

View File

@@ -1,24 +0,0 @@
package io.dataease.commons.exception;
public class DEException extends RuntimeException {
private DEException(String message) {
super(message);
}
private DEException(Throwable t) {
super(t);
}
public static void throwException(String message) {
throw new DEException(message);
}
public static DEException getException(String message) {
throw new DEException(message);
}
public static void throwException(Throwable t) {
throw new DEException(t);
}
}

Some files were not shown because too many files have changed in this diff Show More