Skip to content

Commit 414e760

Browse files
committed
Add visualis user maintenance logic.
1 parent 6ccbe21 commit 414e760

File tree

8 files changed

+45
-27
lines changed

8 files changed

+45
-27
lines changed

db/ddl.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ CREATE TABLE `visualis_project` (
2929
PRIMARY KEY (`id`)
3030
) ENGINE=InnoDB AUTO_INCREMENT=313 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
3131

32-
---- visualis使用这个表做权限管理
33-
--DROP TABLE IF EXISTS `linkis_user`;
34-
CREATE TABLE `linkis_user` (
32+
-- visualis使用该表做权限管理
33+
DROP TABLE IF EXISTS `visualis_user`;
34+
CREATE TABLE `visualis_user` (
3535
`id` bigint(20) NOT NULL AUTO_INCREMENT,
3636
`email` varchar(255) DEFAULT NULL,
3737
`username` varchar(255) NOT NULL,

server/src/main/java/edp/davinci/core/inteceptor/CurrentUserMethodArgumentResolver.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,34 @@ public boolean supportsParameter(MethodParameter parameter) {
5050
&& parameter.hasParameterAnnotation(CurrentUser.class);
5151
}
5252

53+
/**
54+
* 动机:
55+
* 由于之前Visualis依赖于linkis_user表,存在极大的耦合,
56+
*
57+
* 解决方式:
58+
* 新建一张visualis_user表,复用原来的权限逻辑,
59+
* 如果访问Visualis时,使用该注解,没有该用户,即插入用户,录入用户信息。
60+
*/
5361
@Override
5462
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
55-
try
56-
{
63+
try {
5764
String dssUser = (String) ((ServletWebRequest) webRequest).getRequest().getAttribute("dss-user");
58-
if(StringUtils.isNotBlank(dssUser)){
65+
if (StringUtils.isNotBlank(dssUser)) {
5966
return userMapper.selectByUsername(dssUser);
6067
}
61-
return (User)userMapper.selectByUsername(SecurityFilter.getLoginUsername(webRequest.getNativeRequest(HttpServletRequest.class)));
62-
}catch (Throwable e){
63-
log.error("Failed to get user:",e);
68+
String accessUsername = SecurityFilter.getLoginUsername(webRequest.getNativeRequest(HttpServletRequest.class));
69+
User visualisUser = (User) userMapper.selectByUsername(accessUsername);
70+
User user = new User();
71+
if(null == visualisUser) {
72+
user.setUsername(accessUsername);
73+
user.setName(accessUsername);
74+
user.setPassword(null);
75+
userMapper.insert(user);
76+
return user;
77+
}
78+
return visualisUser;
79+
} catch (Throwable e) {
80+
log.error("Failed to get user: ", e);
6481
throw e;
6582
}
6683
}

server/src/main/java/edp/davinci/dao/RelUserOrganizationMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public interface RelUserOrganizationMapper {
4747
"SELECT ruo.id, u.id AS 'user.id', ",
4848
" IF(u.`name` is NULL,u.username,u.`name`) AS 'user.username', ",
4949
" u.email, u.avatar AS 'user.avatar', ruo.role AS 'user.role'",
50-
"FROM `linkis_user` u",
50+
"FROM `visualis_user` u",
5151
"LEFT JOIN rel_user_organization ruo on ruo.user_id = u.id",
5252
"LEFT JOIN organization o on o.id = ruo.org_id",
5353
"WHERE ruo.org_id = #{orgId}"

server/src/main/java/edp/davinci/dao/StarMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ public interface StarMapper {
5555

5656

5757
@Select({
58-
"select p.*, u.id as 'createBy.id', IF(u.`name` is NULL,u.username,u.`name`) as 'createBy.username', u.avatar as 'createBy.avatar' from visualis_project p left join linkis_user u on u.id = p.user_id ",
58+
"select p.*, u.id as 'createBy.id', IF(u.`name` is NULL,u.username,u.`name`) as 'createBy.username' from visualis_project p left join dss_user u on u.id = p.user_id ",
5959
"where p.id in (select target_id from star where target = #{target} and user_id = #{userId})"
6060
})
6161
List<ProjectWithCreateBy> getStarProjectListByUser(@Param("userId") Long userId, @Param("target") String target);
6262

6363

6464
@Select({
65-
"select u.id, IF(u.`name` is NULL,u.username,u.`name`) as username, u.email, u.avatar, s.star_time from star s left join linkis_user u on u.id = s.user_id",
65+
"select u.id, IF(u.`name` is NULL,u.username,u.`name`) as username, u.email, u.avatar, s.star_time from star s left join visualis_user u on u.id = s.user_id",
6666
"where s.target = #{target} and s.target_id = #{targetId}"
6767
})
6868
List<StarUser> getStarUserListByTarget(@Param("targetId") Long targetId, @Param("target") String target);

server/src/main/java/edp/davinci/dao/UserMapper.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public interface UserMapper {
3434
int insert(User user);
3535

3636

37-
@Select({"select * from `linkis_user` where id = #{id}"})
37+
@Select({"select * from `visualis_user` where id = #{id}"})
3838
User getById(@Param("id") Long id);
3939

40-
@Select({"select * from `linkis_user` where `username` = #{username} or `email` = #{username} or `name` = #{username}"})
40+
@Select({"select * from `visualis_user` where `username` = #{username} or `email` = #{username} or `name` = #{username}"})
4141
User selectByUsername(@Param("username") String username);
4242

4343
@Select({"select * from `user` where `email` = #{email}"})
@@ -47,29 +47,29 @@ public interface UserMapper {
4747
List<UserBaseInfo> getUsersByKeyword(@Param("keyword") String keyword, @Param("orgId") Long orgId);
4848

4949

50-
@Update({"update `linkis_user` set `name` = #{name}, description = #{description}, department = #{department}, update_time = #{updateTime}",
50+
@Update({"update `visualis_user` set `name` = #{name}, description = #{description}, department = #{department}, update_time = #{updateTime}",
5151
"where id = #{id}"})
5252
int updateBaseInfo(User user);
5353

54-
@Update({"update linkis_user set `avatar` = #{avatar}, update_time = #{updateTime} where id = #{id}"})
54+
@Update({"update visualis_user set `avatar` = #{avatar}, update_time = #{updateTime} where id = #{id}"})
5555
int updateAvatar(User user);
5656

57-
@Select({"select id from linkis_user where (LOWER(`username`) = LOWER(#{name}) or LOWER(`email`) = LOWER(#{name}) or LOWER(`name`) = LOWER(#{name}))"})
57+
@Select({"select id from visualis_user where (LOWER(`username`) = LOWER(#{name}) or LOWER(`email`) = LOWER(#{name}) or LOWER(`name`) = LOWER(#{name}))"})
5858
Long getIdByName(@Param("name") String name);
5959

60-
@Update({"update `linkis_user` set `active` = #{active}, `update_time` = #{updateTime} where id = #{id}"})
60+
@Update({"update `visualis_user` set `active` = #{active}, `update_time` = #{updateTime} where id = #{id}"})
6161
int activeUser(User user);
6262

63-
@Update({"update `linkis_user` set `password` = #{password}, `update_time` = #{updateTime} where id = #{id}"})
63+
@Update({"update `visualis_user` set `password` = #{password}, `update_time` = #{updateTime} where id = #{id}"})
6464
int changePassword(User user);
6565

6666
List<User> getByIds(@Param("userIds") List<Long> userIds);
6767

68-
@Select({"select count(id) from `linkis_user` where `email` = #{email}"})
68+
@Select({"select count(id) from `visualis_user` where `email` = #{email}"})
6969
boolean existEmail(@Param("email") String email);
7070

7171

72-
@Select({"select count(id) from `linkis_user` where `username` = #{username}"})
72+
@Select({"select count(id) from `visualis_user` where `username` = #{username}"})
7373
boolean existUsername(@Param("username") String username);
7474

7575
}

server/src/main/java/edp/davinci/dto/userDto/UserBaseInfo.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public class UserBaseInfo {
2727

2828
String username;
2929

30-
String avatar;
30+
// 用户头像路径
31+
String avatar = null;
3132

3233
String email;
3334
}

server/src/main/resources/mybatis/mapper/ProjectMapper.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
IF(u.`name` is NULL, u.`username`, u.`name`) as 'createBy.username',
141141
u.`avatar` as 'createBy.avatar'
142142
from visualis_project p
143-
left join `linkis_user` u on u.`id` = p.`user_id`
143+
left join `visualis_user` u on u.`id` = p.`user_id`
144144
left join star s on (s.target_id = p.id and s.`target` = 'project' and s.user_id = #{userId})
145145
where p.isArchive != 1 and p.id in (
146146
<!-- 当前用户是project的创建者或管理员 -->
@@ -259,7 +259,7 @@
259259
o.`update_by` AS 'organization.updateBy'
260260
FROM visualis_project p
261261
LEFT JOIN organization o on o.`id` = p.`org_id`
262-
LEFT JOIN `linkis_user` u on u.`id` = p.`user_id`
262+
LEFT JOIN `visualis_user` u on u.`id` = p.`user_id`
263263
WHERE p.`id` = #{id}
264264
</select>
265265

server/src/main/resources/mybatis/mapper/UserMapper.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
2626
SELECT LAST_INSERT_ID() AS id
2727
</selectKey>
28-
insert `linkis_user`
28+
insert `visualis_user`
2929
<trim prefix="(" suffix=")" suffixOverrides=",">
3030
`email`,
3131
`username`,
@@ -74,7 +74,7 @@
7474

7575
<select id="getUsersByKeyword" resultType="edp.davinci.dto.userDto.UserBaseInfo">
7676
select DISTINCT u.id, IF(u.`name` is NULL,u.`username`,u.`name`) as username, u.`email`, u.`avatar`
77-
from `linkis_user` u
77+
from `visualis_user` u
7878
LEFT JOIN rel_user_organization r on r.user_id = u.id
7979
where
8080
<if test='orgId != null and orgId > 0 '>
@@ -86,7 +86,7 @@
8686
</select>
8787

8888
<select id="getByIds" resultType="edp.davinci.model.User">
89-
select * from `linkis_user` where
89+
select * from `visualis_user` where
9090
<if test="userIds != null and userIds.size > 0">
9191
id in
9292
<foreach collection="userIds" index="index" item="item" open="(" close=")" separator=",">

0 commit comments

Comments
 (0)