diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkLoginService.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkLoginService.java index afb0a80a..9255ca1b 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkLoginService.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkLoginService.java @@ -61,7 +61,7 @@ public class DingTalkLoginService implements ThirdPartyLoginService { public LoginTypeInfo loginType() { return new LoginTypeInfo() .setType(AuthConstants.ACCOUNT_TYPE_DING) - .setName("DingTalkLogin") + .setName("DingTalk") ; } diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PowerJobThirdPartyLoginService.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PwjbAccountLoginService.java similarity index 97% rename from powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PowerJobThirdPartyLoginService.java rename to powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PwjbAccountLoginService.java index fbf9b3d4..5116e38d 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PowerJobThirdPartyLoginService.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/PwjbAccountLoginService.java @@ -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") ; } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java index 97cb7a37..c62c90d6 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java @@ -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 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 namespaceOpt = namespaceWebService.findById(appInfoVO.getId()); + if (namespaceOpt.isPresent()) { + NamespaceBaseVO baseNamespace = NamespaceConverter.do2BaseVo(namespaceOpt.get()); + appInfoVO.setNamespace(baseNamespace); + appInfoVO.setNamespaceName(baseNamespace.getName()); + } + } return appInfoVO; diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java index f318e0be..551d82b4 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java @@ -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 save(@RequestBody ModifyNamespaceRequest req) { + public ResultDTO save(@RequestBody ModifyNamespaceRequest req) { NamespaceDO savedNamespace = namespaceWebService.save(req); return ResultDTO.success(NamespaceConverter.do2BaseVo(savedNamespace)); @@ -65,9 +66,12 @@ public class NamespaceController { PageResult 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); diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/UserInfoController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/UserInfoController.java index 27e92060..95e31f42 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/UserInfoController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/UserInfoController.java @@ -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(); - namespaceBaseVOS.add(namespaceBaseVO); - } + NamespaceBaseVO namespaceBaseVO = NamespaceConverter.do2BaseVo(namespaceDO); + namespaceBaseVOS.add(namespaceBaseVO); }); }); userDetailVO.setRole2NamespaceList(role2NamespaceBaseVo); diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/converter/NamespaceConverter.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/converter/NamespaceConverter.java index 7ef6d7a0..b727d9e9 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/converter/NamespaceConverter.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/converter/NamespaceConverter.java @@ -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; } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/request/ModifyAppInfoRequest.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/request/ModifyAppInfoRequest.java index 6571b0ac..4669cf62 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/request/ModifyAppInfoRequest.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/request/ModifyAppInfoRequest.java @@ -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"); } } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/AppInfoVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/AppInfoVO.java index 1fe22c0e..dce59f0b 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/AppInfoVO.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/AppInfoVO.java @@ -37,4 +37,11 @@ public class AppInfoVO extends AppBaseVO { private String creator; private String modifier; + + /** + * Namespace Info + */ + private NamespaceBaseVO namespace; + + private String namespaceName; } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceBaseVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceBaseVO.java index 2f898a07..6453b2cb 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceBaseVO.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceBaseVO.java @@ -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,更容易辨认) */ diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceVO.java index fe634656..72bfee4d 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceVO.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/NamespaceVO.java @@ -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 权限的访问者可见 diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/NamespaceWebService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/NamespaceWebService.java index c272eae9..07f9d218 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/NamespaceWebService.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/NamespaceWebService.java @@ -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 findById(Long id); + Page list(QueryNamespaceRequest queryNamespaceRequest); List listAll(); diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/impl/NamespaceWebServiceImpl.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/impl/NamespaceWebServiceImpl.java index 7bacb2cb..5e4b02b3 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/impl/NamespaceWebServiceImpl.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/service/impl/NamespaceWebServiceImpl.java @@ -101,6 +101,14 @@ public class NamespaceWebServiceImpl implements NamespaceWebService { namespaceRepository.deleteById(id); } + @Override + public Optional findById(Long id) { + if (id == null) { + return Optional.empty(); + } + return namespaceRepository.findById(id); + } + @Override public Page list(QueryNamespaceRequest queryNamespaceRequest) { String codeLike = queryNamespaceRequest.getCodeLike();