|
|
@@ -1,10 +1,25 @@
|
|
|
package com.usoftchina.uu.open.grpc.service.impl;
|
|
|
|
|
|
+import com.usoftchina.uu.account.context.CompanyHolder;
|
|
|
+import com.usoftchina.uu.account.context.PlatformHolder;
|
|
|
+import com.usoftchina.uu.account.dto.CompanyDTO;
|
|
|
+import com.usoftchina.uu.app.api.AppConfigApi;
|
|
|
+import com.usoftchina.uu.app.dto.AppConfigDTO;
|
|
|
+import com.usoftchina.uu.app.dto.CompanyAppGroupDTO;
|
|
|
+import com.usoftchina.uu.base.Platform;
|
|
|
+import com.usoftchina.uu.exception.ExceptionCode;
|
|
|
import com.usoftchina.uu.open.grpc.api.*;
|
|
|
import com.usoftchina.uu.open.grpc.interceptor.OpenSignatureInterceptor;
|
|
|
-import io.grpc.Status;
|
|
|
+import com.usoftchina.uu.open.grpc.util.OpenBeanMapper;
|
|
|
+import com.usoftchina.uu.open.grpc.util.ResponseUtils;
|
|
|
import io.grpc.stub.StreamObserver;
|
|
|
import org.lognet.springboot.grpc.GRpcService;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author yingp
|
|
|
@@ -13,28 +28,151 @@ import org.lognet.springboot.grpc.GRpcService;
|
|
|
@GRpcService(interceptors = OpenSignatureInterceptor.class)
|
|
|
public class OpenAppServiceImpl extends AppServiceGrpc.AppServiceImplBase{
|
|
|
|
|
|
+ private final static Logger logger = LoggerFactory.getLogger(OpenAppServiceImpl.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AppConfigApi appConfigApi;
|
|
|
+
|
|
|
@Override
|
|
|
public void getConfig(GetAppConfigRequest request, StreamObserver<GetAppConfigResponse> responseObserver) {
|
|
|
-
|
|
|
+ GetAppConfigResponse.Builder builder = GetAppConfigResponse.newBuilder();
|
|
|
+ try {
|
|
|
+ CompanyDTO companyDTO = CompanyHolder.get();
|
|
|
+ Platform platform = PlatformHolder.get();
|
|
|
+ // 指定平台的应用配置;如果已分配或归属该公司,则标记enable = true
|
|
|
+ List<CompanyAppGroupDTO> appGroupDTOList = appConfigApi.findByScopePlatformAndCompanyId(platform, companyDTO.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(appGroupDTOList)) {
|
|
|
+ appGroupDTOList.forEach(appGroupDTO -> {
|
|
|
+ builder.addConfig(OpenBeanMapper.map(appGroupDTO));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ builder.setResponseHeader(ResponseUtils.success());
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("getConfig error", e);
|
|
|
+ builder.setResponseHeader(ResponseUtils.error(e));
|
|
|
+ }
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void setEnable(SetEnableRequest request, StreamObserver<SetEnableResponse> responseObserver) {
|
|
|
+ SetEnableResponse.Builder builder = SetEnableResponse.newBuilder();
|
|
|
try {
|
|
|
- ResponseHeader header = ResponseHeader.newBuilder().setSuccess(true).build();
|
|
|
- responseObserver.onNext(SetEnableResponse.newBuilder().setResponseHeader(header).build());
|
|
|
- responseObserver.onCompleted();
|
|
|
+ CompanyDTO companyDTO = CompanyHolder.get();
|
|
|
+ Integer appId = request.getAppId();
|
|
|
+ Boolean enable = request.getEnable();
|
|
|
+ if (null != enable && enable.booleanValue()) {
|
|
|
+ // 启用
|
|
|
+ appConfigApi.bindCompany(appId, companyDTO.getId());
|
|
|
+ } else {
|
|
|
+ // 禁用
|
|
|
+ appConfigApi.unbindCompany(appId, companyDTO.getId());
|
|
|
+ }
|
|
|
+ builder.setResponseHeader(ResponseUtils.success());
|
|
|
} catch (Exception e) {
|
|
|
- responseObserver.onError(Status.INTERNAL.withDescription(e.getMessage()).asRuntimeException());
|
|
|
+ logger.error("setEnable error", e);
|
|
|
+ builder.setResponseHeader(ResponseUtils.error(e));
|
|
|
}
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void saveConfig(SaveConfigRequest request, StreamObserver<SaveConfigResponse> responseObserver) {
|
|
|
+ public void newConfig(NewConfigRequest request, StreamObserver<NewConfigResponse> responseObserver) {
|
|
|
+ NewConfigResponse.Builder builder = NewConfigResponse.newBuilder();
|
|
|
+ try {
|
|
|
+ CompanyDTO companyDTO = CompanyHolder.get();
|
|
|
+ Platform platform = PlatformHolder.get();
|
|
|
+ AppConfigDTO appConfigDTO = OpenBeanMapper.map(request.getAppConfig());
|
|
|
+ appConfigDTO.setGroupId(request.getGroupId());
|
|
|
+ appConfigDTO.setId(null);
|
|
|
+ // 标记为专属应用
|
|
|
+ appConfigDTO.setScopeCompanyId(companyDTO.getId());
|
|
|
+ appConfigDTO.setScopePlatform(platform.getValue());
|
|
|
+ int appId = appConfigApi.save(appConfigDTO);
|
|
|
+
|
|
|
+ Boolean enable = request.getAppConfig().getEnable();
|
|
|
+ if (null != enable && enable.booleanValue()) {
|
|
|
+ appConfigApi.bindCompany(appId, companyDTO.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ builder.setAppId(appId)
|
|
|
+ .setResponseHeader(ResponseUtils.success());
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("saveConfig error", e);
|
|
|
+ builder.setResponseHeader(ResponseUtils.error(e));
|
|
|
+ }
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void deleteConfig(DeleteConfigRequest request, StreamObserver<DeleteCOnfigResponse> responseObserver) {
|
|
|
- super.deleteConfig(request, responseObserver);
|
|
|
+ public void modifyConfig(ModifyConfigRequest request, StreamObserver<ModifyConfigResponse> responseObserver) {
|
|
|
+ ModifyConfigResponse.Builder builder = ModifyConfigResponse.newBuilder();
|
|
|
+ try {
|
|
|
+ CompanyDTO companyDTO = CompanyHolder.get();
|
|
|
+ AppConfigDTO appConfigDTO = OpenBeanMapper.map(request.getAppConfig());
|
|
|
+ AppConfigDTO oldOne = appConfigApi.findByPrimaryKey(appConfigDTO.getId());
|
|
|
+ if (null != oldOne) {
|
|
|
+ // 只能修改自定义的
|
|
|
+ if (null != oldOne.getScopeCompanyId() && oldOne.getScopeCompanyId().equals(companyDTO.getId())) {
|
|
|
+ // 标记为专属应用
|
|
|
+ appConfigDTO.setScopeCompanyId(oldOne.getScopeCompanyId());
|
|
|
+ appConfigDTO.setScopePlatform(oldOne.getScopePlatform());
|
|
|
+ appConfigApi.updateByPrimaryKey(appConfigDTO);
|
|
|
+
|
|
|
+ Boolean enable = request.getAppConfig().getEnable();
|
|
|
+ if (null != enable && enable.booleanValue()) {
|
|
|
+ appConfigApi.bindCompany(appConfigDTO.getId(), companyDTO.getId());
|
|
|
+ } else {
|
|
|
+ appConfigApi.unbindCompany(appConfigDTO.getId(), companyDTO.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ builder.setResponseHeader(ResponseUtils.success());
|
|
|
+ } else {
|
|
|
+ logger.error(ExceptionCode.APP_NO_PERMISSION.toString() + " appId " + appConfigDTO.getId());
|
|
|
+ builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.APP_NO_PERMISSION.getCode(),
|
|
|
+ ExceptionCode.APP_NO_PERMISSION.getMessage() + " 如果需要禁用/启用该应用,请使用setEnable接口"));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ logger.error(ExceptionCode.APP_NOT_FOUND.toString() + " appId " + appConfigDTO.getId());
|
|
|
+ builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.APP_NOT_FOUND));
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("modifyConfig error", e);
|
|
|
+ builder.setResponseHeader(ResponseUtils.error(e));
|
|
|
+ }
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteConfig(DeleteConfigRequest request, StreamObserver<DeleteConfigResponse> responseObserver) {
|
|
|
+ DeleteConfigResponse.Builder builder = DeleteConfigResponse.newBuilder();
|
|
|
+ try {
|
|
|
+ CompanyDTO companyDTO = CompanyHolder.get();
|
|
|
+ int appId = request.getAppId();
|
|
|
+ AppConfigDTO appConfigDTO = appConfigApi.findByPrimaryKey(appId);
|
|
|
+ if (null != appConfigDTO) {
|
|
|
+ // 只能删除自定义的
|
|
|
+ if (null != appConfigDTO.getScopeCompanyId() && appConfigDTO.getScopeCompanyId().equals(companyDTO.getId())) {
|
|
|
+ appConfigApi.unbindCompany(appId, companyDTO.getId());
|
|
|
+ appConfigApi.removeByPrimaryKey(appId);
|
|
|
+ builder.setResponseHeader(ResponseUtils.success());
|
|
|
+ } else {
|
|
|
+ logger.error(ExceptionCode.APP_NO_PERMISSION.toString() + " appId " + request.getAppId());
|
|
|
+ builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.APP_NO_PERMISSION));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ logger.error(ExceptionCode.APP_NOT_FOUND.toString() + " appId " + request.getAppId());
|
|
|
+ builder.setResponseHeader(ResponseUtils.fail(ExceptionCode.APP_NOT_FOUND));
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("deleteConfig error", e);
|
|
|
+ builder.setResponseHeader(ResponseUtils.error(e));
|
|
|
+ }
|
|
|
+ responseObserver.onNext(builder.build());
|
|
|
+ responseObserver.onCompleted();
|
|
|
}
|
|
|
}
|