Modifying data sources, adding, deleting, and querying

This commit is contained in:
JiaJu Zhuang
2023-08-19 17:03:08 +08:00
parent 7a53957e3f
commit c387de4d64
12 changed files with 174 additions and 25 deletions

View File

@ -0,0 +1,34 @@
package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* Data Source Access
*
* @author Jiaju Zhuang
*/
@Data
public class DataSourceAccessPageQueryParam extends PageQueryParam {
/**
* 数据源id
*/
@NotNull
private Long dataSourceId;
/**
* 授权类型
*
* @see AccessObjectTypeEnum
*/
@NotNull
private String accessObjectType;
/**
* 授权id,根据类型区分是用户还是团队
*/
@NotNull
private Long accessObjectId;
}

View File

@ -1,5 +1,6 @@
package ai.chat2db.server.domain.api.param.datasource.access; package ai.chat2db.server.domain.api.param.datasource.access;
import ai.chat2db.server.domain.api.param.datasource.DataSourceSelector;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -21,9 +22,13 @@ public class DataSourceAccessSelector {
*/ */
private Boolean accessObject; private Boolean accessObject;
/** /**
* 数据源 * 数据源
*/ */
private Boolean dataSource; private Boolean dataSource;
/**
* 数据源
*/
private DataSourceSelector dataSourceSelector;
} }

View File

@ -3,6 +3,7 @@ package ai.chat2db.server.domain.api.service;
import ai.chat2db.server.domain.api.model.DataSourceAccess; import ai.chat2db.server.domain.api.model.DataSourceAccess;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessPageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult;
@ -16,6 +17,15 @@ import jakarta.validation.constraints.NotNull;
*/ */
public interface DataSourceAccessService { public interface DataSourceAccessService {
/**
* Comprehensive Paging Query Data
*
* @param param
* @param selector
* @return
*/
PageResult<DataSourceAccess> pageQuery(DataSourceAccessPageQueryParam param, DataSourceAccessSelector selector);
/** /**
* Paging Query Data * Paging Query Data
* *

View File

@ -32,7 +32,6 @@ public interface DataSourceService {
* @return * @return
*/ */
DataResult<Long> createWithPermission(DataSourceCreateParam param); DataResult<Long> createWithPermission(DataSourceCreateParam param);
/** /**
* 更新数据源连接 * 更新数据源连接
@ -100,9 +99,18 @@ public interface DataSourceService {
* *
* @param ids * @param ids
* @return * @return
* @deprecated Use {@link #listQuery(List, DataSourceSelector)}
*/ */
ListResult<DataSource> queryByIds(List<Long> ids); ListResult<DataSource> queryByIds(List<Long> ids);
/**
* 通过ID列表查询数据源
*
* @param idList
* @return
*/
ListResult<DataSource> listQuery(List<Long> idList, DataSourceSelector selector);
/** /**
* 数据源连接测试 * 数据源连接测试
* *

View File

@ -8,6 +8,7 @@ import ai.chat2db.server.domain.api.param.ConsoleConnectParam;
import ai.chat2db.server.domain.api.param.ConsoleCreateParam; import ai.chat2db.server.domain.api.param.ConsoleCreateParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourceCreateParam; import ai.chat2db.server.domain.api.param.datasource.DataSourceCreateParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourcePreConnectParam; import ai.chat2db.server.domain.api.param.datasource.DataSourcePreConnectParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourceSelector;
import ai.chat2db.server.domain.api.param.datasource.DataSourceTestParam; import ai.chat2db.server.domain.api.param.datasource.DataSourceTestParam;
import ai.chat2db.server.domain.api.param.datasource.DataSourceUpdateParam; import ai.chat2db.server.domain.api.param.datasource.DataSourceUpdateParam;
import ai.chat2db.server.domain.api.service.DataSourceService; import ai.chat2db.server.domain.api.service.DataSourceService;
@ -177,7 +178,8 @@ public abstract class DataSourceConverter {
+ ".DriverConfig" + ".DriverConfig"
+ ".class))") + ".class))")
@Mapping(target = "extendInfo", @Mapping(target = "extendInfo",
expression = "java(com.alibaba.fastjson2.JSON.parseArray(dataSourceDO.getExtendInfo(),ai.chat2db.spi.model.KeyValue.class))") expression = "java(com.alibaba.fastjson2.JSON.parseArray(dataSourceDO.getExtendInfo(),ai.chat2db.spi.model"
+ ".KeyValue.class))")
@Mapping(target = "environment.id", source = "environmentId") @Mapping(target = "environment.id", source = "environmentId")
public abstract DataSource do2dto(DataSourceDO dataSourceDO); public abstract DataSource do2dto(DataSourceDO dataSourceDO);
@ -195,11 +197,20 @@ public abstract class DataSourceConverter {
* @param list * @param list
*/ */
public void fillDetail(List<DataSource> list) { public void fillDetail(List<DataSource> list) {
fillDetail(list, null);
}
/**
* Fill in detailed information
*
* @param list
*/
public void fillDetail(List<DataSource> list, DataSourceSelector selector) {
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
return; return;
} }
List<Long> idList = EasyCollectionUtils.toList(list, DataSource::getId); List<Long> idList = EasyCollectionUtils.toList(list, DataSource::getId);
List<DataSource> queryList = dataSourceService.queryByIds(idList).getData(); List<DataSource> queryList = dataSourceService.listQuery(idList, selector).getData();
Map<Long, DataSource> queryMap = EasyCollectionUtils.toIdentityMap(queryList, DataSource::getId); Map<Long, DataSource> queryMap = EasyCollectionUtils.toIdentityMap(queryList, DataSource::getId);
for (DataSource data : list) { for (DataSource data : list) {
if (data == null || data.getId() == null) { if (data == null || data.getId() == null) {

View File

@ -7,16 +7,20 @@ import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.domain.api.model.DataSourceAccess; import ai.chat2db.server.domain.api.model.DataSourceAccess;
import ai.chat2db.server.domain.api.model.DataSourceAccessObject; import ai.chat2db.server.domain.api.model.DataSourceAccessObject;
import ai.chat2db.server.domain.api.model.Team; import ai.chat2db.server.domain.api.model.Team;
import ai.chat2db.server.domain.api.model.TeamUser;
import ai.chat2db.server.domain.api.model.User; import ai.chat2db.server.domain.api.model.User;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessComprehensivePageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessPageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector;
import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector;
import ai.chat2db.server.domain.api.service.DataSourceAccessService; import ai.chat2db.server.domain.api.service.DataSourceAccessService;
import ai.chat2db.server.domain.api.service.TeamService; import ai.chat2db.server.domain.api.service.TeamService;
import ai.chat2db.server.domain.api.service.UserService; import ai.chat2db.server.domain.api.service.UserService;
import ai.chat2db.server.domain.core.converter.DataSourceAccessConverter; import ai.chat2db.server.domain.core.converter.DataSourceAccessConverter;
import ai.chat2db.server.domain.core.converter.DataSourceConverter; import ai.chat2db.server.domain.core.converter.DataSourceConverter;
import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO; import ai.chat2db.server.domain.repository.entity.DataSourceAccessDO;
import ai.chat2db.server.domain.repository.entity.TeamUserDO;
import ai.chat2db.server.domain.repository.mapper.DataSourceAccessCustomMapper; import ai.chat2db.server.domain.repository.mapper.DataSourceAccessCustomMapper;
import ai.chat2db.server.domain.repository.mapper.DataSourceAccessMapper; import ai.chat2db.server.domain.repository.mapper.DataSourceAccessMapper;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
@ -24,6 +28,7 @@ import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.PageResult; import ai.chat2db.server.tools.base.wrapper.result.PageResult;
import ai.chat2db.server.tools.common.util.ContextUtils; import ai.chat2db.server.tools.common.util.ContextUtils;
import ai.chat2db.server.tools.common.util.EasyCollectionUtils; import ai.chat2db.server.tools.common.util.EasyCollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -55,6 +60,25 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService {
@Resource @Resource
private TeamService teamService; private TeamService teamService;
@Override
public PageResult<DataSourceAccess> pageQuery(DataSourceAccessPageQueryParam param, DataSourceAccessSelector selector) {
LambdaQueryWrapper<DataSourceAccessDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataSourceAccessDO::getDataSourceId, param.getDataSourceId())
.eq(DataSourceAccessDO::getAccessObjectType, param.getAccessObjectType())
.eq(DataSourceAccessDO::getAccessObjectId, param.getAccessObjectId())
;
Page<DataSourceAccessDO> page = new Page<>(param.getPageNo(), param.getPageSize());
page.setSearchCount(param.getEnableReturnCount());
IPage<DataSourceAccessDO> iPage = dataSourceAccessMapper.selectPage(page, queryWrapper);
List<DataSourceAccess> list = dataSourceAccessConverter.do2dto(iPage.getRecords());
fillData(list, selector);
return PageResult.of(list, iPage.getTotal(), param);
}
@Override @Override
public PageResult<DataSourceAccess> comprehensivePageQuery(DataSourceAccessComprehensivePageQueryParam param, public PageResult<DataSourceAccess> comprehensivePageQuery(DataSourceAccessComprehensivePageQueryParam param,
DataSourceAccessSelector selector) { DataSourceAccessSelector selector) {
@ -100,7 +124,8 @@ public class DataSourceAccessServiceImpl implements DataSourceAccessService {
if (BooleanUtils.isNotTrue(selector.getDataSource())) { if (BooleanUtils.isNotTrue(selector.getDataSource())) {
return; return;
} }
dataSourceConverter.fillDetail(EasyCollectionUtils.toList(list, DataSourceAccess::getDataSource)); dataSourceConverter.fillDetail(EasyCollectionUtils.toList(list, DataSourceAccess::getDataSource),
selector.getDataSourceSelector());
} }
private void fillAccessObject(List<DataSourceAccess> list, DataSourceAccessSelector selector) { private void fillAccessObject(List<DataSourceAccess> list, DataSourceAccessSelector selector) {

View File

@ -179,7 +179,7 @@ public class DataSourceServiceImpl implements DataSourceService {
IPage<DataSourceDO> iPage = dataSourceMapper.selectPage(page, queryWrapper); IPage<DataSourceDO> iPage = dataSourceMapper.selectPage(page, queryWrapper);
List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords()); List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords());
fillData(dataSources,selector); fillData(dataSources, selector);
return PageResult.of(dataSources, iPage.getTotal(), param); return PageResult.of(dataSources, iPage.getTotal(), param);
} }
@ -192,7 +192,7 @@ public class DataSourceServiceImpl implements DataSourceService {
BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey()); BooleanUtils.isTrue(loginUser.getAdmin()), loginUser.getId(), param.getSearchKey());
List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords()); List<DataSource> dataSources = dataSourceConverter.do2dto(iPage.getRecords());
fillData(dataSources,selector); fillData(dataSources, selector);
return PageResult.of(dataSources, iPage.getTotal(), param); return PageResult.of(dataSources, iPage.getTotal(), param);
@ -200,9 +200,19 @@ public class DataSourceServiceImpl implements DataSourceService {
@Override @Override
public ListResult<DataSource> queryByIds(List<Long> ids) { public ListResult<DataSource> queryByIds(List<Long> ids) {
List<DataSourceDO> dataSourceDOS = dataSourceMapper.selectBatchIds(ids); return listQuery(ids, null);
List<DataSource> dataSources = dataSourceConverter.do2dto(dataSourceDOS); }
return ListResult.of(dataSources);
@Override
public ListResult<DataSource> listQuery(List<Long> idList, DataSourceSelector selector) {
if (CollectionUtils.isEmpty(idList)) {
return ListResult.empty();
}
List<DataSourceDO> dataList = dataSourceMapper.selectBatchIds(idList);
List<DataSource> list = dataSourceConverter.do2dto(dataList);
fillData(list, selector);
return ListResult.of(list);
} }
@Override @Override

View File

@ -6,7 +6,9 @@ import ai.chat2db.server.admin.api.controller.team.request.TeamDataSourceBatchCr
import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO; import ai.chat2db.server.admin.api.controller.team.vo.TeamDataSourcePageQueryVO;
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.domain.api.param.datasource.DataSourceSelector;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessPageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector;
import ai.chat2db.server.domain.api.service.DataSourceAccessService; import ai.chat2db.server.domain.api.service.DataSourceAccessService;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
@ -30,7 +32,10 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class TeamDataSourceAdminController { public class TeamDataSourceAdminController {
private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder() private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder()
.accessObject(Boolean.TRUE) .dataSource(Boolean.TRUE)
.dataSourceSelector(DataSourceSelector.builder()
.environment(Boolean.TRUE)
.build())
.build(); .build();
@Resource @Resource
@ -62,11 +67,21 @@ public class TeamDataSourceAdminController {
@PostMapping("/batch_create") @PostMapping("/batch_create")
public ActionResult create(@Valid @RequestBody TeamDataSourceBatchCreateRequest request) { public ActionResult create(@Valid @RequestBody TeamDataSourceBatchCreateRequest request) {
request.getDataSourceIdList() request.getDataSourceIdList()
.forEach(dataSourceId -> dataSourceAccessService.create(DataSourceAccessCreatParam.builder() .forEach(dataSourceId -> {
.dataSourceId(dataSourceId) DataSourceAccessPageQueryParam dataSourceAccessPageQueryParam = new DataSourceAccessPageQueryParam();
.accessObjectId(request.getTeamId()) dataSourceAccessPageQueryParam.setDataSourceId(dataSourceId);
.accessObjectType(AccessObjectTypeEnum.TEAM.getCode()) dataSourceAccessPageQueryParam.setAccessObjectType(AccessObjectTypeEnum.TEAM.getCode());
.build())); dataSourceAccessPageQueryParam.setAccessObjectId(request.getTeamId());
dataSourceAccessPageQueryParam.queryOne();
if (dataSourceAccessService.pageQuery(dataSourceAccessPageQueryParam, null).hasData()) {
return;
}
dataSourceAccessService.create(DataSourceAccessCreatParam.builder()
.dataSourceId(dataSourceId)
.accessObjectId(request.getTeamId())
.accessObjectType(AccessObjectTypeEnum.TEAM.getCode())
.build());
});
return ActionResult.isSuccess(); return ActionResult.isSuccess();
} }

View File

@ -6,6 +6,7 @@ import ai.chat2db.server.admin.api.controller.team.request.TeamUserBatchCreateRe
import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO; import ai.chat2db.server.admin.api.controller.team.vo.TeamUserPageQueryVO;
import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest; import ai.chat2db.server.common.api.controller.request.CommonPageQueryRequest;
import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam; import ai.chat2db.server.domain.api.param.team.user.TeamUserCreatParam;
import ai.chat2db.server.domain.api.param.team.user.TeamUserPageQueryParam;
import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector; import ai.chat2db.server.domain.api.param.team.user.TeamUserSelector;
import ai.chat2db.server.domain.api.service.TeamUserService; import ai.chat2db.server.domain.api.service.TeamUserService;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
@ -60,10 +61,19 @@ public class TeamUserAdminController {
@PostMapping("/batch_create") @PostMapping("/batch_create")
public ActionResult create(@Valid @RequestBody TeamUserBatchCreateRequest request) { public ActionResult create(@Valid @RequestBody TeamUserBatchCreateRequest request) {
request.getUserIdList() request.getUserIdList()
.forEach(userId -> teamUserService.create(TeamUserCreatParam.builder() .forEach(userId -> {
.teamId(request.getTeamId()) TeamUserPageQueryParam teamUserPageQueryParam = new TeamUserPageQueryParam();
.userId(userId) teamUserPageQueryParam.setTeamId(request.getTeamId());
.build())); teamUserPageQueryParam.setUserId(userId);
teamUserPageQueryParam.queryOne();
if (teamUserService.pageQuery(teamUserPageQueryParam, null).hasData()) {
return;
}
teamUserService.create(TeamUserCreatParam.builder()
.teamId(request.getTeamId())
.userId(userId)
.build());
});
return ActionResult.isSuccess(); return ActionResult.isSuccess();
} }

View File

@ -45,6 +45,9 @@ public abstract class TeamDataSourcesAdminConverter {
* @param dto * @param dto
* @return * @return
*/ */
@Mappings({
@Mapping(target = "teamId", source = "accessObjectId"),
})
public abstract TeamDataSourcePageQueryVO dto2vo(DataSourceAccess dto); public abstract TeamDataSourcePageQueryVO dto2vo(DataSourceAccess dto);
} }

View File

@ -6,7 +6,9 @@ import ai.chat2db.server.admin.api.controller.user.request.UserDataSourceBatchCr
import ai.chat2db.server.admin.api.controller.user.request.UserTeamPageCommonQueryRequest; import ai.chat2db.server.admin.api.controller.user.request.UserTeamPageCommonQueryRequest;
import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO; import ai.chat2db.server.admin.api.controller.user.vo.UserDataSourcePageQueryVO;
import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum; import ai.chat2db.server.domain.api.enums.AccessObjectTypeEnum;
import ai.chat2db.server.domain.api.param.datasource.DataSourceSelector;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessCreatParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessPageQueryParam;
import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector; import ai.chat2db.server.domain.api.param.datasource.access.DataSourceAccessSelector;
import ai.chat2db.server.domain.api.service.DataSourceAccessService; import ai.chat2db.server.domain.api.service.DataSourceAccessService;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
@ -31,6 +33,9 @@ import org.springframework.web.bind.annotation.RestController;
public class UserDataSourceAdminController { public class UserDataSourceAdminController {
private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder() private static final DataSourceAccessSelector DATA_SOURCE_ACCESS_SELECTOR = DataSourceAccessSelector.builder()
.dataSource(Boolean.TRUE) .dataSource(Boolean.TRUE)
.dataSourceSelector(DataSourceSelector.builder()
.environment(Boolean.TRUE)
.build())
.build(); .build();
@Resource @Resource
@ -62,11 +67,21 @@ public class UserDataSourceAdminController {
@PostMapping("/batch_create") @PostMapping("/batch_create")
public ActionResult create(@RequestBody UserDataSourceBatchCreateRequest request) { public ActionResult create(@RequestBody UserDataSourceBatchCreateRequest request) {
request.getDataSourceIdList() request.getDataSourceIdList()
.forEach(dataSourceId -> dataSourceAccessService.create(DataSourceAccessCreatParam.builder() .forEach(dataSourceId -> {
.dataSourceId(dataSourceId) DataSourceAccessPageQueryParam dataSourceAccessPageQueryParam = new DataSourceAccessPageQueryParam();
.accessObjectId(request.getUserId()) dataSourceAccessPageQueryParam.setDataSourceId(dataSourceId);
.accessObjectType(AccessObjectTypeEnum.USER.getCode()) dataSourceAccessPageQueryParam.setAccessObjectType(AccessObjectTypeEnum.USER.getCode());
.build())); dataSourceAccessPageQueryParam.setAccessObjectId(request.getUserId());
dataSourceAccessPageQueryParam.queryOne();
if (dataSourceAccessService.pageQuery(dataSourceAccessPageQueryParam, null).hasData()) {
return;
}
dataSourceAccessService.create(DataSourceAccessCreatParam.builder()
.dataSourceId(dataSourceId)
.accessObjectId(request.getUserId())
.accessObjectType(AccessObjectTypeEnum.USER.getCode())
.build());
});
return ActionResult.isSuccess(); return ActionResult.isSuccess();
} }

View File

@ -48,6 +48,9 @@ public abstract class UserDataSourcesAdminConverter {
* @param dto * @param dto
* @return * @return
*/ */
@Mappings({
@Mapping(target = "userId", source = "accessObjectId"),
})
public abstract UserDataSourcePageQueryVO dto2vo(DataSourceAccess dto); public abstract UserDataSourcePageQueryVO dto2vo(DataSourceAccess dto);
} }