Commit d0878a67 by gdj

增加org

parent fa930cc6
......@@ -39,6 +39,8 @@ public class CustomClaim {
@JsonAlias("workspace_id")
private String workspaceId;
@JsonAlias("org_id")
private String orgId;
/**
* Convert the custom claim data type to the Map type.
* @return map
......
......@@ -85,6 +85,13 @@ public class SecurityUtils {
return customClaim.getWorkspaceId();
}
public static String getOrgId() {
DecodedJWT jwt = JwtUtil.verifyToken(getToken());
CustomClaim customClaim = new CustomClaim(jwt.getClaims());
return customClaim.getOrgId();
}
public static String getUserId() {
DecodedJWT jwt = JwtUtil.verifyToken(getToken());
CustomClaim customClaim = new CustomClaim(jwt.getClaims());
......@@ -92,6 +99,12 @@ public class SecurityUtils {
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() {
Integer roleType = getRoleType();
......@@ -119,21 +132,21 @@ public class SecurityUtils {
return !isAdminRole();
}
public static boolean isProjectAdminRole(Integer roleType) {
return roleType == RoleTypeEnum.PROJECT_ADMIN.getVal();
public static boolean isOrgAdminRole(Integer roleType) {
return roleType == RoleTypeEnum.ORG_ADMIN.getVal();
}
public static boolean isNotProjectAdminRole(Integer roleType) {
return !isProjectAdminRole(roleType);
public static boolean isNotOrgAdminRole(Integer roleType) {
return !isOrgAdminRole(roleType);
}
public static boolean isProjectAdminRole() {
public static boolean isOrgAdminRole() {
Integer roleType = getRoleType();
return isProjectAdminRole(roleType);
return isOrgAdminRole(roleType);
}
public static boolean isNotProjectAdminRole() {
return !isProjectAdminRole();
public static boolean isNotOrgAdminRole() {
return !isOrgAdminRole();
}
public static boolean isAdminRole(Integer roleType) {
......@@ -189,7 +202,7 @@ public class SecurityUtils {
return aboveMemberRole(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){
if(roleType == role) {
......@@ -213,7 +226,7 @@ public class SecurityUtils {
}
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){
if(roleType == role) {
......@@ -237,7 +250,7 @@ public class SecurityUtils {
}
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){
if(roleType == role) {
......@@ -247,21 +260,21 @@ public class SecurityUtils {
return false;
}
public static boolean aboveProjectAdminRoleAndThrowError() {
boolean result = aboveProjectAdminRole();
public static boolean aboveOrgAdminRoleAndThrowError() {
boolean result = aboveOrgAdminRole();
if (!result) {
throw new RuntimeException("The current role has no permissions");
}
return true;
}
public static boolean aboveProjectAdminRole() {
public static boolean aboveOrgAdminRole() {
Integer roleType = getRoleType();
return aboveSysAdminRole(roleType);
}
public static boolean aboveProjectAdminRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.PROJECT_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
public static boolean aboveOrgAdminRole(Integer roleType) {
int[] roleArr = {RoleTypeEnum.ORG_ADMIN.getVal(), RoleTypeEnum.SYS_ADMIN.getVal()};
for(int role : roleArr) {
if(roleType == role) {
......
......@@ -270,4 +270,27 @@ public class DeviceController {
return HttpResultResponse.success(devices);
}
/**
* share device to the org
* @param device
* @return
*/
@PostMapping("/{workspace_id}/share")
public HttpResultResponse shareDevice(@RequestBody DeviceDTO device, @PathVariable("workspace_id") String workspaceId) {
device.setWorkspaceId(workspaceId);
deviceService.shareDevice(device);
return HttpResultResponse.success();
}
/**
* cancel share device to the org
* @param device
* @return
*/
@PostMapping("/{workspace_id}/cancelShare")
public HttpResultResponse cancelShareDevice(@RequestBody DeviceDTO device, @PathVariable("workspace_id") String workspaceId) {
device.setWorkspaceId(workspaceId);
deviceService.cancelShareDevice(device);
return HttpResultResponse.success();
}
}
\ No newline at end of file
......@@ -7,10 +7,7 @@ import com.dji.sample.manage.service.IUserService;
import com.dji.sdk.common.HttpResultResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
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 javax.servlet.http.HttpServletResponse;
......@@ -30,7 +27,8 @@ public class LoginController {
String username = loginDTO.getUsername();
String password = loginDTO.getPassword();
return userService.userLogin(username, password, loginDTO.getFlag());
// return userService.userLogin(username, password, loginDTO.getFlag());
return userService.userLogin(loginDTO);
}
@PostMapping("/token/refresh")
......@@ -45,4 +43,18 @@ public class LoginController {
return HttpResultResponse.success(user.get());
}
@PostMapping("/token/changeOrg")
public HttpResultResponse changeOrg(HttpServletRequest request, HttpServletResponse response,
@RequestParam(name = "org_id") String orgId) {
String token = request.getHeader(PARAM_TOKEN);
Optional<UserDTO> user = userService.changeOrgRefreshToken(token, orgId);
if (user.isEmpty()) {
response.setStatus(HttpStatus.UNAUTHORIZED.value());
return HttpResultResponse.error(CommonErrorEnum.NO_TOKEN.getMessage());
}
return HttpResultResponse.success(user.get());
}
}
package com.dji.sample.manage.controller;
import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.manage.model.dto.OrgDTO;
import com.dji.sample.manage.model.dto.OrgJoinDTO;
import com.dji.sample.manage.model.dto.WorkspaceDTO;
import com.dji.sample.manage.model.param.searchParam.OrgSearchParam;
import com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam;
import com.dji.sample.manage.service.IOrgService;
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.*;
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;
@RestController
@RequestMapping("${url.manage.prefix}${url.manage.version}/orgs")
public class OrgController {
@Autowired
private IOrgService orgService;
/**
* Gets information about the workspace that the current user is in.
* @param request
* @return
*/
@GetMapping("/current")
public HttpResultResponse getCurrentOrg(HttpServletRequest request) {
CustomClaim customClaim = (CustomClaim)request.getAttribute(TOKEN_CLAIM);
Optional<OrgDTO> orgOpt = orgService.getOrgByOrgId(customClaim.getOrgId());
return orgOpt.isEmpty() ? HttpResultResponse.error() : HttpResultResponse.success(orgOpt.get());
}
@GetMapping("/getOne")
public HttpResultResponse getWorkspace(OrgSearchParam param) {
param.setWorkspaceId(getWorkspaceId());
// 判断权限 系统管理员才允许全查
if (!aboveSysAdminRole()) {
param.setRoleUserId(getUserId());
}
OrgDTO org = orgService.getOrg(param);
return HttpResultResponse.success(org);
}
@GetMapping("/page")
public HttpResultResponse getOrgPage(OrgSearchParam param,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) {
// 判断权限 系统管理员才允许全查
if (!aboveSysAdminRole()) {
param.setOrgId(getOrgId());
}
PaginationData<OrgDTO> workspacePage = orgService.getOrgPage(param, page, pageSize);
return HttpResultResponse.success(workspacePage);
}
@PostMapping("/add")
public HttpResultResponse addOrg(@RequestBody OrgDTO orgDTO) {
// 判断权限 系统管理员才允许新增
aboveSysAdminRoleAndThrowError();
orgDTO.setWorkspaceId(getWorkspaceId());
OrgDTO org = orgService.addOrg(orgDTO);
return HttpResultResponse.success(org);
}
@PostMapping("/edit")
public HttpResultResponse editOrg(@RequestBody OrgDTO orgDTO) {
// 判断权限 管理员才允许修改
aboveAdminRoleAndThrowError();
orgDTO.setWorkspaceId(getWorkspaceId());
boolean isEdit = orgService.editOrg(orgDTO);
return isEdit ? HttpResultResponse.success() : HttpResultResponse.error();
}
@PostMapping("/delete")
public HttpResultResponse delWorkspace(@RequestBody OrgDTO orgDTO) {
// 判断权限 系统管理员才允许修改
aboveSysAdminRoleAndThrowError();
boolean isDel = orgService.delOrg(orgDTO);
return isDel ? HttpResultResponse.success() : HttpResultResponse.error();
}
@PostMapping("/apply")
public HttpResultResponse applyOrg(@RequestBody OrgJoinDTO orgDTO) {
boolean isDel = orgService.applyOrg(orgDTO);
return isDel ? HttpResultResponse.success() : HttpResultResponse.error();
}
@PostMapping("/joinByAdmin")
public HttpResultResponse joinOrgByAdmin(@RequestBody OrgJoinDTO orgDTO) {
boolean isDel = orgService.joinOrgByAdmin(orgDTO);
return isDel ? HttpResultResponse.success() : HttpResultResponse.error();
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.dji.sample.manage.controller;
import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.manage.model.dto.UserListDTO;
import com.dji.sample.manage.model.entity.UserEntity;
import com.dji.sample.manage.model.param.searchParam.UserSearchParam;
import com.dji.sample.manage.service.IUserService;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
......@@ -34,16 +35,18 @@ public class UserController {
/**
* Paging to query all users in a workspace.
* @param param param
* @param page current page
* @param pageSize
* @param workspaceId
* @return
*/
@GetMapping("/{workspace_id}/users")
public HttpResultResponse<PaginationData<UserListDTO>> getUsers(@RequestParam(defaultValue = "1") Long page,
public HttpResultResponse<PaginationData<UserListDTO>> getUsers(UserSearchParam param,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize,
@PathVariable("workspace_id") String workspaceId) {
PaginationData<UserListDTO> paginationData = userService.getUsersByWorkspaceId(page, pageSize, workspaceId);
PaginationData<UserListDTO> paginationData = userService.getUsers(param, workspaceId, page, pageSize);
return HttpResultResponse.success(paginationData);
}
......
package com.dji.sample.manage.controller;
import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.manage.model.dto.OrgDTO;
import com.dji.sample.manage.model.dto.UserOrgDTO;
import com.dji.sample.manage.model.param.searchParam.OrgSearchParam;
import com.dji.sample.manage.service.IOrgService;
import com.dji.sample.manage.service.IUserOrgService;
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.*;
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;
@RestController
@RequestMapping("${url.manage.prefix}${url.manage.version}/orgUser")
public class UserOrgController {
@Autowired
private IUserOrgService userOrgService;
@PostMapping("/addUserToOrg")
public HttpResultResponse addUserToOrg(@RequestBody UserOrgDTO userOrgDTO) {
// 判断权限 管理员才允许新增
aboveAdminRoleAndThrowError();
boolean isAdd = userOrgService.addUserToOrg(userOrgDTO.getUserId(), userOrgDTO.getOrgId(), userOrgDTO.getRoleType());
return isAdd ? HttpResultResponse.success() : HttpResultResponse.error();
}
@PostMapping("/removeUserFromOrg")
public HttpResultResponse removeUserFromOrg(@RequestBody UserOrgDTO userOrgDTO) {
// 判断权限 管理员才允许删除
aboveAdminRoleAndThrowError();
boolean isDel = userOrgService.removeUserFromOrg(userOrgDTO.getUserId(), userOrgDTO.getOrgId());
return isDel ? HttpResultResponse.success() : HttpResultResponse.error();
}
}
\ No newline at end of file
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.DeviceOrgEntity;
import com.dji.sample.manage.model.entity.FleetOrgEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* @author guan
*/
@Mapper
public interface IFleetOrgMapper extends BaseMapper<FleetOrgEntity> {
}
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;
/**
* @author guan
*/
@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);
}
......@@ -85,4 +85,14 @@ public class DeviceDTO {
@JsonProperty("device_enum")
private String deviceEnum;
/**
* 设备归属团队
*/
private String orgId;
/**
* 是否来源于其他团队的分享设备
*/
private String isShared;
}
\ No newline at end of file
package com.dji.sample.manage.model.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
public class DeviceOrgDTO implements Serializable {
private Integer id;
private Integer deviceId;
private String deviceSn;
private String orgId;
private Integer isShared;
private Long createTime;
private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
private String workspceId;
}
......@@ -40,6 +40,8 @@ public class FleetDTO implements Serializable {
private String nickname;
private String orgId;
@JsonProperty(value = "user_list")
private List<FleetUserDTO> userList;
......
package com.dji.sample.manage.model.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
public class FleetOrgDTO implements Serializable {
private Integer id;
private Integer fleetId;
private String fleetSn;
private String orgId;
private Integer isShared;
private Long createTime;
private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
private String workspceId;
}
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;
import java.time.LocalDateTime;
/**
* @author guan
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class OrgDTO implements Serializable {
private Integer id;
private String orgId;
private String orgName;
private String orgDesc;
private String workspaceId;
private LocalDateTime createTime;
private LocalDateTime updateTime;
private String bindCode;
@JsonProperty("admin_user_id")
private String adminUserId;
@JsonProperty("admin_user_name")
private String adminUserName;
@JsonProperty("admin_user_password")
private String adminUserPassword;
}
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;
import java.time.LocalDateTime;
/**
* @author guan
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class OrgJoinDTO implements Serializable {
private String orgId;
private String orgName;
private String orgDesc;
private String workspaceId;
private String bindCode;
private String joinUserId;
private String joinUserName;
private Integer joinUserRoleType;
}
......@@ -20,6 +20,9 @@ public class UserDTO {
@JsonProperty("workspace_id")
private String workspaceId;
@JsonProperty("org_id")
private String orgId;
@JsonProperty("user_type")
private Integer userType;
......
......@@ -22,4 +22,9 @@ public class UserLoginDTO {
@NonNull
private Integer flag;
private String orgId;
private String orgName;
}
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;
}
......@@ -88,4 +88,7 @@ public class DeviceEntity implements Serializable {
@TableField(value = "login_time")
private Long loginTime;
@TableField(value = "org_id")
private String orgId;
}
\ No newline at end of file
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;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("manage_device_org")
public class DeviceOrgEntity implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer deviceId;
private String deviceSn;
private String orgId;
private Integer isShared;
private Long createTime;
private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
private String workspaceId;
}
......@@ -49,4 +49,6 @@ public class FleetEntity implements Serializable {
@TableField(value = "nickname")
private String nickname;
@TableField(value = "org_id")
private String orgId;
}
\ No newline at end of file
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;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("fleet_device_org")
public class FleetOrgEntity implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
private Integer fleetId;
private String fleetSn;
private String orgId;
private Integer isShared;
private Long createTime;
private Long updateTime;
private String creatorId;
private String creatorName;
private String updaterId;
private String updaterName;
private String workspaceId;
}
package com.dji.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
@TableName("manage_org")
public class OrgEntity implements Serializable {
@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;
private String bindCode;
@TableField(value = "admin_user_id")
private String adminUserId;
}
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;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
@TableName("manage_user_org")
public class UserOrgEntity implements Serializable {
@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;
private String workspaceId;
}
......@@ -12,7 +12,7 @@ public enum RoleTypeEnum {
PILOT(2, "飞手"),
PROJECT_ADMIN(50, "项目管理员"),
ORG_ADMIN(50, "项目管理员"),
SYS_ADMIN(100, "系统管理员"),
......@@ -39,8 +39,8 @@ public enum RoleTypeEnum {
if (val == SYS_ADMIN.val) {
return SYS_ADMIN;
}
if (val == PROJECT_ADMIN.val) {
return PROJECT_ADMIN;
if (val == ORG_ADMIN.val) {
return ORG_ADMIN;
}
if (val == ADMIN.val) {
return ADMIN;
......
......@@ -27,6 +27,9 @@ public class DeviceSearchParam {
@JsonProperty("workspace_id")
private String workspaceId;
@JsonProperty("org_id")
private String orgId;
@JsonProperty("device_type")
private Integer deviceType;
......
package com.dji.sample.manage.model.param.searchParam;
import lombok.Data;
/**
* @author guan
*/
@Data
public class OrgSearchParam {
private String orgId;
private String workspaceId;
private Integer id;
private String orgName;
private String orgDesc;
/**
* 只能查看自己的团队
*/
private String roleUserId;
}
package com.dji.sample.manage.model.param.searchParam;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserSearchParam implements Serializable {
@JsonProperty("device_sn")
private String orgId;
private String workspaceId;
}
package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.entity.DeviceOrgEntity;
import com.dji.sample.manage.model.entity.UserOrgEntity;
/**
* @author guan
*/
public interface IDeviceOrgService extends IService<DeviceOrgEntity> {
}
......@@ -270,6 +270,10 @@ public interface IDeviceService extends IService<DeviceEntity> {
boolean editAirport(DeviceDTO airport);
void shareDevice(DeviceDTO device);
void cancelShareDevice(DeviceDTO device);
/**
* Get the devices list in one workspace.
* @param workspaceId
......
package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.entity.FleetOrgEntity;
/**
* @author guan
*/
public interface IFleetOrgService extends IService<FleetOrgEntity> {
}
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.dto.OrgJoinDTO;
import com.dji.sample.manage.model.dto.WorkspaceDTO;
import com.dji.sample.manage.model.entity.OrgEntity;
import com.dji.sample.manage.model.param.searchParam.OrgSearchParam;
import com.dji.sample.manage.model.param.searchParam.WorkspaceSearchParam;
import com.dji.sdk.common.PaginationData;
import java.util.List;
import java.util.Optional;
public interface IOrgService extends IService<OrgEntity> {
/**
* 根据组织ID获取组织信息
* @param orgId 组织ID
* @return 组织信息
*/
Optional<OrgDTO> getOrgByOrgId(String orgId);
PaginationData<OrgDTO> getOrgPage(OrgSearchParam param, Long page, Long pageSize);
OrgDTO addOrg(OrgDTO orgDTO);
boolean editOrg(OrgDTO orgDTO);
boolean delOrg(OrgDTO orgDTO);
/**
* 用户申请加入团队
* @param orgDTO
* @return
*/
boolean applyOrg(OrgJoinDTO orgDTO);
/**
* 管理员增加团队
* @param orgDTO
* @return
*/
boolean joinOrgByAdmin(OrgJoinDTO orgDTO);
OrgDTO getOrg(OrgSearchParam param);
/**
* 获取组织对应的workspaceId
* @param orgId 组织ID
* @return workspaceId
*/
String getWorkspaceIdByOrgId(String orgId);
/**
* 获取所有组织列表
* @return 组织列表
*/
List<OrgDTO> getAllOrgs();
/**
* 删除组织
* @param orgId 组织ID
* @return 是否删除成功
*/
boolean deleteOrg(String orgId);
/**
* 创建组织
* @param orgDTO 组织实体
* @return 是否创建成功
*/
boolean createOrg(OrgDTO orgDTO);
/**
* 更新组织
* @param orgDTO 组织实体
* @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);
}
......@@ -3,7 +3,9 @@ package com.dji.sample.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dji.sample.manage.model.dto.UserDTO;
import com.dji.sample.manage.model.dto.UserListDTO;
import com.dji.sample.manage.model.dto.UserLoginDTO;
import com.dji.sample.manage.model.entity.UserEntity;
import com.dji.sample.manage.model.param.searchParam.UserSearchParam;
import com.dji.sdk.common.HttpResultResponse;
import com.dji.sdk.common.PaginationData;
......@@ -29,6 +31,13 @@ public interface IUserService extends IService<UserEntity> {
HttpResultResponse userLogin(String username, String password, Integer flag);
/**
* Verify the username and password to log in.
* @param loginDTO
* @return
*/
HttpResultResponse userLogin(UserLoginDTO loginDTO);
/**
* Create a user object containing a new token.
* @param token
* @return
......@@ -36,12 +45,26 @@ public interface IUserService extends IService<UserEntity> {
Optional<UserDTO> refreshToken(String token);
/**
* Create a user object containing a new token.
* @param token
* @return
*/
Optional<UserDTO> changeOrgRefreshToken(String token, String orgId);
/**
* Query information about all users in a workspace.
* @param workspaceId uuid
* @return
*/
PaginationData<UserListDTO> getUsersByWorkspaceId(long page, long pageSize, String workspaceId);
/**
* Query information about all users.
* @param workspaceId uuid
* @return
*/
PaginationData<UserListDTO> getUsers(UserSearchParam param, String workspaceId, long page, long pageSize);
Boolean updateUser(String workspaceId, String userId, UserListDTO user);
Boolean deleteUser(String workspaceId, String userId);
......@@ -58,4 +81,6 @@ public interface IUserService extends IService<UserEntity> {
UserEntity addWorkspaceAdminUser(UserEntity user);
UserEntity addOrgAdminUser(UserEntity user);
}
package com.dji.sample.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dji.sample.manage.dao.IDeviceOrgMapper;
import com.dji.sample.manage.dao.IUserOrgMapper;
import com.dji.sample.manage.model.entity.DeviceOrgEntity;
import com.dji.sample.manage.model.entity.UserOrgEntity;
import com.dji.sample.manage.service.IDeviceOrgService;
import com.dji.sample.manage.service.IUserOrgService;
import org.springframework.stereotype.Service;
@Service
public class DeviceOrgServiceImpl extends ServiceImpl<IDeviceOrgMapper, DeviceOrgEntity> implements IDeviceOrgService {
}
package com.dji.sample.manage.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dji.sample.manage.dao.IFleetOrgMapper;
import com.dji.sample.manage.model.entity.FleetOrgEntity;
import com.dji.sample.manage.service.IFleetOrgService;
import org.springframework.stereotype.Service;
/**
* @author guan
*/
@Service
public class FleetOrgServiceImpl extends ServiceImpl<IFleetOrgMapper, FleetOrgEntity> implements IFleetOrgService {
}
......@@ -32,6 +32,9 @@ import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
import static com.dji.sample.common.util.SecurityUtils.aboveSysAdminRole;
import static com.dji.sample.common.util.SecurityUtils.getOrgId;
/**
* @author guan
*/
......@@ -74,6 +77,13 @@ public class FleetServiceImpl extends ServiceImpl<IFleetMapper, FleetEntity> imp
fleetQueryWrapper.like(FleetEntity::getFleetName, param.getFleetName());
}
// 限制 团队
if (aboveSysAdminRole()) {
} else {
fleetQueryWrapper.eq(FleetEntity::getOrgId, getOrgId());
}
Page<FleetEntity> pagination = mapper.selectPage(new Page<>(page, pageSize), fleetQueryWrapper);
List<FleetDTO> fleetList = pagination.getRecords().stream()
......@@ -127,7 +137,8 @@ public class FleetServiceImpl extends ServiceImpl<IFleetMapper, FleetEntity> imp
} else {
addFleet.setFleetSn(UUID.randomUUID().toString());
}
addFleet.setOrgId(StringUtils.hasText(fleetDTO.getOrgId()) ? fleetDTO.getOrgId() : getOrgId());
addFleet.setFleetName(fleetDTO.getFleetName());
addFleet.setNickname(fleetDTO.getNickname());
addFleet.setFleetDesc(fleetDTO.getFleetDesc());
......@@ -279,6 +290,7 @@ public class FleetServiceImpl extends ServiceImpl<IFleetMapper, FleetEntity> imp
fleetDTO.setFleetDesc(fleetEntity.getFleetDesc());
fleetDTO.setUserId(fleetEntity.getUserId());
fleetDTO.setNickname(fleetEntity.getNickname());
fleetDTO.setOrgId(fleetEntity.getOrgId());
return fleetDTO;
}
......@@ -293,6 +305,7 @@ public class FleetServiceImpl extends ServiceImpl<IFleetMapper, FleetEntity> imp
fleetEntity.setFleetDesc(fleetDTO.getFleetDesc());
fleetEntity.setUserId(fleetDTO.getUserId());
fleetEntity.setNickname(fleetDTO.getNickname());
fleetEntity.setOrgId(fleetDTO.getOrgId());
return fleetEntity;
}
......
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;
}
}
......@@ -51,4 +51,6 @@ public class WaylineFileDTO {
@JsonAlias("isDir")
private Integer isDir;
private String orgId;
}
......@@ -53,4 +53,6 @@ public class WaylineFileTreeVO {
private List<WaylineFileTreeVO> children;
private String orgId;
}
......@@ -87,4 +87,6 @@ public class WaylineJobDTO {
@CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
private SimulateMission simulateMission;
private String orgId;
}
......@@ -74,4 +74,8 @@ public class WaylineFileEntity implements Serializable {
// @TableLogic
@TableField("is_deleted")
private Boolean isDeleted;
@TableField("org_id")
private String orgId;
}
......@@ -89,4 +89,10 @@ public class WaylineJobEntity implements Serializable {
@TableField("task_scene")
private Integer taskScene;
/**
* orgId
*/
@TableField("org_id")
private String orgId;
}
......@@ -48,4 +48,7 @@ public class CreateJobParam {
private List<Long> taskDays;
private List<List<Long>> taskPeriods;
private String orgId;
}
......@@ -26,4 +26,7 @@ public class WaylineJobSearchParam {
@JsonProperty("job_ids")
private String jobIds;
@JsonProperty("org_id")
private String orgId;
}
......@@ -48,6 +48,8 @@ import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import static com.dji.sample.common.util.SecurityUtils.aboveSysAdminRole;
import static com.dji.sample.common.util.SecurityUtils.getOrgId;
import static com.dji.sample.wayline.model.dto.KmzFileProperties.WAYLINE_FILE_SUFFIX;
/**
......@@ -67,31 +69,40 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
@Override
public PaginationData<GetWaylineListResponse> getWaylinesByParam(String workspaceId, GetWaylineListRequest param) {
LambdaQueryWrapper<WaylineFileEntity> waylineFileaQueryWrapper = new LambdaQueryWrapper<WaylineFileEntity>();
if (aboveSysAdminRole()) {
} else {
waylineFileaQueryWrapper.eq(WaylineFileEntity::getOrgId, getOrgId());
}
waylineFileaQueryWrapper.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.FILE.getVal())
.eq(WaylineFileEntity::getWorkspaceId, workspaceId)
.eq(Objects.nonNull(param.getFavorited()), WaylineFileEntity::getFavorited, param.getFavorited())
.and(param.getTemplateType() != null, wrapper -> {
for (WaylineTypeEnum type : param.getTemplateType()) {
wrapper.like(WaylineFileEntity::getTemplateTypes, type.getValue()).or();
}
})
.and(param.getPayloadModelKey() != null, wrapper -> {
for (DeviceEnum type : param.getPayloadModelKey()) {
wrapper.like(WaylineFileEntity::getPayloadModelKeys, type.getType()).or();
}
})
.and(param.getDroneModelKeys() != null, wrapper -> {
for (DeviceEnum type : param.getDroneModelKeys()) {
wrapper.eq(WaylineFileEntity::getDroneModelKey, type.getType()).or();
}
})
.like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey())
// There is a risk of SQL injection
.last(Objects.nonNull(param.getOrderBy()), " order by " + param.getOrderBy().toString());
// Paging Query
Page<WaylineFileEntity> page = mapper.selectPage(
new Page<WaylineFileEntity>(param.getPage(), param.getPageSize()),
new LambdaQueryWrapper<WaylineFileEntity>()
.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.FILE.getVal())
.eq(WaylineFileEntity::getWorkspaceId, workspaceId)
.eq(Objects.nonNull(param.getFavorited()), WaylineFileEntity::getFavorited, param.getFavorited())
.and(param.getTemplateType() != null, wrapper -> {
for (WaylineTypeEnum type : param.getTemplateType()) {
wrapper.like(WaylineFileEntity::getTemplateTypes, type.getValue()).or();
}
})
.and(param.getPayloadModelKey() != null, wrapper -> {
for (DeviceEnum type : param.getPayloadModelKey()) {
wrapper.like(WaylineFileEntity::getPayloadModelKeys, type.getType()).or();
}
})
.and(param.getDroneModelKeys() != null, wrapper -> {
for (DeviceEnum type : param.getDroneModelKeys()) {
wrapper.eq(WaylineFileEntity::getDroneModelKey, type.getType()).or();
}
})
.like(Objects.nonNull(param.getKey()), WaylineFileEntity::getName, param.getKey())
// There is a risk of SQL injection
.last(Objects.nonNull(param.getOrderBy()), " order by " + param.getOrderBy().toString()));
new Page<>(param.getPage(), param.getPageSize()), waylineFileaQueryWrapper
);
// Wrap the results of a paging query into a custom paging object.
List<GetWaylineListResponse> records = page.getRecords()
......@@ -144,6 +155,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
WaylineFileEntity file = this.dtoConvertToEntity(metadata);
file.setWaylineId(UUID.randomUUID().toString());
file.setWorkspaceId(workspaceId);
file.setOrgId(getOrgId());
if (!StringUtils.hasText(file.getSign())) {
try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
......@@ -301,6 +313,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
dir.setIsDir(WaylineFileTypeEnum.DIRECTORY.getVal());
dir.setWaylineId(UUID.randomUUID().toString());
dir.setWorkspaceId(workspaceId);
dir.setOrgId(getOrgId());
int insertId = mapper.insert(dir);
......@@ -335,6 +348,12 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
fileQueryWrapper.like(WaylineFileEntity::getAncestors, rootId);
fileQueryWrapper.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.DIRECTORY.getVal());
if (aboveSysAdminRole()) {
} else {
// 只能 查看自己团队的 航线
fileQueryWrapper.eq(WaylineFileEntity::getOrgId, getOrgId());
}
List<WaylineFileEntity> waylineFiles = mapper.selectList(fileQueryWrapper);
return getWaylineFileTree(waylineFiles, rootId);
......@@ -480,6 +499,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
.name(file.getName())
.username(file.getUsername())
.objectKey(file.getObjectKey())
.orgId(file.getOrgId())
// Separate multiple payload data with ",".
.payloadModelKeys(String.join(",", file.getPayloadModelKeys()))
.templateTypes(file.getTemplateTypes().stream()
......@@ -509,6 +529,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
.name(file.getName())
.username(file.getUsername())
.objectKey(file.getObjectKey())
.orgId(file.getOrgId())
// Separate multiple payload data with ",".
// .payloadModelKeys(String.join(",", file.getPayloadModelKeys()))
// .templateTypes(file.getTemplateTypes().stream()
......@@ -649,6 +670,12 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
public PaginationData<GetWaylineListResponse> getWaylinesByParam(String workspaceId, String parentId, GetWaylineListRequest param) {
// Paging Query
LambdaQueryWrapper<WaylineFileEntity> waylineFileQueryWrapper = new LambdaQueryWrapper<>();
if (aboveSysAdminRole()) {
} else {
waylineFileQueryWrapper.eq(WaylineFileEntity::getOrgId, getOrgId());
}
waylineFileQueryWrapper.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.FILE.getVal())
.eq(WaylineFileEntity::getWorkspaceId, workspaceId)
.eq(Objects.nonNull(param.getFavorited()), WaylineFileEntity::getFavorited, param.getFavorited());
......@@ -689,6 +716,13 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
public PaginationData<GetWaylineListResponse> getWaylinesByParam(WaylineSearchParam param, String workspaceId, GetWaylineListRequest request) {
// Paging Query
LambdaQueryWrapper<WaylineFileEntity> waylineFileQueryWrapper = new LambdaQueryWrapper<>();
if (aboveSysAdminRole()) {
} else {
waylineFileQueryWrapper.eq(WaylineFileEntity::getOrgId, getOrgId());
}
waylineFileQueryWrapper.eq(WaylineFileEntity::getIsDir, WaylineFileTypeEnum.FILE.getVal());
waylineFileQueryWrapper.eq(WaylineFileEntity::getWorkspaceId, workspaceId);
......
......@@ -57,6 +57,9 @@ import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
import static com.dji.sample.common.util.SecurityUtils.aboveSysAdminRole;
import static com.dji.sample.common.util.SecurityUtils.getOrgId;
/**
* @author sean
* @version 1.1
......@@ -113,6 +116,7 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
.fileId(param.getFileId())
.username(username)
.workspaceId(workspaceId)
.orgId(StringUtils.hasText(param.getOrgId()) ? param.getOrgId() : getOrgId())
.jobId(jobId)
.beginTime(beginTime)
.endTime(endTime)
......@@ -204,6 +208,15 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
public PaginationData<WaylineJobDTO> getJobsByParam(WaylineJobSearchParam param, String workspaceId, long page, long pageSize) {
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(param.getOrgId())) {
waylineJobQueryWrapper.eq(WaylineJobEntity::getOrgId, param.getOrgId());
}
if (aboveSysAdminRole()) {
} else {
waylineJobQueryWrapper.eq(WaylineJobEntity::getOrgId, getOrgId());
}
waylineJobQueryWrapper.eq(WaylineJobEntity::getWorkspaceId, workspaceId);
waylineJobQueryWrapper.orderByDesc(WaylineJobEntity::getId);
......@@ -258,8 +271,13 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
@Override
public PaginationData<WaylineJobDTO> getTodayJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize) {
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<WaylineJobEntity>()
.eq(WaylineJobEntity::getWorkspaceId, workspaceId)
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<>();
if (aboveSysAdminRole()) {
} else {
waylineJobQueryWrapper.eq(WaylineJobEntity::getOrgId, getOrgId());
}
waylineJobQueryWrapper.eq(WaylineJobEntity::getWorkspaceId, workspaceId)
.orderByDesc(WaylineJobEntity::getId);
if (StringUtils.hasText(dockSns)) {
List<String> dockSnList = Arrays.asList(dockSns.split(","));
......@@ -314,6 +332,7 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
.fileId(dto.getFileId())
.dockSn(dto.getDockSn())
.workspaceId(dto.getWorkspaceId())
.orgId(dto.getOrgId())
.taskType(Optional.ofNullable(dto.getTaskType()).map(TaskTypeEnum::getType).orElse(null))
.taskScene(Optional.ofNullable(dto.getTaskScene()).map(TaskSceneEnum::getScene).orElse(null))
.waylineType(Optional.ofNullable(dto.getWaylineType()).map(WaylineTypeEnum::getValue).orElse(null))
......@@ -366,6 +385,7 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
.orElse(DeviceDTO.builder().build()).getNickname())
.username(entity.getUsername())
.workspaceId(entity.getWorkspaceId())
.orgId(entity.getOrgId())
.status(WaylineJobStatusEnum.IN_PROGRESS.getVal() == entity.getStatus() &&
entity.getJobId().equals(waylineRedisService.getPausedWaylineJobId(entity.getDockSn())) ?
WaylineJobStatusEnum.PAUSED.getVal() : entity.getStatus())
......@@ -482,6 +502,11 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
endSecond = endSecond*1000;
waylineJobQueryWrapper.between(WaylineJobEntity::getBeginTime, startSecond, endSecond);
waylineJobQueryWrapper.eq(WaylineJobEntity::getWorkspaceId, workspaceId);
if (aboveSysAdminRole()) {
} else {
waylineJobQueryWrapper.eq(WaylineJobEntity::getOrgId, getOrgId());
}
List<WaylineJobEntity> waylineJobList = this.mapper.selectList(waylineJobQueryWrapper);
......@@ -655,6 +680,13 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
public void exportTaskList(HttpServletResponse response, String workspaceId) {
// 模拟数据(根据传入参数过滤)
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<>();
waylineJobQueryWrapper.eq(WaylineJobEntity::getWorkspaceId, workspaceId);
if (aboveSysAdminRole()) {
} else {
waylineJobQueryWrapper.eq(WaylineJobEntity::getOrgId, getOrgId());
}
List<WaylineJobEntity> list = this.list();
// 创建 Excel
......
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