This is an automated email from the ASF dual-hosted git repository.
lvshaokang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev by this push:
new 5e9298db5 [Feature] the team related front-end improve (#1792)
5e9298db5 is described below
commit 5e9298db5d4c6547e25fee4ca824bcda73bbe38d
Author: benjobs <[email protected]>
AuthorDate: Tue Oct 11 13:59:30 2022 +0800
[Feature] the team related front-end improve (#1792)
* [Feature] the team related front-end improve
---
build.sh | 11 +-
.../streampark/common/conf/ConfigConst.scala | 29 ++----
.../src/assembly/bin/streampark.sh | 11 +-
.../src/assembly/script/data/mysql-data.sql | 6 +-
.../src/assembly/script/data/pgsql-data.sql | 6 +-
.../src/assembly/script/schema/mysql-schema.sql | 7 +-
.../src/assembly/script/schema/pgsql-schema.sql | 24 +++--
.../src/assembly/script/upgrade/mysql/1.2.4.sql | 7 ++
.../console/StreamParkConsoleBootstrap.java | 12 +--
.../console/base/domain/ResponseCode.java | 5 +-
.../console/base/exception/AlertException.java | 8 +-
.../{ApiException.java => ApiAlertException.java} | 18 ++--
.../{ApiException.java => ApiDetailException.java} | 23 +++--
.../base/exception/ApplicationException.java | 8 +-
.../base/exception/IllegalFileTypeException.java | 2 +-
.../console/base/exception/InternalException.java | 2 -
.../base/handler/GlobalExceptionHandler.java | 17 ++-
.../core/controller/ApplicationController.java | 7 --
.../streampark/console/core/entity/FlinkEnv.java | 6 +-
.../console/core/service/CommonService.java | 3 +
.../core/service/impl/AppBuildPipeServiceImpl.java | 2 +-
.../core/service/impl/ApplicationServiceImpl.java | 10 +-
.../core/service/impl/CommonServiceImpl.java | 17 ++-
.../core/service/impl/FlinkClusterServiceImpl.java | 2 +-
.../system/controller/AccessTokenController.java | 11 +-
...MemberController.java => MemberController.java} | 31 +++---
.../system/controller/PassportController.java | 8 ++
.../console/system/controller/UserController.java | 56 ++++++++++
.../system/entity/{TeamMember.java => Member.java} | 4 +-
.../streampark/console/system/entity/User.java | 14 +--
.../{TeamMemberMapper.java => MemberMapper.java} | 6 +-
.../{TeamMemberService.java => MemberService.java} | 19 ++--
.../console/system/service/UserService.java | 5 +
.../service/impl/AccessTokenServiceImpl.java | 4 +-
...mberServiceImpl.java => MemberServiceImpl.java} | 95 +++++++++--------
.../system/service/impl/RoleServiceImpl.java | 6 +-
.../system/service/impl/TeamServiceImpl.java | 1 +
.../system/service/impl/UserServiceImpl.java | 64 +++++++++---
.../src/main/resources/application.yml | 2 +
.../src/main/resources/db/data-h2.sql | 20 ++--
.../src/main/resources/db/schema-h2.sql | 5 +-
.../{TeamMemberMapper.xml => MemberMapper.xml} | 34 +++---
.../main/resources/mapper/system/MenuMapper.xml | 6 +-
.../main/resources/mapper/system/RoleMapper.xml | 4 +-
.../main/resources/mapper/system/TeamMapper.xml | 6 +-
.../main/resources/mapper/system/UserMapper.xml | 1 +
.../streampark-console-webapp/src/api/index.js | 4 +-
.../streampark-console-webapp/src/api/user.js | 8 ++
.../src/components/GlobalFooter/GlobalFooter.vue | 2 +-
.../src/components/global.less | 2 -
.../src/components/tools/UserMenu.vue | 93 +++++++++++++----
.../streampark-console-webapp/src/store/getters.js | 1 +
.../src/store/modules/user.js | 55 ++++++++--
.../streampark-console-webapp/src/utils/request.js | 16 ++-
.../src/views/flink/app/Add.vue | 3 -
.../src/views/flink/app/View.vue | 12 +--
.../src/views/flink/project/Add.vue | 3 -
.../src/views/flink/project/View.vue | 7 +-
.../src/views/system/member/Member.vue | 3 -
.../src/views/system/member/MemberAdd.vue | 7 +-
.../src/views/system/member/MemberEdit.vue | 3 -
.../src/views/user/SignIn.vue | 114 ++++++++++++++++++---
62 files changed, 637 insertions(+), 341 deletions(-)
diff --git a/build.sh b/build.sh
index c96329905..79eab3a37 100755
--- a/build.sh
+++ b/build.sh
@@ -110,11 +110,12 @@ PRG_DIR=`dirname "$PRG"`
print_logo() {
printf '\n'
- printf ' %s _____ __ ____ __
%s\n' $PRIMARY $RESET
- printf ' %s / ___// /_________ ____ _____ ___ / __ \____ ______/
/__ %s\n' $PRIMARY $RESET
- printf ' %s \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ /_/ / __ `/ ___/
//_/ %s\n' $PRIMARY $RESET
- printf ' %s ___/ / /_/ / / __/ /_/ / / / / / / ____/ /_/ / / / ,<
%s\n' $PRIMARY $RESET
- printf ' %s /____/\__/_/ \___/\__,_/_/ /_/ /_/_/ \__,_/_/ /_/|_|
%s\n\n' $PRIMARY $RESET
+ printf ' %s _____ __ __
%s\n' $PRIMARY $RESET
+ printf ' %s / ___// /_________ ____ _____ ___ ____ ____ ______/
/__ %s\n' $PRIMARY $RESET
+ printf ' %s \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ __ \ __ `/ ___/
//_/ %s\n' $PRIMARY $RESET
+ printf ' %s ___/ / /_/ / / __/ /_/ / / / / / / /_/ / /_/ / / / ,<
%s\n' $PRIMARY $RESET
+ printf ' %s /____/\__/_/ \___/\__,_/_/ /_/ /_/ ____/\__,_/_/ /_/|_|
%s\n' $PRIMARY $RESET
+ printf ' %s /_/
%s\n\n' $PRIMARY $RESET
printf ' %s Version: 1.2.4 %s\n'
$BLUE $RESET
printf ' %s WebSite: https://streampark.apache.org%s\n'
$BLUE $RESET
printf ' %s GitHub : http://github.com/apache/streampark%s\n\n'
$BLUE $RESET
diff --git
a/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigConst.scala
b/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigConst.scala
index 6233eef31..a0f575ee2 100644
---
a/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigConst.scala
+++
b/streampark-common/src/main/scala/org/apache/streampark/common/conf/ConfigConst.scala
@@ -153,8 +153,6 @@ object ConfigConst {
val KEY_JDBC_DRIVER = "driverClassName"
- val KEY_JDBC_DATABASE = "database"
-
val KEY_JDBC_URL = "jdbcUrl"
val KEY_JDBC_USER = "username"
@@ -163,12 +161,8 @@ object ConfigConst {
val KEY_JDBC_INSERT_BATCH = "batch.size"
- val KEY_JDBC_INSERT_BATCH_DELAYTIME = "batch.delayTime"
-
val DEFAULT_JDBC_INSERT_BATCH = 1
- val DEFAULT_JDBC_INSERT_BATCH_DELAYTIME = 1000L
-
val MONGO_PREFIX = "mongodb."
/**
@@ -206,25 +200,20 @@ object ConfigConst {
val KEY_FLINK_TM_PROCESS_MEMORY = "taskmanager.memory.process.size"
- val KEY_FLINK_TOTAL_MEMORY = "jobmanager.memory.flink.size"
-
- val KEY_FLINK_JVM_HEAP_MEMORY = "jobmanager.memory.heap.size"
-
- val KEY_FLINK_JVM_OFF_HEAP_MEMORY = "jobmanager.memory.off-heap.size"
-
val STREAMPARK_FLINKSQL_CLIENT_CLASS =
"org.apache.streampark.flink.cli.SqlClient"
def printLogo(info: String): Unit = {
// scalastyle:off println
println("\n")
- println(" _____ __ ____ __
")
- println(" / ___// /_________ ____ _____ ___ / __ \\____ ______/ /__
")
- println(" \\__ \\/ __/ ___/ _ \\/ __ `/ __ `__ \\/ /_/ / __ `/ ___/
//_/ ")
- println(" ___/ / /_/ / / __/ /_/ / / / / / / ____/ /_/ / / / ,<
")
- println(" /____/\\__/_/ \\___/\\__,_/_/ /_/ /_/_/ \\__,_/_/
/_/|_| \n\n")
- println(" Version: 1.2.4
")
- println(" WebSite: https://streampark.apache.org
")
- println(" GitHub : https://github.com/apache/streampark
")
+ println(" _____ __ __
")
+ println(" / ___// /_________ ____ _____ ___ ____ ____ ______/ /__
")
+ println(" \\__ \\/ __/ ___/ _ \\/ __ `/ __ `__ \\/ __ \\ __ `/ ___/
//_/")
+ println(" ___/ / /_/ / / __/ /_/ / / / / / / /_/ / /_/ / / / ,<
")
+ println(" /____/\\__/_/ \\___/\\__,_/_/ /_/ /_/ ____/\\__,_/_/
/_/|_| ")
+ println(" /_/
\n\n")
+ println(" Version: 1.2.4
")
+ println(" WebSite: https://streampark.apache.org
")
+ println(" GitHub : https://github.com/apache/streampark
")
println(s" Info : $info ")
println(s" Time : ${LocalDateTime.now} \n\n")
// scalastyle:on println
diff --git
a/streampark-console/streampark-console-service/src/assembly/bin/streampark.sh
b/streampark-console/streampark-console-service/src/assembly/bin/streampark.sh
index 046fd579f..d8d2806b2 100755
---
a/streampark-console/streampark-console-service/src/assembly/bin/streampark.sh
+++
b/streampark-console/streampark-console-service/src/assembly/bin/streampark.sh
@@ -253,11 +253,12 @@ fi
print_logo() {
printf '\n'
- printf ' %s _____ __ ____ __
%s\n' $PRIMARY $RESET
- printf ' %s / ___// /_________ ____ _____ ___ / __ \____ ______/
/__ %s\n' $PRIMARY $RESET
- printf ' %s \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ /_/ / __ `/ ___/
//_/ %s\n' $PRIMARY $RESET
- printf ' %s ___/ / /_/ / / __/ /_/ / / / / / / ____/ /_/ / / / ,<
%s\n' $PRIMARY $RESET
- printf ' %s /____/\__/_/ \___/\__,_/_/ /_/ /_/_/ \__,_/_/ /_/|_|
%s\n\n' $PRIMARY $RESET
+ printf ' %s _____ __ __
%s\n' $PRIMARY $RESET
+ printf ' %s / ___// /_________ ____ _____ ___ ____ ____ ______/
/__ %s\n' $PRIMARY $RESET
+ printf ' %s \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ __ \ __ `/ ___/
//_/ %s\n' $PRIMARY $RESET
+ printf ' %s ___/ / /_/ / / __/ /_/ / / / / / / /_/ / /_/ / / / ,<
%s\n' $PRIMARY $RESET
+ printf ' %s /____/\__/_/ \___/\__,_/_/ /_/ /_/ ____/\__,_/_/ /_/|_|
%s\n' $PRIMARY $RESET
+ printf ' %s /_/
%s\n\n' $PRIMARY $RESET
printf ' %s Version: 1.2.4 %s\n'
$BLUE $RESET
printf ' %s WebSite: https://streampark.apache.org%s\n'
$BLUE $RESET
printf ' %s GitHub : http://github.com/apache/streampark%s\n\n'
$BLUE $RESET
diff --git
a/streampark-console/streampark-console-service/src/assembly/script/data/mysql-data.sql
b/streampark-console/streampark-console-service/src/assembly/script/data/mysql-data.sql
index 30c16a36a..9829c036c 100644
---
a/streampark-console/streampark-console-service/src/assembly/script/data/mysql-data.sql
+++
b/streampark-console/streampark-console-service/src/assembly/script/data/mysql-data.sql
@@ -157,11 +157,11 @@ insert into `t_setting` values (15,
'docker.register.namespace', null, 'Namespac
-- ----------------------------
-- Records of t_user
-- ----------------------------
-insert into `t_user` values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
'1', now(), now(),null,0,null,null );
+insert into `t_user` values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
null, '1', now(), now(),null,0,null,null);
-- ----------------------------
--- Records of t_user_role
+-- Records of t_member
-- ----------------------------
-insert into `t_user_role` values (100000, 100000, 100000, 100001, now(),
now());
+insert into `t_member` values (100000, 100000, 100000, 100001, now(), now());
set foreign_key_checks = 1;
diff --git
a/streampark-console/streampark-console-service/src/assembly/script/data/pgsql-data.sql
b/streampark-console/streampark-console-service/src/assembly/script/data/pgsql-data.sql
index 88ba165ee..6560bd8db 100644
---
a/streampark-console/streampark-console-service/src/assembly/script/data/pgsql-data.sql
+++
b/streampark-console/streampark-console-service/src/assembly/script/data/pgsql-data.sql
@@ -154,9 +154,9 @@ insert into "public"."t_setting" values (15,
'docker.register.namespace', null,
-- ----------------------------
-- Records of t_user
-- ----------------------------
-insert into "public"."t_user" values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
'1', now(), now(), null, 0, null, null);
+insert into "public"."t_user" values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
null, '1', now(), now(), null, 0, null, null);
-- ----------------------------
--- Records of t_user_role
+-- Records of t_member
-- ----------------------------
-insert into "public"."t_user_role" values (100000, 100000, 100000, 100001,
now(), now());
+insert into "public"."t_member" values (100000, 100000, 100000, 100001, now(),
now());
diff --git
a/streampark-console/streampark-console-service/src/assembly/script/schema/mysql-schema.sql
b/streampark-console/streampark-console-service/src/assembly/script/schema/mysql-schema.sql
index 8cab0867e..7b9f134b2 100644
---
a/streampark-console/streampark-console-service/src/assembly/script/schema/mysql-schema.sql
+++
b/streampark-console/streampark-console-service/src/assembly/script/schema/mysql-schema.sql
@@ -375,6 +375,7 @@ create table `t_user` (
`password` varchar(128) collate utf8mb4_general_ci not null comment
'password',
`email` varchar(128) collate utf8mb4_general_ci default null comment 'email',
`user_type` int not null comment 'user type 1:admin 2:user',
+ `team_id` bigint default null comment 'latest team id',
`status` char(1) collate utf8mb4_general_ci not null comment 'status
0:locked 1:active',
`create_time` datetime not null default current_timestamp comment 'create
time',
`modify_time` datetime not null default current_timestamp on update
current_timestamp comment 'modify time',
@@ -388,10 +389,10 @@ create table `t_user` (
-- ----------------------------
--- Table structure for t_user_role
+-- Table structure for t_member
-- ----------------------------
-drop table if exists `t_user_role`;
-create table `t_user_role` (
+drop table if exists `t_member`;
+create table `t_member` (
`id` bigint not null auto_increment,
`team_id` bigint not null comment 'team id',
`user_id` bigint not null comment 'user id',
diff --git
a/streampark-console/streampark-console-service/src/assembly/script/schema/pgsql-schema.sql
b/streampark-console/streampark-console-service/src/assembly/script/schema/pgsql-schema.sql
index e13ec3687..e121df21e 100644
---
a/streampark-console/streampark-console-service/src/assembly/script/schema/pgsql-schema.sql
+++
b/streampark-console/streampark-console-service/src/assembly/script/schema/pgsql-schema.sql
@@ -20,7 +20,7 @@
-- ----------------------------
drop table if exists "public"."t_user";
-drop table if exists "public"."t_user_role";
+drop table if exists "public"."t_member";
drop table if exists "public"."t_setting";
drop table if exists "public"."t_role";
drop table if exists "public"."t_role_menu";
@@ -47,7 +47,7 @@ drop table if exists "public"."t_team";
-- drop sequence if exists
-- ----------------------------
drop sequence if exists "public"."streampark_t_user_id_seq";
-drop sequence if exists "public"."streampark_t_user_role_id_seq";
+drop sequence if exists "public"."streampark_t_member_id_seq";
drop sequence if exists "public"."streampark_t_role_id_seq";
drop sequence if exists "public"."streampark_t_role_menu_id_seq";
drop sequence if exists "public"."streampark_t_menu_id_seq";
@@ -675,6 +675,7 @@ create table "public"."t_user" (
"password" varchar(128) collate "pg_catalog"."default" not null,
"email" varchar(128) collate "pg_catalog"."default",
"user_type" int4,
+ "team_id" int8,
"status" int2,
"create_time" timestamp(6) not null default timezone('UTC-8'::text,
(now())::timestamp(0) without time zone),
"modify_time" timestamp(6) not null default timezone('UTC-8'::text,
(now())::timestamp(0) without time zone),
@@ -691,6 +692,7 @@ comment on column "public"."t_user"."salt" is 'salt';
comment on column "public"."t_user"."password" is 'password';
comment on column "public"."t_user"."email" is 'email';
comment on column "public"."t_user"."user_type" is 'user type 1:admin 2:user';
+comment on column "public"."t_user"."team_id" is 'latest team id';
comment on column "public"."t_user"."status" is 'status 0:locked 1:active';
comment on column "public"."t_user"."create_time" is 'creation time';
comment on column "public"."t_user"."modify_time" is 'change time';
@@ -705,13 +707,13 @@ create index "un_username" on "public"."t_user" using
btree (
-- ----------------------------
--- table structure for t_user_role
+-- table structure for t_member
-- ----------------------------
-create sequence "public"."streampark_t_user_role_id_seq"
+create sequence "public"."streampark_t_member_id_seq"
increment 1 start 10000 cache 1 minvalue 10000 maxvalue
9223372036854775807;
-create table "public"."t_user_role" (
- "id" int8 not null default
nextval('streampark_t_user_role_id_seq'::regclass),
+create table "public"."t_member" (
+ "id" int8 not null default nextval('streampark_t_member_id_seq'::regclass),
"team_id" int8,
"user_id" int8,
"role_id" int8,
@@ -719,11 +721,11 @@ create table "public"."t_user_role" (
"modify_time" timestamp(6) not null default timezone('UTC-8'::text,
(now())::timestamp(0) without time zone)
)
;
-comment on column "public"."t_user_role"."team_id" is 'team id';
-comment on column "public"."t_user_role"."user_id" is 'user id';
-comment on column "public"."t_user_role"."role_id" is 'role id';
-alter table "public"."t_user_role" add constraint "t_user_role_pkey" primary
key ("id");
-create index "un_user_role_inx" on "public"."t_user_role" using btree (
+comment on column "public"."t_member"."team_id" is 'team id';
+comment on column "public"."t_member"."user_id" is 'user id';
+comment on column "public"."t_member"."role_id" is 'role id';
+alter table "public"."t_member" add constraint "t_member_pkey" primary key
("id");
+create index "un_user_role_inx" on "public"."t_member" using btree (
"team_id" "pg_catalog"."int8_ops" asc nulls last,
"user_id" "pg_catalog"."int8_ops" asc nulls last,
"role_id" "pg_catalog"."int8_ops" asc nulls last
diff --git
a/streampark-console/streampark-console-service/src/assembly/script/upgrade/mysql/1.2.4.sql
b/streampark-console/streampark-console-service/src/assembly/script/upgrade/mysql/1.2.4.sql
index 5eb853c54..ffe62ece1 100644
---
a/streampark-console/streampark-console-service/src/assembly/script/upgrade/mysql/1.2.4.sql
+++
b/streampark-console/streampark-console-service/src/assembly/script/upgrade/mysql/1.2.4.sql
@@ -149,4 +149,11 @@ alter table `t_user`
modify `username` varchar(255) collate utf8mb4_general_ci not null comment
'user name',
add unique key `un_username` (`username`) using btree;
+-- add team_id for t_user;
+alter table `t_user` add column `team_id` bigint default null comment 'latest
team id' after `user_type`;
+
+-- alter t_role_user to t_member
+alter table t_user_role rename t_member;
+
set foreign_key_checks = 1;
+
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/StreamParkConsoleBootstrap.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/StreamParkConsoleBootstrap.java
index 5b23c4b97..849833f54 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/StreamParkConsoleBootstrap.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/StreamParkConsoleBootstrap.java
@@ -31,12 +31,12 @@ import java.io.File;
/**
* <pre>
*
- * _____ __ ____ __
- * / ___// /_________ ____ _____ ___ / __ \____ ______/ /__
- * \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ /_/ / __ `/ ___/ //_/
- * ___/ / /_/ / / __/ /_/ / / / / / / ____/ /_/ / / / ,<
- * /____/\__/_/ \___/\__,_/_/ /_/ /_/_/ \__,_/_/ /_/|_|
- *
+ * _____ __ __
+ * / ___// /_________ ____ _____ ___ ____ ____ ______/ /__
+ * \__ \/ __/ ___/ _ \/ __ `/ __ `__ \/ __ \ __ `/ ___/ //_/
+ * ___/ / /_/ / / __/ /_/ / / / / / / /_/ / /_/ / / / ,<
+ * /____/\__/_/ \___/\__,_/_/ /_/ /_/ ____/\__,_/_/ /_/|_|
+ * /_/
*
* WebSite: https://streampark.apache.org
* GitHub : https://github.com/apache/streampark
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/domain/ResponseCode.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/domain/ResponseCode.java
index b18e23b55..cc3b0385d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/domain/ResponseCode.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/domain/ResponseCode.java
@@ -23,6 +23,9 @@ public interface ResponseCode {
Long CODE_FAIL = 500L;
- Long CODE_API_FAIL = 501L;
+ Long CODE_FORBIDDEN = 403L;
+ Long CODE_FAIL_ALERT = 501L;
+
+ Long CODE_FAIL_DETAIL = 502L;
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/AlertException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/AlertException.java
index 5e807d649..4a761a58f 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/AlertException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/AlertException.java
@@ -17,11 +17,17 @@
package org.apache.streampark.console.base.exception;
-public class AlertException extends ApiException {
+import org.apache.streampark.common.util.ExceptionUtils;
+
+public class AlertException extends ApiAlertException {
public AlertException(String message) {
super(message);
}
+ public AlertException(Throwable cause) {
+ super(ExceptionUtils.stringifyException(cause));
+ }
+
public AlertException(String message, Throwable cause) {
super(message, cause);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiAlertException.java
similarity index 67%
copy from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
copy to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiAlertException.java
index 82ca05f37..9c7eff6ca 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiAlertException.java
@@ -18,21 +18,25 @@
package org.apache.streampark.console.base.exception;
/**
- * api business exceptions, as different from internal errors, need to return
a friendly message
+ * <pre>
+ * An exception message that needs to be notified to front-end,
+ * usually a <strong>simple</strong>, clear</strong> message, e.g:
+ * <p>1. Username already exists</p>
+ * <p>2. No permission, please contact the administrator</p>
+ * ...
+ * </pre>
*/
-public class ApiException extends RuntimeException {
+public class ApiAlertException extends RuntimeException {
- private static final long serialVersionUID = -994962710559017255L;
-
- public ApiException(String message) {
+ public ApiAlertException(String message) {
super(message);
}
- public ApiException(Throwable cause) {
+ public ApiAlertException(Throwable cause) {
super(cause);
}
- public ApiException(String message, Throwable cause) {
+ public ApiAlertException(String message, Throwable cause) {
super(message, cause);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiDetailException.java
similarity index 56%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiDetailException.java
index 82ca05f37..2d2eb168d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApiDetailException.java
@@ -17,23 +17,28 @@
package org.apache.streampark.console.base.exception;
+import org.apache.streampark.common.util.ExceptionUtils;
+
/**
- * api business exceptions, as different from internal errors, need to return
a friendly message
+ * <pre>
+ * An exception message that needs to be notified to front-end,
+ * is a detailed exception message,such as the stackTrace info,
+ * often accompanied by a large number of exception logs, e.g:
+ * <p>1. Failed to start job, need to display the exception(stackTrace info)
to front-end</p>
+ * </pre>
*/
-public class ApiException extends RuntimeException {
-
- private static final long serialVersionUID = -994962710559017255L;
+public class ApiDetailException extends RuntimeException {
- public ApiException(String message) {
+ public ApiDetailException(String message) {
super(message);
}
- public ApiException(Throwable cause) {
- super(cause);
+ public ApiDetailException(Throwable cause) {
+ super(ExceptionUtils.stringifyException(cause));
}
- public ApiException(String message, Throwable cause) {
- super(message, cause);
+ public ApiDetailException(String message, Throwable cause) {
+ super(message + ExceptionUtils.stringifyException(cause));
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApplicationException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApplicationException.java
index 4be7b1218..c3e22ff8a 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApplicationException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/ApplicationException.java
@@ -17,17 +17,13 @@
package org.apache.streampark.console.base.exception;
-public class ApplicationException extends ApiException {
+public class ApplicationException extends ApiAlertException {
public ApplicationException(String message) {
super(message);
}
public ApplicationException(Throwable cause) {
- super(cause);
- }
-
- public ApplicationException(String message, Throwable cause) {
- super(message, cause);
+ super(cause.getMessage());
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/IllegalFileTypeException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/IllegalFileTypeException.java
index de8028c84..6bb3fbdf4 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/IllegalFileTypeException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/IllegalFileTypeException.java
@@ -17,7 +17,7 @@
package org.apache.streampark.console.base.exception;
-public class IllegalFileTypeException extends ApiException {
+public class IllegalFileTypeException extends ApiAlertException {
public IllegalFileTypeException(String message) {
super(message);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/InternalException.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/InternalException.java
index 671e0d5c2..b8f0cfdaa 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/InternalException.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/exception/InternalException.java
@@ -22,8 +22,6 @@ package org.apache.streampark.console.base.exception;
*/
public class InternalException extends Exception {
- private static final long serialVersionUID = -994962710559017255L;
-
public InternalException(String message) {
super(message);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/handler/GlobalExceptionHandler.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/handler/GlobalExceptionHandler.java
index 699c27ab2..55bc2158f 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/handler/GlobalExceptionHandler.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/handler/GlobalExceptionHandler.java
@@ -19,7 +19,8 @@ package org.apache.streampark.console.base.handler;
import org.apache.streampark.console.base.domain.ResponseCode;
import org.apache.streampark.console.base.domain.RestResponse;
-import org.apache.streampark.console.base.exception.ApiException;
+import org.apache.streampark.console.base.exception.ApiAlertException;
+import org.apache.streampark.console.base.exception.ApiDetailException;
import org.apache.streampark.console.base.exception.InternalException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
@@ -69,13 +70,21 @@ public class GlobalExceptionHandler {
return RestResponse.fail("not supported request method,exception:" +
e.getMessage(), ResponseCode.CODE_FAIL);
}
- @ExceptionHandler(value = ApiException.class)
+ @ExceptionHandler(value = ApiAlertException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
- public RestResponse handleException(ApiException e) {
+ public RestResponse handleException(ApiAlertException e) {
log.info("api exception:{}", e.getMessage());
- return RestResponse.fail("api fail, exception:\n" + e.getMessage(),
ResponseCode.CODE_API_FAIL);
+ return RestResponse.fail(e.getMessage(), ResponseCode.CODE_FAIL_ALERT);
}
+ @ExceptionHandler(value = ApiDetailException.class)
+ @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
+ public RestResponse handleException(ApiDetailException e) {
+ log.info("detail exception:{}", e.getMessage());
+ return RestResponse.fail("exception detail:\n" + e.getMessage(),
ResponseCode.CODE_FAIL_DETAIL);
+ }
+
+
/**
* Unified processing of request parameter verification (entity object
parameter transfer)
*
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
index de04b08f6..80bfc725a 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/controller/ApplicationController.java
@@ -17,7 +17,6 @@
package org.apache.streampark.console.core.controller;
-import org.apache.streampark.common.util.AssertUtils;
import org.apache.streampark.common.util.Utils;
import org.apache.streampark.common.util.YarnUtils;
import org.apache.streampark.console.base.domain.ApiDocConstant;
@@ -59,7 +58,6 @@ import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.net.URI;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -98,7 +96,6 @@ public class ApplicationController {
@PostMapping("create")
@RequiresPermissions("app:create")
public RestResponse create(Application app) throws IOException {
- AssertUtils.checkArgument(app.getTeamId() != null, "The teamId cannot
be null");
boolean saved = applicationService.create(app);
return RestResponse.success(saved);
}
@@ -135,11 +132,7 @@ public class ApplicationController {
@PostMapping("list")
@RequiresPermissions("app:view")
public RestResponse list(Application app, RestRequest request) {
- if (app.getTeamId() == null) {
- return RestResponse.success(Collections.emptyList());
- }
IPage<Application> applicationList = applicationService.page(app,
request);
-
List<Application> appRecords = applicationList.getRecords();
List<Long> appIds =
appRecords.stream().map(Application::getId).collect(Collectors.toList());
Map<Long, PipelineStatus> pipeStates =
appBuildPipeService.listPipelineStatus(appIds);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkEnv.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkEnv.java
index d0df7b57a..a699fc67e 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkEnv.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/FlinkEnv.java
@@ -20,7 +20,7 @@ package org.apache.streampark.console.core.entity;
import org.apache.streampark.common.domain.FlinkVersion;
import org.apache.streampark.common.util.DeflaterUtils;
import org.apache.streampark.common.util.PropertiesUtils;
-import org.apache.streampark.console.base.exception.ApiException;
+import org.apache.streampark.console.base.exception.ApiDetailException;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -64,13 +64,13 @@ public class FlinkEnv implements Serializable {
private transient String streamParkScalaVersion =
scala.util.Properties.versionNumberString();
- public void doSetFlinkConf() throws ApiException {
+ public void doSetFlinkConf() throws ApiDetailException {
try {
File yaml = new
File(this.flinkHome.concat("/conf/flink-conf.yaml"));
String flinkConf = FileUtils.readFileToString(yaml);
this.flinkConf = DeflaterUtils.zipString(flinkConf);
} catch (Exception e) {
- throw new ApiException(e);
+ throw new ApiDetailException(e);
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/CommonService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/CommonService.java
index 188ee25be..cd57561f5 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/CommonService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/CommonService.java
@@ -24,5 +24,8 @@ public interface CommonService {
User getCurrentUser();
+ Long getUserId();
+
String getSqlClientJar(FlinkEnv flinkEnv);
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
index 06ee06a22..10cb85b7d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/AppBuildPipeServiceImpl.java
@@ -260,7 +260,7 @@ public class AppBuildPipeServiceImpl
} else {
Message message = new Message(
- commonService.getCurrentUser().getUserId(),
+ commonService.getUserId(),
app.getId(),
app.getJobName().concat(" launch failed"),
ExceptionUtils.stringifyException(snapshot.error().exception()),
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
index d21968e73..febe1e1b3 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ApplicationServiceImpl.java
@@ -461,6 +461,9 @@ public class ApplicationServiceImpl extends
ServiceImpl<ApplicationMapper, Appli
@Override
public IPage<Application> page(Application appParam, RestRequest request) {
+ if (appParam.getTeamId() == null) {
+ return null;
+ }
Page<Application> page = new
MybatisPager<Application>().getDefaultPage(request);
if (CommonUtils.notEmpty(appParam.getStateArray())) {
if (Arrays.stream(appParam.getStateArray()).anyMatch(x -> x ==
FlinkAppState.FINISHED.getValue())) {
@@ -573,7 +576,8 @@ public class ApplicationServiceImpl extends
ServiceImpl<ApplicationMapper, Appli
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean create(Application appParam) {
- appParam.setUserId(commonService.getCurrentUser().getUserId());
+ AssertUtils.checkArgument(appParam.getTeamId() != null, "The teamId
cannot be null");
+ appParam.setUserId(commonService.getUserId());
appParam.setState(FlinkAppState.ADDED.getValue());
appParam.setLaunch(LaunchState.NEED_LAUNCH.get());
appParam.setOptionState(OptionState.NONE.getValue());
@@ -648,7 +652,7 @@ public class ApplicationServiceImpl extends
ServiceImpl<ApplicationMapper, Appli
newApp.setModule(oldApp.getModule());
newApp.setDefaultModeIngress(oldApp.getDefaultModeIngress());
- newApp.setUserId(commonService.getCurrentUser().getUserId());
+ newApp.setUserId(commonService.getUserId());
newApp.setState(FlinkAppState.ADDED.getValue());
newApp.setLaunch(LaunchState.NEED_LAUNCH.get());
newApp.setOptionState(OptionState.NONE.getValue());
@@ -1071,7 +1075,7 @@ public class ApplicationServiceImpl extends
ServiceImpl<ApplicationMapper, Appli
}
}
- Long userId = commonService.getCurrentUser().getUserId();
+ Long userId = commonService.getUserId();
if (!application.getUserId().equals(userId)) {
FlinkTrackingTask.addCanceledApp(application.getId(), userId);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/CommonServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/CommonServiceImpl.java
index a60172399..e844af15d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/CommonServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/CommonServiceImpl.java
@@ -17,7 +17,7 @@
package org.apache.streampark.console.core.service.impl;
-import org.apache.streampark.console.base.exception.ApiException;
+import org.apache.streampark.console.base.exception.ApiAlertException;
import org.apache.streampark.console.base.util.WebUtils;
import org.apache.streampark.console.core.entity.FlinkEnv;
import org.apache.streampark.console.core.service.CommonService;
@@ -50,21 +50,30 @@ public class CommonServiceImpl implements CommonService {
return userService.findByName(username);
}
+ @Override
+ public Long getUserId() {
+ User user = getCurrentUser();
+ if (user != null) {
+ return user.getUserId();
+ }
+ return null;
+ }
+
@Override
public String getSqlClientJar(FlinkEnv flinkEnv) {
if (sqlClientJar == null) {
File localClient = WebUtils.getAppClientDir();
if (!localClient.exists()) {
- throw new ApiException("[StreamPark] " + localClient + " no
exists. please check.");
+ throw new ApiAlertException("[StreamPark] " + localClient + "
no exists. please check.");
}
List<String> jars =
Arrays.stream(Objects.requireNonNull(localClient.list())).filter(x ->
x.matches("streampark-flink-sqlclient_" + flinkEnv.getScalaVersion() +
"-.*\\.jar"))
.collect(Collectors.toList());
if (jars.isEmpty()) {
- throw new ApiException("[StreamPark] can no found
streampark-flink-sqlclient jar in " + localClient);
+ throw new ApiAlertException("[StreamPark] can no found
streampark-flink-sqlclient jar in " + localClient);
}
if (jars.size() > 1) {
- throw new ApiException("[StreamPark] found multiple
streampark-flink-sqlclient jar in " + localClient);
+ throw new ApiAlertException("[StreamPark] found multiple
streampark-flink-sqlclient jar in " + localClient);
}
sqlClientJar = jars.get(0);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
index 648f7c4d3..ab7626eba 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/FlinkClusterServiceImpl.java
@@ -120,7 +120,7 @@ public class FlinkClusterServiceImpl extends
ServiceImpl<FlinkClusterMapper, Fli
return result;
}
}
- flinkCluster.setUserId(commonService.getCurrentUser().getUserId());
+ flinkCluster.setUserId(commonService.getUserId());
flinkCluster.setCreateTime(new Date());
// remote mode directly set STARTED
if (ExecutionMode.REMOTE.equals(flinkCluster.getExecutionModeEnum())) {
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
index 2df3a5a1b..840edc6eb 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/AccessTokenController.java
@@ -24,7 +24,6 @@ import
org.apache.streampark.console.base.exception.InternalException;
import org.apache.streampark.console.core.enums.AccessTokenState;
import org.apache.streampark.console.core.service.CommonService;
import org.apache.streampark.console.system.entity.AccessToken;
-import org.apache.streampark.console.system.entity.User;
import org.apache.streampark.console.system.service.AccessTokenService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -60,10 +59,10 @@ public class AccessTokenController {
@PostMapping(value = "check")
public RestResponse checkToken() {
- User user = commonService.getCurrentUser();
+ Long userId = commonService.getUserId();
RestResponse restResponse = RestResponse.success();
- if (user != null) {
- AccessToken accessToken =
accessTokenService.getByUserId(user.getUserId());
+ if (userId != null) {
+ AccessToken accessToken = accessTokenService.getByUserId(userId);
if (accessToken == null) {
restResponse.data(AccessTokenState.NULL.get());
} else if
(AccessToken.STATUS_DISABLE.equals(accessToken.getFinalStatus())) {
@@ -117,11 +116,9 @@ public class AccessTokenController {
String resultCURL = null;
CURLBuilder curlBuilder = new CURLBuilder(baseUrl + path);
- User user = commonService.getCurrentUser();
-
curlBuilder
.addHeader("Content-Type", "application/x-www-form-urlencoded;
charset=UTF-8")
- .addHeader("Authorization",
accessTokenService.getByUserId(user.getUserId()).getToken());
+ .addHeader("Authorization",
accessTokenService.getByUserId(commonService.getUserId()).getToken());
if ("/flink/app/start".equalsIgnoreCase(path)) {
resultCURL = curlBuilder
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamMemberController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MemberController.java
similarity index 68%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamMemberController.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MemberController.java
index c870bf49f..505709cc7 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/TeamMemberController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/MemberController.java
@@ -19,9 +19,9 @@ package org.apache.streampark.console.system.controller;
import org.apache.streampark.console.base.domain.RestRequest;
import org.apache.streampark.console.base.domain.RestResponse;
+import org.apache.streampark.console.system.entity.Member;
import org.apache.streampark.console.system.entity.Team;
-import org.apache.streampark.console.system.entity.TeamMember;
-import org.apache.streampark.console.system.service.TeamMemberService;
+import org.apache.streampark.console.system.service.MemberService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
@@ -43,48 +43,47 @@ import java.util.List;
@Validated
@RestController
@RequestMapping("member")
-public class TeamMemberController {
+public class MemberController {
@Autowired
- private TeamMemberService teamMemberService;
+ private MemberService memberService;
@PostMapping("list")
- public RestResponse memberList(RestRequest restRequest, TeamMember
teamMember) {
- IPage<TeamMember> userList = teamMemberService.findUsers(teamMember,
restRequest);
+ public RestResponse memberList(RestRequest restRequest, Member member) {
+ IPage<Member> userList = memberService.findUsers(member, restRequest);
return RestResponse.success(userList);
}
@PostMapping("teams")
public RestResponse listTeams(Long userId) {
- List<Team> teamList = teamMemberService.findUserTeams(userId);
+ List<Team> teamList = memberService.findUserTeams(userId);
return RestResponse.success(teamList);
}
@PostMapping("check/user")
- public RestResponse checkTeamUser(@NotBlank(message = "{required}") Long
teamId,
- @NotBlank(message = "{required}") String
userName) {
- TeamMember result =
this.teamMemberService.findByTeamAndUserName(teamId, userName);
+ public RestResponse check(@NotBlank(message = "{required}")Long teamId,
String userName) {
+ Member result = this.memberService.findByUserName(teamId, userName);
return RestResponse.success(result == null);
}
@PostMapping("post")
@RequiresPermissions("member:add")
- public RestResponse addUserTeamRole(@Valid TeamMember teamMember) {
- this.teamMemberService.createTeamMember(teamMember);
+ public RestResponse create(@Valid Member member) {
+ this.memberService.createMember(member);
return RestResponse.success();
}
@DeleteMapping("delete")
@RequiresPermissions("member:delete")
- public RestResponse deleteUserTeamRole(TeamMember teamMember) {
- this.teamMemberService.deleteTeamMember(teamMember);
+ public RestResponse delete(Member member) {
+ this.memberService.deleteMember(member);
return RestResponse.success();
}
@PutMapping("update")
@RequiresPermissions("member:update")
- public RestResponse updateUserTeamRole(TeamMember teamMember) {
- this.teamMemberService.updateTeamMember(teamMember);
+ public RestResponse update(Member member) {
+ this.memberService.updateMember(member);
return RestResponse.success();
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
index 850db34b2..405a91d3a 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/PassportController.java
@@ -18,6 +18,7 @@
package org.apache.streampark.console.system.controller;
import org.apache.streampark.common.util.DateUtils;
+import org.apache.streampark.console.base.domain.ResponseCode;
import org.apache.streampark.console.base.domain.RestResponse;
import org.apache.streampark.console.base.properties.ShiroProperties;
import org.apache.streampark.console.base.util.ShaHashUtils;
@@ -81,6 +82,13 @@ public class PassportController {
return RestResponse.success().put("code", 1);
}
+ userService.fillInTeam(user);
+
+ //no team.
+ if (user.getTeamId() == null) {
+ return RestResponse.success().data(user.getUserId()).put("code",
ResponseCode.CODE_FORBIDDEN);
+ }
+
password = ShaHashUtils.encrypt(user.getSalt(), password);
this.userService.updateLoginTime(username);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
index 5edf1e3ed..46a5183fc 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/controller/UserController.java
@@ -17,11 +17,16 @@
package org.apache.streampark.console.system.controller;
+import org.apache.streampark.console.base.domain.ResponseCode;
import org.apache.streampark.console.base.domain.RestRequest;
import org.apache.streampark.console.base.domain.RestResponse;
import org.apache.streampark.console.base.util.ShaHashUtils;
import org.apache.streampark.console.core.enums.UserType;
+import org.apache.streampark.console.core.service.CommonService;
+import org.apache.streampark.console.system.entity.Team;
import org.apache.streampark.console.system.entity.User;
+import org.apache.streampark.console.system.service.RoleService;
+import org.apache.streampark.console.system.service.TeamService;
import org.apache.streampark.console.system.service.UserService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -42,7 +47,10 @@ import
org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
@Slf4j
@Validated
@@ -53,6 +61,15 @@ public class UserController {
@Autowired
private UserService userService;
+ @Autowired
+ private TeamService teamService;
+
+ @Autowired
+ private RoleService roleService;
+
+ @Autowired
+ private CommonService commonService;
+
@PostMapping("detail")
public User detail(@NotBlank(message = "{required}") @PathVariable String
username) {
return this.userService.findByName(username);
@@ -149,4 +166,43 @@ public class UserController {
return RestResponse.success(UserType.values());
}
+ @PostMapping("initTeam")
+ public RestResponse initTeam(Long teamId, Long userId) {
+ Team team = teamService.getById(teamId);
+ if (team == null) {
+ return RestResponse.fail("teamId is invalid",
ResponseCode.CODE_FAIL_ALERT);
+ }
+ userService.setLatestTeam(teamId, userId);
+ return RestResponse.success();
+ }
+
+ @PostMapping("setTeam")
+ public RestResponse setTeam(Long teamId) {
+ Team team = teamService.getById(teamId);
+ if (team == null) {
+ return RestResponse.fail("teamId is invalid",
ResponseCode.CODE_FAIL_ALERT);
+ }
+
+ User user = commonService.getCurrentUser();
+
+ //1) set latest team
+ userService.setLatestTeam(teamId, user.getUserId());
+
+ //2) get latest userInfo
+ user.setPassword("******");
+ user.setSalt("******");
+
+ Map<String, Object> infoMap = new HashMap<>(8);
+ infoMap.put("user", user);
+
+ String username = user.getUsername();
+ Set<String> roles = this.roleService.getUserRoleName(username);
+ infoMap.put("roles", roles);
+
+ Set<String> permissions = this.userService.getPermissions(username);
+ infoMap.put("permissions", permissions);
+
+ return new RestResponse().data(infoMap);
+ }
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/TeamMember.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/Member.java
similarity index 95%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/TeamMember.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/Member.java
index 6c185546f..b7e6d5ea5 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/TeamMember.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/Member.java
@@ -25,9 +25,9 @@ import lombok.Data;
import java.io.Serializable;
import java.util.Date;
-@TableName("t_user_role")
+@TableName("t_member")
@Data
-public class TeamMember implements Serializable {
+public class Member implements Serializable {
private static final long serialVersionUID = -3166012934498268403L;
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/User.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/User.java
index 4e0047602..6f7f0769f 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/User.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/entity/User.java
@@ -98,16 +98,8 @@ public class User implements Serializable {
private String nickName;
/**
- * shiro-redis v3.1.0 must have getAuthCacheKey() or getId() function #
Principal id field name.
- * The field which you can get unique id to identify this principal. # For
example, if you use UserInfo as
- * Principal class, the id field maybe userId, userName, email, etc. #
Remember to add getter to
- * this id field. For example, getUserId(), getUserName(), getEmail(),
etc. # Default value is
- * authCacheKey or id, that means your principal object has a method
called "getAuthCacheKey()" or
- * "getId()"
- *
- * @return userId as Principal id field name
+ * The last set teamId
*/
- public Long getAuthCacheKey() {
- return userId;
- }
+ private Long teamId;
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/TeamMemberMapper.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MemberMapper.java
similarity index 85%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/TeamMemberMapper.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MemberMapper.java
index 6c2bd7ed3..dad1c7dc7 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/TeamMemberMapper.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/mapper/MemberMapper.java
@@ -17,14 +17,14 @@
package org.apache.streampark.console.system.mapper;
-import org.apache.streampark.console.system.entity.TeamMember;
+import org.apache.streampark.console.system.entity.Member;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
-public interface TeamMemberMapper extends BaseMapper<TeamMember> {
+public interface MemberMapper extends BaseMapper<Member> {
/**
* delete role by user id
@@ -42,6 +42,6 @@ public interface TeamMemberMapper extends
BaseMapper<TeamMember> {
*/
Boolean deleteByRoleId(@Param("roleId") Long roleId);
- IPage<TeamMember> findUsers(Page<TeamMember> page, @Param("teamMember")
TeamMember teamMember);
+ IPage<Member> findUsers(Page<Member> page, @Param("member") Member member);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamMemberService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
similarity index 69%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamMemberService.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
index c4f057f31..3178f7376 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/TeamMemberService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/MemberService.java
@@ -18,31 +18,32 @@
package org.apache.streampark.console.system.service;
import org.apache.streampark.console.base.domain.RestRequest;
+import org.apache.streampark.console.system.entity.Member;
import org.apache.streampark.console.system.entity.Team;
-import org.apache.streampark.console.system.entity.TeamMember;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
-public interface TeamMemberService extends IService<TeamMember> {
+public interface MemberService extends IService<Member> {
- void deleteUserRolesByRoleId(String[] roleIds);
+ void deleteByRoleIds(String[] roleIds);
- void deleteUserRolesByUserId(String[] userIds);
+ void deleteByUserIds(String[] userIds);
- IPage<TeamMember> findUsers(TeamMember teamMember, RestRequest request);
+ IPage<Member> findUsers(Member member, RestRequest request);
List<Team> findUserTeams(Long userId);
- TeamMember findByTeamAndUserName(Long teamId, String userName);
+ Member findByUserName(Long teamId, String userName);
List<Long> findUserIdsByRoleId(Long roleId);
- void createTeamMember(TeamMember teamMember);
+ void createMember(Member member);
- void deleteTeamMember(TeamMember teamMember);
+ void deleteMember(Member member);
+
+ void updateMember(Member member);
- void updateTeamMember(TeamMember teamMember);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
index 61942b221..100a47e20 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/UserService.java
@@ -106,4 +106,9 @@ public interface UserService extends IService<User> {
Set<String> getPermissions(String username);
List<User> getNoTokenUser();
+
+ void setLatestTeam(Long teamId, Long userId);
+
+ void fillInTeam(User user);
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
index dd81629de..503cb3c5d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/AccessTokenServiceImpl.java
@@ -106,11 +106,11 @@ public class AccessTokenServiceImpl extends
ServiceImpl<AccessTokenMapper, Acces
public RestResponse toggleToken(Long tokenId) {
AccessToken tokenInfo = baseMapper.getById(tokenId);
if (Objects.isNull(tokenInfo)) {
- return RestResponse.fail("accessToken could not be found!",
ResponseCode.CODE_API_FAIL);
+ return RestResponse.fail("accessToken could not be found!",
ResponseCode.CODE_FAIL_ALERT);
}
if (User.STATUS_LOCK.equals(tokenInfo.getUserStatus())) {
- return RestResponse.fail("user status is locked, could not operate
this accessToken!", ResponseCode.CODE_API_FAIL);
+ return RestResponse.fail("user status is locked, could not operate
this accessToken!", ResponseCode.CODE_FAIL_ALERT);
}
Integer status =
tokenInfo.getStatus().equals(AccessToken.STATUS_ENABLE) ?
AccessToken.STATUS_DISABLE : AccessToken.STATUS_ENABLE;
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamMemberServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
similarity index 54%
rename from
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamMemberServiceImpl.java
rename to
streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
index 7ef26efef..8c8be1580 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamMemberServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/MemberServiceImpl.java
@@ -19,12 +19,13 @@ package org.apache.streampark.console.system.service.impl;
import org.apache.streampark.common.util.AssertUtils;
import org.apache.streampark.console.base.domain.RestRequest;
+import org.apache.streampark.console.core.service.CommonService;
+import org.apache.streampark.console.system.entity.Member;
import org.apache.streampark.console.system.entity.Team;
-import org.apache.streampark.console.system.entity.TeamMember;
import org.apache.streampark.console.system.entity.User;
-import org.apache.streampark.console.system.mapper.TeamMemberMapper;
+import org.apache.streampark.console.system.mapper.MemberMapper;
+import org.apache.streampark.console.system.service.MemberService;
import org.apache.streampark.console.system.service.RoleService;
-import org.apache.streampark.console.system.service.TeamMemberService;
import org.apache.streampark.console.system.service.TeamService;
import org.apache.streampark.console.system.service.UserService;
@@ -45,8 +46,8 @@ import java.util.stream.Collectors;
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true,
rollbackFor = Exception.class)
-public class TeamMemberServiceImpl extends ServiceImpl<TeamMemberMapper,
TeamMember>
- implements TeamMemberService {
+public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member>
+ implements MemberService {
@Autowired
private UserService userService;
@@ -57,25 +58,28 @@ public class TeamMemberServiceImpl extends
ServiceImpl<TeamMemberMapper, TeamMem
@Autowired
private TeamService teamService;
+ @Autowired
+ private CommonService commonService;
+
@Override
@Transactional
- public void deleteUserRolesByRoleId(String[] roleIds) {
+ public void deleteByRoleIds(String[] roleIds) {
Arrays.stream(roleIds).forEach(id ->
baseMapper.deleteByRoleId(Long.valueOf(id)));
}
@Override
@Transactional
- public void deleteUserRolesByUserId(String[] userIds) {
+ public void deleteByUserIds(String[] userIds) {
Arrays.stream(userIds).forEach(id ->
baseMapper.deleteByUserId(Long.valueOf(id)));
}
@Override
- public IPage<TeamMember> findUsers(TeamMember teamMember, RestRequest
request) {
- AssertUtils.isTrue(teamMember.getTeamId() != null, "The team id is
required.");
- Page<TeamMember> page = new Page<>();
+ public IPage<Member> findUsers(Member member, RestRequest request) {
+ AssertUtils.isTrue(member.getTeamId() != null, "The team id is
required.");
+ Page<Member> page = new Page<>();
page.setCurrent(request.getPageNum());
page.setSize(request.getPageSize());
- return baseMapper.findUsers(page, teamMember);
+ return baseMapper.findUsers(page, member);
}
@Override
@@ -84,62 +88,63 @@ public class TeamMemberServiceImpl extends
ServiceImpl<TeamMemberMapper, TeamMem
}
@Override
- public TeamMember findByTeamAndUserName(Long teamId, String userName) {
+ public Member findByUserName(Long teamId, String userName) {
User user = userService.findByName(userName);
if (user == null) {
return null;
}
- return findByTeamAndUserId(teamId, user.getUserId());
+ return findByUserId(teamId, user.getUserId());
}
- private TeamMember findByTeamAndUserId(Long teamId, Long userId) {
+ private Member findByUserId(Long teamId, Long userId) {
+ AssertUtils.isTrue(teamId != null, "The team id is required.");
return baseMapper.selectOne(
- new LambdaQueryWrapper<TeamMember>().eq(TeamMember::getTeamId,
teamId)
- .eq(TeamMember::getUserId, userId));
+ new LambdaQueryWrapper<Member>().eq(Member::getTeamId, teamId)
+ .eq(Member::getUserId, userId));
}
@Override
public List<Long> findUserIdsByRoleId(Long roleId) {
- List<TeamMember> list =
+ List<Member> list =
baseMapper.selectList(
- new LambdaQueryWrapper<TeamMember>().eq(TeamMember::getRoleId,
roleId));
+ new LambdaQueryWrapper<Member>().eq(Member::getRoleId,
roleId));
return list.stream()
- .map(TeamMember::getUserId)
+ .map(Member::getUserId)
.collect(Collectors.toList());
}
@Override
- public void createTeamMember(TeamMember teamMember) {
- User user =
Optional.ofNullable(userService.findByName(teamMember.getUserName()))
- .orElseThrow(() -> new IllegalArgumentException(String.format("The
username [%s] not found", teamMember.getUserName())));
- Optional.ofNullable(roleService.getById(teamMember.getRoleId()))
- .orElseThrow(() -> new IllegalArgumentException(String.format("The
roleId [%s] not found", teamMember.getRoleId())));
- Team team =
Optional.ofNullable(teamService.getById(teamMember.getTeamId()))
- .orElseThrow(() -> new IllegalArgumentException(String.format("The
teamId [%s] not found", teamMember.getTeamId())));
- AssertUtils.isTrue(findByTeamAndUserId(teamMember.getTeamId(),
user.getUserId()) == null,
- String.format("The user [%s] has been added the team [%s], please
don't add it again.", teamMember.getUserName(), team.getTeamName()));
-
- teamMember.setId(null);
- teamMember.setUserId(user.getUserId());
- teamMember.setCreateTime(new Date());
- teamMember.setModifyTime(team.getCreateTime());
- this.save(teamMember);
+ public void createMember(Member member) {
+ User user =
Optional.ofNullable(userService.findByName(member.getUserName()))
+ .orElseThrow(() -> new IllegalArgumentException(String.format("The
username [%s] not found", member.getUserName())));
+ Optional.ofNullable(roleService.getById(member.getRoleId()))
+ .orElseThrow(() -> new IllegalArgumentException(String.format("The
roleId [%s] not found", member.getRoleId())));
+ Team team =
Optional.ofNullable(teamService.getById(member.getTeamId()))
+ .orElseThrow(() -> new IllegalArgumentException(String.format("The
teamId [%s] not found", member.getTeamId())));
+ AssertUtils.isTrue(findByUserId(member.getTeamId(), user.getUserId())
== null,
+ String.format("The user [%s] has been added the team [%s], please
don't add it again.", member.getUserName(), team.getTeamName()));
+
+ member.setId(null);
+ member.setUserId(user.getUserId());
+ member.setCreateTime(new Date());
+ member.setModifyTime(team.getCreateTime());
+ this.save(member);
}
@Override
- public void deleteTeamMember(TeamMember teamMember) {
- this.removeById(teamMember);
+ public void deleteMember(Member member) {
+ this.removeById(member);
}
@Override
- public void updateTeamMember(TeamMember teamMember) {
- TeamMember oldTeamMember =
Optional.ofNullable(this.getById(teamMember.getId()))
- .orElseThrow(() -> new IllegalArgumentException(String.format("The
mapping [id=%s] not found", teamMember.getId())));
-
AssertUtils.isTrue(oldTeamMember.getTeamId().equals(teamMember.getTeamId()),
"Team id cannot be changed.");
-
AssertUtils.isTrue(oldTeamMember.getUserId().equals(teamMember.getUserId()),
"User id cannot be changed.");
- Optional.ofNullable(roleService.getById(teamMember.getRoleId()))
- .orElseThrow(() -> new IllegalArgumentException(String.format("The
roleId [%s] not found", teamMember.getRoleId())));
- oldTeamMember.setRoleId(teamMember.getRoleId());
- updateById(oldTeamMember);
+ public void updateMember(Member member) {
+ Member oldMember = Optional.ofNullable(this.getById(member.getId()))
+ .orElseThrow(() -> new IllegalArgumentException(String.format("The
mapping [id=%s] not found", member.getId())));
+ AssertUtils.isTrue(oldMember.getTeamId().equals(member.getTeamId()),
"Team id cannot be changed.");
+ AssertUtils.isTrue(oldMember.getUserId().equals(member.getUserId()),
"User id cannot be changed.");
+ Optional.ofNullable(roleService.getById(member.getRoleId()))
+ .orElseThrow(() -> new IllegalArgumentException(String.format("The
roleId [%s] not found", member.getRoleId())));
+ oldMember.setRoleId(member.getRoleId());
+ updateById(oldMember);
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
index 5b9df32b7..912002a46 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/RoleServiceImpl.java
@@ -24,9 +24,9 @@ import org.apache.streampark.console.system.entity.Role;
import org.apache.streampark.console.system.entity.RoleMenu;
import org.apache.streampark.console.system.mapper.RoleMapper;
import org.apache.streampark.console.system.mapper.RoleMenuMapper;
+import org.apache.streampark.console.system.service.MemberService;
import org.apache.streampark.console.system.service.RoleMenuServie;
import org.apache.streampark.console.system.service.RoleService;
-import org.apache.streampark.console.system.service.TeamMemberService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -56,7 +56,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper,
Role> implements Ro
private RoleMenuMapper roleMenuMapper;
@Autowired
- private TeamMemberService teamMemberService;
+ private MemberService memberService;
@Autowired
private RoleMenuServie roleMenuService;
@@ -98,7 +98,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper,
Role> implements Ro
public void deleteRole(Long roleId) {
Role role = Optional.ofNullable(this.getById(roleId))
.orElseThrow(() -> new
IllegalArgumentException(String.format("Role id [%s] not found", roleId)));
- List<Long> userIdsByRoleId =
teamMemberService.findUserIdsByRoleId(roleId);
+ List<Long> userIdsByRoleId = memberService.findUserIdsByRoleId(roleId);
AssertUtils.isTrue(userIdsByRoleId == null ||
userIdsByRoleId.isEmpty(),
String.format("There are some users are bound to role %s , please
unbind it first.", role.getRoleName()));
this.removeById(roleId);
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
index 46ccc8c94..c69593e5e 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/TeamServiceImpl.java
@@ -99,4 +99,5 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper,
Team> implements Te
}
return baseMapper.findUserTeams(userId);
}
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
index 1aa814edf..7a2613e69 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/system/service/impl/UserServiceImpl.java
@@ -19,14 +19,17 @@ package org.apache.streampark.console.system.service.impl;
import org.apache.streampark.common.util.AssertUtils;
import org.apache.streampark.console.base.domain.RestRequest;
+import org.apache.streampark.console.base.exception.ApiAlertException;
import org.apache.streampark.console.base.util.ShaHashUtils;
+import org.apache.streampark.console.core.service.CommonService;
+import org.apache.streampark.console.system.entity.Member;
import org.apache.streampark.console.system.entity.Menu;
-import org.apache.streampark.console.system.entity.TeamMember;
+import org.apache.streampark.console.system.entity.Team;
import org.apache.streampark.console.system.entity.User;
import org.apache.streampark.console.system.mapper.UserMapper;
+import org.apache.streampark.console.system.service.MemberService;
import org.apache.streampark.console.system.service.MenuService;
-import org.apache.streampark.console.system.service.RoleService;
-import org.apache.streampark.console.system.service.TeamMemberService;
+import org.apache.streampark.console.system.service.TeamService;
import org.apache.streampark.console.system.service.UserService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -34,6 +37,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -52,13 +56,16 @@ import java.util.stream.Collectors;
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements
UserService {
@Autowired
- private TeamMemberService teamMemberService;
+ private MemberService memberService;
@Autowired
- private RoleService roleService;
+ private MenuService menuService;
@Autowired
- private MenuService menuService;
+ private CommonService commonService;
+
+ @Autowired
+ private TeamService teamService;
@Override
public User findByName(String username) {
@@ -81,7 +88,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,
User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void updateLoginTime(String username) throws Exception {
+ public void updateLoginTime(String username) {
User user = new User();
user.setLastLoginTime(new Date());
this.baseMapper.update(user, new
LambdaQueryWrapper<User>().eq(User::getUsername, username));
@@ -89,7 +96,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,
User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void createUser(User user) throws Exception {
+ public void createUser(User user) {
user.setCreateTime(new Date());
user.setAvatar(User.DEFAULT_AVATAR);
String salt = ShaHashUtils.getRandomSalt();
@@ -101,7 +108,7 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void updateUser(User user) throws Exception {
+ public void updateUser(User user) {
user.setPassword(null);
user.setModifyTime(new Date());
updateById(user);
@@ -109,21 +116,21 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void deleteUsers(String[] userIds) throws Exception {
+ public void deleteUsers(String[] userIds) {
List<String> list = Arrays.asList(userIds);
removeByIds(list);
- this.teamMemberService.deleteUserRolesByUserId(userIds);
+ this.memberService.deleteByUserIds(userIds);
}
@Override
@Transactional(rollbackFor = Exception.class)
- public void updateProfile(User user) throws Exception {
+ public void updateProfile(User user) {
updateById(user);
}
@Override
@Transactional(rollbackFor = Exception.class)
- public void updateAvatar(String username, String avatar) throws Exception {
+ public void updateAvatar(String username, String avatar) {
User user = new User();
user.setAvatar(avatar);
this.baseMapper.update(user, new
LambdaQueryWrapper<User>().eq(User::getUsername, username));
@@ -131,7 +138,7 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void updatePassword(String username, String password) throws
Exception {
+ public void updatePassword(String username, String password) {
User user = new User();
String salt = ShaHashUtils.getRandomSalt();
password = ShaHashUtils.encrypt(salt, password);
@@ -142,7 +149,7 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
@Override
@Transactional(rollbackFor = Exception.class)
- public void resetPassword(String[] usernames) throws Exception {
+ public void resetPassword(String[] usernames) {
for (String username : usernames) {
User user = new User();
String salt = ShaHashUtils.getRandomSalt();
@@ -177,12 +184,35 @@ public class UserServiceImpl extends
ServiceImpl<UserMapper, User> implements Us
return users;
}
+ @Override
+ public void setLatestTeam(Long teamId, Long userId) {
+ User user = getById(userId);
+ AssertUtils.checkArgument(user != null);
+ user.setTeamId(teamId);
+ this.baseMapper.updateById(user);
+ }
+
+ @Override
+ public void fillInTeam(User user) {
+ if (user.getTeamId() == null) {
+ List<Team> teams = memberService.findUserTeams(user.getUserId());
+ if (CollectionUtils.isEmpty(teams)) {
+ throw new ApiAlertException("The current user not belong to
any team, please contact the administrator!");
+ } else if (teams.size() == 1) {
+ Team team = teams.get(0);
+ user.setTeamId(team.getId());
+ this.baseMapper.updateById(user);
+ }
+ }
+ }
+
private void setUserRoles(User user, String[] roles) {
Arrays.stream(roles).forEach(roleId -> {
- TeamMember ur = new TeamMember();
+ Member ur = new Member();
ur.setUserId(user.getUserId());
ur.setRoleId(Long.valueOf(roleId));
- this.teamMemberService.save(ur);
+ this.memberService.save(ur);
});
}
+
}
diff --git
a/streampark-console/streampark-console-service/src/main/resources/application.yml
b/streampark-console/streampark-console-service/src/main/resources/application.yml
index 0aaed6ed0..425e4b528 100644
---
a/streampark-console/streampark-console-service/src/main/resources/application.yml
+++
b/streampark-console/streampark-console-service/src/main/resources/application.yml
@@ -114,7 +114,9 @@ streampark:
anonUrl: >
/passport/**,
/systemName,
+ /member/teams,
/user/check/**,
+ /user/initTeam,
/websocket/**,
/metrics/**,
/index.html,
diff --git
a/streampark-console/streampark-console-service/src/main/resources/db/data-h2.sql
b/streampark-console/streampark-console-service/src/main/resources/db/data-h2.sql
index 94c3dbdcd..98e8585f7 100644
---
a/streampark-console/streampark-console-service/src/main/resources/db/data-h2.sql
+++
b/streampark-console/streampark-console-service/src/main/resources/db/data-h2.sql
@@ -48,7 +48,7 @@ insert into `t_flink_sql` values (100000, 100000,
'eNqlUUtPhDAQvu+vmFs1AYIHT5s94
insert into `t_menu` values (100000, 0, 'System', '/system', 'PageView', null,
'desktop', '0', 1, 1, now(), now());
insert into `t_menu` values (100001, 100000, 'User Management',
'/system/user', 'system/user/User', 'user:view', 'user', '0', 1, 1, now(),
now());
insert into `t_menu` values (100002, 100000, 'Role Management',
'/system/role', 'system/role/Role', 'role:view', 'smile', '0', 1, 2, now(),
now());
-insert into `t_menu` values (100003, 100000, 'Router Management',
'/system/menu', 'system/menu/Menu', 'menu:view', 'bars', '0', 1, 3, now(),
now());
+insert into `t_menu` values (100003, 100000, 'Menu Management',
'/system/menu', 'system/menu/Menu', 'menu:view', 'bars', '0', 1, 3, now(),
now());
insert into `t_menu` values (100004, 100001, 'add', null, null, 'user:add',
null, '1', 1, null, now(), now());
insert into `t_menu` values (100005, 100001, 'update', null, null,
'user:update', null, '1', 1, null, now(), now());
insert into `t_menu` values (100006, 100001, 'delete', null, null,
'user:delete', null, '1', 1, null, now(), now());
@@ -151,15 +151,15 @@ insert into `t_setting` values (15,
'docker.register.namespace', null, 'Namespac
-- ----------------------------
-- Records of t_user
-- ----------------------------
-insert into `t_user` values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
'1', now(), now(),null,'0',null,null );
-insert into `t_user` values (100001, 'test_user1', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
'1', now(), now(),null,'0',null,null );
-insert into `t_user` values (100002, 'test_user2', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
'1', now(), now(),null,'0',null,null );
-insert into `t_user` values (100003, 'test_user3', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
'1', now(), now(),null,'0',null,null );
+insert into `t_user` values (100000, 'admin', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 1,
null, '1', now(), now(),null,'0',null,null);
+insert into `t_user` values (100001, 'test_user1', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
null, '1', now(), now(),null,'0',null,null);
+insert into `t_user` values (100002, 'test_user2', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
null, '1', now(), now(),null,'0',null,null);
+insert into `t_user` values (100003, 'test_user3', '',
'rh8b1ojwog777yrg0daesf04gk',
'2513f3748847298ea324dffbf67fe68681dd92315bda830065facd8efe08f54f', null, 2,
null, '1', now(), now(),null,'0',null,null);
-- ----------------------------
--- Records of t_user_role
+-- Records of t_member
-- ----------------------------
-insert into `t_user_role` values (100000, 100000, 100001, 100001, now(),
now()); -- test_user1 is the developer of the default team
-insert into `t_user_role` values (100001, 100001, 100001, 100001, now(),
now()); -- test_user1 is the developer of the test_team1 team
-insert into `t_user_role` values (100002, 100000, 100002, 100001, now(),
now()); -- test_user2 is the developer of the test_team1 team
-insert into `t_user_role` values (100003, 100001, 100003, 100001, now(),
now()); -- test_user3 is the developer of the test_team1 team
+insert into `t_member` values (100000, 100000, 100001, 100001, now(), now());
-- test_user1 is the developer of the default team
+insert into `t_member` values (100001, 100001, 100001, 100001, now(), now());
-- test_user1 is the developer of the test_team1 team
+insert into `t_member` values (100002, 100000, 100002, 100001, now(), now());
-- test_user2 is the developer of the test_team1 team
+insert into `t_member` values (100003, 100001, 100003, 100001, now(), now());
-- test_user3 is the developer of the test_team1 team
diff --git
a/streampark-console/streampark-console-service/src/main/resources/db/schema-h2.sql
b/streampark-console/streampark-console-service/src/main/resources/db/schema-h2.sql
index ebaad6fd2..47da039a7 100644
---
a/streampark-console/streampark-console-service/src/main/resources/db/schema-h2.sql
+++
b/streampark-console/streampark-console-service/src/main/resources/db/schema-h2.sql
@@ -329,6 +329,7 @@ create table if not exists `t_user` (
`password` varchar(128) not null comment 'password',
`email` varchar(128) default null comment 'email',
`user_type` int not null comment 'user type 1:admin 2:user',
+ `team_id` bigint default null comment 'latest team id',
`status` char(1) not null comment 'status 0:locked 1:active',
`create_time` datetime not null default current_timestamp comment 'create
time',
`modify_time` datetime not null default current_timestamp on update
current_timestamp comment 'modify time',
@@ -341,9 +342,9 @@ create table if not exists `t_user` (
);
-- ----------------------------
--- Table structure for t_user_role
+-- Table structure for t_member
-- ----------------------------
-create table if not exists `t_user_role` (
+create table if not exists `t_member` (
`id` bigint generated by default as identity not null,
`team_id` bigint not null comment 'team id',
`user_id` bigint not null comment 'user id',
diff --git
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMemberMapper.xml
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MemberMapper.xml
similarity index 64%
rename from
streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMemberMapper.xml
rename to
streampark-console/streampark-console-service/src/main/resources/mapper/system/MemberMapper.xml
index 62219d39d..f5eb27b34 100644
---
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMemberMapper.xml
+++
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MemberMapper.xml
@@ -18,9 +18,9 @@
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper
namespace="org.apache.streampark.console.system.mapper.TeamMemberMapper">
+<mapper namespace="org.apache.streampark.console.system.mapper.MemberMapper">
- <resultMap id="BaseResultMap"
type="org.apache.streampark.console.system.entity.TeamMember">
+ <resultMap id="BaseResultMap"
type="org.apache.streampark.console.system.entity.Member">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="team_id" jdbcType="BIGINT" property="teamId"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/>
@@ -31,42 +31,42 @@
<delete id="deleteByUserId">
delete
- from t_user_role
+ from t_member
where user_id = #{userId}
</delete>
<delete id="deleteByRoleId">
delete
- from t_user_role
+ from t_member
where role_id = #{roleId}
</delete>
- <select id="findUsers" resultType="teamMember" parameterType="teamMember">
+ <select id="findUsers" resultType="member" parameterType="member">
select tur.*,
u.username,
r.role_name
- from t_user_role tur
+ from t_member tur
join t_user u
on u.user_id = tur.user_id
join t_role r
on r.role_id = tur.role_id
<where>
- tur.team_id = ${teamMember.teamId}
- <if test="teamMember.userName != null and teamMember.userName !=
''">
- and u.username like '%${teamMember.userName}%'
+ tur.team_id = ${member.teamId}
+ <if test="member.userName != null and member.userName != ''">
+ and u.username like '%${member.userName}%'
</if>
- <if test="teamMember.roleName != null and teamMember.roleName !=
''">
- and r.role_name = '${teamMember.roleName}'
+ <if test="member.roleName != null and member.roleName != ''">
+ and r.role_name = '${member.roleName}'
</if>
- <if test="teamMember.createTimeFrom != null and
teamMember.createTimeFrom !=''">
- and tur.create_time > #{teamMember.createTimeFrom}
+ <if test="member.createTimeFrom != null and member.createTimeFrom
!=''">
+ and tur.create_time > #{member.createTimeFrom}
</if>
- <if test="teamMember.createTimeTo!= null and
teamMember.createTimeTo !=''">
- and tur.create_time < #{teamMember.createTimeTo}
+ <if test="member.createTimeTo!= null and member.createTimeTo !=''">
+ and tur.create_time < #{member.createTimeTo}
</if>
</where>
- <if test="teamMember.sortField != null and teamMember.sortField != ''">
- order by ${teamMember.sortField} ${teamMember.sortOrder}
+ <if test="member.sortField != null and member.sortField != ''">
+ order by ${member.sortField} ${member.sortOrder}
</if>
</select>
diff --git
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
index 0577c259f..aff92c820 100644
---
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
+++
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/MenuMapper.xml
@@ -38,7 +38,7 @@
<select id="findUserPermissions" resultMap="menu">
select distinct m.perms
from t_role r
- left join t_user_role ur on (r.role_id = ur.role_id)
+ left join t_member ur on (r.role_id = ur.role_id)
left join t_user u on (u.user_id = ur.user_id)
left join t_role_menu rm on (rm.role_id = r.role_id)
left join t_menu m on (m.menu_id = rm.menu_id)
@@ -55,7 +55,7 @@
(select distinct rm.menu_id
from t_role_menu rm
left join t_role r on (rm.role_id = r.role_id)
- left join t_user_role ur on (ur.role_id = r.role_id)
+ left join t_member ur on (ur.role_id = r.role_id)
left join t_user u on (u.user_id = ur.user_id)
where u.username = #{userName})
order by m.order_num
@@ -63,7 +63,7 @@
<select id="findUserIdsByMenuId" parameterType="string"
resultType="string">
select user_id
- from t_user_role
+ from t_member
where role_id in
(select rm.role_id from t_role_menu rm where rm.menu_id =
#{menuId})
</select>
diff --git
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/RoleMapper.xml
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/RoleMapper.xml
index 61ddbc09a..e291b8065 100644
---
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/RoleMapper.xml
+++
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/RoleMapper.xml
@@ -31,8 +31,8 @@
<select id="findUserRole" resultMap="roleMap">
select r.*
from t_role r
- left join t_user_role ur on r.role_id = ur.role_id
- left join t_user u on u.user_id = ur.user_id
+ left join t_member m on r.role_id = m.role_id
+ left join t_user u on u.user_id = m.user_id
where u.username = #{userName}
</select>
diff --git
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMapper.xml
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMapper.xml
index b455e75d5..f7af5214b 100644
---
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMapper.xml
+++
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/TeamMapper.xml
@@ -47,8 +47,8 @@
<select id="findUserTeams" resultType="team" parameterType="team">
select t.* from t_team t
- join t_user_role ur
- on t.id = ur.team_id
- where ur.user_id = #{userId}
+ join t_member m
+ on t.id = m.team_id
+ where m.user_id = #{userId}
</select>
</mapper>
diff --git
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/UserMapper.xml
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/UserMapper.xml
index b4310e298..85d3141a6 100644
---
a/streampark-console/streampark-console-service/src/main/resources/mapper/system/UserMapper.xml
+++
b/streampark-console/streampark-console-service/src/main/resources/mapper/system/UserMapper.xml
@@ -33,6 +33,7 @@
<result column="sex" jdbcType="CHAR" property="sex"/>
<result column="avatar" jdbcType="VARCHAR" property="avatar"/>
<result column="description" jdbcType="VARCHAR"
property="description"/>
+ <result column="team_id" jdbcType="BIGINT" property="teamId"/>
</resultMap>
<select id="findUserDetail" resultType="user" parameterType="user">
diff --git a/streampark-console/streampark-console-webapp/src/api/index.js
b/streampark-console/streampark-console-webapp/src/api/index.js
index 0b287095b..e5fc5467c 100644
--- a/streampark-console/streampark-console-webapp/src/api/index.js
+++ b/streampark-console/streampark-console-webapp/src/api/index.js
@@ -167,7 +167,9 @@ export default {
POST: '/user/post',
DELETE: '/user/delete',
CHECK_NAME: '/user/check/name',
- CHECK_PASSWORD: '/user/check/password'
+ CHECK_PASSWORD: '/user/check/password',
+ SET_TEAM: '/user/setTeam',
+ INIT_TEAM: '/user/initTeam'
},
Token: {
LIST: '/token/list',
diff --git a/streampark-console/streampark-console-webapp/src/api/user.js
b/streampark-console/streampark-console-webapp/src/api/user.js
index 14b61bc48..e22c65739 100644
--- a/streampark-console/streampark-console-webapp/src/api/user.js
+++ b/streampark-console/streampark-console-webapp/src/api/user.js
@@ -61,3 +61,11 @@ export function deleteUser (queryParam) {
export function types() {
return http.post(api.User.TYPES, {})
}
+
+export function setTeam(queryParam) {
+ return http.post(api.User.SET_TEAM, queryParam)
+}
+
+export function initTeam(queryParam) {
+ return http.post(api.User.INIT_TEAM, queryParam)
+}
diff --git
a/streampark-console/streampark-console-webapp/src/components/GlobalFooter/GlobalFooter.vue
b/streampark-console/streampark-console-webapp/src/components/GlobalFooter/GlobalFooter.vue
index 3564e92c7..981268a45 100644
---
a/streampark-console/streampark-console-webapp/src/components/GlobalFooter/GlobalFooter.vue
+++
b/streampark-console/streampark-console-webapp/src/components/GlobalFooter/GlobalFooter.vue
@@ -27,7 +27,7 @@
</a>
</div>
<div class="copyright">
- Copyright<a-icon type="copyright" /> 2019~{{ year }} <span>Apache
StreamPark </span>
+ Copyright <a-icon type="copyright" /> 2019 ~ {{ year }} <span>Apache
StreamPark </span>
</div>
</div>
</template>
diff --git
a/streampark-console/streampark-console-webapp/src/components/global.less
b/streampark-console/streampark-console-webapp/src/components/global.less
index 22b0afab4..dabe31253 100644
--- a/streampark-console/streampark-console-webapp/src/components/global.less
+++ b/streampark-console/streampark-console-webapp/src/components/global.less
@@ -157,7 +157,6 @@ body {
.header {
height: 64px;
- padding: 0 12px 0 0;
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
position: relative;
}
@@ -349,7 +348,6 @@ body {
margin: 24px 24px 0px;
height: 100%;
height: 64px;
- padding: 0 12px 0 0;
}
// footer
diff --git
a/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
b/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
index 7a412ae79..0c9151dad 100644
---
a/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
+++
b/streampark-console/streampark-console-webapp/src/components/tools/UserMenu.vue
@@ -65,19 +65,19 @@
<img
src="https://img.shields.io/github/forks/streamxhub/streampark.svg?sanitize=true"
class="shields">
</a>
- <notice class="action"/>
-
<a> Team : </a>
<a-select
mode="single"
:allow-clear="false"
- style="width: 200px"
+ style="min-width: 100px; margin-right: 10px"
@change="handleChangeTeam"
- v-decorator="['teamId']">
+ class="team-select"
+ v-model="teamId">
<a-select-option
v-for="t in teamList"
- :key="t.id">
+ :value="t.id"
+ :key="`team_`.concat(t.id)">
{{ t.teamName }}
</a-select-option>
</a-select>
@@ -105,6 +105,9 @@
</a-menu-item>
</a-menu>
</a-dropdown>
+
+ <notice class="action"/>
+
</div>
<a-modal
@@ -120,7 +123,7 @@
</template>
<a-form
@submit="handleChangeOk"
- :form="formPassword">
+ :form="form">
<a-form-item
label="User Name"
:label-col="{lg: {span: 7}, sm: {span: 7}}"
@@ -173,7 +176,6 @@
</a-button>
</template>
</a-modal>
-
</div>
</template>
@@ -187,6 +189,7 @@ import {teams} from '@/api/member'
import themeUtil from '@/utils/themeUtil'
import storage from '@/utils/storage'
import {TEAM_ID, USER_INFO, USER_NAME} from '@/store/mutation-types'
+import {message} from 'ant-design-vue'
export default {
name: 'UserMenu',
@@ -198,11 +201,11 @@ export default {
data() {
return {
passwordVisible: false,
- formPassword: null,
+ form: null,
confirmDirty: false,
themeDark: false,
- form: this.$form.createForm(this),
- teamList: []
+ teamList: [],
+ teamId: null
}
},
@@ -216,16 +219,17 @@ export default {
},
beforeMount() {
- this.formPassword = this.$form.createForm(this)
+ this.form = this.$form.createForm(this)
},
mounted() {
this.handleChangeTheme(true)
+ this.handlePrepareTeam()
this.fetchTeams()
},
methods: {
- ...mapActions(['SignOut','ChangeTheme']),
+ ...mapActions(['SignOut','ChangeTheme', 'SetTeam']),
handleLogout () {
const that = this
this.$confirm({
@@ -249,7 +253,7 @@ export default {
},
handleChangeOk() {
- this.formPassword.validateFields((err, values) => {
+ this.form.validateFields((err, values) => {
if (!err) {
this.handleChangeCancel()
password({
@@ -274,7 +278,7 @@ export default {
handleChangeCancel () {
this.passwordVisible = false
setTimeout(() => {
- this.formPassword.resetFields()
+ this.form.resetFields()
}, 1000)
},
@@ -299,8 +303,7 @@ export default {
},
compareToFirstPassword(rule, value, callback) {
- const form = this.formPassword
- if (value && value !== form.getFieldValue('password')) {
+ if (value && value !== this.form.getFieldValue('password')) {
callback('Two passwords that you enter is inconsistent!')
} else {
callback()
@@ -308,15 +311,50 @@ export default {
},
validateToNextPassword(rule, value, callback) {
- const form = this.formPassword
if (value && this.confirmDirty) {
- form.validateFields(['confirm'], { force: true })
+ this.form.validateFields(['confirm'], { force: true })
}
callback()
},
+ handlePrepareTeam() {
+ const teamId = storage.get(TEAM_ID) || []
+ this.teamId = teamId
+ },
+
handleChangeTeam(teamId) {
- storage.set(TEAM_ID, teamId)
+ this.SetTeam({
+ teamId: teamId
+ }).then(() => {
+ //refresh...
+ this.handleRefreshPage()
+ }).catch((err) => message.error(err))
+ },
+
+ handleRefreshPage() {
+ const defaultPage = '/flink/app'
+ const pages = [
+ '/system/user',
+ '/system/role',
+ '/system/menu',
+ '/system/token',
+ '/system/team',
+ '/system/member',
+ '/flink/project',
+ '/flink/app'
+ ]
+ const skipPages = [
+ '/flink/notebook/view',
+ '/flink/setting'
+ ]
+ const currPath = location.href.replace(/(.*)#/,'')
+ if (!skipPages.includes(currPath)) {
+ if (pages.includes(currPath)) {
+ window.location.reload()
+ } else {
+ this.$router.push({path: defaultPage})
+ }
+ }
},
fetchTeams() {
@@ -370,4 +408,21 @@ export default {
}
}
+.team-select {
+ .ant-select-selection__rendered {
+ position: relative;
+ display: block;
+ margin: 0px 6px;
+ line-height: 22px;
+ }
+ .ant-select-selection--single {
+ height: unset;
+ }
+ .ant-select-arrow {
+ right: 5px;
+ margin-top: -6px;
+ font-size: 8px;
+ }
+}
+
</style>
diff --git a/streampark-console/streampark-console-webapp/src/store/getters.js
b/streampark-console/streampark-console-webapp/src/store/getters.js
index 09bd15d5e..010cf99db 100644
--- a/streampark-console/streampark-console-webapp/src/store/getters.js
+++ b/streampark-console/streampark-console-webapp/src/store/getters.js
@@ -30,6 +30,7 @@ const getters = {
userName: state => state.user.userName,
welcome: state => state.user.welcome,
userInfo: state => state.user.info,
+ teamId: state => state.teamId,
routers: state => state.user.routers,
multiTab: state => state.app.multiTab,
applicationId: state => state.application.appId,
diff --git
a/streampark-console/streampark-console-webapp/src/store/modules/user.js
b/streampark-console/streampark-console-webapp/src/store/modules/user.js
index 94433ea93..b97a33eda 100644
--- a/streampark-console/streampark-console-webapp/src/store/modules/user.js
+++ b/streampark-console/streampark-console-webapp/src/store/modules/user.js
@@ -16,7 +16,8 @@
*/
import { signin, signout } from '@/api/passport'
-import {TOKEN, EXPIRE, PERMISSIONS, ROLES, USER_INFO, USER_NAME, USER_ROUTER,
INVALID} from '@/store/mutation-types'
+import { setTeam, initTeam } from '@/api/user'
+import {TOKEN, EXPIRE, PERMISSIONS, ROLES, USER_INFO, USER_NAME, USER_ROUTER,
INVALID, TEAM_ID} from '@/store/mutation-types'
import storage from '@/utils/storage'
import { getRouter } from '@/api/menu'
@@ -25,6 +26,7 @@ const user = {
expire: storage.get(EXPIRE),
token: storage.get(TOKEN),
info: storage.get(USER_INFO),
+ teamId: storage.get(TEAM_ID),
roles: storage.get(ROLES),
permissions: storage.get(PERMISSIONS),
routers: storage.get(USER_ROUTER),
@@ -42,6 +44,10 @@ const user = {
storage.set(TOKEN, token)
state.token = token
},
+ SET_TEAM: (state, teamId) => {
+ storage.set(TEAM_ID, teamId)
+ state.teamId = teamId
+ },
SET_ROLES: (state, roles) => {
storage.set(ROLES, roles)
state.roles = roles
@@ -67,12 +73,14 @@ const user = {
state.roles = null
state.permissions = null
state.name = null
+ state.teamId = null
state.welcome = null
state.avatar = null
storage.rm(USER_INFO)
storage.rm(USER_NAME)
storage.rm(USER_ROUTER)
storage.rm(TOKEN)
+ storage.rm(TEAM_ID)
storage.rm(ROLES)
storage.rm(PERMISSIONS)
storage.rm(EXPIRE)
@@ -84,21 +92,29 @@ const user = {
SignIn ({ commit }, userInfo) {
return new Promise((resolve, reject) => {
signin(userInfo).then(response => {
- const respData = response.data
- if (respData != null && respData.token) {
- commit('SET_EXPIRE', respData.expire)
- commit('SET_TOKEN', respData.token)
- commit('SET_ROLES', respData.roles)
- commit('SET_PERMISSIONS', respData.permissions)
- commit('SET_INFO', respData.user)
+ if (response.code == 403 || response.code == 1 || response.code ==
0) {
+ reject(response)
+ } else {
+ const respData = response.data
+ if (respData != null && respData.token) {
+ commit('SET_EXPIRE', respData.expire)
+ commit('SET_TOKEN', respData.token)
+ commit('SET_ROLES', respData.roles)
+ commit('SET_PERMISSIONS', respData.permissions)
+ commit('SET_INFO', respData.user)
+ }
+ if (respData.user.teamId != null) {
+ commit('SET_TEAM', respData.user['teamId'])
+ }
+ storage.rm(INVALID)
+ resolve(response)
}
- storage.rm(INVALID)
- resolve(response)
}).catch(error => {
reject(error)
})
})
},
+
GetRouter ({ commit }, data) {
return new Promise((resolve, reject) => {
getRouter({}).then(resp => {
@@ -120,6 +136,25 @@ const user = {
resolve()
})
})
+ },
+
+ SetTeam({commit}, data) {
+ return new Promise((resolve, reject) => {
+ if (data.userId != null) {
+ initTeam(data).then(() => resolve()).catch(error => reject(error))
+ } else {
+ setTeam(data).then(resp => {
+ const respData = resp.data
+ commit('SET_TEAM', data.teamId)
+ commit('SET_ROLES', respData.roles)
+ commit('SET_PERMISSIONS', respData.permissions)
+ commit('SET_INFO', respData.user)
+ resolve()
+ }).catch(error => {
+ reject(error)
+ })
+ }
+ })
}
}
diff --git a/streampark-console/streampark-console-webapp/src/utils/request.js
b/streampark-console/streampark-console-webapp/src/utils/request.js
index 657b47eb2..3bb159f7b 100644
--- a/streampark-console/streampark-console-webapp/src/utils/request.js
+++ b/streampark-console/streampark-console-webapp/src/utils/request.js
@@ -18,7 +18,7 @@
import axios from 'axios'
import $qs from 'qs'
import notification from 'ant-design-vue/es/notification'
-import {INVALID, TOKEN} from '@/store/mutation-types'
+import {INVALID, TEAM_ID, TOKEN} from '@/store/mutation-types'
import storage from '@/utils/storage'
import store from '@/store'
import moment from 'moment'
@@ -76,6 +76,10 @@ http.interceptors.request.use(config => {
delete data.sortOrder
}
}
+ const teamId = storage.get(TEAM_ID)
+ if (teamId) {
+ data['teamId'] = teamId
+ }
if (config.method === 'get') {
// filter undefined params
data = Object.fromEntries(Object.entries(data).filter(([_,value]) =>
value !== undefined))
@@ -100,16 +104,24 @@ http.interceptors.response.use((response) => {
}, error => {
if (error.response) {
if (error.response.data.code == 501) {
+ Swal.fire({
+ icon: 'error',
+ title: 'Oops...',
+ text: error.response.data.message,
+ footer: '<a href="https://streampark.apache.org/">View the official
documentation?</a>'
+ })
+ } else if (error.response.data.code == 502) {
let width = document.documentElement.clientWidth ||
document.body.clientWidth
if (width > 1200) {
width = 1080
}
width *= 0.96
Swal.fire({
- title: 'Operation Failed',
icon: 'error',
+ title: 'Oops...',
width: width,
html: '<pre class="propException">' + error.response.data.message +
'</pre>',
+ footer: '<a
href="https://github.com/apache/incubator-streampark/issues/new/choose">report
issue ?</a>',
focusConfirm: false
})
} else {
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/Add.vue
b/streampark-console/streampark-console-webapp/src/views/flink/app/Add.vue
index 9d538d045..109125fec 100644
--- a/streampark-console/streampark-console-webapp/src/views/flink/app/Add.vue
+++ b/streampark-console/streampark-console-webapp/src/views/flink/app/Add.vue
@@ -1467,7 +1467,6 @@
import configOptions from './Option'
import SvgIcon from '@/components/SvgIcon'
import { sysHadoopConf } from '@api/config'
- import {TEAM_ID} from '@/store/mutation-types'
import {
uploadJars as histUploadJars,
@@ -2311,7 +2310,6 @@
}
const params = {
jobType: 1,
- teamId: storage.get(TEAM_ID),
executionMode: values.executionMode,
versionId: values.versionId,
projectId: values.project || null,
@@ -2416,7 +2414,6 @@
const params = {
jobType: 2,
- teamId: storage.get(TEAM_ID),
executionMode: values.executionMode,
versionId: values.versionId,
flinkSql: this.controller.flinkSql.value,
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/app/View.vue
b/streampark-console/streampark-console-webapp/src/views/flink/app/View.vue
index 83e1afe80..a0c9e0285 100644
--- a/streampark-console/streampark-console-webapp/src/views/flink/app/View.vue
+++ b/streampark-console/streampark-console-webapp/src/views/flink/app/View.vue
@@ -1143,8 +1143,6 @@ import {Terminal} from 'xterm'
import 'xterm/css/xterm.css'
import SvgIcon from '@/components/SvgIcon'
import {list as listUser} from '@/api/user'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
export default {
components: {Ellipsis, State, SvgIcon},
@@ -2009,10 +2007,7 @@ export default {
const params = Object.assign(this.queryParams, {})
params.pageSize = 999999999
params.pageNum = 1
- list({
- ...params,
- teamId: storage.get(TEAM_ID)
- }).then((resp) => {
+ list(params).then((resp) => {
const dataSource = resp.data.records
dataSource.forEach(record => {
if (record.tags !== null && record.tags !== undefined &&
record.tags !== '') {
@@ -2046,10 +2041,7 @@ export default {
params.pageSize = this.pagination.defaultPageSize
params.pageNum = this.pagination.defaultCurrent
}
- list({
- ...params,
- teamId: storage.get(TEAM_ID)
- }).then((resp) => {
+ list(params).then((resp) => {
this.loading = false
const pagination = {...this.pagination}
pagination.total = parseInt(resp.data.total)
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/project/Add.vue
b/streampark-console/streampark-console-webapp/src/views/flink/project/Add.vue
index df5d9c50e..13c5e97eb 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/project/Add.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/project/Add.vue
@@ -184,8 +184,6 @@
<script>
import { create,branches,gitcheck,exists } from '@api/project'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
export default {
name: 'BaseForm',
@@ -267,7 +265,6 @@ export default {
} else {
create({
name: values.name,
- teamId: storage.get(TEAM_ID),
url: values.url,
repository: values.repository,
type: values.type,
diff --git
a/streampark-console/streampark-console-webapp/src/views/flink/project/View.vue
b/streampark-console/streampark-console-webapp/src/views/flink/project/View.vue
index f6f64b79b..026521057 100644
---
a/streampark-console/streampark-console-webapp/src/views/flink/project/View.vue
+++
b/streampark-console/streampark-console-webapp/src/views/flink/project/View.vue
@@ -253,8 +253,6 @@ import { Terminal } from 'xterm'
import 'xterm/css/xterm.css'
import SvgIcon from '@/components/SvgIcon'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
export default {
components: { Ellipsis, SvgIcon },
@@ -433,10 +431,7 @@ export default {
// params.pageSize = this.pagination.defaultPageSize
// params.pageNum = this.pagination.current
}
- list({
- ...params,
- teamId: storage.get(TEAM_ID)
- }).then((resp) => {
+ list(params).then((resp) => {
const pagination = { ...this.pagination }
pagination.total = parseInt(resp.data.total)
this.dataSource = resp.data.records
diff --git
a/streampark-console/streampark-console-webapp/src/views/system/member/Member.vue
b/streampark-console/streampark-console-webapp/src/views/system/member/Member.vue
index 61a3f7f2b..e4a76a6e7 100644
---
a/streampark-console/streampark-console-webapp/src/views/system/member/Member.vue
+++
b/streampark-console/streampark-console-webapp/src/views/system/member/Member.vue
@@ -149,8 +149,6 @@ import SvgIcon from '@/components/SvgIcon'
import {list, remove} from '@/api/member'
import {list as getRole} from '@/api/role'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
const formItemLayout = {
labelCol: { span: 4 },
@@ -346,7 +344,6 @@ export default {
list({
...params,
- teamId: storage.get(TEAM_ID),
roleName: this.roleName
}).then((resp) => {
const pagination = {...this.pagination}
diff --git
a/streampark-console/streampark-console-webapp/src/views/system/member/MemberAdd.vue
b/streampark-console/streampark-console-webapp/src/views/system/member/MemberAdd.vue
index 5c3d6c70e..baf8375c6 100644
---
a/streampark-console/streampark-console-webapp/src/views/system/member/MemberAdd.vue
+++
b/streampark-console/streampark-console-webapp/src/views/system/member/MemberAdd.vue
@@ -77,8 +77,6 @@
import {post} from '@/api/member'
import {list as getRole} from '@/api/role'
import {checkUserName} from '@/api/user'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
const formItemLayout = {
labelCol: {span: 4},
@@ -119,10 +117,7 @@ export default {
this.form.validateFields((err, member) => {
if (!err && this.validateStatus === 'success') {
this.loading = true
- post({
- ...member,
- teamId: storage.get(TEAM_ID)
- }).then((r) => {
+ post(member).then((r) => {
if (r.status === 'success') {
this.reset()
this.$emit('success')
diff --git
a/streampark-console/streampark-console-webapp/src/views/system/member/MemberEdit.vue
b/streampark-console/streampark-console-webapp/src/views/system/member/MemberEdit.vue
index b6867aa49..b196401e1 100644
---
a/streampark-console/streampark-console-webapp/src/views/system/member/MemberEdit.vue
+++
b/streampark-console/streampark-console-webapp/src/views/system/member/MemberEdit.vue
@@ -72,8 +72,6 @@
<script>
import {update} from '@/api/member'
import {list as getRole} from '@/api/role'
-import storage from '@/utils/storage'
-import {TEAM_ID} from '@/store/mutation-types'
const formItemLayout = {
labelCol: {span: 4},
@@ -127,7 +125,6 @@ export default {
const member = this.form.getFieldsValue()
member.id = this.memberId
member.userId = this.userId
- member.teamId = storage.get(TEAM_ID)
update(member).then((r) => {
if (r.status === 'success') {
this.loading = false
diff --git
a/streampark-console/streampark-console-webapp/src/views/user/SignIn.vue
b/streampark-console/streampark-console-webapp/src/views/user/SignIn.vue
index 90ae281eb..e0f2d141a 100644
--- a/streampark-console/streampark-console-webapp/src/views/user/SignIn.vue
+++ b/streampark-console/streampark-console-webapp/src/views/user/SignIn.vue
@@ -116,12 +116,58 @@
hover-mode="grab"
:click-effect="true"
click-mode="push"/>
+
+ <a-modal
+ v-model="teamVisible"
+ on-ok="handleTeamOk">
+ <template
+ slot="title">
+ <a-icon
+ slot="icon"
+ type="setting"
+ style="color: green"/>
+ Select Team
+ </template>
+
+ <a-form
+ :form="teamForm"
+ @submit="handleTeamOk">
+ <a-form-item
+ label="Please select a team">
+ <a-select
+ v-decorator="['teamId',{ rules: [{ required: true } ]}]">
+ <a-select-option
+ v-for="t in teamList"
+ :value="t.id"
+ :key="`sign_team_`.concat(t.id)">
+ {{ t.teamName }}
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+
+ <template slot="footer">
+ <a-button
+ key="back"
+ @click="handleTeamCancel">
+ Cancel
+ </a-button>
+ <a-button
+ key="submit"
+ type="primary"
+ @click="handleTeamOk">
+ Submit
+ </a-button>
+ </template>
+ </a-modal>
+
</div>
</template>
<script type="application/ecmascript">
import {mapActions} from 'vuex'
import {mixinDevice} from '@/utils/mixin'
+import {teams} from '@/api/member'
export default {
mixins: [mixinDevice],
@@ -129,10 +175,16 @@ export default {
return {
loginBtn: false,
form: this.$form.createForm(this),
+ teamForm: this.$form.createForm(this),
state: {
time: 60,
loginBtn: false
},
+ loginInfo: {},
+ teamList: [],
+ teamId: null,
+ userId: null,
+ teamVisible: false,
year: new Date().getFullYear()
}
},
@@ -147,9 +199,11 @@ export default {
},
methods: {
- ...mapActions(['SignIn']),
- handleSubmit(e) {
- e.preventDefault()
+
+ ...mapActions(['SignIn', 'SetTeam']),
+
+ handleSubmit() {
+ arguments[0] && arguments[0].preventDefault()
const {
form: { validateFields },
state,
@@ -161,25 +215,57 @@ export default {
if (!err) {
const loginParams = {...values}
SignIn(loginParams)
- .then(resp => {
- if (resp.code != null) {
- const message = 'SignIn failed,' + (resp.code === 0 ? '
authentication error' : ' current User is locked.')
- this.$message.error(message)
- } else {
- this.$router.push({path: '/flink/app'})
+ .then(() => {
+ this.$router.push({path: '/flink/app'})
+ }).catch(resp => {
+ const code = resp.code
+ if (code != null && code != undefined) {
+ if (code == 0 || code == 1) {
+ const message = 'SignIn failed,' + (resp.code === 0 ? '
authentication error' : ' current User is locked.')
+ this.$message.error(message)
+ } else if (resp.code == 403) {
+ this.loginInfo = values
+ this.teamVisible = true
+ this.userId = resp.data
+ teams({
+ userId: this.userId
+ }).then((r) => {
+ this.teamList = r.data
+ })
+ } else {
+ console.log(resp)
+ }
}
- })
- .catch(err => console.log(err))
- .finally(() => {
+ }).finally(() => {
state.loginBtn = false
- })
+ })
} else {
setTimeout(() => {
state.loginBtn = false
}, 600)
}
})
- }
+ },
+
+ handleTeamOk(e) {
+ e.preventDefault()
+ const {teamForm: { validateFields }} = this
+ validateFields(['teamId'], {force: true}, (err, values) => {
+ if (!err) {
+ this.SetTeam({
+ teamId: values.teamId,
+ userId: this.userId
+ }).then((resp) => {
+ this.handleSubmit()
+ })
+ }
+ })
+ },
+
+ handleTeamCancel() {
+ this.teamVisible = false
+ },
+
}
}
</script>