Commit df607f5c by guoxuejian

org branch init

parent 8e0d465b
...@@ -39,6 +39,9 @@ public class CustomClaim { ...@@ -39,6 +39,9 @@ public class CustomClaim {
@JsonAlias("workspace_id") @JsonAlias("workspace_id")
private String workspaceId; private String workspaceId;
@JsonAlias("org_id")
private String orgId;
/** /**
* Convert the custom claim data type to the Map type. * Convert the custom claim data type to the Map type.
* @return map * @return map
......
...@@ -92,6 +92,13 @@ public class SecurityUtils { ...@@ -92,6 +92,13 @@ public class SecurityUtils {
return customClaim.getId(); return customClaim.getId();
} }
public static String getUsername() {
DecodedJWT jwt = JwtUtil.verifyToken(getToken());
CustomClaim customClaim = new CustomClaim(jwt.getClaims());
return customClaim.getUsername();
}
public static boolean isSysAdminRole() { public static boolean isSysAdminRole() {
Integer roleType = getRoleType(); Integer roleType = getRoleType();
...@@ -120,7 +127,7 @@ public class SecurityUtils { ...@@ -120,7 +127,7 @@ public class SecurityUtils {
} }
public static boolean isProjectAdminRole(Integer roleType) { public static boolean isProjectAdminRole(Integer roleType) {
return roleType == RoleTypeEnum.PROJECT_ADMIN.getVal(); return roleType == RoleTypeEnum.ORG_ADMIN.getVal();
} }
public static boolean isNotProjectAdminRole(Integer roleType) { public static boolean isNotProjectAdminRole(Integer roleType) {
...@@ -189,7 +196,7 @@ public class SecurityUtils { ...@@ -189,7 +196,7 @@ public class SecurityUtils {
return aboveMemberRole(roleType); return aboveMemberRole(roleType);
} }
public static boolean aboveMemberRole(Integer roleType) { public static boolean aboveMemberRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.MEMBER.getVal(), RoleTypeEnum.PILOT.getVal(), RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.PROJECT_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()}; int[] roleArr = {RoleTypeEnum.MEMBER.getVal(), RoleTypeEnum.PILOT.getVal(), RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.ORG_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
for(int role : roleArr){ for(int role : roleArr){
if(roleType == role) { if(roleType == role) {
...@@ -213,7 +220,7 @@ public class SecurityUtils { ...@@ -213,7 +220,7 @@ public class SecurityUtils {
} }
public static boolean abovePilotRole(Integer roleType) { public static boolean abovePilotRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.PILOT.getVal(), RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.PROJECT_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()}; int[] roleArr = {RoleTypeEnum.PILOT.getVal(), RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.ORG_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
for(int role : roleArr){ for(int role : roleArr){
if(roleType == role) { if(roleType == role) {
...@@ -237,7 +244,7 @@ public class SecurityUtils { ...@@ -237,7 +244,7 @@ public class SecurityUtils {
} }
public static boolean aboveAdminRole(Integer roleType) { public static boolean aboveAdminRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.PROJECT_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()}; int[] roleArr = {RoleTypeEnum.ADMIN.getVal(), RoleTypeEnum.ORG_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
for(int role : roleArr){ for(int role : roleArr){
if(roleType == role) { if(roleType == role) {
...@@ -261,7 +268,7 @@ public class SecurityUtils { ...@@ -261,7 +268,7 @@ public class SecurityUtils {
} }
public static boolean aboveProjectAdminRole(Integer roleType) { public static boolean aboveProjectAdminRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.PROJECT_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()}; int[] roleArr = {RoleTypeEnum.ORG_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
for(int role : roleArr) { for(int role : roleArr) {
if(roleType == role) { if(roleType == role) {
......
package com.dji.sample.manage.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dji.sample.manage.model.entity.DeviceOrgEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IDeviceOrgMapper extends BaseMapper<DeviceOrgEntity> {
}
package com.dji.sample.manage.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dji.sample.manage.model.entity.OrgEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IOrgMapper extends BaseMapper<OrgEntity> {
}
package com.dji.sample.manage.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dji.sample.manage.model.dto.UserOrgDTO;
import com.dji.sample.manage.model.entity.UserOrgEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface IUserOrgMapper extends BaseMapper<UserOrgEntity> {
/**
* 查询用户所有关联的组织信息,包含组织名称
* @param userId 用户ID
* @return 用户组织列表(包含组织名称)
*/
@Select("SELECT uo.*, o.org_name FROM manage_user_org uo " +
"LEFT JOIN manage_org o ON uo.org_id = o.org_id " +
"WHERE uo.user_id = #{userId} AND uo.status = 1")
List<UserOrgDTO> selectUserOrgs(@Param("userId") String userId);
}
...@@ -33,6 +33,8 @@ public class DeviceDTO { ...@@ -33,6 +33,8 @@ public class DeviceDTO {
private String workspaceId; private String workspaceId;
private String orgId;
private ControlSourceEnum controlSource; private ControlSourceEnum controlSource;
private String deviceDesc; private String deviceDesc;
......
package com.dji.sample.manage.model.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class OrgDTO {
private Integer id;
private String orgId;
private String orgName;
private String orgDesc;
private String workspaceId;
// private Long createTime;
// private Long updateTime;
}
...@@ -6,6 +6,8 @@ import lombok.Builder; ...@@ -6,6 +6,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List;
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
...@@ -37,4 +39,17 @@ public class UserDTO { ...@@ -37,4 +39,17 @@ public class UserDTO {
@JsonProperty("role_type") @JsonProperty("role_type")
private Integer roleType; private Integer roleType;
private String email;
private String phone;
@JsonProperty("is_super_admin")
private Integer isSuperAdmin;
// 新增字段,表示用户所有关联的组织
private List<UserOrgDTO> orgs;
// 新增字段,表示当前选中的组织
private String currentOrgId;
} }
...@@ -18,7 +18,7 @@ import java.time.LocalDateTime; ...@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
@NoArgsConstructor @NoArgsConstructor
public class UserListDTO { public class UserListDTO {
private Integer id; private Long id;
private String userId; private String userId;
...@@ -36,5 +36,11 @@ public class UserListDTO { ...@@ -36,5 +36,11 @@ public class UserListDTO {
private String mqttPassword; private String mqttPassword;
private String email;
private String phone;
private Integer isSuperAdmin;
private LocalDateTime createTime; private LocalDateTime createTime;
} }
package com.dji.sample.manage.model.dto;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class UserOrgDTO {
private Integer id;
private String userId;
private String orgId;
private String orgName; // 组织名称
private Integer roleType;
private Integer status;
// private String createTime;
// private String updateTime;
}
...@@ -24,6 +24,9 @@ public class WorkspaceDTO implements Serializable { ...@@ -24,6 +24,9 @@ public class WorkspaceDTO implements Serializable {
@JsonProperty("workspace_id") @JsonProperty("workspace_id")
private String workspaceId; private String workspaceId;
@JsonProperty("org_id")
private String orgId;
private String workspaceName; private String workspaceName;
private String workspaceDesc; private String workspaceDesc;
......
...@@ -34,6 +34,9 @@ public class DeviceEntity implements Serializable { ...@@ -34,6 +34,9 @@ public class DeviceEntity implements Serializable {
@TableField(value = "workspace_id") @TableField(value = "workspace_id")
private String workspaceId; private String workspaceId;
@TableField(value = "org_id")
private String orgId;
@TableField(value = "device_type") @TableField(value = "device_type")
private Integer deviceType; private Integer deviceType;
......
package com.dji.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("manage_device_org")
public class DeviceOrgEntity {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer deviceId;
private String orgId;
private Integer isShared;
private Long createTime;
private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
// Getters and Setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getDeviceId() {
return deviceId;
}
public void setDeviceId(Integer deviceId) {
this.deviceId = deviceId;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public Integer getIsShared() {
return isShared;
}
public void setIsShared(Integer isShared) {
this.isShared = isShared;
}
public Long getCreateTime() {
return createTime;
}
public void setCreateTime(Long createTime) {
this.createTime = createTime;
}
public Long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Long updateTime) {
this.updateTime = updateTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getUpdaterId() {
return updaterId;
}
public void setUpdaterId(String updaterId) {
this.updaterId = updaterId;
}
public String getUpdaterName() {
return updaterName;
}
public void setUpdaterName(String updaterName) {
this.updaterName = updaterName;
}
}
package com.dji.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("manage_org")
public class OrgEntity {
@TableId(type = IdType.AUTO)
private Integer id;
private String orgId;
private String orgName;
private String orgDesc;
private String workspaceId;
// private Long createTime;
// private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
// Getters and Setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public String getOrgDesc() {
return orgDesc;
}
public void setOrgDesc(String orgDesc) {
this.orgDesc = orgDesc;
}
public String getWorkspaceId() {
return workspaceId;
}
public void setWorkspaceId(String workspaceId) {
this.workspaceId = workspaceId;
}
// public Long getCreateTime() {
// return createTime;
// }
// public void setCreateTime(Long createTime) {
// this.createTime = createTime;
// }
// public Long getUpdateTime() {
// return updateTime;
// }
// public void setUpdateTime(Long updateTime) {
// this.updateTime = updateTime;
// }
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getUpdaterId() {
return updaterId;
}
public void setUpdaterId(String updaterId) {
this.updaterId = updaterId;
}
public String getUpdaterName() {
return updaterName;
}
public void setUpdaterName(String updaterName) {
this.updaterName = updaterName;
}
}
...@@ -10,20 +10,23 @@ import java.io.Serializable; ...@@ -10,20 +10,23 @@ import java.io.Serializable;
public class UserEntity implements Serializable { public class UserEntity implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; private Long id;
@TableField(value = "user_id") @TableField(value = "user_id")
private String userId; private String userId;
@TableField(value = "workspace_id")
private String workspaceId;
@TableField(value = "org_id")
private String orgId;
@TableField(value = "username") @TableField(value = "username")
private String username; private String username;
@TableField(value = "password") @TableField(value = "password")
private String password; private String password;
@TableField(value = "workspace_id")
private String workspaceId;
@TableField(value = "user_type") @TableField(value = "user_type")
private Integer userType; private Integer userType;
...@@ -42,4 +45,76 @@ public class UserEntity implements Serializable { ...@@ -42,4 +45,76 @@ public class UserEntity implements Serializable {
@TableField(value = "role_type") @TableField(value = "role_type")
private Integer roleType; private Integer roleType;
@TableField(value = "is_super_admin")
private Integer isSuperAdmin;
@TableField(value = "email")
private String email;
@TableField(value = "phone")
private String phone;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
public Integer getIsSuperAdmin() {
return isSuperAdmin != null ? isSuperAdmin : 0;
}
public void setIsSuperAdmin(Integer isSuperAdmin) {
this.isSuperAdmin = isSuperAdmin;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getUpdaterId() {
return updaterId;
}
public void setUpdaterId(String updaterId) {
this.updaterId = updaterId;
}
public String getUpdaterName() {
return updaterName;
}
public void setUpdaterName(String updaterName) {
this.updaterName = updaterName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
} }
package com.dji.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("manage_user_org")
public class UserOrgEntity {
@TableId(type = IdType.AUTO)
private Integer id;
private String userId;
private String orgId;
private Integer roleType;
private Integer status;
// private Long createTime;
// private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
// Getters and Setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public Integer getRoleType() {
return roleType;
}
public void setRoleType(Integer roleType) {
this.roleType = roleType;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
// public Long getCreateTime() {
// return createTime;
// }
// public void setCreateTime(Long createTime) {
// this.createTime = createTime;
// }
// public Long getUpdateTime() {
// return updateTime;
// }
// public void setUpdateTime(Long updateTime) {
// this.updateTime = updateTime;
// }
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getUpdaterId() {
return updaterId;
}
public void setUpdaterId(String updaterId) {
this.updaterId = updaterId;
}
public String getUpdaterName() {
return updaterName;
}
public void setUpdaterName(String updaterName) {
this.updaterName = updaterName;
}
}
...@@ -15,6 +15,9 @@ public class WorkspaceEntity implements Serializable { ...@@ -15,6 +15,9 @@ public class WorkspaceEntity implements Serializable {
@TableField(value = "workspace_id") @TableField(value = "workspace_id")
private String workspaceId; private String workspaceId;
@TableField(value = "org_id")
private String orgId;
@TableField(value = "workspace_name") @TableField(value = "workspace_name")
private String workspaceName; private String workspaceName;
......
...@@ -12,7 +12,7 @@ public enum RoleTypeEnum { ...@@ -12,7 +12,7 @@ public enum RoleTypeEnum {
PILOT(2, "飞手"), PILOT(2, "飞手"),
PROJECT_ADMIN(50, "项目管理员"), ORG_ADMIN(50, "项目管理员"),
SYS_ADMIN(100, "系统管理员"), SYS_ADMIN(100, "系统管理员"),
...@@ -39,8 +39,8 @@ public enum RoleTypeEnum { ...@@ -39,8 +39,8 @@ public enum RoleTypeEnum {
if (val == SYS_ADMIN.val) { if (val == SYS_ADMIN.val) {
return SYS_ADMIN; return SYS_ADMIN;
} }
if (val == PROJECT_ADMIN.val) { if (val == ORG_ADMIN.val) {
return PROJECT_ADMIN; return ORG_ADMIN;
} }
if (val == ADMIN.val) { if (val == ADMIN.val) {
return ADMIN; return ADMIN;
......
package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.dto.OrgDTO;
import com.dji.sample.manage.model.entity.OrgEntity;
import java.util.List;
import java.util.Optional;
public interface IOrgService extends IService<OrgEntity> {
/**
* 根据组织ID获取组织信息
* @param orgId 组织ID
* @return 组织信息
*/
Optional<OrgDTO> getOrgByOrgId(String orgId);
/**
* 获取组织对应的workspaceId
* @param orgId 组织ID
* @return workspaceId
*/
String getWorkspaceIdByOrgId(String orgId);
/**
* 获取所有组织列表
* @return 组织列表
*/
List<OrgDTO> getAllOrgs();
/**
* 删除组织
* @param orgId 组织ID
* @return 是否删除成功
*/
boolean deleteOrg(String orgId);
/**
* 创建组织
* @param orgEntity 组织实体
* @return 是否创建成功
*/
boolean createOrg(OrgDTO orgDTO);
/**
* 更新组织
* @param orgEntity 组织实体
* @return 是否更新成功
*/
boolean updateOrg(OrgDTO orgDTO);
}
package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.dto.UserOrgDTO;
import com.dji.sample.manage.model.entity.UserOrgEntity;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public interface IUserOrgService extends IService<UserOrgEntity> {
/**
* 获取用户在特定组织的角色信息
* @param userId 用户ID
* @param orgId 组织ID
* @return 用户组织关联信息
*/
Optional<UserOrgEntity> getUserOrg(String userId, String orgId);
/**
* 获取用户的所有组织信息
* @param userId 用户ID
* @return 用户所有组织关联信息列表
*/
List<UserOrgDTO> getUserOrgs(String userId);
/**
* 获取特定组织中所有用户ID
* @param orgId 组织ID
* @return 用户ID列表
*/
List<String> getUserIdsByOrgId(String orgId);
/**
* 获取组织中所有用户的角色映射
* @param orgId 组织ID
* @return 用户ID与角色类型的映射
*/
Map<String, Integer> getUserRoleMapByOrgId(String orgId);
/**
* 添加用户到组织
* @param userId 用户ID
* @param orgId 组织ID
* @param roleType 角色类型
* @return 操作是否成功
*/
boolean addUserToOrg(String userId, String orgId, Integer roleType);
/**
* 从组织移除用户
* @param userId 用户ID
* @param orgId 组织ID
* @return 操作是否成功
*/
boolean removeUserFromOrg(String userId, String orgId);
/**
* 更新用户在组织的角色
* @param userId 用户ID
* @param orgId 组织ID
* @param roleType 新的角色类型
* @return 操作是否成功
*/
boolean updateUserOrgRole(String userId, String orgId, Integer roleType);
}
...@@ -58,4 +58,12 @@ public interface IUserService extends IService<UserEntity> { ...@@ -58,4 +58,12 @@ public interface IUserService extends IService<UserEntity> {
UserEntity addWorkspaceAdminUser(UserEntity user); UserEntity addWorkspaceAdminUser(UserEntity user);
/**
* 根据组织ID获取用户列表
* @param page 页码
* @param pageSize 每页数量
* @param orgId 组织ID
* @return 分页用户列表
*/
PaginationData<UserListDTO> getUsersByOrgId(long page, long pageSize, String orgId);
} }
...@@ -108,7 +108,7 @@ public class FleetUserServiceImpl extends ServiceImpl<IFleetUserMapper, FleetUse ...@@ -108,7 +108,7 @@ public class FleetUserServiceImpl extends ServiceImpl<IFleetUserMapper, FleetUse
LambdaQueryWrapper<UserEntity> userQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<UserEntity> userQueryWrapper = new LambdaQueryWrapper<>();
userQueryWrapper.in(UserEntity::getId, userIdList); userQueryWrapper.in(UserEntity::getId, userIdList);
List<UserEntity> userEntityList = userService.list(userQueryWrapper); List<UserEntity> userEntityList = userService.list(userQueryWrapper);
Map<Integer, UserEntity> userEntityMap = userEntityList.stream().collect(Collectors.toMap(UserEntity::getId, Function.identity(), (key1, key2) -> key1)); Map<Long, UserEntity> userEntityMap = userEntityList.stream().collect(Collectors.toMap(UserEntity::getId, Function.identity(), (key1, key2) -> key1));
for (FleetUserEntity entity : entityList) { for (FleetUserEntity entity : entityList) {
FleetUserDTO fleetUserDTO = new FleetUserDTO(); FleetUserDTO fleetUserDTO = new FleetUserDTO();
...@@ -116,7 +116,7 @@ public class FleetUserServiceImpl extends ServiceImpl<IFleetUserMapper, FleetUse ...@@ -116,7 +116,7 @@ public class FleetUserServiceImpl extends ServiceImpl<IFleetUserMapper, FleetUse
fleetUserDTO.setFleetId(entity.getFleetId()); fleetUserDTO.setFleetId(entity.getFleetId());
fleetUserDTO.setUserId(entity.getUserId()); fleetUserDTO.setUserId(entity.getUserId());
UserEntity user = userEntityMap.getOrDefault(Integer.valueOf(entity.getUserId()), null); UserEntity user = userEntityMap.getOrDefault(Long.valueOf(entity.getUserId()), null);
if (!ObjectUtils.isEmpty(user)) { if (!ObjectUtils.isEmpty(user)) {
fleetUserDTO.setUsername(user.getUsername()); fleetUserDTO.setUsername(user.getUsername());
fleetUserDTO.setUserTypeName(UserTypeEnum.find(user.getUserType()).name()); fleetUserDTO.setUserTypeName(UserTypeEnum.find(user.getUserType()).name());
......
package com.dji.sample.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dji.sample.manage.dao.IOrgMapper;
import com.dji.sample.manage.model.dto.OrgDTO;
import com.dji.sample.manage.model.entity.OrgEntity;
import com.dji.sample.manage.service.IOrgService;
import org.springframework.stereotype.Service;
import com.dji.sample.common.util.SecurityUtils;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
@Transactional
public class OrgServiceImpl extends ServiceImpl<IOrgMapper, OrgEntity> implements IOrgService {
@Override
public Optional<OrgDTO> getOrgByOrgId(String orgId) {
LambdaQueryWrapper<OrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrgEntity::getOrgId, orgId);
OrgEntity entity = getOne(queryWrapper);
if (entity == null) {
return Optional.empty();
}
return Optional.of(convertToDTO(entity));
}
@Override
public String getWorkspaceIdByOrgId(String orgId) {
LambdaQueryWrapper<OrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrgEntity::getOrgId, orgId)
.select(OrgEntity::getWorkspaceId);
OrgEntity entity = getOne(queryWrapper);
return entity != null ? entity.getWorkspaceId() : null;
}
@Override
public boolean deleteOrg(String orgId) {
LambdaQueryWrapper<OrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrgEntity::getOrgId, orgId);
return remove(queryWrapper);
}
@Override
public boolean createOrg(OrgDTO orgDTO) {
OrgEntity entity = new OrgEntity();
entity.setOrgId(orgDTO.getOrgId());
entity.setOrgName(orgDTO.getOrgName());
entity.setOrgDesc(orgDTO.getOrgDesc());
entity.setWorkspaceId(orgDTO.getWorkspaceId());
// 设置创建者和更新者信息
String currentUserId = SecurityUtils.getUserId();
String currentUserName = SecurityUtils.getUsername();
entity.setCreatorId(currentUserId);
entity.setCreatorName(currentUserName);
entity.setUpdaterId(currentUserId);
entity.setUpdaterName(currentUserName);
save(entity);
return entity.getOrgId() != null;
}
@Override
public boolean updateOrg(OrgDTO orgDTO) {
LambdaQueryWrapper<OrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrgEntity::getOrgId, orgDTO.getOrgId());
OrgEntity entity = getOne(queryWrapper);
if (entity == null) {
return false;
}
entity.setOrgName(orgDTO.getOrgName());
entity.setOrgDesc(orgDTO.getOrgDesc());
entity.setWorkspaceId(orgDTO.getWorkspaceId());
// 设置更新者信息
entity.setUpdaterId(SecurityUtils.getUserId());
entity.setUpdaterName(SecurityUtils.getUsername());
return updateById(entity);
}
@Override
public List<OrgDTO> getAllOrgs() {
List<OrgEntity> entities = list();
return entities.stream()
.map(this::convertToDTO)
.collect(Collectors.toList());
}
private OrgDTO convertToDTO(OrgEntity entity) {
return OrgDTO.builder()
.id(entity.getId())
.orgId(entity.getOrgId())
.orgName(entity.getOrgName())
.orgDesc(entity.getOrgDesc())
.workspaceId(entity.getWorkspaceId())
// .createTime(entity.getCreateTime())
// .updateTime(entity.getUpdateTime())
.build();
}
}
package com.dji.sample.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dji.sample.common.util.SecurityUtils; // 修正导入包
import com.dji.sample.manage.dao.IUserOrgMapper;
import com.dji.sample.manage.model.dto.UserOrgDTO;
import com.dji.sample.manage.model.entity.UserOrgEntity;
import com.dji.sample.manage.service.IUserOrgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class UserOrgServiceImpl extends ServiceImpl<IUserOrgMapper, UserOrgEntity> implements IUserOrgService {
@Autowired
private IUserOrgMapper userOrgMapper;
@Override
public Optional<UserOrgEntity> getUserOrg(String userId, String orgId) {
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getUserId, userId)
.eq(UserOrgEntity::getOrgId, orgId)
.eq(UserOrgEntity::getStatus, 1);
UserOrgEntity entity = getOne(queryWrapper);
return Optional.ofNullable(entity);
}
@Override
public List<UserOrgDTO> getUserOrgs(String userId) {
return userOrgMapper.selectUserOrgs(userId);
}
@Override
public List<String> getUserIdsByOrgId(String orgId) {
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getOrgId, orgId)
.eq(UserOrgEntity::getStatus, 1)
.select(UserOrgEntity::getUserId);
return this.list(queryWrapper)
.stream()
.map(UserOrgEntity::getUserId)
.collect(Collectors.toList());
}
@Override
public Map<String, Integer> getUserRoleMapByOrgId(String orgId) {
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getOrgId, orgId)
.eq(UserOrgEntity::getStatus, 1)
.select(UserOrgEntity::getUserId, UserOrgEntity::getRoleType);
return this.list(queryWrapper)
.stream()
.collect(Collectors.toMap(
UserOrgEntity::getUserId,
UserOrgEntity::getRoleType
));
}
@Override
public boolean addUserToOrg(String userId, String orgId, Integer roleType) {
// 检查是否已存在
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getUserId, userId)
.eq(UserOrgEntity::getOrgId, orgId);
UserOrgEntity entity = getOne(queryWrapper);
if (entity != null) {
// 如果已存在但被禁用,则启用
if (entity.getStatus() == 0) {
entity.setStatus(1);
entity.setRoleType(roleType);
// entity.setUpdateTime(System.currentTimeMillis());
return updateById(entity);
}
return false; // 已存在且启用状态
}
// 创建新关联
UserOrgEntity userOrg = new UserOrgEntity();
userOrg.setUserId(userId);
userOrg.setOrgId(orgId);
userOrg.setRoleType(roleType);
userOrg.setStatus(1);
// userOrg.setCreateTime(System.currentTimeMillis());
// userOrg.setUpdateTime(System.currentTimeMillis());
// 创建新关联时设置创建者和更新者信息
String currentUserId = SecurityUtils.getUserId();
String currentUserName = SecurityUtils.getUsername();
userOrg.setCreatorId(currentUserId);
userOrg.setCreatorName(currentUserName);
userOrg.setUpdaterId(currentUserId);
userOrg.setUpdaterName(currentUserName);
return save(userOrg);
}
@Override
public boolean removeUserFromOrg(String userId, String orgId) {
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getUserId, userId)
.eq(UserOrgEntity::getOrgId, orgId);
// 使用逻辑删除(将状态设置为禁用)
UserOrgEntity entity = getOne(queryWrapper);
if (entity != null) {
entity.setStatus(0);
// entity.setUpdateTime(System.currentTimeMillis());
return updateById(entity);
}
return false;
}
@Override
public boolean updateUserOrgRole(String userId, String orgId, Integer roleType) {
LambdaQueryWrapper<UserOrgEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserOrgEntity::getUserId, userId)
.eq(UserOrgEntity::getOrgId, orgId);
UserOrgEntity entity = getOne(queryWrapper);
if (entity != null) {
entity.setRoleType(roleType);
// entity.setUpdateTime(System.currentTimeMillis());
// 设置更新者信息
entity.setUpdaterId(SecurityUtils.getUserId());
entity.setUpdaterName(SecurityUtils.getUsername());
return updateById(entity);
}
return false;
}
}
...@@ -120,6 +120,7 @@ public class WorkspaceServiceImpl extends ServiceImpl<IWorkspaceMapper, Workspac ...@@ -120,6 +120,7 @@ public class WorkspaceServiceImpl extends ServiceImpl<IWorkspaceMapper, Workspac
// 新增workspace管理员 // 新增workspace管理员
UserEntity workspaceAdmin = new UserEntity(); UserEntity workspaceAdmin = new UserEntity();
workspaceAdmin.setWorkspaceId(addWorkspace.getWorkspaceId()); workspaceAdmin.setWorkspaceId(addWorkspace.getWorkspaceId());
workspaceAdmin.setOrgId(addWorkspace.getOrgId());
workspaceAdmin.setUsername(workspaceDTO.getAdminUserName()); workspaceAdmin.setUsername(workspaceDTO.getAdminUserName());
workspaceAdmin.setPassword(workspaceDTO.getAdminUserPassword()); workspaceAdmin.setPassword(workspaceDTO.getAdminUserPassword());
UserEntity saveAdmin = userService.addWorkspaceAdminUser(workspaceAdmin); UserEntity saveAdmin = userService.addWorkspaceAdminUser(workspaceAdmin);
......
...@@ -31,10 +31,12 @@ public class MediaFileEntity implements Serializable { ...@@ -31,10 +31,12 @@ public class MediaFileEntity implements Serializable {
@TableField("file_path") @TableField("file_path")
private String filePath; private String filePath;
@TableField("workspace_id") @TableField("workspace_id")
private String workspaceId; private String workspaceId;
@TableField("org_id")
private String orgId;
@TableField("fingerprint") @TableField("fingerprint")
private String fingerprint; private String fingerprint;
......
...@@ -37,10 +37,12 @@ public class WaylineFileEntity implements Serializable { ...@@ -37,10 +37,12 @@ public class WaylineFileEntity implements Serializable {
@TableField("sign") @TableField("sign")
private String sign; private String sign;
@TableField("workspace_id") @TableField("workspace_id")
private String workspaceId; private String workspaceId;
@TableField("org_id")
private String orgId;
@TableField("favorited") @TableField("favorited")
private Boolean favorited; private Boolean favorited;
......
...@@ -34,10 +34,12 @@ public class WaylineJobEntity implements Serializable { ...@@ -34,10 +34,12 @@ public class WaylineJobEntity implements Serializable {
@TableField("dock_sn") @TableField("dock_sn")
private String dockSn; private String dockSn;
@TableField("workspace_id") @TableField("workspace_id")
private String workspaceId; private String workspaceId;
@TableField("org_id")
private String orgId;
@TableField("task_type") @TableField("task_type")
private Integer taskType; private Integer taskType;
......
...@@ -10,10 +10,12 @@ spring: ...@@ -10,10 +10,12 @@ spring:
druid: druid:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://geoair_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai # url: jdbc:mysql://geoair_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# url: jdbc:mysql://cloud_api_sample_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true # url: jdbc:mysql://cloud_api_sample_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true
# 深圳 # 深圳
# url: jdbc:mysql://cloud_api_sample_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true # url: jdbc:mysql://cloud_api_sample_mysql:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true
# 本地
url: jdbc:mysql://localhost:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root
initial-size: 10 initial-size: 10
...@@ -22,10 +24,12 @@ spring: ...@@ -22,10 +24,12 @@ spring:
max-wait: 60000 max-wait: 60000
redis: redis:
host: geoair_redis # host: geoair_redis
# host: cloud_api_sample_redis # host: cloud_api_sample_redis
# 深圳 # 深圳
# host: cloud_api_sample_redis # host: cloud_api_sample_redis
# 本地
host: localhost
port: 6379 port: 6379
database: 0 database: 0
username: # if you enable username: # if you enable
...@@ -65,10 +69,10 @@ mqtt: ...@@ -65,10 +69,10 @@ mqtt:
# port: 54418 # port: 54418
# host: 203.186.109.106 # host: 203.186.109.106
# host: emqx-broker # host: emqx-broker
# host: 192.168.32.90 host: 192.168.32.90
# port: 44418 port: 44418
host: 203.186.109.106 # host: 203.186.109.106
port: 54941 # port: 54941
# host: emqx-broker # host: emqx-broker
# port: 1883 # port: 1883
username: JavaServer username: JavaServer
......
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