This is an automated email from the ASF dual-hosted git repository.
caishunfeng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 95c1192 [Feature-8386][Server] Custom timezone - Add timezone into
user info (#8457)
95c1192 is described below
commit 95c119226ba8998f778ad33c5ccf836ce4bee1e9
Author: 天仇 <[email protected]>
AuthorDate: Mon Feb 21 23:28:31 2022 +0800
[Feature-8386][Server] Custom timezone - Add timezone into user info (#8457)
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Add system default timezone like `GMT+08:00` when create user
3. Add timeZone property when update user info
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Add system default timezone like `GMT+08:00` when create user
3. Add timeZone property when update user info
4. add ddl sql in update sql script
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Set timeZone null when create user
3. Add timeZone property when update user info
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Set timeZone null when create user
3. Add timeZone property when update user info
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Set timeZone null when create user
3. Add timeZone property when update user info
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Set timeZone null when create user
3. Add timeZone property when update user info
This completes #8386
* [Feature-8386][Server] Custom timezone - Add timezone into user info
1. Add column `time_zone varchar(32) default null` in table `t_ds_user`
2. Set timeZone null when create user
3. Add timeZone property when update user info
This completes #8386
---
.../dolphinscheduler/api/controller/UsersController.java | 5 +++--
.../org/apache/dolphinscheduler/api/enums/Status.java | 1 +
.../dolphinscheduler/api/service/UsersService.java | 2 +-
.../api/service/impl/UsersServiceImpl.java | 13 ++++++++++++-
.../apache/dolphinscheduler/api/utils/CheckUtils.java | 15 +++++++++++++++
.../dolphinscheduler/api/service/UsersServiceTest.java | 4 ++--
.../org/apache/dolphinscheduler/dao/entity/User.java | 16 +++++++++++++++-
.../apache/dolphinscheduler/dao/mapper/UserMapper.xml | 4 ++--
.../src/main/resources/sql/dolphinscheduler_h2.sql | 3 ++-
.../src/main/resources/sql/dolphinscheduler_mysql.sql | 3 ++-
.../main/resources/sql/dolphinscheduler_postgresql.sql | 5 +++--
.../upgrade/2.0.4_schema/mysql/dolphinscheduler_ddl.sql | 2 +-
.../upgrade/2.1.0_schema/mysql/dolphinscheduler_ddl.sql | 2 ++
.../2.1.0_schema/postgresql/dolphinscheduler_ddl.sql | 2 ++
14 files changed, 63 insertions(+), 14 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java
index a79e5f7..da48ca7 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/UsersController.java
@@ -185,8 +185,9 @@ public class UsersController extends BaseController {
@RequestParam(value = "email") String email,
@RequestParam(value = "tenantId") int tenantId,
@RequestParam(value = "phone", required = false)
String phone,
- @RequestParam(value = "state", required = false)
int state) throws Exception {
- Map<String, Object> result = usersService.updateUser(loginUser, id,
userName, userPassword, email, tenantId, phone, queue, state);
+ @RequestParam(value = "state", required = false)
int state,
+ @RequestParam(value = "timeZone", required =
false) String timeZone) throws Exception {
+ Map<String, Object> result = usersService.updateUser(loginUser, id,
userName, userPassword, email, tenantId, phone, queue, state, timeZone);
return returnDataList(result);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 1f6add9..729ed80 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -380,6 +380,7 @@ public enum Status {
TASK_GROUP_STATUS_OPENED(130019,"The task group has been
opened.","任务组已经被开启"),
NOT_ALLOW_TO_DISABLE_OWN_ACCOUNT(130020, "Not allow to disable your own
account", "不能停用自己的账号"),
NOT_ALLOW_TO_DELETE_DEFAULT_ALARM_GROUP(130030, "Not allow to delete the
default alarm group ", "不能删除默认告警组"),
+ TIME_ZONE_ILLEGAL(130031, "time zone [{0}] is illegal", "时区参数 [{0}] 不合法"),
QUERY_K8S_NAMESPACE_LIST_PAGING_ERROR(1300001, "login user query k8s
namespace list paging error", "分页查询k8s名称空间列表错误"),
K8S_NAMESPACE_EXIST(1300002, "k8s namespace {0} already exists",
"k8s命名空间[{0}]已存在"),
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
index 485702a..b303abc 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java
@@ -130,7 +130,7 @@ public interface UsersService {
* @throws Exception exception
*/
Map<String, Object> updateUser(User loginUser, int userId, String
userName, String userPassword, String email,
- int tenantId, String phone, String queue,
int state) throws IOException;
+ int tenantId, String phone, String queue,
int state, String timeZone) throws IOException;
/**
* delete user
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java
index b057bae..b6ec2c3 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java
@@ -349,6 +349,8 @@ public class UsersServiceImpl extends BaseServiceImpl
implements UsersService {
* @param tenantId tenant id
* @param phone phone
* @param queue queue
+ * @param state state
+ * @param timeZone timeZone
* @return update result code
* @throws Exception exception
*/
@@ -360,7 +362,8 @@ public class UsersServiceImpl extends BaseServiceImpl
implements UsersService {
int tenantId,
String phone,
String queue,
- int state) throws IOException {
+ int state,
+ String timeZone) throws IOException {
Map<String, Object> result = new HashMap<>();
result.put(Constants.STATUS, false);
@@ -413,6 +416,14 @@ public class UsersServiceImpl extends BaseServiceImpl
implements UsersService {
return result;
}
+ if (StringUtils.isNotEmpty(timeZone)) {
+ if (!CheckUtils.checkTimeZone(timeZone)) {
+ putMsg(result, Status.TIME_ZONE_ILLEGAL, timeZone);
+ return result;
+ }
+ user.setTimeZone(timeZone);
+ }
+
user.setPhone(phone);
user.setQueue(queue);
user.setState(state);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
index 3891087..2e84a14 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
@@ -29,6 +29,7 @@ import org.apache.commons.lang.StringUtils;
import org.hibernate.validator.internal.constraintvalidators.bv.EmailValidator;
import java.text.MessageFormat;
+import java.time.ZoneId;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
@@ -122,6 +123,20 @@ public class CheckUtils {
}
/**
+ * check time zone parameter
+ * @param timeZone timeZone
+ * @return true if timeZone is valid, otherwise return false
+ */
+ public static boolean checkTimeZone(String timeZone) {
+ try {
+ ZoneId.of(timeZone);
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
* check task node parameter
*
* @param taskNode TaskNode
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
index 36a313b..5361205 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
@@ -269,13 +269,13 @@ public class UsersServiceTest {
String userPassword = "userTest0001";
try {
//user not exist
- Map<String, Object> result =
usersService.updateUser(getLoginUser(), 0, userName, userPassword,
"[email protected]", 1, "13457864543", "queue", 1);
+ Map<String, Object> result =
usersService.updateUser(getLoginUser(), 0, userName, userPassword,
"[email protected]", 1, "13457864543", "queue", 1, "Asia/Shanghai");
Assert.assertEquals(Status.USER_NOT_EXIST,
result.get(Constants.STATUS));
logger.info(result.toString());
//success
when(userMapper.selectById(1)).thenReturn(getUser());
- result = usersService.updateUser(getLoginUser(), 1, userName,
userPassword, "[email protected]", 1, "13457864543", "queue", 1);
+ result = usersService.updateUser(getLoginUser(), 1, userName,
userPassword, "[email protected]", 1, "13457864543", "queue", 1, "Asia/Shanghai");
logger.info(result.toString());
Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
} catch (Exception e) {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
index 2110fe2..a7445ed 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
@@ -97,6 +97,11 @@ public class User {
private String queue;
/**
+ * time zone
+ */
+ private String timeZone;
+
+ /**
* create time
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
@@ -221,6 +226,14 @@ public class User {
this.state = state;
}
+ public String getTimeZone() {
+ return timeZone;
+ }
+
+ public void setTimeZone(String timeZone) {
+ this.timeZone = timeZone;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -260,7 +273,8 @@ public class User {
", tenantCode='" + tenantCode + '\'' +
", queueName='" + queueName + '\'' +
", alertGroup='" + alertGroup + '\'' +
- ", queue='" + queue + '\'' +
+ ", queue='" + queue + '\'' +
+ ", timeZone='" + timeZone + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
index 570e395..b105679 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
@@ -19,11 +19,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.apache.dolphinscheduler.dao.mapper.UserMapper">
<sql id="baseSql">
- id, user_name, user_password, user_type, email, phone, tenant_id,
create_time, update_time, queue, state
+ id, user_name, user_password, user_type, email, phone, tenant_id,
create_time, update_time, queue, state, time_zone
</sql>
<sql id="baseSqlV2">
${alias}.id, ${alias}.user_name, ${alias}.user_password,
${alias}.user_type, ${alias}.email, ${alias}.phone, ${alias}.tenant_id,
- ${alias}.create_time, ${alias}.update_time, ${alias}.queue,
${alias}.state
+ ${alias}.create_time, ${alias}.update_time, ${alias}.queue,
${alias}.state, ${alias}.time_zone
</sql>
<select id="queryAllGeneralUser"
resultType="org.apache.dolphinscheduler.dao.entity.User">
select
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
index 8aa897d..1da410e 100644
--- a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
+++ b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
@@ -921,6 +921,7 @@ CREATE TABLE t_ds_user
update_time datetime DEFAULT NULL,
queue varchar(64) DEFAULT NULL,
state int(1) DEFAULT 1,
+ time_zone varchar(32) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY user_name_unique (user_name)
);
@@ -979,7 +980,7 @@ VALUES ('1,2', 1, 'default admin warning group', 'default
admin warning group',
-- ----------------------------
INSERT INTO t_ds_user
VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', '[email protected]',
'', '0', '2018-03-27 15:48:50',
- '2018-10-24 17:40:22', null, 1);
+ '2018-10-24 17:40:22', null, 1, null);
-- ----------------------------
-- Table structure for t_ds_plugin_define
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
index 24c1d18..d70c6b8d 100644
--- a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
+++ b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
@@ -911,6 +911,7 @@ CREATE TABLE `t_ds_user` (
`update_time` datetime DEFAULT NULL COMMENT 'update time',
`queue` varchar(64) DEFAULT NULL COMMENT 'queue',
`state` tinyint(4) DEFAULT '1' COMMENT 'state 0:disable 1:enable',
+ `time_zone` varchar(32) DEFAULT NULL COMMENT 'time zone',
PRIMARY KEY (`id`),
UNIQUE KEY `user_name_unique` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
@@ -964,7 +965,7 @@ VALUES ("1,2", 1, 'default admin warning group', 'default
admin warning group',
-- Records of t_ds_user
-- ----------------------------
INSERT INTO `t_ds_user`
-VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', '[email protected]',
'', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null, 1);
+VALUES ('1', 'admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', '[email protected]',
'', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22', null, 1, null);
-- ----------------------------
-- Table structure for t_ds_plugin_define
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
index 8fdd071..225e3c4 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
@@ -805,6 +805,7 @@ CREATE TABLE t_ds_user (
update_time timestamp DEFAULT NULL ,
queue varchar(64) DEFAULT NULL ,
state int DEFAULT 1 ,
+ time_zone varchar(32) DEFAULT NULL,
PRIMARY KEY (id)
);
comment on column t_ds_user.state is 'state 0:disable 1:enable';
@@ -947,8 +948,8 @@ ALTER TABLE t_ds_worker_server ALTER COLUMN id SET DEFAULT
NEXTVAL('t_ds_worker_
-- Records of t_ds_user?user : admin , password : dolphinscheduler123
-INSERT INTO t_ds_user(user_name, user_password, user_type, email, phone,
tenant_id, state, create_time, update_time)
-VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', '[email protected]', '',
'0', 1, '2018-03-27 15:48:50', '2018-10-24 17:40:22');
+INSERT INTO t_ds_user(user_name, user_password, user_type, email, phone,
tenant_id, state, create_time, update_time, time_zone)
+VALUES ('admin', '7ad2410b2f4c074479a8937a28a22b8f', '0', '[email protected]', '',
'0', 1, '2018-03-27 15:48:50', '2018-10-24 17:40:22', 'Asia/Shanghai');
-- Records of t_ds_alertgroup, default admin warning group
INSERT INTO t_ds_alertgroup(alert_instance_ids, create_user_id, group_name,
description, create_time, update_time)
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.4_schema/mysql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.4_schema/mysql/dolphinscheduler_ddl.sql
index 4a14f32..38964cc 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.4_schema/mysql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.0.4_schema/mysql/dolphinscheduler_ddl.sql
@@ -13,4 +13,4 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
-*/
+*/
\ No newline at end of file
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/mysql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/mysql/dolphinscheduler_ddl.sql
index 5f66888..0723715 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/mysql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/mysql/dolphinscheduler_ddl.sql
@@ -27,6 +27,8 @@ alter table t_ds_task_definition_log add
`task_group_priority` int(11) DEFAULT N
alter table t_ds_task_definition add `task_group_id` int(11) DEFAULT NULL
COMMENT 'task group id' AFTER `resource_ids`;
alter table t_ds_task_definition add `task_group_priority` int(11) DEFAULT '0'
COMMENT 'task group id' AFTER `task_group_id`;
+ALTER TABLE `t_ds_user` ADD COLUMN `time_zone` varchar(32) DEFAULT NULL
COMMENT 'time zone';
+
--
-- Table structure for table `t_ds_dq_comparison_type`
--
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/postgresql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/postgresql/dolphinscheduler_ddl.sql
index 3d62647..fc30b0f 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/postgresql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/2.1.0_schema/postgresql/dolphinscheduler_ddl.sql
@@ -38,6 +38,8 @@ EXECUTE 'CREATE INDEX IF NOT EXISTS
process_task_relation_log_idx_project_code_p
EXECUTE 'DROP INDEX IF EXISTS "idx_task_definition_log_code_version"';
EXECUTE 'CREATE INDEX IF NOT EXISTS idx_task_definition_log_code_version ON '
|| quote_ident(v_schema) ||'.t_ds_task_definition_log USING
Btree("code","version")';
+EXECUTE 'ALTER TABLE ' || quote_ident(v_schema) ||'.t_ds_user ADD COLUMN IF
NOT EXISTS "time_zone" varchar(32) DEFAULT NULL';
+
EXECUTE 'CREATE TABLE IF NOT EXISTS' || quote_ident(v_schema)
||'."t_ds_dq_comparison_type" (
id serial NOT NULL,
"type" varchar NOT NULL,