From 5039d5b1dd193c02f2bd02438f222462ca1701d8 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 7 Sep 2023 14:07:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?refactor(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E7=89=88=E6=9F=A5=E8=AF=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=EF=BC=8C=E9=98=B2=E6=AD=A2=E6=95=B0=E6=8D=AE=E8=BF=87?= =?UTF-8?q?=E5=A4=9A=E5=87=BA=E7=8E=B0=E5=8D=A1=E9=A1=BF=20#5992?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/request/panel/PanelTemplateRequest.java | 2 +- .../src/main/java/io/dataease/ext/ExtPanelTemplateMapper.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/controller/request/panel/PanelTemplateRequest.java b/core/backend/src/main/java/io/dataease/controller/request/panel/PanelTemplateRequest.java index a58c0b0cf0..3892448bf1 100644 --- a/core/backend/src/main/java/io/dataease/controller/request/panel/PanelTemplateRequest.java +++ b/core/backend/src/main/java/io/dataease/controller/request/panel/PanelTemplateRequest.java @@ -14,7 +14,7 @@ public class PanelTemplateRequest extends PanelTemplateWithBLOBs { @ApiModelProperty("排序") private String sort; @ApiModelProperty("详细信息") - private String withBlobs="Y"; + private String withBlobs="N"; @ApiModelProperty("操作类型") private String optType; @ApiModelProperty("静态文件") diff --git a/core/backend/src/main/java/io/dataease/ext/ExtPanelTemplateMapper.xml b/core/backend/src/main/java/io/dataease/ext/ExtPanelTemplateMapper.xml index 2cb4dbc70b..531e8e955e 100644 --- a/core/backend/src/main/java/io/dataease/ext/ExtPanelTemplateMapper.xml +++ b/core/backend/src/main/java/io/dataease/ext/ExtPanelTemplateMapper.xml @@ -9,10 +9,10 @@ - panel_template.id, panel_template.`name`, panel_template.pid, panel_template.`level`, panel_template.node_type, panel_template.create_by, panel_template.create_time, panel_template.template_type + panel_template.id, panel_template.`name`, panel_template.pid, panel_template.`level`, panel_template.node_type, panel_template.create_by, panel_template.create_time, panel_template.template_type, panel_template.snapshot - panel_template.snapshot, panel_template.template_style, panel_template.template_data, panel_template.dynamic_data + panel_template.template_style, panel_template.template_data, panel_template.dynamic_data SELECT DISTINCT u.*, @@ -41,20 +41,20 @@ d.NAME AS dept_name FROM ( - select * from sys_user - - where - nick_name like concat('%', #{extendCondition} , '%') - or - email like concat('%', #{extendCondition} , '%') - + select * from sys_user + + where + nick_name like concat('%', #{extendCondition} , '%') + or + email like concat('%', #{extendCondition} , '%') + ) u LEFT JOIN sys_dept d ON d.dept_id = u.dept_id LEFT JOIN sys_users_roles sur ON sur.user_id = u.user_id LEFT JOIN sys_role r ON r.role_id = sur.role_id - + order by ${orderByClause} @@ -67,11 +67,19 @@ + + diff --git a/core/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/core/backend/src/main/java/io/dataease/service/sys/SysUserService.java index bd97baded8..39dcdc5167 100644 --- a/core/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/core/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -3,16 +3,16 @@ package io.dataease.service.sys; import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.auth.service.AuthUserService; import io.dataease.auth.service.ExtAuthService; -import io.dataease.commons.exception.DEException; -import io.dataease.controller.sys.request.*; -import io.dataease.ext.ExtSysUserMapper; -import io.dataease.ext.query.GridExample; import io.dataease.commons.constants.AuthConstants; +import io.dataease.commons.exception.DEException; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.CodingUtil; +import io.dataease.controller.sys.request.*; import io.dataease.controller.sys.response.SysUserGridResponse; import io.dataease.controller.sys.response.SysUserRole; +import io.dataease.ext.ExtSysUserMapper; +import io.dataease.ext.query.GridExample; import io.dataease.i18n.Translator; import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.SysUserAssistMapper; @@ -23,7 +23,6 @@ import io.dataease.plugins.xpack.dingtalk.dto.response.DingUserEntity; import io.dataease.plugins.xpack.lark.dto.entity.LarkUserInfo; import io.dataease.plugins.xpack.larksuite.dto.entity.UserData; import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo; - import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -33,7 +32,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -605,4 +603,7 @@ public class SysUserService { sysUserMapper.updateByPrimaryKeySelective(sysUser); } + public String adminEmail() { + return extSysUserMapper.queryAdminEmail(); + } } diff --git a/core/backend/src/main/java/io/dataease/service/system/EmailService.java b/core/backend/src/main/java/io/dataease/service/system/EmailService.java index e1578c352a..a888ea27b8 100644 --- a/core/backend/src/main/java/io/dataease/service/system/EmailService.java +++ b/core/backend/src/main/java/io/dataease/service/system/EmailService.java @@ -277,6 +277,60 @@ public class EmailService { }); } + private JavaMailSenderImpl buildSender() { + MailInfo mailInfo = proxy().mailInfo(); + checkMailInfo(mailInfo); + JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); + javaMailSender.setDefaultEncoding("UTF-8"); + javaMailSender.setHost(mailInfo.getHost()); + javaMailSender.setPort(Integer.parseInt(mailInfo.getPort())); + javaMailSender.setUsername(mailInfo.getAccount()); + javaMailSender.setPassword(mailInfo.getPassword()); + Properties props = new Properties(); + if (BooleanUtils.toBoolean(mailInfo.getSsl())) { + props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + } + if (BooleanUtils.toBoolean(mailInfo.getTls())) { + props.put("mail.smtp.starttls.enable", "true"); + } + props.put("mail.smtp.timeout", "30000"); + props.put("mail.smtp.connectiontimeout", "10000"); + javaMailSender.setJavaMailProperties(props); + return javaMailSender; + } + + private void testSendEmail(String recipients, JavaMailSenderImpl javaMailSender, boolean isAdmin) { + if (!StringUtils.isBlank(recipients)) { + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); + MimeMessageHelper helper; + try { + helper = new MimeMessageHelper(mimeMessage, true); + helper.setFrom(javaMailSender.getUsername()); + helper.setSubject("DataEase测试邮件 "); + helper.setText("这是一封测试邮件,邮件发送成功", true); + helper.setTo(recipients); + javaMailSender.send(mimeMessage); + } catch (Exception e) { + LogUtil.error(e.getMessage(), e); + String key = "connection_failed"; + if (isAdmin) key = "connection_failed_admin"; + DEException.throwException(Translator.get(key)); + } + } + } + + public void testConnection(String email) { + JavaMailSenderImpl javaMailSender = null; + try { + javaMailSender = buildSender(); + javaMailSender.testConnection(); + } catch (MessagingException e) { + LogUtil.error(e.getMessage(), e); + DEException.throwException(Translator.get("connection_failed")); + } + testSendEmail(email, javaMailSender, true); + } + public void testConnection(HashMap hashMap) { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setDefaultEncoding("UTF-8"); @@ -301,21 +355,6 @@ public class EmailService { LogUtil.error(e.getMessage(), e); DEException.throwException(Translator.get("connection_failed")); } - if (!StringUtils.isBlank(recipients)) { - MimeMessage mimeMessage = javaMailSender.createMimeMessage(); - MimeMessageHelper helper; - try { - helper = new MimeMessageHelper(mimeMessage, true); - helper.setFrom(javaMailSender.getUsername()); - helper.setSubject("DataEase测试邮件 "); - helper.setText("这是一封测试邮件,邮件发送成功", true); - helper.setTo(recipients); - javaMailSender.send(mimeMessage); - } catch (Exception e) { - LogUtil.error(e.getMessage(), e); - DEException.throwException(Translator.get("connection_failed")); - } - } - + testSendEmail(recipients, javaMailSender, false); } } diff --git a/core/backend/src/main/java/io/dataease/service/system/SystemParameterService.java b/core/backend/src/main/java/io/dataease/service/system/SystemParameterService.java index 29ee567046..b0f5402b69 100644 --- a/core/backend/src/main/java/io/dataease/service/system/SystemParameterService.java +++ b/core/backend/src/main/java/io/dataease/service/system/SystemParameterService.java @@ -7,6 +7,7 @@ import io.dataease.commons.utils.EncryptUtils; import io.dataease.controller.sys.response.BasicInfo; import io.dataease.dto.SystemParameterDTO; import io.dataease.exception.DataEaseException; +import io.dataease.ext.ExtSystemParameterMapper; import io.dataease.plugins.common.base.domain.FileMetadata; import io.dataease.plugins.common.base.domain.SystemParameter; import io.dataease.plugins.common.base.domain.SystemParameterExample; @@ -26,6 +27,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import springfox.documentation.annotations.Cacheable; import javax.annotation.Resource; import javax.imageio.ImageIO; @@ -34,9 +36,6 @@ import java.io.InputStream; import java.util.*; import java.util.concurrent.atomic.AtomicReference; -import io.dataease.ext.*; -import springfox.documentation.annotations.Cacheable; - @Service @Transactional(rollbackFor = Exception.class) public class SystemParameterService { @@ -129,6 +128,10 @@ public class SystemParameterService { boolean open = StringUtils.equals("true", param.getParamValue()); result.setOpen(open ? "true" : "false"); } + if (StringUtils.equals(param.getParamKey(), ParamConstants.BASIC.LOCKED_EMAIL.getValue())) { + boolean open = StringUtils.equals("true", param.getParamValue()); + result.setLockedEmail(open ? "true" : "false"); + } if (StringUtils.equals(param.getParamKey(), ParamConstants.BASIC.SCAN_CREATE_USER.getValue())) { boolean open = StringUtils.equals("true", param.getParamValue()); result.setScanCreateUser(open ? "true" : "false"); @@ -166,8 +169,7 @@ public class SystemParameterService { CasSaveResult casSaveResult = afterSwitchDefaultLogin(parameters); BasicInfo basicInfo = basicInfo(); String oldMultiLogin = this.getValue("loginlimit.multiLogin"); - for (int i = 0; i < parameters.size(); i++) { - SystemParameter parameter = parameters.get(i); + for (SystemParameter parameter : parameters) { SystemParameterExample example = new SystemParameterExample(); example.createCriteria().andParamKeyEqualTo(parameter.getParamKey()); @@ -280,6 +282,16 @@ public class SystemParameterService { return param.getParamValue(); } + public void disabledLockedEmail() { + SystemParameter param = systemParameterMapper.selectByPrimaryKey(ParamConstants.BASIC.LOCKED_EMAIL.getValue()); + if (ObjectUtils.isNotEmpty(param)) { + SystemParameterExample example = new SystemParameterExample(); + example.createCriteria().andParamKeyEqualTo(ParamConstants.BASIC.LOCKED_EMAIL.getValue()); + param.setParamValue("false"); + systemParameterMapper.updateByExample(param, example); + } + } + public Integer defaultLoginType() { String value = getValue(LOGIN_TYPE_KEY); return StringUtils.isNotBlank(value) ? Integer.parseInt(value) : 0; diff --git a/core/backend/src/main/resources/i18n/messages_en_US.properties b/core/backend/src/main/resources/i18n/messages_en_US.properties index 5583a54bf4..090389c5c3 100644 --- a/core/backend/src/main/resources/i18n/messages_en_US.properties +++ b/core/backend/src/main/resources/i18n/messages_en_US.properties @@ -129,6 +129,7 @@ i18n_field_name_repeat=Field name can't repeat i18n_calc_field_error=Field expression error i18n_cp_exist=Column permission of the same type already exists connection_failed=Connection Failed +connection_failed_admin=Connection failed, please check email configuration or administrator mailbox theme_name_repeat=name of theme has been existed theme_name_empty=name can not be empty i18n_public_chart=\u3010Public Chart\u3011 diff --git a/core/backend/src/main/resources/i18n/messages_zh_CN.properties b/core/backend/src/main/resources/i18n/messages_zh_CN.properties index 7a2810cf0f..05b70ad31a 100644 --- a/core/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/core/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -129,6 +129,7 @@ i18n_field_name_repeat=\u5B57\u6BB5\u540D\u4E0D\u80FD\u91CD\u590D i18n_calc_field_error=\u5B57\u6BB5\u8868\u8FBE\u5F0F\u8BED\u6CD5\u9519\u8BEF i18n_cp_exist=\u5DF2\u6709\u540C\u7C7B\u578B\u7684\u5217\u6743\u9650\u5B58\u5728 connection_failed=\u8FDE\u63A5\u5931\u8D25 +connection_failed_admin=\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u90AE\u4EF6\u914D\u7F6E\u6216\u7BA1\u7406\u5458\u90AE\u7BB1 theme_name_repeat=\u540D\u79F0\u5DF2\u5B58\u5728 theme_name_empty=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A i18n_public_chart=\u3010\u5B58\u91CF\u89C6\u56FE\u3011 diff --git a/core/backend/src/main/resources/i18n/messages_zh_TW.properties b/core/backend/src/main/resources/i18n/messages_zh_TW.properties index acc0018ed3..f4c4df9008 100644 --- a/core/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/core/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -129,6 +129,7 @@ i18n_field_name_repeat=\u5B57\u6BB5\u540D\u4E0D\u80FD\u91CD\u5FA9 i18n_calc_field_error=\u5B57\u6BB5\u8868\u9054\u5F0F\u8A9E\u6CD5\u932F\u8AA4 i18n_cp_exist=\u5DF2\u6709\u540C\u985E\u578B\u7684\u5217\u6B0A\u9650\u5B58\u5728 connection_failed=\u9023\u63A5\u5931\u6557 +connection_failed_admin=\u9023\u63A5\u5931\u6557\uFF0C\u8ACB\u6AA2\u67E5\u90F5\u4EF6\u914D\u7F6E\u6216\u7BA1\u7406\u54E1\u90F5\u7BB1 theme_name_repeat=\u540D\u7A31\u5DF2\u5B58\u5728 theme_name_empty=\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A i18n_public_chart=\u3010\u5B58\u91CF\u89C6\u56FE\u3011 diff --git a/core/frontend/src/views/system/sysParam/BasicSetting.vue b/core/frontend/src/views/system/sysParam/BasicSetting.vue index e7db140ee8..7d34229fcd 100644 --- a/core/frontend/src/views/system/sysParam/BasicSetting.vue +++ b/core/frontend/src/views/system/sysParam/BasicSetting.vue @@ -366,6 +366,7 @@ export default { this.originLoginType = this.formInline.loginType } this.formInline.open = (this.formInline.open && this.formInline.open === 'true') + this.formInline.lockedEmail = this.formInline?.lockedEmail === 'true' this.formInline.scanCreateUser = (this.formInline.scanCreateUser && this.formInline.scanCreateUser === 'true') this.$nextTick(() => { @@ -455,6 +456,12 @@ export default { type: 'text', sort: 3 }, + { + paramKey: 'loginlimit.lockedEmail', + paramValue: this.formInline.lockedEmail, + type: 'text', + sort: 4 + }, { paramKey: 'loginlimit.scanCreateUser', paramValue: this.formInline.scanCreateUser, diff --git a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/loginlimit/dto/response/LoginLimitInfo.java b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/loginlimit/dto/response/LoginLimitInfo.java index f076213d9f..59344be9bb 100644 --- a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/loginlimit/dto/response/LoginLimitInfo.java +++ b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/loginlimit/dto/response/LoginLimitInfo.java @@ -14,4 +14,6 @@ public class LoginLimitInfo { private String scanCreateUser; private String multiLogin; + + private String lockedEmail = "false"; } From f183aad56b66196dbfe95772d3a501cc3a472b90 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 7 Sep 2023 15:02:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?refactor(=E4=BB=AA=E8=A1=A8=E6=9D=BF):=20?= =?UTF-8?q?=E8=81=94=E5=8A=A8=E9=85=8D=E7=BD=AE=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E4=BF=9D=E7=95=99=E6=9C=89=E6=95=88=E7=9A=84?= =?UTF-8?q?=E8=81=94=E5=8A=A8=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=8D=A1=E9=A1=BF=E7=8E=B0=E8=B1=A1=20#5926?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/components/editor/LinkageField.vue | 98 ++++++++++--------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/core/frontend/src/components/canvas/components/editor/LinkageField.vue b/core/frontend/src/components/canvas/components/editor/LinkageField.vue index 50f3ff391f..fde3888639 100644 --- a/core/frontend/src/components/canvas/components/editor/LinkageField.vue +++ b/core/frontend/src/components/canvas/components/editor/LinkageField.vue @@ -120,7 +120,8 @@ icon="el-icon-plus" round @click="addLinkageField(null,null)" - >追加联动依赖字段 + >追加联动依赖字段 + @@ -132,8 +133,9 @@ From 26787378494f8483cbf619dc2173d3ec24d7fe8b Mon Sep 17 00:00:00 2001 From: fit2cloudrd Date: Thu, 7 Sep 2023 15:17:35 +0800 Subject: [PATCH 5/5] Update V18__add_demo.sql --- core/backend/src/main/resources/db/migration/V18__add_demo.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/backend/src/main/resources/db/migration/V18__add_demo.sql b/core/backend/src/main/resources/db/migration/V18__add_demo.sql index 6419a2cfba..b7f13fd14b 100644 --- a/core/backend/src/main/resources/db/migration/V18__add_demo.sql +++ b/core/backend/src/main/resources/db/migration/V18__add_demo.sql @@ -228,7 +228,7 @@ SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for demo_new_trend_of_diagnosis -- ---------------------------- -CREATE TABLE `demo_new_trend_of_diagnosis` ( +CREATE TABLE IF NOT EXISTS `demo_new_trend_of_diagnosis` ( `date` varchar(50) NOT NULL DEFAULT '' COMMENT '日期', `new_diagnosis` bigint(13) DEFAULT NULL COMMENT '新增确诊', `current_diagnosis` bigint(13) DEFAULT NULL COMMENT '现有确诊'