添加应用功能优化

pull/45/head
shao1121353141 2023-09-09 00:11:54 +08:00
parent e976af0188
commit 7a5bd096dd
12 changed files with 53 additions and 38 deletions

View File

@ -17,6 +17,8 @@
*/ */
package cn.topiam.employee.application; package cn.topiam.employee.application;
import cn.topiam.employee.common.entity.app.AppGroupAssociationEntity;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.util.AlternativeJdkIdGenerator; import org.springframework.util.AlternativeJdkIdGenerator;
import org.springframework.util.IdGenerator; import org.springframework.util.IdGenerator;
@ -33,6 +35,9 @@ import cn.topiam.employee.common.repository.app.AppRepository;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/** /**
* AbstractApplicationService * AbstractApplicationService
* *
@ -55,7 +60,7 @@ public abstract class AbstractApplicationService implements ApplicationService {
} }
@Override @Override
public AppEntity createApp(String name, String icon, String remark, Long groupId, public AppEntity createApp(String name, String icon, String remark, Long[] groupId,
InitLoginType initLoginType, AuthorizationType authorizationType) { InitLoginType initLoginType, AuthorizationType authorizationType) {
AppEntity appEntity = new AppEntity(); AppEntity appEntity = new AppEntity();
appEntity.setName(name); appEntity.setName(name);
@ -70,28 +75,44 @@ public abstract class AbstractApplicationService implements ApplicationService {
appEntity.setInitLoginType(initLoginType); appEntity.setInitLoginType(initLoginType);
appEntity.setAuthorizationType(authorizationType); appEntity.setAuthorizationType(authorizationType);
appEntity.setRemark(remark); appEntity.setRemark(remark);
return appRepository.save(appEntity); appRepository.save(appEntity);
List<AppGroupAssociationEntity> list = new ArrayList<>();
for (Long id : groupId) {
AppGroupAssociationEntity appGroupAssociationEntity = new AppGroupAssociationEntity();
appGroupAssociationEntity.setGroupId(id);
appGroupAssociationEntity.setAppId(appEntity.getId());
list.add(appGroupAssociationEntity);
}
appGroupAssociationRepository.saveAll(list);
return appEntity;
} }
/** /**
* AppAccountRepository * AppAccountRepository
*/ */
protected final AppAccountRepository appAccountRepository; protected final AppAccountRepository appAccountRepository;
/**
* AppGroupAssociationRepository
*/
protected final AppGroupAssociationRepository appGroupAssociationRepository;
/** /**
* ApplicationRepository * ApplicationRepository
*/ */
protected final AppRepository appRepository; protected final AppRepository appRepository;
/** /**
* IdGenerator * IdGenerator
*/ */
protected final IdGenerator idGenerator; protected final IdGenerator idGenerator;
protected AbstractApplicationService(AppAccountRepository appAccountRepository, protected AbstractApplicationService(AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppRepository appRepository) { AppRepository appRepository) {
this.appAccountRepository = appAccountRepository; this.appAccountRepository = appAccountRepository;
this.appRepository = appRepository; this.appRepository = appRepository;
this.appGroupAssociationRepository = appGroupAssociationRepository;
this.idGenerator = new AlternativeJdkIdGenerator(); this.idGenerator = new AlternativeJdkIdGenerator();
} }
} }

View File

@ -22,6 +22,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.Date; import java.util.Date;
import cn.topiam.employee.common.repository.app.*;
import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.asn1.x500.X500Name;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -32,10 +33,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import cn.topiam.employee.common.entity.app.AppCertEntity; import cn.topiam.employee.common.entity.app.AppCertEntity;
import cn.topiam.employee.common.enums.app.AppCertUsingType; import cn.topiam.employee.common.enums.app.AppCertUsingType;
import cn.topiam.employee.common.repository.app.AppAccessPolicyRepository;
import cn.topiam.employee.common.repository.app.AppAccountRepository;
import cn.topiam.employee.common.repository.app.AppCertRepository;
import cn.topiam.employee.common.repository.app.AppRepository;
import cn.topiam.employee.support.exception.TopIamException; import cn.topiam.employee.support.exception.TopIamException;
import cn.topiam.employee.support.util.CertUtils; import cn.topiam.employee.support.util.CertUtils;
import cn.topiam.employee.support.util.RsaUtils; import cn.topiam.employee.support.util.RsaUtils;
@ -128,8 +125,9 @@ public abstract class AbstractCertificateApplicationService extends AbstractAppl
protected AbstractCertificateApplicationService(AppCertRepository appCertRepository, protected AbstractCertificateApplicationService(AppCertRepository appCertRepository,
AppAccountRepository appAccountRepository, AppAccountRepository appAccountRepository,
AppAccessPolicyRepository appAccessPolicyRepository, AppAccessPolicyRepository appAccessPolicyRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppRepository appRepository) { AppRepository appRepository) {
super(appAccountRepository, appRepository); super(appAccountRepository, appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository; this.appCertRepository = appCertRepository;
this.appAccessPolicyRepository = appAccessPolicyRepository; this.appAccessPolicyRepository = appAccessPolicyRepository;
this.idGenerator = new AlternativeJdkIdGenerator(); this.idGenerator = new AlternativeJdkIdGenerator();

View File

@ -96,7 +96,7 @@ public interface ApplicationService {
* @return {@link Long} ID * @return {@link Long} ID
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
String create(String name, String icon, String remark, Long groupId); String create(String name, String icon, String remark, Long[] groupId);
/** /**
* *
@ -142,6 +142,6 @@ public interface ApplicationService {
* @param authorizationType {@link AuthorizationType} * @param authorizationType {@link AuthorizationType}
* @return {@link AppEntity} * @return {@link AppEntity}
*/ */
AppEntity createApp(String name, String icon, String remark, Long groupId, AppEntity createApp(String name, String icon, String remark, Long[] groupId,
InitLoginType initLoginType, AuthorizationType authorizationType); InitLoginType initLoginType, AuthorizationType authorizationType);
} }

View File

@ -26,6 +26,7 @@ import cn.topiam.employee.common.entity.app.AppFormConfigEntity;
import cn.topiam.employee.common.entity.app.po.AppFormConfigPO; import cn.topiam.employee.common.entity.app.po.AppFormConfigPO;
import cn.topiam.employee.common.repository.app.AppAccountRepository; import cn.topiam.employee.common.repository.app.AppAccountRepository;
import cn.topiam.employee.common.repository.app.AppFormConfigRepository; import cn.topiam.employee.common.repository.app.AppFormConfigRepository;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import cn.topiam.employee.common.repository.app.AppRepository; import cn.topiam.employee.common.repository.app.AppRepository;
/** /**
@ -83,8 +84,9 @@ public abstract class AbstractFormApplicationService extends AbstractApplication
protected AbstractFormApplicationService(AppRepository appRepository, protected AbstractFormApplicationService(AppRepository appRepository,
AppAccountRepository appAccountRepository, AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppFormConfigRepository appFormConfigRepository) { AppFormConfigRepository appFormConfigRepository) {
super(appAccountRepository, appRepository); super(appAccountRepository, appGroupAssociationRepository, appRepository);
this.appFormConfigRepository = appFormConfigRepository; this.appFormConfigRepository = appFormConfigRepository;
} }
} }

View File

@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import cn.topiam.employee.common.repository.app.AppGroupAssociationRepository;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -199,7 +200,7 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
* @param groupId {@link Long} id * @param groupId {@link Long} id
*/ */
@Override @Override
public String create(String name, String icon, String remark, Long groupId) { public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用 //1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP, AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
AuthorizationType.AUTHORIZATION); AuthorizationType.AUTHORIZATION);
@ -216,8 +217,10 @@ public class FormStandardApplicationServiceImpl extends AbstractFormApplicationS
protected FormStandardApplicationServiceImpl(AppAccountRepository appAccountRepository, protected FormStandardApplicationServiceImpl(AppAccountRepository appAccountRepository,
AppFormConfigRepository appFormConfigRepository, AppFormConfigRepository appFormConfigRepository,
AppRepository appRepository, AppRepository appRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppFormConfigConverter appFormConfigConverter) { AppFormConfigConverter appFormConfigConverter) {
super(appRepository, appAccountRepository, appFormConfigRepository); super(appRepository, appAccountRepository, appGroupAssociationRepository,
appFormConfigRepository);
this.appFormConfigConverter = appFormConfigConverter; this.appFormConfigConverter = appFormConfigConverter;
} }

View File

@ -102,8 +102,10 @@ public abstract class AbstractJwtCertificateApplicationService extends
AppCertRepository appCertRepository, AppCertRepository appCertRepository,
AppRepository appRepository, AppRepository appRepository,
AppAccountRepository appAccountRepository, AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppAccessPolicyRepository appAccessPolicyRepository) { AppAccessPolicyRepository appAccessPolicyRepository) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository); super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository; this.appCertRepository = appCertRepository;
this.appRepository = appRepository; this.appRepository = appRepository;
this.appJwtConfigRepository = appJwtConfigRepository; this.appJwtConfigRepository = appJwtConfigRepository;

View File

@ -204,7 +204,7 @@ public class JwtStandardCertificateApplicationServiceImpl extends
* @param groupId {@link Long} id * @param groupId {@link Long} id
*/ */
@Override @Override
public String create(String name, String icon, String remark, Long groupId) { public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用 //1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP, AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.PORTAL_OR_APP,
AuthorizationType.AUTHORIZATION); AuthorizationType.AUTHORIZATION);
@ -229,9 +229,10 @@ public class JwtStandardCertificateApplicationServiceImpl extends
AppCertRepository appCertRepository, AppCertRepository appCertRepository,
AppRepository appRepository, AppRepository appRepository,
AppAccountRepository appAccountRepository, AppAccountRepository appAccountRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppAccessPolicyRepository appAccessPolicyRepository) { AppAccessPolicyRepository appAccessPolicyRepository) {
super(appJwtConfigRepository, appCertRepository, appRepository, appAccountRepository, super(appJwtConfigRepository, appCertRepository, appRepository, appAccountRepository,
appAccessPolicyRepository); appGroupAssociationRepository, appAccessPolicyRepository);
this.appJwtConfigConverter = appJwtConfigConverter; this.appJwtConfigConverter = appJwtConfigConverter;
} }
} }

View File

@ -137,8 +137,10 @@ public abstract class AbstractOidcCertificateApplicationService extends
AppAccountRepository appAccountRepository, AppAccountRepository appAccountRepository,
AppAccessPolicyRepository appAccessPolicyRepository, AppAccessPolicyRepository appAccessPolicyRepository,
AppRepository appRepository, AppRepository appRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppOidcConfigRepository appOidcConfigRepository) { AppOidcConfigRepository appOidcConfigRepository) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository); super(appCertRepository, appAccountRepository, appAccessPolicyRepository,
appGroupAssociationRepository, appRepository);
this.appCertRepository = appCertRepository; this.appCertRepository = appCertRepository;
this.appRepository = appRepository; this.appRepository = appRepository;
this.appOidcConfigRepository = appOidcConfigRepository; this.appOidcConfigRepository = appOidcConfigRepository;

View File

@ -78,7 +78,7 @@ public class OidcStandardCertificateApplicationServiceImpl extends
* @param groupId {@link Long} id * @param groupId {@link Long} id
*/ */
@Override @Override
public String create(String name, String icon, String remark, Long groupId) { public String create(String name, String icon, String remark, Long[] groupId) {
//1、创建应用 //1、创建应用
AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.APP, AppEntity appEntity = createApp(name, icon, remark, groupId, InitLoginType.APP,
AuthorizationType.AUTHORIZATION); AuthorizationType.AUTHORIZATION);
@ -275,9 +275,10 @@ public class OidcStandardCertificateApplicationServiceImpl extends
AppAccessPolicyRepository appAccessPolicyRepository, AppAccessPolicyRepository appAccessPolicyRepository,
AppRepository appRepository, AppRepository appRepository,
AppOidcConfigRepository appOidcConfigRepository, AppOidcConfigRepository appOidcConfigRepository,
AppGroupAssociationRepository appGroupAssociationRepository,
AppOidcStandardConfigConverter appOidcStandardConfigConverter) { AppOidcStandardConfigConverter appOidcStandardConfigConverter) {
super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository, super(appCertRepository, appAccountRepository, appAccessPolicyRepository, appRepository,
appOidcConfigRepository); appGroupAssociationRepository, appOidcConfigRepository);
this.appOidcStandardConfigConverter = appOidcStandardConfigConverter; this.appOidcStandardConfigConverter = appOidcStandardConfigConverter;
} }
} }

View File

@ -64,6 +64,6 @@ public class AppCreateParam implements Serializable {
/** /**
* id * id
*/ */
@Schema(description = "应用分组id") @Schema(description = "应用分组ID")
private Long groupId; private Long[] groupId;
} }

View File

@ -54,11 +54,4 @@ public class AppGroupCreateParam implements Serializable {
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
/**
* ID
*/
@Parameter(description = "应用分组ID")
private String[] groupId;
} }

View File

@ -94,14 +94,6 @@ public class AppGroupServiceImpl implements AppGroupService {
public Boolean createAppGroup(AppGroupCreateParam param) { public Boolean createAppGroup(AppGroupCreateParam param) {
AppGroupEntity entity = appGroupConverter.appGroupCreateParamConvertToEntity(param); AppGroupEntity entity = appGroupConverter.appGroupCreateParamConvertToEntity(param);
appGroupRepository.save(entity); appGroupRepository.save(entity);
List<AppGroupAssociationEntity> list = new ArrayList<>();
for (String groupId : param.getGroupId()) {
AppGroupAssociationEntity appGroupAssociationEntity = new AppGroupAssociationEntity();
appGroupAssociationEntity.setGroupId(Long.valueOf(groupId));
appGroupAssociationEntity.setAppId(entity.getId());
list.add(appGroupAssociationEntity);
}
appGroupAssociationRepository.saveAll(list);
AuditContext.setTarget( AuditContext.setTarget(
Target.builder().id(String.valueOf(entity.getId())).type(TargetType.APP_GROUP).build()); Target.builder().id(String.valueOf(entity.getId())).type(TargetType.APP_GROUP).build());
return true; return true;