diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Operation.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Operation.java index c141932b..9ce73efd 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Operation.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/model/Operation.java @@ -79,4 +79,9 @@ public class Operation { * operation type */ private String operationType; + + /** + * 用户id + */ + private Long userId; } diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogCreateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogCreateParam.java similarity index 90% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogCreateParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogCreateParam.java index d7c11371..ed80c6ec 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogCreateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogCreateParam.java @@ -1,4 +1,4 @@ -package ai.chat2db.server.domain.api.param; +package ai.chat2db.server.domain.api.param.operation; import lombok.Data; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogPageQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogPageQueryParam.java similarity index 87% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogPageQueryParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogPageQueryParam.java index 2b1d45e7..f5092bae 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationLogPageQueryParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationLogPageQueryParam.java @@ -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; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationPageQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationPageQueryParam.java similarity index 94% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationPageQueryParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationPageQueryParam.java index a48d9816..4de4d19a 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationPageQueryParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationPageQueryParam.java @@ -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; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationQueryParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationQueryParam.java new file mode 100644 index 00000000..fbcee350 --- /dev/null +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationQueryParam.java @@ -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; +} diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationSavedParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationSavedParam.java similarity index 94% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationSavedParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationSavedParam.java index 91004870..907c9ceb 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationSavedParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationSavedParam.java @@ -1,4 +1,4 @@ -package ai.chat2db.server.domain.api.param; +package ai.chat2db.server.domain.api.param.operation; import lombok.Data; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationUpdateParam.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationUpdateParam.java similarity index 94% rename from chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationUpdateParam.java rename to chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationUpdateParam.java index 01b4cf2e..6f06cc5d 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/OperationUpdateParam.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/param/operation/OperationUpdateParam.java @@ -1,4 +1,4 @@ -package ai.chat2db.server.domain.api.param; +package ai.chat2db.server.domain.api.param.operation; import jakarta.validation.constraints.NotNull; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationLogService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationLogService.java index 16e0ce91..4872413b 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationLogService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationLogService.java @@ -1,8 +1,8 @@ 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.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.PageResult; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationService.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationService.java index 262f6839..4715ec3f 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationService.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/service/OperationService.java @@ -1,14 +1,14 @@ 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.param.OperationPageQueryParam; -import ai.chat2db.server.domain.api.param.OperationSavedParam; -import ai.chat2db.server.domain.api.param.OperationUpdateParam; +import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationQueryParam; +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.DataResult; import ai.chat2db.server.tools.base.wrapper.result.PageResult; +import jakarta.validation.constraints.NotNull; /** * 用户保存ddl @@ -25,7 +25,7 @@ public interface OperationService { * @param param * @return */ - DataResult create(OperationSavedParam param); + DataResult createWithPermission(OperationSavedParam param); /** * 更新用户的ddl @@ -33,7 +33,7 @@ public interface OperationService { * @param param * @return */ - ActionResult update(OperationUpdateParam param); + ActionResult updateWithPermission(OperationUpdateParam param); /** * 根据id查询 @@ -43,13 +43,27 @@ public interface OperationService { */ DataResult find(@NotNull Long id); + /** + * 根据id查询 + * + * @param id + * @return + */ + DataResult queryExistent(@NotNull Long id); + /** + * 查询一条数据 + * + * @param param + * @return + */ + DataResult queryExistent(@NotNull OperationQueryParam param); /** * 删除 * * @param id * @return */ - ActionResult delete(@NotNull Long id); + ActionResult deleteWithPermission(@NotNull Long id); /** * 查询用户执行的ddl记录 diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationConverter.java index b0ac2520..c439b707 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationConverter.java @@ -3,8 +3,8 @@ package ai.chat2db.server.domain.core.converter; import java.util.List; import ai.chat2db.server.domain.api.model.Operation; -import ai.chat2db.server.domain.api.param.OperationSavedParam; -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.repository.entity.OperationSavedDO; import org.mapstruct.Mapper; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationLogConverter.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationLogConverter.java index e0da6875..9a0de55b 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationLogConverter.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/converter/OperationLogConverter.java @@ -3,7 +3,7 @@ package ai.chat2db.server.domain.core.converter; import java.util.List; 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 org.mapstruct.Mapper; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationLogServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationLogServiceImpl.java index 1aeba446..c3cbc1ed 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationLogServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationLogServiceImpl.java @@ -8,8 +8,8 @@ import java.util.stream.Collectors; import ai.chat2db.server.domain.api.model.DataSource; import ai.chat2db.server.domain.api.model.OperationLog; -import ai.chat2db.server.domain.api.param.OperationLogCreateParam; -import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam; +import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam; import ai.chat2db.server.domain.api.service.DataSourceService; import ai.chat2db.server.domain.api.service.OperationLogService; import ai.chat2db.server.domain.core.converter.OperationLogConverter; diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationServiceImpl.java index 7c32b8e0..135508df 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/OperationServiceImpl.java @@ -9,19 +9,23 @@ import java.util.stream.Collectors; import ai.chat2db.server.domain.api.model.DataSource; import ai.chat2db.server.domain.api.model.Operation; -import ai.chat2db.server.domain.api.param.OperationPageQueryParam; -import ai.chat2db.server.domain.api.param.OperationSavedParam; -import ai.chat2db.server.domain.api.param.OperationUpdateParam; +import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationQueryParam; +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.OperationService; 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.mapper.OperationSavedMapper; 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.ListResult; 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.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -50,16 +54,20 @@ public class OperationServiceImpl implements OperationService { private DataSourceService dataSourceService; @Override - public DataResult create(OperationSavedParam param) { + public DataResult createWithPermission(OperationSavedParam param) { OperationSavedDO userSavedDdlDO = operationConverter.param2do(param); userSavedDdlDO.setGmtCreate(LocalDateTime.now()); userSavedDdlDO.setGmtModified(LocalDateTime.now()); + userSavedDdlDO.setUserId(ContextUtils.getUserId()); operationSavedMapper.insert(userSavedDdlDO); return DataResult.of(userSavedDdlDO.getId()); } @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); userSavedDdlDO.setGmtModified(LocalDateTime.now()); operationSavedMapper.updateById(userSavedDdlDO); @@ -78,7 +86,31 @@ public class OperationServiceImpl implements OperationService { } @Override - public ActionResult delete(Long id) { + public DataResult queryExistent(Long id) { + DataResult dataResult = find(id); + if (dataResult.getData() == null) { + throw new DataNotFoundException(); + } + return dataResult; + } + + @Override + public DataResult queryExistent(OperationQueryParam param) { + EasyLambdaQueryWrapper queryWrapper = new EasyLambdaQueryWrapper<>(); + queryWrapper.eqWhenPresent(OperationSavedDO::getId, param.getId()) + .eqWhenPresent(OperationSavedDO::getUserId, param.getUserId()); + IPage 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); return ActionResult.isSuccess(); } diff --git a/chat2db-server/chat2db-server-start/src/main/resources/db/temp/V2_1_0__补充.sql b/chat2db-server/chat2db-server-start/src/main/resources/db/temp/V2_1_0__补充.sql new file mode 100644 index 00000000..a31ddc23 --- /dev/null +++ b/chat2db-server/chat2db-server-start/src/main/resources/db/temp/V2_1_0__补充.sql @@ -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; \ No newline at end of file diff --git a/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/model/EasyLambdaQueryWrapper.java b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/model/EasyLambdaQueryWrapper.java index c7618ead..b780fc6b 100644 --- a/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/model/EasyLambdaQueryWrapper.java +++ b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/model/EasyLambdaQueryWrapper.java @@ -1,12 +1,24 @@ package ai.chat2db.server.tools.common.model; +import java.util.Arrays; 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.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 static com.baomidou.mybatisplus.core.enums.SqlKeyword.EQ; 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 */ -public class EasyLambdaQueryWrapper extends LambdaQueryWrapper { +public class EasyLambdaQueryWrapper extends AbstractLambdaWrapper> + implements Query, T, SFunction> { + public void orderBy(List orderByList) { if (CollectionUtils.isEmpty(orderByList)) { return; @@ -24,4 +38,110 @@ public class EasyLambdaQueryWrapper extends LambdaQueryWrapper { EasySqlUtils.parseOrderBy(orderBy.getDirection())); } } + + public EasyLambdaQueryWrapper eqWhenPresent(SFunction 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 entityClass) { + super.setEntityClass(entityClass); + super.initNeed(); + } + + EasyLambdaQueryWrapper(T entity, Class entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq, + Map 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 select(SFunction... columns) { + return select(Arrays.asList(columns)); + } + + public EasyLambdaQueryWrapper select(List> columns) { + if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(columns)) { + this.sqlSelect.setStringValue(columnsToString(false, columns)); + } + return typedThis; + } + + /** + * 过滤查询的字段信息(主键除外!) + *

例1: 只要 java 字段名以 "test" 开头的 -> select(i -> i.getProperty().startsWith("test"))

+ *

例2: 只要 java 字段属性是 CharSequence 类型的 -> select(TableFieldInfo::isCharSequence)

+ *

例3: 只要 java 字段没有填充策略的 -> select(i -> i.getFieldFill() == FieldFill.DEFAULT)

+ *

例4: 要全部字段 -> select(i -> true)

+ *

例5: 只要主键字段 -> select(i -> false)

+ * + * @param predicate 过滤方式 + * @return this + */ + @Override + public EasyLambdaQueryWrapper select(Class entityClass, Predicate 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 + *

故 sqlSelect 不向下传递

+ */ + @Override + protected EasyLambdaQueryWrapper 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(); + } + } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/OperationLogController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/OperationLogController.java index 78687d46..ce0edefe 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/OperationLogController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/OperationLogController.java @@ -3,8 +3,8 @@ package ai.chat2db.server.web.api.controller.operation.log; import java.util.List; import ai.chat2db.server.domain.api.model.OperationLog; -import ai.chat2db.server.domain.api.param.OperationLogCreateParam; -import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam; +import ai.chat2db.server.domain.api.param.operation.OperationLogPageQueryParam; 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.PageResult; diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/converter/OperationLogWebConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/converter/OperationLogWebConverter.java index c3167ba3..c8ebcda9 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/converter/OperationLogWebConverter.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/log/converter/OperationLogWebConverter.java @@ -3,8 +3,8 @@ package ai.chat2db.server.web.api.controller.operation.log.converter; import java.util.List; import ai.chat2db.server.domain.api.model.OperationLog; -import ai.chat2db.server.domain.api.param.OperationLogCreateParam; -import ai.chat2db.server.domain.api.param.OperationLogPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationLogCreateParam; +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.OperationLogQueryRequest; import ai.chat2db.server.web.api.controller.operation.log.vo.OperationLogVO; diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/OperationSavedController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/OperationSavedController.java index 1e061ddc..c63d41a9 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/OperationSavedController.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/OperationSavedController.java @@ -3,9 +3,10 @@ package ai.chat2db.server.web.api.controller.operation.saved; import java.util.List; import ai.chat2db.server.domain.api.model.Operation; -import ai.chat2db.server.domain.api.param.OperationPageQueryParam; -import ai.chat2db.server.domain.api.param.OperationSavedParam; -import ai.chat2db.server.domain.api.param.OperationUpdateParam; +import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationQueryParam; +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.tools.base.wrapper.result.ActionResult; import ai.chat2db.server.tools.base.wrapper.result.DataResult; @@ -54,7 +55,7 @@ public class OperationSavedController { */ @GetMapping("/list") public WebPageResult list(OperationQueryRequest request) { - OperationPageQueryParam param = operationWebConverter.queryReq2param(request); + OperationPageQueryParam param = operationWebConverter.queryReq2param(request,ContextUtils.getUserId()); param.setUserId(ContextUtils.getUserId()); PageResult dtoPageResult = operationService.queryPage(param); List operationVOS = operationWebConverter.dto2vo(dtoPageResult.getData()); @@ -69,8 +70,11 @@ public class OperationSavedController { */ @GetMapping("/{id}") public DataResult get(@PathVariable("id") Long id) { - DataResult dtoPageResult = operationService.find(id); - return DataResult.of(operationWebConverter.dto2vo(dtoPageResult.getData())); + OperationQueryParam param = new OperationQueryParam(); + param.setId(id); + param.setUserId(ContextUtils.getUserId()); + return operationService.queryExistent(param) + .map(operationWebConverter::dto2vo); } /** @@ -83,7 +87,7 @@ public class OperationSavedController { public DataResult create(@RequestBody OperationCreateRequest request) { OperationSavedParam param = operationWebConverter.req2param(request); 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}) public ActionResult update(@RequestBody OperationUpdateRequest 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(); param.setId(id); param.setTabOpened("n"); - operationService.update(param); + operationService.updateWithPermission(param); }); return ActionResult.isSuccess(); } @@ -126,6 +130,6 @@ public class OperationSavedController { */ @DeleteMapping("/{id}") public ActionResult delete(@PathVariable("id") Long id) { - return operationService.delete(id); + return operationService.deleteWithPermission(id); } } diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/converter/OperationWebConverter.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/converter/OperationWebConverter.java index 9bcea66d..a3e1f03c 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/converter/OperationWebConverter.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/converter/OperationWebConverter.java @@ -3,9 +3,9 @@ package ai.chat2db.server.web.api.controller.operation.saved.converter; import java.util.List; import ai.chat2db.server.domain.api.model.Operation; -import ai.chat2db.server.domain.api.param.OperationPageQueryParam; -import ai.chat2db.server.domain.api.param.OperationSavedParam; -import ai.chat2db.server.domain.api.param.OperationUpdateParam; +import ai.chat2db.server.domain.api.param.operation.OperationPageQueryParam; +import ai.chat2db.server.domain.api.param.operation.OperationSavedParam; +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.OperationQueryRequest; import ai.chat2db.server.web.api.controller.operation.saved.request.OperationUpdateRequest; @@ -45,7 +45,7 @@ public abstract class OperationWebConverter { * @param request * @return */ - public abstract OperationPageQueryParam queryReq2param(OperationQueryRequest request); + public abstract OperationPageQueryParam queryReq2param(OperationQueryRequest request, Long userId); /** * 模型转换 diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/request/OperationUpdateRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/request/OperationUpdateRequest.java index c53a61d5..67a681e6 100644 --- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/request/OperationUpdateRequest.java +++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/operation/saved/request/OperationUpdateRequest.java @@ -43,4 +43,9 @@ public class OperationUpdateRequest { * operation type */ private String operationType; + + /** + * 用户id + */ + private Long userId; }