mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
feat: optimize app manager list
This commit is contained in:
parent
7b7582dd91
commit
3ea089eaee
@ -61,7 +61,7 @@ public class DingTalkLoginService implements ThirdPartyLoginService {
|
||||
public LoginTypeInfo loginType() {
|
||||
return new LoginTypeInfo()
|
||||
.setType(AuthConstants.ACCOUNT_TYPE_DING)
|
||||
.setName("DingTalkLogin")
|
||||
.setName("DingTalk")
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ import java.util.Optional;
|
||||
* @since 2023/3/20
|
||||
*/
|
||||
@Service
|
||||
public class PowerJobThirdPartyLoginService implements ThirdPartyLoginService {
|
||||
public class PwjbAccountLoginService implements ThirdPartyLoginService {
|
||||
|
||||
@Resource
|
||||
private PwjbUserInfoRepository pwjbUserInfoRepository;
|
||||
@ -37,7 +37,7 @@ public class PowerJobThirdPartyLoginService implements ThirdPartyLoginService {
|
||||
public LoginTypeInfo loginType() {
|
||||
return new LoginTypeInfo()
|
||||
.setType(AuthConstants.ACCOUNT_TYPE_POWER_JOB)
|
||||
.setName("PowerJob Built-in Login")
|
||||
.setName("PowerJob Account")
|
||||
;
|
||||
}
|
||||
|
@ -25,17 +25,18 @@ import tech.powerjob.server.auth.service.WebAuthService;
|
||||
import tech.powerjob.server.persistence.PageResult;
|
||||
import tech.powerjob.server.persistence.QueryConvertUtils;
|
||||
import tech.powerjob.server.persistence.remote.model.AppInfoDO;
|
||||
import tech.powerjob.server.persistence.remote.model.NamespaceDO;
|
||||
import tech.powerjob.server.persistence.remote.repository.AppInfoRepository;
|
||||
import tech.powerjob.server.web.converter.NamespaceConverter;
|
||||
import tech.powerjob.server.web.request.ComponentUserRoleInfo;
|
||||
import tech.powerjob.server.web.request.ModifyAppInfoRequest;
|
||||
import tech.powerjob.server.web.request.QueryAppInfoRequest;
|
||||
import tech.powerjob.server.web.response.AppInfoVO;
|
||||
import tech.powerjob.server.web.response.NamespaceBaseVO;
|
||||
import tech.powerjob.server.web.service.NamespaceWebService;
|
||||
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -54,6 +55,8 @@ public class AppInfoController {
|
||||
|
||||
private final AppInfoRepository appInfoRepository;
|
||||
|
||||
private final NamespaceWebService namespaceWebService;
|
||||
|
||||
@PostMapping("/save")
|
||||
@ApiPermission(name = "App-Save", roleScope = RoleScope.APP, dynamicPermissionPlugin = ModifyOrCreateDynamicPermission.class, grandPermissionPlugin = SaveAppGrantPermissionPlugin.class)
|
||||
public ResultDTO<AppInfoVO> saveAppInfo(@RequestBody ModifyAppInfoRequest req) {
|
||||
@ -172,6 +175,15 @@ public class AppInfoController {
|
||||
// 密码
|
||||
boolean hasPermission = webAuthService.hasPermission(RoleScope.APP, appInfoDO.getId(), Permission.READ);
|
||||
appInfoVO.setPassword(hasPermission ? appInfoDO.getPassword() : AuthConstants.TIPS_NO_PERMISSION_TO_SEE);
|
||||
|
||||
// namespace
|
||||
Optional<NamespaceDO> namespaceOpt = namespaceWebService.findById(appInfoVO.getId());
|
||||
if (namespaceOpt.isPresent()) {
|
||||
NamespaceBaseVO baseNamespace = NamespaceConverter.do2BaseVo(namespaceOpt.get());
|
||||
appInfoVO.setNamespace(baseNamespace);
|
||||
appInfoVO.setNamespaceName(baseNamespace.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return appInfoVO;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package tech.powerjob.server.web.controller;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import tech.powerjob.common.response.ResultDTO;
|
||||
@ -44,7 +45,7 @@ public class NamespaceController {
|
||||
@ResponseBody
|
||||
@PostMapping("/save")
|
||||
@ApiPermission(name = "Namespace-Save", roleScope = RoleScope.NAMESPACE, dynamicPermissionPlugin = ModifyOrCreateDynamicPermission.class, grandPermissionPlugin = SaveNamespaceGrantPermissionPlugin.class)
|
||||
public ResultDTO<NamespaceVO> save(@RequestBody ModifyNamespaceRequest req) {
|
||||
public ResultDTO<NamespaceBaseVO> save(@RequestBody ModifyNamespaceRequest req) {
|
||||
|
||||
NamespaceDO savedNamespace = namespaceWebService.save(req);
|
||||
return ResultDTO.success(NamespaceConverter.do2BaseVo(savedNamespace));
|
||||
@ -65,9 +66,12 @@ public class NamespaceController {
|
||||
|
||||
PageResult<NamespaceVO> ret = new PageResult<>(namespacePageResult);
|
||||
ret.setData(namespacePageResult.get().map(x -> {
|
||||
NamespaceVO namespaceVO = NamespaceConverter.do2BaseVo(x);
|
||||
fillPermissionInfo(x, namespaceVO);
|
||||
return namespaceVO;
|
||||
NamespaceVO detailVo = new NamespaceVO();
|
||||
NamespaceBaseVO baseVO = NamespaceConverter.do2BaseVo(x);
|
||||
BeanUtils.copyProperties(baseVO, detailVo);
|
||||
|
||||
fillPermissionInfo(x, detailVo);
|
||||
return detailVo;
|
||||
}).collect(Collectors.toList()));
|
||||
|
||||
return ResultDTO.success(ret);
|
||||
|
@ -9,7 +9,6 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import tech.powerjob.common.response.ResultDTO;
|
||||
import tech.powerjob.common.serialize.JsonUtils;
|
||||
import tech.powerjob.server.auth.PowerJobUser;
|
||||
import tech.powerjob.server.auth.Role;
|
||||
import tech.powerjob.server.auth.RoleScope;
|
||||
@ -143,11 +142,8 @@ public class UserInfoController {
|
||||
if (namespaceDO == null) {
|
||||
return;
|
||||
}
|
||||
NamespaceBaseVO namespaceBaseVO = JsonUtils.parseObjectIgnoreException(JsonUtils.toJSONString(NamespaceConverter.do2BaseVo(namespaceDO)), NamespaceBaseVO.class);
|
||||
if (namespaceBaseVO != null) {
|
||||
namespaceBaseVO.genShowName();
|
||||
NamespaceBaseVO namespaceBaseVO = NamespaceConverter.do2BaseVo(namespaceDO);
|
||||
namespaceBaseVOS.add(namespaceBaseVO);
|
||||
}
|
||||
});
|
||||
});
|
||||
userDetailVO.setRole2NamespaceList(role2NamespaceBaseVo);
|
||||
|
@ -4,7 +4,7 @@ import org.springframework.beans.BeanUtils;
|
||||
import tech.powerjob.common.utils.CommonUtils;
|
||||
import tech.powerjob.server.common.constants.SwitchableStatus;
|
||||
import tech.powerjob.server.persistence.remote.model.NamespaceDO;
|
||||
import tech.powerjob.server.web.response.NamespaceVO;
|
||||
import tech.powerjob.server.web.response.NamespaceBaseVO;
|
||||
|
||||
/**
|
||||
* NamespaceConverter
|
||||
@ -14,12 +14,14 @@ import tech.powerjob.server.web.response.NamespaceVO;
|
||||
*/
|
||||
public class NamespaceConverter {
|
||||
|
||||
public static NamespaceVO do2BaseVo(NamespaceDO d) {
|
||||
NamespaceVO v = new NamespaceVO();
|
||||
public static NamespaceBaseVO do2BaseVo(NamespaceDO d) {
|
||||
NamespaceBaseVO v = new NamespaceBaseVO();
|
||||
BeanUtils.copyProperties(d, v);
|
||||
v.setGmtCreateStr(CommonUtils.formatTime(d.getGmtCreate()));
|
||||
v.setGmtModifiedStr(CommonUtils.formatTime(d.getGmtModified()));
|
||||
v.setStatusStr(SwitchableStatus.of(d.getStatus()).name());
|
||||
|
||||
v.genShowName();
|
||||
return v;
|
||||
}
|
||||
|
||||
|
@ -44,5 +44,8 @@ public class ModifyAppInfoRequest {
|
||||
throw new PowerJobException("appName can't contains white space!");
|
||||
}
|
||||
CommonUtils.requireNonNull(password, "password can't be empty");
|
||||
|
||||
// 后续版本强制要求设置 namespace,方便统一管理
|
||||
CommonUtils.requireNonNull(namespaceId, "namespace can't be empty");
|
||||
}
|
||||
}
|
||||
|
@ -37,4 +37,11 @@ public class AppInfoVO extends AppBaseVO {
|
||||
private String creator;
|
||||
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* Namespace Info
|
||||
*/
|
||||
private NamespaceBaseVO namespace;
|
||||
|
||||
private String namespaceName;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* namespace 基本 VO 对象,用于列表渲染
|
||||
@ -27,6 +28,21 @@ public class NamespaceBaseVO implements Serializable {
|
||||
*/
|
||||
protected String name;
|
||||
|
||||
private Integer status;
|
||||
private String statusStr;
|
||||
|
||||
private Date gmtCreate;
|
||||
|
||||
private String gmtCreateStr;
|
||||
|
||||
private Date gmtModified;
|
||||
|
||||
private String gmtModifiedStr;
|
||||
|
||||
private String creator;
|
||||
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 前端名称(拼接 code + name,更容易辨认)
|
||||
*/
|
||||
|
@ -5,8 +5,6 @@ import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import tech.powerjob.server.web.request.ComponentUserRoleInfo;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 基础版本的命名空间
|
||||
*
|
||||
@ -21,26 +19,11 @@ public class NamespaceVO extends NamespaceBaseVO {
|
||||
private String dept;
|
||||
private String tags;
|
||||
|
||||
private Integer status;
|
||||
private String statusStr;
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
*/
|
||||
private String extra;
|
||||
|
||||
private Date gmtCreate;
|
||||
|
||||
private String gmtCreateStr;
|
||||
|
||||
private Date gmtModified;
|
||||
|
||||
private String gmtModifiedStr;
|
||||
|
||||
private String creator;
|
||||
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 访问 token
|
||||
* 仅拥有当前 namespace 权限的访问者可见
|
||||
|
@ -6,6 +6,7 @@ import tech.powerjob.server.web.request.ModifyNamespaceRequest;
|
||||
import tech.powerjob.server.web.request.QueryNamespaceRequest;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* namespace web 服务
|
||||
@ -19,6 +20,8 @@ public interface NamespaceWebService {
|
||||
|
||||
void delete(Long id);
|
||||
|
||||
Optional<NamespaceDO> findById(Long id);
|
||||
|
||||
Page<NamespaceDO> list(QueryNamespaceRequest queryNamespaceRequest);
|
||||
|
||||
List<NamespaceDO> listAll();
|
||||
|
@ -101,6 +101,14 @@ public class NamespaceWebServiceImpl implements NamespaceWebService {
|
||||
namespaceRepository.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<NamespaceDO> findById(Long id) {
|
||||
if (id == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return namespaceRepository.findById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<NamespaceDO> list(QueryNamespaceRequest queryNamespaceRequest) {
|
||||
String codeLike = queryNamespaceRequest.getCodeLike();
|
||||
|
Loading…
x
Reference in New Issue
Block a user