mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-30 19:22:58 +08:00
Complete operation addition, deletion, modification, and check
This commit is contained in:
@ -79,4 +79,9 @@ public class Operation {
|
|||||||
* operation type
|
* operation type
|
||||||
*/
|
*/
|
||||||
private String operationType;
|
private String operationType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package ai.chat2db.server.domain.api.param;
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ai.chat2db.server.domain.api.param;
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ai.chat2db.server.domain.api.param;
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* query
|
||||||
|
*
|
||||||
|
* @author Jiaju Zhuang
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class OperationQueryParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
private Long userId;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package ai.chat2db.server.domain.api.param;
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ai.chat2db.server.domain.api.param;
|
package ai.chat2db.server.domain.api.param.operation;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
package ai.chat2db.server.domain.api.service;
|
package ai.chat2db.server.domain.api.service;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.model.OperationLog;
|
import ai.chat2db.server.domain.api.model.OperationLog;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogCreateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
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;
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package ai.chat2db.server.domain.api.service;
|
package ai.chat2db.server.domain.api.service;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.Operation;
|
import ai.chat2db.server.domain.api.model.Operation;
|
||||||
import ai.chat2db.server.domain.api.param.OperationPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationSavedParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationUpdateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationSavedParam;
|
||||||
|
import ai.chat2db.server.domain.api.param.operation.OperationUpdateParam;
|
||||||
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;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户保存ddl
|
* 用户保存ddl
|
||||||
@ -25,7 +25,7 @@ public interface OperationService {
|
|||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
DataResult<Long> create(OperationSavedParam param);
|
DataResult<Long> createWithPermission(OperationSavedParam param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新用户的ddl
|
* 更新用户的ddl
|
||||||
@ -33,7 +33,7 @@ public interface OperationService {
|
|||||||
* @param param
|
* @param param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ActionResult update(OperationUpdateParam param);
|
ActionResult updateWithPermission(OperationUpdateParam param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id查询
|
* 根据id查询
|
||||||
@ -43,13 +43,27 @@ public interface OperationService {
|
|||||||
*/
|
*/
|
||||||
DataResult<Operation> find(@NotNull Long id);
|
DataResult<Operation> find(@NotNull Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
DataResult<Operation> queryExistent(@NotNull Long id);
|
||||||
|
/**
|
||||||
|
* 查询一条数据
|
||||||
|
*
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
DataResult<Operation> queryExistent(@NotNull OperationQueryParam param);
|
||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ActionResult delete(@NotNull Long id);
|
ActionResult deleteWithPermission(@NotNull Long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询用户执行的ddl记录
|
* 查询用户执行的ddl记录
|
||||||
|
@ -3,8 +3,8 @@ package ai.chat2db.server.domain.core.converter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.Operation;
|
import ai.chat2db.server.domain.api.model.Operation;
|
||||||
import ai.chat2db.server.domain.api.param.OperationSavedParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationSavedParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationUpdateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationUpdateParam;
|
||||||
import ai.chat2db.server.domain.repository.entity.OperationSavedDO;
|
import ai.chat2db.server.domain.repository.entity.OperationSavedDO;
|
||||||
|
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
|
@ -3,7 +3,7 @@ package ai.chat2db.server.domain.core.converter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.OperationLog;
|
import ai.chat2db.server.domain.api.model.OperationLog;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogCreateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam;
|
||||||
import ai.chat2db.server.domain.repository.entity.OperationLogDO;
|
import ai.chat2db.server.domain.repository.entity.OperationLogDO;
|
||||||
|
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
|
@ -8,8 +8,8 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.DataSource;
|
import ai.chat2db.server.domain.api.model.DataSource;
|
||||||
import ai.chat2db.server.domain.api.model.OperationLog;
|
import ai.chat2db.server.domain.api.model.OperationLog;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogCreateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.service.DataSourceService;
|
import ai.chat2db.server.domain.api.service.DataSourceService;
|
||||||
import ai.chat2db.server.domain.api.service.OperationLogService;
|
import ai.chat2db.server.domain.api.service.OperationLogService;
|
||||||
import ai.chat2db.server.domain.core.converter.OperationLogConverter;
|
import ai.chat2db.server.domain.core.converter.OperationLogConverter;
|
||||||
|
@ -9,19 +9,23 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.DataSource;
|
import ai.chat2db.server.domain.api.model.DataSource;
|
||||||
import ai.chat2db.server.domain.api.model.Operation;
|
import ai.chat2db.server.domain.api.model.Operation;
|
||||||
import ai.chat2db.server.domain.api.param.OperationPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationSavedParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationUpdateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationSavedParam;
|
||||||
|
import ai.chat2db.server.domain.api.param.operation.OperationUpdateParam;
|
||||||
import ai.chat2db.server.domain.api.service.DataSourceService;
|
import ai.chat2db.server.domain.api.service.DataSourceService;
|
||||||
import ai.chat2db.server.domain.api.service.OperationService;
|
import ai.chat2db.server.domain.api.service.OperationService;
|
||||||
import ai.chat2db.server.domain.core.converter.OperationConverter;
|
import ai.chat2db.server.domain.core.converter.OperationConverter;
|
||||||
|
import ai.chat2db.server.domain.core.util.PermissionUtils;
|
||||||
import ai.chat2db.server.domain.repository.entity.OperationSavedDO;
|
import ai.chat2db.server.domain.repository.entity.OperationSavedDO;
|
||||||
import ai.chat2db.server.domain.repository.mapper.OperationSavedMapper;
|
import ai.chat2db.server.domain.repository.mapper.OperationSavedMapper;
|
||||||
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;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
import ai.chat2db.server.tools.base.wrapper.result.ListResult;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
|
||||||
|
import ai.chat2db.server.tools.common.exception.DataNotFoundException;
|
||||||
|
import ai.chat2db.server.tools.common.model.EasyLambdaQueryWrapper;
|
||||||
|
import ai.chat2db.server.tools.common.util.ContextUtils;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
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;
|
||||||
@ -50,16 +54,20 @@ public class OperationServiceImpl implements OperationService {
|
|||||||
private DataSourceService dataSourceService;
|
private DataSourceService dataSourceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataResult<Long> create(OperationSavedParam param) {
|
public DataResult<Long> createWithPermission(OperationSavedParam param) {
|
||||||
OperationSavedDO userSavedDdlDO = operationConverter.param2do(param);
|
OperationSavedDO userSavedDdlDO = operationConverter.param2do(param);
|
||||||
userSavedDdlDO.setGmtCreate(LocalDateTime.now());
|
userSavedDdlDO.setGmtCreate(LocalDateTime.now());
|
||||||
userSavedDdlDO.setGmtModified(LocalDateTime.now());
|
userSavedDdlDO.setGmtModified(LocalDateTime.now());
|
||||||
|
userSavedDdlDO.setUserId(ContextUtils.getUserId());
|
||||||
operationSavedMapper.insert(userSavedDdlDO);
|
operationSavedMapper.insert(userSavedDdlDO);
|
||||||
return DataResult.of(userSavedDdlDO.getId());
|
return DataResult.of(userSavedDdlDO.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult update(OperationUpdateParam param) {
|
public ActionResult updateWithPermission(OperationUpdateParam param) {
|
||||||
|
Operation data = queryExistent(param.getId()).getData();
|
||||||
|
PermissionUtils.checkOperationPermission(data.getUserId());
|
||||||
|
|
||||||
OperationSavedDO userSavedDdlDO = operationConverter.param2do(param);
|
OperationSavedDO userSavedDdlDO = operationConverter.param2do(param);
|
||||||
userSavedDdlDO.setGmtModified(LocalDateTime.now());
|
userSavedDdlDO.setGmtModified(LocalDateTime.now());
|
||||||
operationSavedMapper.updateById(userSavedDdlDO);
|
operationSavedMapper.updateById(userSavedDdlDO);
|
||||||
@ -78,7 +86,31 @@ public class OperationServiceImpl implements OperationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult delete(Long id) {
|
public DataResult<Operation> queryExistent(Long id) {
|
||||||
|
DataResult<Operation> dataResult = find(id);
|
||||||
|
if (dataResult.getData() == null) {
|
||||||
|
throw new DataNotFoundException();
|
||||||
|
}
|
||||||
|
return dataResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataResult<Operation> queryExistent(OperationQueryParam param) {
|
||||||
|
EasyLambdaQueryWrapper<OperationSavedDO> queryWrapper = new EasyLambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eqWhenPresent(OperationSavedDO::getId, param.getId())
|
||||||
|
.eqWhenPresent(OperationSavedDO::getUserId, param.getUserId());
|
||||||
|
IPage<OperationSavedDO> page = operationSavedMapper.selectPage(new Page<>(1, 1), queryWrapper);
|
||||||
|
if (CollectionUtils.isEmpty(page.getRecords())) {
|
||||||
|
throw new DataNotFoundException();
|
||||||
|
}
|
||||||
|
return DataResult.of(operationConverter.do2dto(page.getRecords().get(0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult deleteWithPermission(Long id) {
|
||||||
|
Operation data = queryExistent(id).getData();
|
||||||
|
PermissionUtils.checkOperationPermission(data.getUserId());
|
||||||
|
|
||||||
operationSavedMapper.deleteById(id);
|
operationSavedMapper.deleteById(id);
|
||||||
return ActionResult.isSuccess();
|
return ActionResult.isSuccess();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE `operation_saved`
|
||||||
|
modify COLUMN `user_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '用户id';
|
||||||
|
|
||||||
|
update operation_saved
|
||||||
|
set user_id= 1;
|
@ -1,12 +1,24 @@
|
|||||||
package ai.chat2db.server.tools.common.model;
|
package ai.chat2db.server.tools.common.model;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import ai.chat2db.server.tools.base.wrapper.param.OrderBy;
|
import ai.chat2db.server.tools.base.wrapper.param.OrderBy;
|
||||||
import ai.chat2db.server.tools.common.util.EasySqlUtils;
|
import ai.chat2db.server.tools.common.util.EasySqlUtils;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.SharedString;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.Query;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Assert;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
||||||
|
import static com.baomidou.mybatisplus.core.enums.SqlKeyword.EQ;
|
||||||
import static com.baomidou.mybatisplus.core.enums.SqlKeyword.ORDER_BY;
|
import static com.baomidou.mybatisplus.core.enums.SqlKeyword.ORDER_BY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +26,9 @@ import static com.baomidou.mybatisplus.core.enums.SqlKeyword.ORDER_BY;
|
|||||||
*
|
*
|
||||||
* @author Jiaju Zhuang
|
* @author Jiaju Zhuang
|
||||||
*/
|
*/
|
||||||
public class EasyLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
|
public class EasyLambdaQueryWrapper<T> extends AbstractLambdaWrapper<T, EasyLambdaQueryWrapper<T>>
|
||||||
|
implements Query<EasyLambdaQueryWrapper<T>, T, SFunction<T, ?>> {
|
||||||
|
|
||||||
public void orderBy(List<OrderBy> orderByList) {
|
public void orderBy(List<OrderBy> orderByList) {
|
||||||
if (CollectionUtils.isEmpty(orderByList)) {
|
if (CollectionUtils.isEmpty(orderByList)) {
|
||||||
return;
|
return;
|
||||||
@ -24,4 +38,110 @@ public class EasyLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
|
|||||||
EasySqlUtils.parseOrderBy(orderBy.getDirection()));
|
EasySqlUtils.parseOrderBy(orderBy.getDirection()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public EasyLambdaQueryWrapper<T> eqWhenPresent(SFunction<T, ?> column, Object val) {
|
||||||
|
if (val != null) {
|
||||||
|
addCondition(true, column, EQ, val);
|
||||||
|
}
|
||||||
|
return typedThis;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following are the methods that come with the system
|
||||||
|
/**
|
||||||
|
* 查询字段
|
||||||
|
*/
|
||||||
|
private SharedString sqlSelect = new SharedString();
|
||||||
|
|
||||||
|
public EasyLambdaQueryWrapper() {
|
||||||
|
this((T)null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EasyLambdaQueryWrapper(T entity) {
|
||||||
|
super.setEntity(entity);
|
||||||
|
super.initNeed();
|
||||||
|
}
|
||||||
|
|
||||||
|
public EasyLambdaQueryWrapper(Class<T> entityClass) {
|
||||||
|
super.setEntityClass(entityClass);
|
||||||
|
super.initNeed();
|
||||||
|
}
|
||||||
|
|
||||||
|
EasyLambdaQueryWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
|
||||||
|
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, SharedString paramAlias,
|
||||||
|
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
|
||||||
|
super.setEntity(entity);
|
||||||
|
super.setEntityClass(entityClass);
|
||||||
|
this.paramNameSeq = paramNameSeq;
|
||||||
|
this.paramNameValuePairs = paramNameValuePairs;
|
||||||
|
this.expression = mergeSegments;
|
||||||
|
this.sqlSelect = sqlSelect;
|
||||||
|
this.paramAlias = paramAlias;
|
||||||
|
this.lastSql = lastSql;
|
||||||
|
this.sqlComment = sqlComment;
|
||||||
|
this.sqlFirst = sqlFirst;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SELECT 部分 SQL 设置
|
||||||
|
*
|
||||||
|
* @param columns 查询字段
|
||||||
|
*/
|
||||||
|
@SafeVarargs
|
||||||
|
@Override
|
||||||
|
public final EasyLambdaQueryWrapper<T> select(SFunction<T, ?>... columns) {
|
||||||
|
return select(Arrays.asList(columns));
|
||||||
|
}
|
||||||
|
|
||||||
|
public EasyLambdaQueryWrapper<T> select(List<SFunction<T, ?>> columns) {
|
||||||
|
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(columns)) {
|
||||||
|
this.sqlSelect.setStringValue(columnsToString(false, columns));
|
||||||
|
}
|
||||||
|
return typedThis;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 过滤查询的字段信息(主键除外!)
|
||||||
|
* <p>例1: 只要 java 字段名以 "test" 开头的 -> select(i -> i.getProperty().startsWith("test"))</p>
|
||||||
|
* <p>例2: 只要 java 字段属性是 CharSequence 类型的 -> select(TableFieldInfo::isCharSequence)</p>
|
||||||
|
* <p>例3: 只要 java 字段没有填充策略的 -> select(i -> i.getFieldFill() == FieldFill.DEFAULT)</p>
|
||||||
|
* <p>例4: 要全部字段 -> select(i -> true)</p>
|
||||||
|
* <p>例5: 只要主键字段 -> select(i -> false)</p>
|
||||||
|
*
|
||||||
|
* @param predicate 过滤方式
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public EasyLambdaQueryWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
|
||||||
|
if (entityClass == null) {
|
||||||
|
entityClass = getEntityClass();
|
||||||
|
} else {
|
||||||
|
setEntityClass(entityClass);
|
||||||
|
}
|
||||||
|
Assert.notNull(entityClass, "entityClass can not be null");
|
||||||
|
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate));
|
||||||
|
return typedThis;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSqlSelect() {
|
||||||
|
return sqlSelect.getStringValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于生成嵌套 sql
|
||||||
|
* <p>故 sqlSelect 不向下传递</p>
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected EasyLambdaQueryWrapper<T> instance() {
|
||||||
|
return new EasyLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
|
||||||
|
new MergeSegments(), paramAlias, SharedString.emptyString(), SharedString.emptyString(),
|
||||||
|
SharedString.emptyString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
super.clear();
|
||||||
|
sqlSelect.toNull();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@ package ai.chat2db.server.web.api.controller.operation.log;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.OperationLog;
|
import ai.chat2db.server.domain.api.model.OperationLog;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogCreateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.service.OperationLogService;
|
import ai.chat2db.server.domain.api.service.OperationLogService;
|
||||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
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;
|
||||||
|
@ -3,8 +3,8 @@ package ai.chat2db.server.web.api.controller.operation.log.converter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.OperationLog;
|
import ai.chat2db.server.domain.api.model.OperationLog;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogCreateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam;
|
||||||
import ai.chat2db.server.web.api.controller.operation.log.request.OperationLogCreateRequest;
|
import ai.chat2db.server.web.api.controller.operation.log.request.OperationLogCreateRequest;
|
||||||
import ai.chat2db.server.web.api.controller.operation.log.request.OperationLogQueryRequest;
|
import ai.chat2db.server.web.api.controller.operation.log.request.OperationLogQueryRequest;
|
||||||
import ai.chat2db.server.web.api.controller.operation.log.vo.OperationLogVO;
|
import ai.chat2db.server.web.api.controller.operation.log.vo.OperationLogVO;
|
||||||
|
@ -3,9 +3,10 @@ package ai.chat2db.server.web.api.controller.operation.saved;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.Operation;
|
import ai.chat2db.server.domain.api.model.Operation;
|
||||||
import ai.chat2db.server.domain.api.param.OperationPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationSavedParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationUpdateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationSavedParam;
|
||||||
|
import ai.chat2db.server.domain.api.param.operation.OperationUpdateParam;
|
||||||
import ai.chat2db.server.domain.api.service.OperationService;
|
import ai.chat2db.server.domain.api.service.OperationService;
|
||||||
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;
|
||||||
@ -54,7 +55,7 @@ public class OperationSavedController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public WebPageResult<OperationVO> list(OperationQueryRequest request) {
|
public WebPageResult<OperationVO> list(OperationQueryRequest request) {
|
||||||
OperationPageQueryParam param = operationWebConverter.queryReq2param(request);
|
OperationPageQueryParam param = operationWebConverter.queryReq2param(request,ContextUtils.getUserId());
|
||||||
param.setUserId(ContextUtils.getUserId());
|
param.setUserId(ContextUtils.getUserId());
|
||||||
PageResult<Operation> dtoPageResult = operationService.queryPage(param);
|
PageResult<Operation> dtoPageResult = operationService.queryPage(param);
|
||||||
List<OperationVO> operationVOS = operationWebConverter.dto2vo(dtoPageResult.getData());
|
List<OperationVO> operationVOS = operationWebConverter.dto2vo(dtoPageResult.getData());
|
||||||
@ -69,8 +70,11 @@ public class OperationSavedController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public DataResult<OperationVO> get(@PathVariable("id") Long id) {
|
public DataResult<OperationVO> get(@PathVariable("id") Long id) {
|
||||||
DataResult<Operation> dtoPageResult = operationService.find(id);
|
OperationQueryParam param = new OperationQueryParam();
|
||||||
return DataResult.of(operationWebConverter.dto2vo(dtoPageResult.getData()));
|
param.setId(id);
|
||||||
|
param.setUserId(ContextUtils.getUserId());
|
||||||
|
return operationService.queryExistent(param)
|
||||||
|
.map(operationWebConverter::dto2vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,7 +87,7 @@ public class OperationSavedController {
|
|||||||
public DataResult<Long> create(@RequestBody OperationCreateRequest request) {
|
public DataResult<Long> create(@RequestBody OperationCreateRequest request) {
|
||||||
OperationSavedParam param = operationWebConverter.req2param(request);
|
OperationSavedParam param = operationWebConverter.req2param(request);
|
||||||
param.setTabOpened("y");
|
param.setTabOpened("y");
|
||||||
return operationService.create(param);
|
return operationService.createWithPermission(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,7 +99,7 @@ public class OperationSavedController {
|
|||||||
@RequestMapping(value = "/update", method = {RequestMethod.POST, RequestMethod.PUT})
|
@RequestMapping(value = "/update", method = {RequestMethod.POST, RequestMethod.PUT})
|
||||||
public ActionResult update(@RequestBody OperationUpdateRequest request) {
|
public ActionResult update(@RequestBody OperationUpdateRequest request) {
|
||||||
OperationUpdateParam param = operationWebConverter.updateReq2param(request);
|
OperationUpdateParam param = operationWebConverter.updateReq2param(request);
|
||||||
return operationService.update(param);
|
return operationService.updateWithPermission(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -113,7 +117,7 @@ public class OperationSavedController {
|
|||||||
OperationUpdateParam param = new OperationUpdateParam();
|
OperationUpdateParam param = new OperationUpdateParam();
|
||||||
param.setId(id);
|
param.setId(id);
|
||||||
param.setTabOpened("n");
|
param.setTabOpened("n");
|
||||||
operationService.update(param);
|
operationService.updateWithPermission(param);
|
||||||
});
|
});
|
||||||
return ActionResult.isSuccess();
|
return ActionResult.isSuccess();
|
||||||
}
|
}
|
||||||
@ -126,6 +130,6 @@ public class OperationSavedController {
|
|||||||
*/
|
*/
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
public ActionResult delete(@PathVariable("id") Long id) {
|
public ActionResult delete(@PathVariable("id") Long id) {
|
||||||
return operationService.delete(id);
|
return operationService.deleteWithPermission(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@ package ai.chat2db.server.web.api.controller.operation.saved.converter;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ai.chat2db.server.domain.api.model.Operation;
|
import ai.chat2db.server.domain.api.model.Operation;
|
||||||
import ai.chat2db.server.domain.api.param.OperationPageQueryParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationSavedParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationSavedParam;
|
||||||
import ai.chat2db.server.domain.api.param.OperationUpdateParam;
|
import ai.chat2db.server.domain.api.param.operation.OperationUpdateParam;
|
||||||
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationCreateRequest;
|
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationCreateRequest;
|
||||||
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationQueryRequest;
|
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationQueryRequest;
|
||||||
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationUpdateRequest;
|
import ai.chat2db.server.web.api.controller.operation.saved.request.OperationUpdateRequest;
|
||||||
@ -45,7 +45,7 @@ public abstract class OperationWebConverter {
|
|||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public abstract OperationPageQueryParam queryReq2param(OperationQueryRequest request);
|
public abstract OperationPageQueryParam queryReq2param(OperationQueryRequest request, Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模型转换
|
* 模型转换
|
||||||
|
@ -43,4 +43,9 @@ public class OperationUpdateRequest {
|
|||||||
* operation type
|
* operation type
|
||||||
*/
|
*/
|
||||||
private String operationType;
|
private String operationType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user