BUGFIX: sketchBoard upload checkMd5校验;
TASK: 分类;
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package com.ai.da.controller;
|
||||
|
||||
import com.ai.da.common.response.Response;
|
||||
import com.ai.da.mapper.entity.Workspace;
|
||||
import com.ai.da.model.dto.ClassificationDTO;
|
||||
import com.ai.da.model.dto.WorkspaceDTO;
|
||||
import com.ai.da.model.enums.BizJson;
|
||||
import com.ai.da.model.vo.ClassificationVO;
|
||||
import com.ai.da.model.vo.ModelsVO;
|
||||
import com.ai.da.model.vo.WorkspaceVO;
|
||||
import com.ai.da.service.ClassificationService;
|
||||
import com.ai.da.service.WorkspaceService;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 控制器
|
||||
*
|
||||
* @author SHAHAIBO
|
||||
* @since 2023-11-03
|
||||
*/
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@RequestMapping("/api/classification")
|
||||
@Api(value = "", tags = "接口")
|
||||
public class ClassificationController {
|
||||
|
||||
@Resource
|
||||
private ClassificationService classificationService;
|
||||
|
||||
/**
|
||||
* 新增修改
|
||||
*/
|
||||
@PostMapping("/saveOrUpdate")
|
||||
@ApiOperationSupport(order = 1)
|
||||
@ApiOperation(value = "新增修改", notes = "传入ClassificationDTO")
|
||||
public Response<Boolean> saveOrUpdate(@Valid @RequestBody ClassificationDTO classificationDTO) {
|
||||
return Response.success(classificationService.saveOrUpdate(classificationDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@PostMapping("/delete")
|
||||
@ApiOperationSupport(order = 2)
|
||||
@ApiOperation(value = "删除", notes = "传入ClassificationDTO")
|
||||
public Response<Boolean> delete(@Valid @RequestBody ClassificationDTO classificationDTO) {
|
||||
return Response.success(classificationService.delete(classificationDTO));
|
||||
}
|
||||
|
||||
@PostMapping("/queryClassification")
|
||||
@ApiOperationSupport(order = 3)
|
||||
@ApiModelProperty(value = "查询", notes = "传入ClassificationDTO")
|
||||
public Response<List<ClassificationVO>> queryClassification(@Valid @RequestBody ClassificationDTO classificationDTO) {
|
||||
return Response.success(classificationService.queryClassification(classificationDTO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public class LibraryController {
|
||||
if (StringUtils.isEmpty(modelType)) {
|
||||
throw new BusinessException("modelType.cannot.be.empty");
|
||||
}
|
||||
if (modelType.equals(ModelType.SYSTEM.getValue()) && StringUtils.isEmpty(sex)) {
|
||||
if (StringUtils.isEmpty(sex)) {
|
||||
throw new BusinessException("modelSex.cannot.be.empty");
|
||||
}
|
||||
FileVO fileVO = FileUtil.getFileSize(file);
|
||||
|
||||
15
src/main/java/com/ai/da/mapper/ClassificationMapper.java
Normal file
15
src/main/java/com/ai/da/mapper/ClassificationMapper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.ai.da.mapper;
|
||||
|
||||
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||
import com.ai.da.mapper.entity.ChatRobot;
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
|
||||
/**
|
||||
* Mapper 接口
|
||||
*
|
||||
* @author SHAHAIBO
|
||||
* @since 2023-09-25
|
||||
*/
|
||||
public interface ClassificationMapper extends CommonMapper<Classification> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.ai.da.mapper;
|
||||
|
||||
import com.ai.da.common.config.mybatis.plus.CommonMapper;
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
import com.ai.da.mapper.entity.ClassificationRelLibrary;
|
||||
|
||||
/**
|
||||
* Mapper 接口
|
||||
*
|
||||
* @author SHAHAIBO
|
||||
* @since 2023-09-25
|
||||
*/
|
||||
public interface ClassificationRelLibraryMapper extends CommonMapper<ClassificationRelLibrary> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.ai.da.mapper.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("classification_rel_library")
|
||||
public class ClassificationRelLibrary implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "ID")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "分类名称")
|
||||
private Long classificationId;
|
||||
@ApiModelProperty(value = "分类名称")
|
||||
private Long libraryId;
|
||||
@ApiModelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
@ApiModelProperty(value = "是否删除1:是0:否")
|
||||
private Integer isDeleted;
|
||||
|
||||
}
|
||||
21
src/main/java/com/ai/da/model/dto/ClassificationDTO.java
Normal file
21
src/main/java/com/ai/da/model/dto/ClassificationDTO.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package com.ai.da.model.dto;
|
||||
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ClassificationDTO extends Classification {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("分类ID列表")
|
||||
private List<Long> classificationIdList;
|
||||
@ApiModelProperty("LibraryID")
|
||||
private Long libraryId;
|
||||
@ApiModelProperty("分类删除校验1:校验0:不校验")
|
||||
private Integer deleteConfirm;
|
||||
}
|
||||
16
src/main/java/com/ai/da/model/vo/ClassificationVO.java
Normal file
16
src/main/java/com/ai/da/model/vo/ClassificationVO.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.ai.da.model.vo;
|
||||
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ClassificationVO extends Classification {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private List<ClassificationVO> childList;
|
||||
|
||||
}
|
||||
30
src/main/java/com/ai/da/service/ClassificationService.java
Normal file
30
src/main/java/com/ai/da/service/ClassificationService.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.ai.da.service;
|
||||
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
import com.ai.da.mapper.entity.Library;
|
||||
import com.ai.da.model.dto.ChatFlushDTO;
|
||||
import com.ai.da.model.dto.ChatRobotLibraryDTO;
|
||||
import com.ai.da.model.dto.ChatSendDTO;
|
||||
import com.ai.da.model.dto.ClassificationDTO;
|
||||
import com.ai.da.model.vo.ChatRobotVO;
|
||||
import com.ai.da.model.vo.ClassificationVO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author SHAHAIBO
|
||||
* @version 1.0
|
||||
* @project aida_back
|
||||
* @description 分类服务接口
|
||||
* @date 2023/11/3 10:00:00
|
||||
*/
|
||||
public interface ClassificationService {
|
||||
Boolean saveOrUpdate(ClassificationDTO classificationDTO);
|
||||
|
||||
Boolean delete(ClassificationDTO classificationDTO);
|
||||
|
||||
List<ClassificationVO> queryClassification(ClassificationDTO classificationDTO);
|
||||
|
||||
List<ClassificationVO> getClassificationVOList(List<Classification> classificationList);
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
|
||||
|
||||
|
||||
package com.ai.da.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ai.da.common.config.exception.BusinessException;
|
||||
import com.ai.da.common.context.UserContext;
|
||||
import com.ai.da.common.utils.CopyUtil;
|
||||
import com.ai.da.mapper.ClassificationMapper;
|
||||
import com.ai.da.mapper.ClassificationRelLibraryMapper;
|
||||
import com.ai.da.mapper.entity.Classification;
|
||||
import com.ai.da.mapper.entity.ClassificationRelLibrary;
|
||||
import com.ai.da.model.dto.ClassificationDTO;
|
||||
import com.ai.da.model.vo.AuthPrincipalVo;
|
||||
import com.ai.da.model.vo.ClassificationVO;
|
||||
import com.ai.da.service.ClassificationService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author SHAHAIBO
|
||||
* @version 1.0
|
||||
* @project aida_back
|
||||
* @description 分类 接口服务实现类
|
||||
* @date 2023/11/3 10:00:00
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ClassificationServiceImpl implements ClassificationService {
|
||||
|
||||
@Resource
|
||||
private ClassificationMapper classificationMapper;
|
||||
|
||||
@Resource
|
||||
private ClassificationRelLibraryMapper classificationRelLibraryMapper;
|
||||
|
||||
@Override
|
||||
public Boolean saveOrUpdate(ClassificationDTO classificationDTO) {
|
||||
//校验
|
||||
classificationDTOCheck(classificationDTO);
|
||||
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||
Classification classification = CopyUtil.copyObject(classificationDTO, Classification.class);
|
||||
if (null == classificationDTO.getId()) {
|
||||
// 新增
|
||||
if (null == classification.getParentId()) {
|
||||
// 一级分类parentId
|
||||
classification.setParentId(0L);
|
||||
}
|
||||
classification.setCreateTime(LocalDateTime.now());
|
||||
classification.setUserId(userHolder.getId());
|
||||
int insert = classificationMapper.insert(classification);
|
||||
if (insert == 1) {
|
||||
return Boolean.TRUE;
|
||||
}else {
|
||||
throw new BusinessException("save.classification.failed");
|
||||
}
|
||||
}else {
|
||||
// 修改
|
||||
classification.setUpdateTime(LocalDateTime.now());
|
||||
int update = classificationMapper.updateById(classification);
|
||||
if (update == 1) {
|
||||
return Boolean.TRUE;
|
||||
}else {
|
||||
throw new BusinessException("update.classification.failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delete(ClassificationDTO classificationDTO) {
|
||||
QueryWrapper<ClassificationRelLibrary> qw = new QueryWrapper<>();
|
||||
qw.lambda().in(ClassificationRelLibrary::getClassificationId, classificationDTO.getClassificationIdList());
|
||||
List<ClassificationRelLibrary> classificationRelLibraryList = classificationRelLibraryMapper.selectList(qw);
|
||||
if (0 == classificationDTO.getDeleteConfirm()) {
|
||||
// 校验删除的分类是否有关联的library数据
|
||||
if (CollectionUtil.isNotEmpty(classificationRelLibraryList)) {
|
||||
throw new BusinessException("the.classification.you.deleted.has.associated.library");
|
||||
}
|
||||
}else {
|
||||
if (CollectionUtil.isNotEmpty(classificationRelLibraryList)) {
|
||||
classificationRelLibraryMapper.delete(qw);
|
||||
}
|
||||
}
|
||||
classificationMapper.deleteBatchIds(classificationDTO.getClassificationIdList());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassificationVO> queryClassification(ClassificationDTO classificationDTO) {
|
||||
AuthPrincipalVo userHolder = UserContext.getUserHolder();
|
||||
QueryWrapper<Classification> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(Classification::getUserId, userHolder.getId());
|
||||
qw.lambda().eq(Classification::getType, classificationDTO.getType());
|
||||
qw.lambda().eq(Classification::getParentId, 0L);
|
||||
List<Classification> classificationList = classificationMapper.selectList(qw);
|
||||
if (CollectionUtil.isNotEmpty(classificationList)) {
|
||||
// 获取结果集
|
||||
return getClassificationVOList(classificationList);
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassificationVO> getClassificationVOList(List<Classification> classificationList) {
|
||||
List<ClassificationVO> classificationVOS = CopyUtil.copyList(classificationList, ClassificationVO.class);
|
||||
for (ClassificationVO classificationVO : classificationVOS) {
|
||||
// 递归
|
||||
List<ClassificationVO> childList = recursionClassificationVO(classificationVO);
|
||||
if (CollectionUtil.isNotEmpty(childList)) {
|
||||
classificationVO.setChildList(childList);
|
||||
}
|
||||
}
|
||||
return classificationVOS;
|
||||
}
|
||||
|
||||
private List<ClassificationVO> recursionClassificationVO(ClassificationVO classificationVO) {
|
||||
QueryWrapper<Classification> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(Classification::getParentId, classificationVO.getId());
|
||||
List<Classification> classificationChildList = classificationMapper.selectList(qw);
|
||||
if (CollectionUtil.isEmpty(classificationChildList)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<ClassificationVO> classificationChildVOList = CopyUtil.copyList(classificationChildList, ClassificationVO.class);
|
||||
for (ClassificationVO classificationChildVO : classificationChildVOList) {
|
||||
// 递归
|
||||
List<ClassificationVO> childList = recursionClassificationVO(classificationChildVO);
|
||||
if (CollectionUtil.isNotEmpty(childList)) {
|
||||
classificationChildVO.setChildList(childList);
|
||||
}
|
||||
}
|
||||
return classificationChildVOList;
|
||||
}
|
||||
|
||||
private void classificationDTOCheck(ClassificationDTO classificationDTO) {
|
||||
if (StringUtils.isEmpty(classificationDTO.getType())) {
|
||||
throw new BusinessException("type.cannot.be.empty");
|
||||
}
|
||||
if (StringUtils.isEmpty(classificationDTO.getClassificationName())) {
|
||||
throw new BusinessException("classificationName.cannot.be.empty");
|
||||
}
|
||||
QueryWrapper<Classification> qw = new QueryWrapper<>();
|
||||
qw.lambda().ne(null != classificationDTO.getId(), Classification::getId, classificationDTO.getId());
|
||||
qw.lambda().eq(Classification::getType, classificationDTO.getType());
|
||||
if (null == classificationDTO.getParentId()) {
|
||||
qw.lambda().eq(Classification::getParentId, 0L);
|
||||
}else {
|
||||
qw.lambda().eq(Classification::getParentId, classificationDTO.getParentId());
|
||||
}
|
||||
qw.lambda().eq(Classification::getClassificationName, classificationDTO.getClassificationName());
|
||||
List<Classification> classificationList = classificationMapper.selectList(qw);
|
||||
if (CollectionUtil.isNotEmpty(classificationList)) {
|
||||
throw new BusinessException("classificationName.already.exists");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -281,7 +281,7 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
|
||||
qw.lambda().eq(Library::getAccountId, userInfo.getId());
|
||||
qw.lambda().eq(Library::getLevel1Type, level1Type);
|
||||
if (!StringUtils.isEmpty(sex)) {
|
||||
if (level1Type.equals(LibraryLevel1TypeEnum.SKETCH_BOARD)) {
|
||||
if (level1Type.equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) {
|
||||
qw.lambda().eq(Library::getLevel2Type, level2Type);
|
||||
qw.lambda().eq(Library::getLevel3Type, sex);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user