Complete operation addition, deletion, modification, and check

This commit is contained in:
JiaJu Zhuang
2023-09-02 14:51:48 +08:00
parent 26644b0e36
commit dcffa3d971
20 changed files with 259 additions and 47 deletions

View File

@ -79,4 +79,9 @@ public class Operation {
* operation type
*/
private String operationType;
/**
* 用户id
*/
private Long userId;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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<Long> create(OperationSavedParam param);
DataResult<Long> 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<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
* @return
*/
ActionResult delete(@NotNull Long id);
ActionResult deleteWithPermission(@NotNull Long id);
/**
* 查询用户执行的ddl记录

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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<Long> create(OperationSavedParam param) {
public DataResult<Long> 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<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);
return ActionResult.isSuccess();
}