Commit f58fa42a by gdj

增加角色权限roleType,修改workspace和user。

parent 298ab2f4
......@@ -33,6 +33,9 @@ public class CustomClaim {
@JsonAlias("user_type")
private Integer userType;
@JsonAlias("role_type")
private Integer roleType;
@JsonAlias("workspace_id")
private String workspaceId;
......
......@@ -2,6 +2,7 @@ package com.dji.sample.common.util;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.manage.model.enums.RoleTypeEnum;
import com.dji.sample.manage.model.enums.UserTypeEnum;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.context.request.RequestContextHolder;
......@@ -70,4 +71,186 @@ public class SecurityUtils {
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;
}
}
......@@ -2,16 +2,17 @@ package com.dji.sample.manage.controller;
import com.dji.sample.common.model.CustomClaim;
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.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Optional;
import static com.dji.sample.common.util.SecurityUtils.*;
import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
/**
......@@ -38,4 +39,66 @@ public class WorkspaceController {
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
......@@ -34,4 +34,7 @@ public class UserDTO {
@JsonProperty("mqtt_addr")
private String mqttAddr;
@JsonProperty("role_type")
private Integer roleType;
}
......@@ -28,6 +28,10 @@ public class UserListDTO {
private String userType;
private String roleTypeName;
private Integer roleType;
private String mqttUsername;
private String mqttPassword;
......
package com.dji.sample.manage.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author sean.zhou
* @date 2021/11/22
......@@ -14,10 +17,11 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class WorkspaceDTO {
public class WorkspaceDTO implements Serializable {
private Integer id;
@JsonProperty("workspace_id")
private String workspaceId;
private String workspaceName;
......@@ -27,4 +31,12 @@ public class WorkspaceDTO {
private String platformName;
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
......@@ -38,4 +38,8 @@ public class UserEntity implements Serializable {
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
@TableField(value = "role_type")
private Integer roleType;
}
......@@ -24,6 +24,10 @@ public class WorkspaceEntity implements Serializable {
@TableField(value = "platform_name")
private String platformName;
@TableField(value = "admin_user_id")
private String adminUserId;
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime;
......
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;
}
}
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;
}
......@@ -56,4 +56,6 @@ public interface IUserService extends IService<UserEntity> {
*/
HttpResultResponse getUserByUserId(String username, String workspaceId);
UserEntity addWorkspaceAdminUser(UserEntity user);
}
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.entity.WorkspaceEntity;
import com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam;
import com.dji.sdk.common.PaginationData;
import java.util.Optional;
public interface IWorkspaceService {
public interface IWorkspaceService extends IService<WorkspaceEntity> {
/**
* Query the information of a workspace based on its workspace id.
......@@ -21,4 +25,16 @@ public interface IWorkspaceService {
*/
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);
}
......@@ -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.WorkspaceDTO;
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.service.IUserService;
import com.dji.sample.manage.service.IWorkspaceService;
......@@ -39,7 +41,7 @@ import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import static com.dji.sample.common.util.SecurityUtils.isNotAdmin;
import static com.dji.sample.common.util.SecurityUtils.*;
@Service
@Transactional
......@@ -100,8 +102,10 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.setMessage("invalid workspace id");
}
// 创建token
CustomClaim customClaim = new CustomClaim(userEntity.getUserId(),
userEntity.getUsername(), userEntity.getUserType(),
userEntity.getRoleType(),
workspaceOpt.get().getWorkspaceId());
// create token
......@@ -175,18 +179,36 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
@Override
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<>();
queryWrapper.eq(UserEntity::getWorkspaceId, workspaceId);
queryWrapper.eq(UserEntity::getUserId, userId);
// 需要先查询
UserEntity userEntity = this.mapper.selectOne(queryWrapper);
// 管理员
if (userEntity.getUserType() == UserTypeEnum.WEB.getVal()) {
throw new RuntimeException("Failed to delete admin");
// 不能删除自身
if (userEntity.getUserId().equals(getUserId())) {
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);
......@@ -197,11 +219,14 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
@Override
public Boolean addUser(String workspaceId, UserEntity user) {
// 管理员才能创建用户
aboveAdminRoleAndThrowError();
// 用户名不能重复
String username = user.getUsername();
LambdaQueryWrapper<UserEntity> userQueryWrapper = new LambdaQueryWrapper<>();
userQueryWrapper.eq(UserEntity::getUsername, username);
userQueryWrapper.eq(UserEntity::getWorkspaceId, workspaceId);
// userQueryWrapper.eq(UserEntity::getWorkspaceId, workspaceId);
List<UserEntity> nameUserList = this.mapper.selectList(userQueryWrapper);
if (!CollectionUtils.isEmpty(nameUserList)) {
throw new RuntimeException("the username is already existed");
......@@ -210,13 +235,19 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
UserEntity userEntity = new UserEntity();
// 普通用户不能创建管理员
if (user.getUserType() == UserTypeEnum.WEB.getVal()) {
if (isNotAdmin()) {
throw new RuntimeException("The current user is not an admin and has no permissions");
}
// if (user.getUserType() == UserTypeEnum.WEB.getVal()) {
// if (isNotAdmin()) {
// 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.setRoleType(user.getRoleType() != null ? user.getRoleType() : RoleTypeEnum.MEMBER.getVal());
userEntity.setUserId(UUID.randomUUID().toString());
userEntity.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
userEntity.setUsername(user.getUsername());
......@@ -226,6 +257,38 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
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.
* @param entity
......@@ -240,6 +303,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.mqttUsername(entity.getMqttUsername())
.mqttPassword(entity.getMqttPassword())
.userType(UserTypeEnum.find(entity.getUserType()).getDesc())
.roleTypeName(RoleTypeEnum.find(entity.getRoleType()).getDesc())
.roleType(entity.getRoleType())
.createTime(LocalDateTime.ofInstant(
Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()));
Optional<WorkspaceDTO> workspaceOpt = workspaceService.getWorkspaceByWorkspaceId(entity.getWorkspaceId());
......@@ -282,6 +347,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, UserEntity> implem
.userId(entity.getUserId())
.username(entity.getUsername())
.userType(entity.getUserType())
.roleType(entity.getRoleType())
.mqttUsername(entity.getMqttUsername())
.mqttPassword(entity.getMqttPassword())
.mqttAddr(MqttPropertyConfiguration.getBasicMqttAddress())
......
package com.dji.sample.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dji.sample.manage.dao.IWorkspaceMapper;
import com.dji.sample.manage.model.dto.WorkspaceDTO;
import com.dji.sample.manage.model.entity.UserEntity;
import com.dji.sample.manage.model.entity.WorkspaceEntity;
import com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam;
import com.dji.sample.manage.service.IUserService;
import com.dji.sample.manage.service.IWorkspaceService;
import com.dji.sdk.common.Pagination;
import com.dji.sdk.common.PaginationData;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
@Transactional
public class WorkspaceServiceImpl implements IWorkspaceService {
public class WorkspaceServiceImpl extends ServiceImpl<IWorkspaceMapper, WorkspaceEntity> implements IWorkspaceService {
@Autowired
private IWorkspaceMapper mapper;
......@@ -22,6 +36,11 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
@Autowired
private ObjectMapper objectMapper;
@Autowired
@Lazy
private IUserService userService;
@Override
public Optional<WorkspaceDTO> getWorkspaceByWorkspaceId(String workspaceId) {
return Optional.ofNullable(entityConvertToDto(
......@@ -36,6 +55,190 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
mapper.selectOne(new LambdaQueryWrapper<WorkspaceEntity>().eq(WorkspaceEntity::getBindCode, bindCode))));
}
@Override
public PaginationData<WorkspaceDTO> getWorkspacePage(WorkspaceSearchParam param, Long page, Long pageSize) {
LambdaQueryWrapper<WorkspaceEntity> workspaceQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(param.getRoleWorkspaceId())) {
workspaceQueryWrapper.eq(WorkspaceEntity::getWorkspaceId, param.getRoleWorkspaceId());
}
if (StringUtils.hasText(param.getWorkspaceId())) {
workspaceQueryWrapper.eq(WorkspaceEntity::getWorkspaceId, param.getWorkspaceId());
}
// 增加查询内容
if (StringUtils.hasText(param.getWorkspaceName())) {
workspaceQueryWrapper.like(WorkspaceEntity::getWorkspaceName, param.getWorkspaceName());
}
if (StringUtils.hasText(param.getWorkspaceDesc())) {
workspaceQueryWrapper.like(WorkspaceEntity::getWorkspaceDesc, param.getWorkspaceDesc());
}
if (StringUtils.hasText(param.getPlatformName())) {
workspaceQueryWrapper.like(WorkspaceEntity::getPlatformName, param.getPlatformName());
}
if (StringUtils.hasText(param.getBindCode())) {
workspaceQueryWrapper.eq(WorkspaceEntity::getBindCode, param.getBindCode());
}
Page<WorkspaceEntity> pagination = this.page(new Page<>(page, pageSize), workspaceQueryWrapper);
List<WorkspaceDTO> workspaceDTOList = pagination.getRecords().stream()
.map(this::entityConvertToDto)
//.peek(fleet -> {})
.collect(Collectors.toList());
return new PaginationData<>(workspaceDTOList, new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal()));
}
@Transactional(rollbackFor = Exception.class)
@Override
public WorkspaceDTO addWorkspace(WorkspaceDTO workspaceDTO) {
WorkspaceEntity addWorkspace = new WorkspaceEntity();
// 绑定码 不能重复
String bindCode = workspaceDTO.getBindCode();
if (!StringUtils.hasText(bindCode)) {
throw new RuntimeException("bindCode can't be null");
}
// 查询
LambdaQueryWrapper<WorkspaceEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(WorkspaceEntity::getBindCode, bindCode);
List<WorkspaceEntity> bingCodeList = this.list(queryWrapper);
if (!CollectionUtils.isEmpty(bingCodeList)) {
throw new RuntimeException("bindCode is already exit");
}
addWorkspace.setWorkspaceId(UUID.randomUUID().toString());
addWorkspace.setWorkspaceName(workspaceDTO.getWorkspaceName());
addWorkspace.setWorkspaceDesc(workspaceDTO.getWorkspaceDesc());
addWorkspace.setPlatformName(workspaceDTO.getPlatformName());
addWorkspace.setBindCode(workspaceDTO.getBindCode());
// 新增workspace管理员
UserEntity workspaceAdmin = new UserEntity();
workspaceAdmin.setWorkspaceId(addWorkspace.getWorkspaceId());
workspaceAdmin.setUsername(workspaceDTO.getAdminUserName());
workspaceAdmin.setPassword(workspaceDTO.getAdminUserPassword());
UserEntity saveAdmin = userService.addWorkspaceAdminUser(workspaceAdmin);
addWorkspace.setAdminUserId(saveAdmin.getUserId());
boolean addWorksapceRes = this.save(addWorkspace);
WorkspaceDTO entityConvertToDto = entityConvertToDto(addWorkspace);
return entityConvertToDto;
}
@Override
public boolean editWorkspace(WorkspaceDTO workspaceDTO) {
if (workspaceDTO.getId() == null && !StringUtils.hasText(workspaceDTO.getWorkspaceId())) {
throw new RuntimeException("id and workspaceId is null");
}
WorkspaceEntity editWorkspace = new WorkspaceEntity();
LambdaQueryWrapper<WorkspaceEntity> queryDbWrapper = new LambdaQueryWrapper<>();
if (workspaceDTO.getId() != null) {
queryDbWrapper.eq(WorkspaceEntity::getId, workspaceDTO.getId());
} else {
queryDbWrapper.eq(WorkspaceEntity::getWorkspaceId, workspaceDTO.getWorkspaceId());
}
WorkspaceEntity dbWorkspace = this.getOne(queryDbWrapper);
LambdaUpdateWrapper<WorkspaceEntity> updateWrapper = new LambdaUpdateWrapper<>();
if (workspaceDTO.getId() != null) {
updateWrapper.eq(WorkspaceEntity::getId, workspaceDTO.getId());
} else {
updateWrapper.eq(WorkspaceEntity::getWorkspaceId, workspaceDTO.getWorkspaceId());
}
// 绑定码 不能重复
String bindCode = workspaceDTO.getBindCode();
if (StringUtils.hasText(bindCode)) {
if (!bindCode.equals(dbWorkspace.getBindCode())) {
// 查询
LambdaQueryWrapper<WorkspaceEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(WorkspaceEntity::getBindCode, bindCode);
List<WorkspaceEntity> bingCodeList = this.list(queryWrapper);
if (!CollectionUtils.isEmpty(bingCodeList)) {
throw new RuntimeException("bindCode is already exit");
}
}
updateWrapper.set(WorkspaceEntity::getBindCode, bindCode);
}
// 修改 名称
if (StringUtils.hasText(workspaceDTO.getWorkspaceName())) {
updateWrapper.set(WorkspaceEntity::getWorkspaceName, workspaceDTO.getWorkspaceName());
}
// 修改 描述
if (StringUtils.hasText(workspaceDTO.getWorkspaceDesc())) {
updateWrapper.set(WorkspaceEntity::getWorkspaceDesc, workspaceDTO.getWorkspaceDesc());
}
// 修改 platform_name
if (StringUtils.hasText(workspaceDTO.getPlatformName())) {
updateWrapper.set(WorkspaceEntity::getPlatformName, workspaceDTO.getPlatformName());
}
boolean update = this.update(updateWrapper);
return update;
}
@Override
public boolean delWorkspaceById(Integer id) {
if (id == null) {
throw new RuntimeException("id is null");
}
boolean remove = this.removeById(id);
return remove;
}
@Override
public boolean delWorkspaceByWorkspaceId(String workspaceId) {
if (StringUtils.hasText(workspaceId)) {
throw new RuntimeException("workspaceId is null");
}
LambdaQueryWrapper<WorkspaceEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WorkspaceEntity::getWorkspaceId, workspaceId);
boolean remove = this.remove(wrapper);
return remove;
}
@Override
public WorkspaceDTO getWorkspace(WorkspaceSearchParam param) {
LambdaQueryWrapper<WorkspaceEntity> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(param.getRoleWorkspaceId())) {
wrapper.eq(WorkspaceEntity::getWorkspaceId, param.getRoleWorkspaceId());
}
String workSpaceId = param.getWorkspaceId();
if (StringUtils.hasText(workSpaceId)) {
wrapper.eq(WorkspaceEntity::getWorkspaceId, workSpaceId);
}
Integer id = param.getId();
if (id != null) {
wrapper.eq(WorkspaceEntity::getId, id);
}
WorkspaceEntity workspaceEntity = this.getOne(wrapper);
WorkspaceDTO workspaceDTO = this.entityConvertToDto(workspaceEntity);
return workspaceDTO;
}
/**
* Convert database entity objects into workspace data transfer object.
* @param entity
......@@ -45,6 +248,10 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
if (entity == null) {
return null;
}
LambdaQueryWrapper<UserEntity> userWrapper = new LambdaQueryWrapper<>();
userWrapper.eq(UserEntity::getUserId, entity.getAdminUserId());
UserEntity adminUser = userService.getOne(userWrapper);
return WorkspaceDTO.builder()
.id(entity.getId())
.workspaceId(entity.getWorkspaceId())
......@@ -52,6 +259,8 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
.workspaceDesc(entity.getWorkspaceDesc())
.workspaceName(entity.getWorkspaceName())
.bindCode(entity.getBindCode())
.adminUserId(entity.getAdminUserId())
.adminUserName(adminUser != null ? adminUser.getUsername() : null)
.build();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment