mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 05:20:15 +08:00
Modifying data sources, adding, deleting, and querying
This commit is contained in:
@ -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;
|
||||||
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据源连接测试
|
* 数据源连接测试
|
||||||
*
|
*
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user