Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
GeoFlyApi
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
GeoFly
GeoFlyApi
Commits
f58fa42a
Commit
f58fa42a
authored
Jun 07, 2025
by
gdj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加角色权限roleType,修改workspace和user。
parent
298ab2f4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
668 additions
and
18 deletions
+668
-18
sample/src/main/java/com/dji/sample/common/model/CustomClaim.java
+3
-0
sample/src/main/java/com/dji/sample/common/util/SecurityUtils.java
+183
-0
sample/src/main/java/com/dji/sample/manage/controller/WorkspaceController.java
+67
-3
sample/src/main/java/com/dji/sample/manage/model/dto/UserDTO.java
+3
-0
sample/src/main/java/com/dji/sample/manage/model/dto/UserListDTO.java
+4
-0
sample/src/main/java/com/dji/sample/manage/model/dto/WorkspaceDTO.java
+14
-1
sample/src/main/java/com/dji/sample/manage/model/entity/UserEntity.java
+4
-0
sample/src/main/java/com/dji/sample/manage/model/entity/WorkspaceEntity.java
+4
-0
sample/src/main/java/com/dji/sample/manage/model/enums/RoleTypeEnum.java
+51
-0
sample/src/main/java/com/dji/sample/manage/model/param/searchParam/WorkspaceSearchParam.java
+28
-0
sample/src/main/java/com/dji/sample/manage/service/IUserService.java
+2
-0
sample/src/main/java/com/dji/sample/manage/service/IWorkspaceService.java
+17
-1
sample/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java
+78
-12
sample/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java
+210
-1
No files found.
sample/src/main/java/com/dji/sample/common/model/CustomClaim.java
View file @
f58fa42a
...
@@ -33,6 +33,9 @@ public class CustomClaim {
...
@@ -33,6 +33,9 @@ public class CustomClaim {
@JsonAlias
(
"user_type"
)
@JsonAlias
(
"user_type"
)
private
Integer
userType
;
private
Integer
userType
;
@JsonAlias
(
"role_type"
)
private
Integer
roleType
;
@JsonAlias
(
"workspace_id"
)
@JsonAlias
(
"workspace_id"
)
private
String
workspaceId
;
private
String
workspaceId
;
...
...
sample/src/main/java/com/dji/sample/common/util/SecurityUtils.java
View file @
f58fa42a
...
@@ -2,6 +2,7 @@ package com.dji.sample.common.util;
...
@@ -2,6 +2,7 @@ package com.dji.sample.common.util;
import
com.auth0.jwt.interfaces.DecodedJWT
;
import
com.auth0.jwt.interfaces.DecodedJWT
;
import
com.dji.sample.common.model.CustomClaim
;
import
com.dji.sample.common.model.CustomClaim
;
import
com.dji.sample.manage.model.enums.RoleTypeEnum
;
import
com.dji.sample.manage.model.enums.UserTypeEnum
;
import
com.dji.sample.manage.model.enums.UserTypeEnum
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.RequestContextHolder
;
...
@@ -70,4 +71,186 @@ public class SecurityUtils {
...
@@ -70,4 +71,186 @@ public class SecurityUtils {
return
request
.
getHeader
(
PARAM_TOKEN
);
return
request
.
getHeader
(
PARAM_TOKEN
);
}
}
public
static
Integer
getRoleType
()
{
DecodedJWT
jwt
=
JwtUtil
.
verifyToken
(
getToken
());
CustomClaim
customClaim
=
new
CustomClaim
(
jwt
.
getClaims
());
return
customClaim
.
getRoleType
();
}
public
static
String
getWorkspaceId
()
{
DecodedJWT
jwt
=
JwtUtil
.
verifyToken
(
getToken
());
CustomClaim
customClaim
=
new
CustomClaim
(
jwt
.
getClaims
());
return
customClaim
.
getWorkspaceId
();
}
public
static
String
getUserId
()
{
DecodedJWT
jwt
=
JwtUtil
.
verifyToken
(
getToken
());
CustomClaim
customClaim
=
new
CustomClaim
(
jwt
.
getClaims
());
return
customClaim
.
getId
();
}
public
static
boolean
isSysAdminRole
()
{
Integer
roleType
=
getRoleType
();
return
isSysAdminRole
(
roleType
);
}
public
static
boolean
isNotSysAdminRole
()
{
return
!
isSysAdminRole
();
}
public
static
boolean
isSysAdminRole
(
Integer
roleType
)
{
return
roleType
==
RoleTypeEnum
.
SYS_ADMIN
.
getVal
();
}
public
static
boolean
isNotSysAdminRole
(
Integer
roleType
)
{
return
!
isSysAdminRole
(
roleType
);
}
public
static
boolean
isAdminRole
()
{
Integer
roleType
=
getRoleType
();
return
isAdminRole
(
roleType
);
}
public
static
boolean
isNotAdminRole
()
{
return
!
isAdminRole
();
}
public
static
boolean
isAdminRole
(
Integer
roleType
)
{
return
roleType
==
RoleTypeEnum
.
ADMIN
.
getVal
();
}
public
static
boolean
isNotAdminRole
(
Integer
roleType
)
{
return
!
isAdminRole
(
roleType
);
}
public
static
boolean
isPilotRole
()
{
Integer
roleType
=
getRoleType
();
return
isPilotRole
(
roleType
);
}
public
static
boolean
isNotPilotRole
()
{
return
!
isPilotRole
();
}
public
static
boolean
isPilotRole
(
Integer
roleType
)
{
return
roleType
==
RoleTypeEnum
.
PILOT
.
getVal
();
}
public
static
boolean
isNotPilotRole
(
Integer
roleType
)
{
return
!
isPilotRole
(
roleType
);
}
public
static
boolean
isMemberRole
()
{
Integer
roleType
=
getRoleType
();
return
isMemberRole
(
roleType
);
}
public
static
boolean
isNotMemberRole
()
{
return
!
isMemberRole
();
}
public
static
boolean
isMemberRole
(
Integer
roleType
)
{
return
roleType
==
RoleTypeEnum
.
MEMBER
.
getVal
();
}
public
static
boolean
isNotMemberRole
(
Integer
roleType
)
{
return
!
isMemberRole
(
roleType
);
}
public
static
boolean
aboveMemberRoleAndThrowError
()
{
boolean
result
=
aboveMemberRole
();
if
(!
result
)
{
throw
new
RuntimeException
(
"The current role has no permissions"
);
}
return
true
;
}
public
static
boolean
aboveMemberRole
()
{
Integer
roleType
=
getRoleType
();
return
aboveMemberRole
(
roleType
);
}
public
static
boolean
aboveMemberRole
(
Integer
roleType
)
{
int
[]
roleArr
=
{
RoleTypeEnum
.
MEMBER
.
getVal
(),
RoleTypeEnum
.
PILOT
.
getVal
(),
RoleTypeEnum
.
ADMIN
.
getVal
(),
RoleTypeEnum
.
SYS_ADMIN
.
getVal
()};
for
(
int
role
:
roleArr
){
if
(
roleType
==
role
)
{
return
true
;
}
}
return
false
;
}
public
static
boolean
abovePilotRoleAndThrowError
()
{
boolean
result
=
abovePilotRole
();
if
(!
result
)
{
throw
new
RuntimeException
(
"The current role has no permissions"
);
}
return
true
;
}
public
static
boolean
abovePilotRole
()
{
Integer
roleType
=
getRoleType
();
return
abovePilotRole
(
roleType
);
}
public
static
boolean
abovePilotRole
(
Integer
roleType
)
{
int
[]
roleArr
=
{
RoleTypeEnum
.
PILOT
.
getVal
(),
RoleTypeEnum
.
ADMIN
.
getVal
(),
RoleTypeEnum
.
SYS_ADMIN
.
getVal
()};
for
(
int
role
:
roleArr
){
if
(
roleType
==
role
)
{
return
true
;
}
}
return
false
;
}
public
static
boolean
aboveAdminRoleAndThrowError
()
{
boolean
result
=
aboveAdminRole
();
if
(!
result
)
{
throw
new
RuntimeException
(
"The current role has no permissions"
);
}
return
true
;
}
public
static
boolean
aboveAdminRole
()
{
Integer
roleType
=
getRoleType
();
return
aboveAdminRole
(
roleType
);
}
public
static
boolean
aboveAdminRole
(
Integer
roleType
)
{
int
[]
roleArr
=
{
RoleTypeEnum
.
ADMIN
.
getVal
(),
RoleTypeEnum
.
SYS_ADMIN
.
getVal
()};
for
(
int
role
:
roleArr
){
if
(
roleType
==
role
)
{
return
true
;
}
}
return
false
;
}
public
static
boolean
aboveSysAdminRoleAndThrowError
()
{
boolean
result
=
aboveSysAdminRole
();
if
(!
result
)
{
throw
new
RuntimeException
(
"The current role has no permissions"
);
}
return
true
;
}
public
static
boolean
aboveSysAdminRole
()
{
Integer
roleType
=
getRoleType
();
return
aboveSysAdminRole
(
roleType
);
}
public
static
boolean
aboveSysAdminRole
(
Integer
roleType
)
{
int
[]
roleArr
=
{
RoleTypeEnum
.
SYS_ADMIN
.
getVal
()};
for
(
int
role
:
roleArr
)
{
if
(
roleType
==
role
)
{
return
true
;
}
}
return
false
;
}
}
}
sample/src/main/java/com/dji/sample/manage/controller/WorkspaceController.java
View file @
f58fa42a
...
@@ -2,16 +2,17 @@ package com.dji.sample.manage.controller;
...
@@ -2,16 +2,17 @@ package com.dji.sample.manage.controller;
import
com.dji.sample.common.model.CustomClaim
;
import
com.dji.sample.common.model.CustomClaim
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam
;
import
com.dji.sample.manage.service.IWorkspaceService
;
import
com.dji.sample.manage.service.IWorkspaceService
;
import
com.dji.sdk.common.HttpResultResponse
;
import
com.dji.sdk.common.HttpResultResponse
;
import
com.dji.sdk.common.PaginationData
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Optional
;
import
java.util.Optional
;
import
static
com
.
dji
.
sample
.
common
.
util
.
SecurityUtils
.*;
import
static
com
.
dji
.
sample
.
component
.
AuthInterceptor
.
TOKEN_CLAIM
;
import
static
com
.
dji
.
sample
.
component
.
AuthInterceptor
.
TOKEN_CLAIM
;
/**
/**
...
@@ -38,4 +39,66 @@ public class WorkspaceController {
...
@@ -38,4 +39,66 @@ public class WorkspaceController {
return
workspaceOpt
.
isEmpty
()
?
HttpResultResponse
.
error
()
:
HttpResultResponse
.
success
(
workspaceOpt
.
get
());
return
workspaceOpt
.
isEmpty
()
?
HttpResultResponse
.
error
()
:
HttpResultResponse
.
success
(
workspaceOpt
.
get
());
}
}
@GetMapping
(
"/getOne"
)
public
HttpResultResponse
getWorkspace
(
WorkspaceSearchParam
param
)
{
// 判断权限 系统管理员才允许全查
if
(!
aboveSysAdminRole
())
{
param
.
setRoleWorkspaceId
(
getWorkspaceId
());
}
WorkspaceDTO
workspace
=
workspaceService
.
getWorkspace
(
param
);
return
HttpResultResponse
.
success
(
workspace
);
}
@GetMapping
(
"/page"
)
public
HttpResultResponse
getWorkspacePage
(
WorkspaceSearchParam
param
,
@RequestParam
(
defaultValue
=
"1"
)
Long
page
,
@RequestParam
(
value
=
"page_size"
,
defaultValue
=
"50"
)
Long
pageSize
)
{
// 判断权限 系统管理员才允许全查
if
(!
aboveSysAdminRole
())
{
param
.
setRoleWorkspaceId
(
getWorkspaceId
());
}
PaginationData
<
WorkspaceDTO
>
workspacePage
=
workspaceService
.
getWorkspacePage
(
param
,
page
,
pageSize
);
return
HttpResultResponse
.
success
(
workspacePage
);
}
@PostMapping
(
"/delete"
)
public
HttpResultResponse
delWorkspace
(
@RequestParam
(
name
=
"id"
)
Integer
id
)
{
// 判断权限 系统管理员才允许修改
aboveSysAdminRoleAndThrowError
();
boolean
isDel
=
workspaceService
.
delWorkspaceById
(
id
);
return
isDel
?
HttpResultResponse
.
success
()
:
HttpResultResponse
.
error
();
}
@PostMapping
(
"/edit"
)
public
HttpResultResponse
editWorkspace
(
@RequestBody
WorkspaceDTO
workspaceDTO
)
{
// 判断权限 管理员才允许修改
aboveAdminRoleAndThrowError
();
boolean
isEdit
=
workspaceService
.
editWorkspace
(
workspaceDTO
);
return
isEdit
?
HttpResultResponse
.
success
()
:
HttpResultResponse
.
error
();
}
@PostMapping
(
"/add"
)
public
HttpResultResponse
addWorkspace
(
@RequestBody
WorkspaceDTO
workspaceDTO
)
{
// 判断权限 系统管理员才允许新增
aboveSysAdminRoleAndThrowError
();
WorkspaceDTO
workspace
=
workspaceService
.
addWorkspace
(
workspaceDTO
);
return
HttpResultResponse
.
success
(
workspace
);
}
}
}
\ No newline at end of file
sample/src/main/java/com/dji/sample/manage/model/dto/UserDTO.java
View file @
f58fa42a
...
@@ -34,4 +34,7 @@ public class UserDTO {
...
@@ -34,4 +34,7 @@ public class UserDTO {
@JsonProperty
(
"mqtt_addr"
)
@JsonProperty
(
"mqtt_addr"
)
private
String
mqttAddr
;
private
String
mqttAddr
;
@JsonProperty
(
"role_type"
)
private
Integer
roleType
;
}
}
sample/src/main/java/com/dji/sample/manage/model/dto/UserListDTO.java
View file @
f58fa42a
...
@@ -28,6 +28,10 @@ public class UserListDTO {
...
@@ -28,6 +28,10 @@ public class UserListDTO {
private
String
userType
;
private
String
userType
;
private
String
roleTypeName
;
private
Integer
roleType
;
private
String
mqttUsername
;
private
String
mqttUsername
;
private
String
mqttPassword
;
private
String
mqttPassword
;
...
...
sample/src/main/java/com/dji/sample/manage/model/dto/WorkspaceDTO.java
View file @
f58fa42a
package
com
.
dji
.
sample
.
manage
.
model
.
dto
;
package
com
.
dji
.
sample
.
manage
.
model
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
/**
* @author sean.zhou
* @author sean.zhou
* @date 2021/11/22
* @date 2021/11/22
...
@@ -14,10 +17,11 @@ import lombok.NoArgsConstructor;
...
@@ -14,10 +17,11 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
@NoArgsConstructor
@Builder
@Builder
public
class
WorkspaceDTO
{
public
class
WorkspaceDTO
implements
Serializable
{
private
Integer
id
;
private
Integer
id
;
@JsonProperty
(
"workspace_id"
)
private
String
workspaceId
;
private
String
workspaceId
;
private
String
workspaceName
;
private
String
workspaceName
;
...
@@ -27,4 +31,12 @@ public class WorkspaceDTO {
...
@@ -27,4 +31,12 @@ public class WorkspaceDTO {
private
String
platformName
;
private
String
platformName
;
private
String
bindCode
;
private
String
bindCode
;
@JsonProperty
(
"admin_user_id"
)
private
String
adminUserId
;
@JsonProperty
(
"admin_user_name"
)
private
String
adminUserName
;
@JsonProperty
(
"admin_user_password"
)
private
String
adminUserPassword
;
}
}
\ No newline at end of file
sample/src/main/java/com/dji/sample/manage/model/entity/UserEntity.java
View file @
f58fa42a
...
@@ -38,4 +38,8 @@ public class UserEntity implements Serializable {
...
@@ -38,4 +38,8 @@ public class UserEntity implements Serializable {
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
@TableField
(
value
=
"update_time"
,
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Long
updateTime
;
private
Long
updateTime
;
@TableField
(
value
=
"role_type"
)
private
Integer
roleType
;
}
}
sample/src/main/java/com/dji/sample/manage/model/entity/WorkspaceEntity.java
View file @
f58fa42a
...
@@ -24,6 +24,10 @@ public class WorkspaceEntity implements Serializable {
...
@@ -24,6 +24,10 @@ public class WorkspaceEntity implements Serializable {
@TableField
(
value
=
"platform_name"
)
@TableField
(
value
=
"platform_name"
)
private
String
platformName
;
private
String
platformName
;
@TableField
(
value
=
"admin_user_id"
)
private
String
adminUserId
;
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
private
Long
createTime
;
private
Long
createTime
;
...
...
sample/src/main/java/com/dji/sample/manage/model/enums/RoleTypeEnum.java
0 → 100644
View file @
f58fa42a
package
com
.
dji
.
sample
.
manage
.
model
.
enums
;
/**
* 角色类型
* @author guan
*/
public
enum
RoleTypeEnum
{
MEMBER
(
0
,
"成员"
),
ADMIN
(
1
,
"管理员"
),
PILOT
(
2
,
"飞手"
),
SYS_ADMIN
(
100
,
"系统管理员"
),
UNKNOWN
(-
1
,
"Unknown"
);
private
int
val
;
private
String
desc
;
RoleTypeEnum
(
int
val
,
String
desc
)
{
this
.
val
=
val
;
this
.
desc
=
desc
;
}
public
int
getVal
()
{
return
this
.
val
;
}
public
String
getDesc
()
{
return
this
.
desc
;
}
public
static
RoleTypeEnum
find
(
int
val
)
{
if
(
val
==
SYS_ADMIN
.
val
)
{
return
SYS_ADMIN
;
}
if
(
val
==
ADMIN
.
val
)
{
return
ADMIN
;
}
if
(
val
==
PILOT
.
val
)
{
return
PILOT
;
}
if
(
val
==
MEMBER
.
val
)
{
return
MEMBER
;
}
return
UNKNOWN
;
}
}
sample/src/main/java/com/dji/sample/manage/model/param/searchParam/WorkspaceSearchParam.java
0 → 100644
View file @
f58fa42a
package
com
.
dji
.
sample
.
manage
.
model
.
param
.
searchParam
;
import
lombok.Data
;
/**
* @author guan
*/
@Data
public
class
WorkspaceSearchParam
{
private
String
workspaceId
;
private
Integer
id
;
private
String
workspaceName
;
private
String
workspaceDesc
;
private
String
platformName
;
private
String
bindCode
;
/**
* 用于系统权限校验
*/
private
String
roleWorkspaceId
;
}
sample/src/main/java/com/dji/sample/manage/service/IUserService.java
View file @
f58fa42a
...
@@ -56,4 +56,6 @@ public interface IUserService extends IService<UserEntity> {
...
@@ -56,4 +56,6 @@ public interface IUserService extends IService<UserEntity> {
*/
*/
HttpResultResponse
getUserByUserId
(
String
username
,
String
workspaceId
);
HttpResultResponse
getUserByUserId
(
String
username
,
String
workspaceId
);
UserEntity
addWorkspaceAdminUser
(
UserEntity
user
);
}
}
sample/src/main/java/com/dji/sample/manage/service/IWorkspaceService.java
View file @
f58fa42a
package
com
.
dji
.
sample
.
manage
.
service
;
package
com
.
dji
.
sample
.
manage
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.entity.WorkspaceEntity
;
import
com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam
;
import
com.dji.sdk.common.PaginationData
;
import
java.util.Optional
;
import
java.util.Optional
;
public
interface
IWorkspaceService
{
public
interface
IWorkspaceService
extends
IService
<
WorkspaceEntity
>
{
/**
/**
* Query the information of a workspace based on its workspace id.
* Query the information of a workspace based on its workspace id.
...
@@ -21,4 +25,16 @@ public interface IWorkspaceService {
...
@@ -21,4 +25,16 @@ public interface IWorkspaceService {
*/
*/
Optional
<
WorkspaceDTO
>
getWorkspaceNameByBindCode
(
String
bindCode
);
Optional
<
WorkspaceDTO
>
getWorkspaceNameByBindCode
(
String
bindCode
);
PaginationData
<
WorkspaceDTO
>
getWorkspacePage
(
WorkspaceSearchParam
param
,
Long
page
,
Long
pageSize
);
WorkspaceDTO
addWorkspace
(
WorkspaceDTO
addWorkspace
);
boolean
editWorkspace
(
WorkspaceDTO
editWorkspace
);
boolean
delWorkspaceById
(
Integer
id
);
boolean
delWorkspaceByWorkspaceId
(
String
workspaceId
);
WorkspaceDTO
getWorkspace
(
WorkspaceSearchParam
param
);
}
}
sample/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java
View file @
f58fa42a
...
@@ -17,6 +17,8 @@ import com.dji.sample.manage.model.dto.UserDTO;
...
@@ -17,6 +17,8 @@ import com.dji.sample.manage.model.dto.UserDTO;
import
com.dji.sample.manage.model.dto.UserListDTO
;
import
com.dji.sample.manage.model.dto.UserListDTO
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.dto.WorkspaceDTO
;
import
com.dji.sample.manage.model.entity.UserEntity
;
import
com.dji.sample.manage.model.entity.UserEntity
;
import
com.dji.sample.manage.model.entity.WorkspaceEntity
;
import
com.dji.sample.manage.model.enums.RoleTypeEnum
;
import
com.dji.sample.manage.model.enums.UserTypeEnum
;
import
com.dji.sample.manage.model.enums.UserTypeEnum
;
import
com.dji.sample.manage.service.IUserService
;
import
com.dji.sample.manage.service.IUserService
;
import
com.dji.sample.manage.service.IWorkspaceService
;
import
com.dji.sample.manage.service.IWorkspaceService
;
...
@@ -39,7 +41,7 @@ import java.util.Optional;
...
@@ -39,7 +41,7 @@ import java.util.Optional;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
dji
.
sample
.
common
.
util
.
SecurityUtils
.
isNotAdmin
;
import
static
com
.
dji
.
sample
.
common
.
util
.
SecurityUtils
.
*
;
@Service
@Service
@Transactional
@Transactional
...
@@ -100,8 +102,10 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -100,8 +102,10 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.
setMessage
(
"invalid workspace id"
);
.
setMessage
(
"invalid workspace id"
);
}
}
// 创建token
CustomClaim
customClaim
=
new
CustomClaim
(
userEntity
.
getUserId
(),
CustomClaim
customClaim
=
new
CustomClaim
(
userEntity
.
getUserId
(),
userEntity
.
getUsername
(),
userEntity
.
getUserType
(),
userEntity
.
getUsername
(),
userEntity
.
getUserType
(),
userEntity
.
getRoleType
(),
workspaceOpt
.
get
().
getWorkspaceId
());
workspaceOpt
.
get
().
getWorkspaceId
());
// create token
// create token
...
@@ -175,18 +179,36 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -175,18 +179,36 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
@Override
@Override
public
Boolean
deleteUser
(
String
workspaceId
,
String
userId
)
{
public
Boolean
deleteUser
(
String
workspaceId
,
String
userId
)
{
if
(
isNotAdmin
())
{
// 管理员以上才能删除
throw
new
RuntimeException
(
"The current user is not an admin and has no permissions"
);
aboveAdminRoleAndThrowError
();
}
// if (isNotAdmin()) {
// throw new RuntimeException("The current user is not an admin and has no permissions");
// }
LambdaQueryWrapper
<
UserEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
UserEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
UserEntity:
:
getWorkspaceId
,
workspaceId
);
queryWrapper
.
eq
(
UserEntity:
:
getWorkspaceId
,
workspaceId
);
queryWrapper
.
eq
(
UserEntity:
:
getUserId
,
userId
);
queryWrapper
.
eq
(
UserEntity:
:
getUserId
,
userId
);
// 需要先查询
// 需要先查询
UserEntity
userEntity
=
this
.
mapper
.
selectOne
(
queryWrapper
);
UserEntity
userEntity
=
this
.
mapper
.
selectOne
(
queryWrapper
);
// 管理员
// 不能删除自身
if
(
userEntity
.
getUserType
()
==
UserTypeEnum
.
WEB
.
getVal
())
{
if
(
userEntity
.
getUserId
().
equals
(
getUserId
()))
{
throw
new
RuntimeException
(
"Failed to delete admin"
);
throw
new
RuntimeException
(
"can't delete self"
);
}
// 不能删除高级用户
if
(
userEntity
.
getRoleType
()
==
RoleTypeEnum
.
SYS_ADMIN
.
getVal
())
{
aboveSysAdminRoleAndThrowError
();
}
// if (userEntity.getUserType() == UserTypeEnum.WEB.getVal()) {
// throw new RuntimeException("Failed to delete admin");
// }
// 然后 假如是删除管理员 不能删除 项目管理员
if
(
userEntity
.
getRoleType
()
==
RoleTypeEnum
.
ADMIN
.
getVal
())
{
LambdaQueryWrapper
<
WorkspaceEntity
>
workspaceWrapper
=
new
LambdaQueryWrapper
<>();
workspaceWrapper
.
eq
(
WorkspaceEntity:
:
getAdminUserId
,
userEntity
.
getUserId
());
List
<
WorkspaceEntity
>
workspaceEntities
=
workspaceService
.
list
(
workspaceWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
workspaceEntities
))
{
throw
new
RuntimeException
(
"can't delete workspace admin"
);
}
}
}
int
delete
=
mapper
.
delete
(
queryWrapper
);
int
delete
=
mapper
.
delete
(
queryWrapper
);
...
@@ -197,11 +219,14 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -197,11 +219,14 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
@Override
@Override
public
Boolean
addUser
(
String
workspaceId
,
UserEntity
user
)
{
public
Boolean
addUser
(
String
workspaceId
,
UserEntity
user
)
{
// 管理员才能创建用户
aboveAdminRoleAndThrowError
();
// 用户名不能重复
// 用户名不能重复
String
username
=
user
.
getUsername
();
String
username
=
user
.
getUsername
();
LambdaQueryWrapper
<
UserEntity
>
userQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
UserEntity
>
userQueryWrapper
=
new
LambdaQueryWrapper
<>();
userQueryWrapper
.
eq
(
UserEntity:
:
getUsername
,
username
);
userQueryWrapper
.
eq
(
UserEntity:
:
getUsername
,
username
);
userQueryWrapper
.
eq
(
UserEntity:
:
getWorkspaceId
,
workspaceId
);
//
userQueryWrapper.eq(UserEntity::getWorkspaceId, workspaceId);
List
<
UserEntity
>
nameUserList
=
this
.
mapper
.
selectList
(
userQueryWrapper
);
List
<
UserEntity
>
nameUserList
=
this
.
mapper
.
selectList
(
userQueryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
nameUserList
))
{
if
(!
CollectionUtils
.
isEmpty
(
nameUserList
))
{
throw
new
RuntimeException
(
"the username is already existed"
);
throw
new
RuntimeException
(
"the username is already existed"
);
...
@@ -210,13 +235,19 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -210,13 +235,19 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
UserEntity
userEntity
=
new
UserEntity
();
UserEntity
userEntity
=
new
UserEntity
();
// 普通用户不能创建管理员
// 普通用户不能创建管理员
if
(
user
.
getUserType
()
==
UserTypeEnum
.
WEB
.
getVal
())
{
// if (user.getUserType() == UserTypeEnum.WEB.getVal()) {
if
(
isNotAdmin
())
{
// if (isNotAdmin()) {
throw
new
RuntimeException
(
"The current user is not an admin and has no permissions"
);
// throw new RuntimeException("The current user is not an admin and has no permissions");
}
// }
// }
// 不能创建高级用户
if
(
user
.
getRoleType
()
==
RoleTypeEnum
.
SYS_ADMIN
.
getVal
())
{
aboveSysAdminRoleAndThrowError
();
}
}
userEntity
.
setUserType
(
user
.
getUserType
()
!=
null
?
user
.
getUserType
()
:
UserTypeEnum
.
PILOT
.
getVal
());
userEntity
.
setUserType
(
user
.
getUserType
()
!=
null
?
user
.
getUserType
()
:
UserTypeEnum
.
PILOT
.
getVal
());
userEntity
.
setRoleType
(
user
.
getRoleType
()
!=
null
?
user
.
getRoleType
()
:
RoleTypeEnum
.
MEMBER
.
getVal
());
userEntity
.
setUserId
(
UUID
.
randomUUID
().
toString
());
userEntity
.
setUserId
(
UUID
.
randomUUID
().
toString
());
userEntity
.
setPassword
(
SecurityUtils
.
encryptPassword
(
user
.
getPassword
()));
userEntity
.
setPassword
(
SecurityUtils
.
encryptPassword
(
user
.
getPassword
()));
userEntity
.
setUsername
(
user
.
getUsername
());
userEntity
.
setUsername
(
user
.
getUsername
());
...
@@ -226,6 +257,38 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -226,6 +257,38 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
return
insert
>
0
;
return
insert
>
0
;
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
UserEntity
addWorkspaceAdminUser
(
UserEntity
user
)
{
// 系统管理员才能创建
aboveSysAdminRoleAndThrowError
();
// 用户名不能重复
String
username
=
user
.
getUsername
();
LambdaQueryWrapper
<
UserEntity
>
userQueryWrapper
=
new
LambdaQueryWrapper
<>();
userQueryWrapper
.
eq
(
UserEntity:
:
getUsername
,
username
);
// userQueryWrapper.eq(UserEntity::getWorkspaceId, user.getWorkspaceId());
List
<
UserEntity
>
nameUserList
=
this
.
list
(
userQueryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
nameUserList
))
{
throw
new
RuntimeException
(
"the username is already existed"
);
}
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setUserType
(
UserTypeEnum
.
WEB
.
getVal
());
userEntity
.
setRoleType
(
RoleTypeEnum
.
ADMIN
.
getVal
());
userEntity
.
setUserId
(
UUID
.
randomUUID
().
toString
());
userEntity
.
setPassword
(
SecurityUtils
.
encryptPassword
(
user
.
getPassword
()));
userEntity
.
setUsername
(
user
.
getUsername
());
userEntity
.
setWorkspaceId
(
user
.
getWorkspaceId
());
boolean
save
=
this
.
save
(
userEntity
);
return
userEntity
;
}
/**
/**
* Convert database entity objects into user data transfer object.
* Convert database entity objects into user data transfer object.
* @param entity
* @param entity
...
@@ -240,6 +303,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -240,6 +303,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.
mqttUsername
(
entity
.
getMqttUsername
())
.
mqttUsername
(
entity
.
getMqttUsername
())
.
mqttPassword
(
entity
.
getMqttPassword
())
.
mqttPassword
(
entity
.
getMqttPassword
())
.
userType
(
UserTypeEnum
.
find
(
entity
.
getUserType
()).
getDesc
())
.
userType
(
UserTypeEnum
.
find
(
entity
.
getUserType
()).
getDesc
())
.
roleTypeName
(
RoleTypeEnum
.
find
(
entity
.
getRoleType
()).
getDesc
())
.
roleType
(
entity
.
getRoleType
())
.
createTime
(
LocalDateTime
.
ofInstant
(
.
createTime
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
entity
.
getCreateTime
()),
ZoneId
.
systemDefault
()));
Instant
.
ofEpochMilli
(
entity
.
getCreateTime
()),
ZoneId
.
systemDefault
()));
Optional
<
WorkspaceDTO
>
workspaceOpt
=
workspaceService
.
getWorkspaceByWorkspaceId
(
entity
.
getWorkspaceId
());
Optional
<
WorkspaceDTO
>
workspaceOpt
=
workspaceService
.
getWorkspaceByWorkspaceId
(
entity
.
getWorkspaceId
());
...
@@ -282,6 +347,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
...
@@ -282,6 +347,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.
userId
(
entity
.
getUserId
())
.
userId
(
entity
.
getUserId
())
.
username
(
entity
.
getUsername
())
.
username
(
entity
.
getUsername
())
.
userType
(
entity
.
getUserType
())
.
userType
(
entity
.
getUserType
())
.
roleType
(
entity
.
getRoleType
())
.
mqttUsername
(
entity
.
getMqttUsername
())
.
mqttUsername
(
entity
.
getMqttUsername
())
.
mqttPassword
(
entity
.
getMqttPassword
())
.
mqttPassword
(
entity
.
getMqttPassword
())
.
mqttAddr
(
MqttPropertyConfiguration
.
getBasicMqttAddress
())
.
mqttAddr
(
MqttPropertyConfiguration
.
getBasicMqttAddress
())
...
...
sample/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java
View file @
f58fa42a
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment