This commit is contained in:
chenxudong 2025-03-04 17:23:11 +08:00
commit dc7d061be2
5 changed files with 106 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.service.EdTagLibraryService;
import com.electromagnetic.industry.software.manage.service.FileTagRelationService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@ -17,6 +18,9 @@ public class EdTagLibraryController {
@Resource
private EdTagLibraryService edTagLibraryService;
@Resource
private FileTagRelationService fileTagRelationService;
// 新建标签组
@PostMapping("/createGroup")
@UserOperation(value="创建了标签组", modelName = UserOperationModuleEnum.TAG)
@ -83,5 +87,12 @@ public class EdTagLibraryController {
public ElectromagneticResult<?> listAllTags() {
return ElectromagneticResultUtil.success(edTagLibraryService.listAllTags());
}
}
// 批量添加标签到文件
@PostMapping("/addTagsToFile")
@UserOperation(value="批量添加了标签到文件", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> addTagsToFile(@RequestParam String fileId, @RequestParam List<String> tagIds) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(fileTagRelationService.addTagsToFile(fileId, tagIds, createdBy));
}
}

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.FileTagRelation;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FileTagRelationMapper extends BaseMapper<FileTagRelation> {
}

View File

@ -0,0 +1,18 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
@Data
@TableName("file_tag_relations")
public class FileTagRelation {
@TableId(type = IdType.ASSIGN_UUID)
private String id;
private String fileId;
private String tagId;
@TableField(fill = FieldFill.INSERT)
private Date createdTime;
private String createdBy;
}

View File

@ -0,0 +1,12 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.FileTagRelation;
import java.util.List;
public interface FileTagRelationService extends IService<FileTagRelation> {
boolean addTagToFile(String fileId, String tagId, String createdBy);
boolean addTagsToFile(String fileId, List<String> tagIds, String createdBy);
}

View File

@ -0,0 +1,55 @@
package com.electromagnetic.industry.software.manage.service.serviceimpl;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.EdTagLibraryMapper;
import com.electromagnetic.industry.software.manage.mapper.FileTagRelationMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import com.electromagnetic.industry.software.manage.pojo.models.FileTagRelation;
import com.electromagnetic.industry.software.manage.service.FileTagRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class FileTagRelationServiceImpl extends ServiceImpl<FileTagRelationMapper, FileTagRelation> implements FileTagRelationService {
@Autowired
private EdTagLibraryMapper edTagLibraryMapper;
@Override
@Transactional
public boolean addTagToFile(String fileId, String tagId, String createdBy) {
// 检查标签是否存在并且已发布
EdTagLibrary tag = edTagLibraryMapper.selectOne(new LambdaQueryWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getTagId, tagId)
.eq(EdTagLibrary::getIsPublished, PublishEnum.PUBLISHED.getCode()));
Assert.notNull(tag, "标签不存在或未发布");
// 创建文件与标签关系
FileTagRelation relation = new FileTagRelation();
relation.setId(IdWorker.getSnowFlakeIdString());
relation.setFileId(fileId);
relation.setTagId(tagId);
relation.setCreatedBy(createdBy);
boolean isSuccess = this.save(relation);
if (isSuccess) {
UserThreadLocal.setSuccessInfo("", relation.getId(), "添加了标签到文件");
}
return isSuccess;
}
@Override
@Transactional
public boolean addTagsToFile(String fileId, List<String> tagIds, String createdBy) {
boolean isSuccess = true;
for (String tagId : tagIds) {
isSuccess &= addTagToFile(fileId, tagId, createdBy);
}
return isSuccess;
}
}