Compare commits

..

No commits in common. "ff9b219ef32c4ce7934d1d2bdc2b9f81c78fda37" and "961bfb2baa10334f2f178629db42a99e977e2975" have entirely different histories.

9 changed files with 5 additions and 379 deletions

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.controller; package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
@ -21,7 +22,7 @@ public class EdFileFavoriteController {
* @param id 文件id * @param id 文件id
* @return * @return
*/ */
@GetMapping("/add") @PostMapping("/add")
public ElectromagneticResult<?> addFavorite(@RequestParam String id) { public ElectromagneticResult<?> addFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId(); String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileFavoriteService.addFavorite(userId, id)); return ElectromagneticResultUtil.success(edFileFavoriteService.addFavorite(userId, id));
@ -32,7 +33,7 @@ public class EdFileFavoriteController {
* @param id 文件id * @param id 文件id
* @return * @return
*/ */
@GetMapping("/remove") @PostMapping("/remove")
public ElectromagneticResult<?> removeFavorite(@RequestParam String id) { public ElectromagneticResult<?> removeFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId(); String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileFavoriteService.removeFavorite(userId, id)); return ElectromagneticResultUtil.success(edFileFavoriteService.removeFavorite(userId, id));

View File

@ -1,56 +0,0 @@
package com.electromagnetic.industry.software.manage.controller;
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 org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/data/ed/tag")
public class EdTagLibraryController {
@Resource
private EdTagLibraryService edTagLibraryService;
// 新建标签组
@PostMapping("/createGroup")
public ElectromagneticResult<?> createTagGroup(@RequestParam String tagName) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.createTagGroup(tagName, createdBy));
}
// 在标签组下新建标签
@PostMapping("/createTag")
public ElectromagneticResult<?> createTag(@RequestParam String parentId, @RequestParam String tagName) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.createTag(parentId, tagName, createdBy));
}
// 拖拽修改排序
@PostMapping("/updateOrder")
public ElectromagneticResult<?> updateTagOrder(@RequestParam String tagId, @RequestParam Integer orderBy) {
return ElectromagneticResultUtil.success(edTagLibraryService.updateTagOrder(tagId, orderBy));
}
// 发布标签
@PostMapping("/batchPublish")
public ElectromagneticResult<?> publishTag(@RequestParam List<String> tagIds) {
return ElectromagneticResultUtil.success(edTagLibraryService.batchPublishTagGroups(tagIds));
}
// 废除标签
@GetMapping("/delete")
public ElectromagneticResult<?> deleteTag(@RequestParam String tagId) {
return ElectromagneticResultUtil.success(edTagLibraryService.deleteTagOrGroup(tagId));
}
//获取标签数据
@GetMapping("/list")
public ElectromagneticResult<?> listTags() {
return ElectromagneticResultUtil.success(edTagLibraryService.listTagsWithGroups());
}
}

View File

@ -1,15 +0,0 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.common.enums.TagTypeEnum;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface EdTagLibraryMapper extends BaseMapper<EdTagLibrary> {
@Select("SELECT MAX(order_by) FROM ed_tag_library WHERE type = #{type} and parent_id = #{parentId}")
Integer selectMaxOrder(@Param("type") int type, @Param("parentId") String parentId);
}

View File

@ -1,23 +0,0 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("ed_tag_library")
public class EdTagLibrary {
@TableId
private String tagId; // 主键 ID
private String parentId; // ID"" 代表是标签组
private Integer type; // 0: 标签组, 1: 标签
private String tagName; // 标签库或标签名称
private Integer orderBy; // 排序字段
private Integer isPublished; // 是否已发布0: 未发布, 1: 已发布
private String createdBy; // 创建人
private Date createdTime; // 创建时间
private String updatedBy; // 更新人
private Date updatedTime; // 更新时间
}

View File

@ -1,21 +0,0 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.baomidou.mybatisplus.annotation.TableId;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class TagListVO {
private String tagId; // 主键 ID
private String parentId; // ID"" 代表是标签组
private Integer type; // 0: 标签组, 1: 标签
private String tagName; // 标签库或标签名称
private Integer orderBy; // 排序字段
private Integer isPublished; // 是否已发布0: 未发布, 1: 已发布
private List<EdTagLibrary> childList;
}

View File

@ -1,51 +0,0 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import com.electromagnetic.industry.software.manage.pojo.resp.TagListVO;
import java.util.List;
import java.util.Map;
public interface EdTagLibraryService extends IService<EdTagLibrary> {
/**
* 新建分组
* @param tagName
* @param createdBy
*/
Boolean createTagGroup(String tagName, String createdBy);
/**
* 新建标签
* @param parentId
* @param tagName
* @param createdBy
*/
Boolean createTag(String parentId, String tagName, String createdBy);
/**
* 拖拽标签顺序
* @param tagId
* @param orderBy
*/
Boolean updateTagOrder(String tagId, Integer orderBy);
/**
* 发布标签
* @param tagGroupIds
*/
Boolean batchPublishTagGroups(List<String> tagGroupIds);
/** 废除标签
* @param tagId
* @return
*/
Boolean deleteTagOrGroup(String tagId);
/**
* 标签数据
* @return
*/
List<TagListVO> listTagsWithGroups();
}

View File

@ -18,7 +18,6 @@ import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.ListUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@ -74,15 +73,8 @@ public class EdFileFavoriteServiceImpl extends ServiceImpl<EdFileFavoriteMapper,
LambdaQueryWrapper<EdFileInfo> queryWrapper2 = Wrappers.lambdaQuery(EdFileInfo.class) LambdaQueryWrapper<EdFileInfo> queryWrapper2 = Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.in(EdFileInfo::getFileId, fileIds);
// 只有 fileIds 不为空时才添加 in 条件否则添加一个 false 条件
if (fileIds != null && !fileIds.isEmpty()) {
queryWrapper2.in(EdFileInfo::getFileId, fileIds);
} else {
queryWrapper2.apply("1 = 0"); // 保证 fileIds 为空时查询结果为空
}
return fileInfoServiceImpl.page(page, queryWrapper2); return fileInfoServiceImpl.page(page, queryWrapper2);
} }
} }

View File

@ -1,180 +0,0 @@
package com.electromagnetic.industry.software.manage.service.serviceimpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.enums.TagTypeEnum;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.manage.mapper.EdTagLibraryMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import com.electromagnetic.industry.software.manage.pojo.resp.TagListVO;
import com.electromagnetic.industry.software.manage.service.EdTagLibraryService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdTagLibrary> implements EdTagLibraryService {
/**
* 新建标签组
* @param tagName
* @param createdBy
* @return
*/
@Override
public Boolean createTagGroup(String tagName, String createdBy) {
// 查询当前最大排序值
Integer maxOrder = this.getBaseMapper()
.selectMaxOrder(TagTypeEnum.GROUP.getCode(), "");
if (maxOrder == null) {
maxOrder = 0;
}
EdTagLibrary tagGroup = new EdTagLibrary();
tagGroup.setTagId(IdWorker.getSnowFlakeIdString());
tagGroup.setParentId(""); // 标签组父节点为""
tagGroup.setType(TagTypeEnum.GROUP.getCode());
tagGroup.setTagName(tagName);
tagGroup.setOrderBy(maxOrder+1); // 排在最后
tagGroup.setIsPublished(PublishEnum.UNPUBLISHED.getCode());
tagGroup.setCreatedBy(createdBy);
tagGroup.setCreatedTime(new Date());
return this.save(tagGroup);
}
/**
* 新建标签
* @param parentId
* @param tagName
* @param createdBy
*/
@Override
public Boolean createTag(String parentId, String tagName, String createdBy) {
// 查询当前组内最大排序值
Integer maxOrder = this.getBaseMapper()
.selectMaxOrder(TagTypeEnum.GROUP.getCode(), parentId);
if (maxOrder == null) {
maxOrder = 0;
}
EdTagLibrary tag = new EdTagLibrary();
tag.setTagId(IdWorker.getSnowFlakeIdString());
tag.setParentId(parentId);
tag.setType(TagTypeEnum.TAG.getCode()); // 标签
tag.setTagName(tagName);
tag.setOrderBy(maxOrder+1); // 默认排序
tag.setIsPublished(PublishEnum.UNPUBLISHED.getCode()); // 默认未发布
tag.setCreatedBy(createdBy);
tag.setCreatedTime(new Date());
return this.save(tag);
}
/**
* 更新标签顺序
* @param tagId
* @param orderBy
*/
@Override
public Boolean updateTagOrder(String tagId, Integer orderBy) {
return this.update(new LambdaUpdateWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getTagId, tagId)
.set(EdTagLibrary::getOrderBy, orderBy));
}
/**
* 发布标签批量
* @param tagGroupIds
*/
@Override
@Transactional
public Boolean batchPublishTagGroups(List<String> tagGroupIds) {
if (tagGroupIds == null || tagGroupIds.isEmpty()) {
throw new IllegalArgumentException("参数 tagGroupIds 不能为空");
}
boolean groupUpdated = this.update(new LambdaUpdateWrapper<EdTagLibrary>()
.in(EdTagLibrary::getTagId, tagGroupIds)
.eq(EdTagLibrary::getType, TagTypeEnum.GROUP.getCode()) // 只更新标签组
.set(EdTagLibrary::getIsPublished, PublishEnum.UNPUBLISHED.getCode()));
if (!groupUpdated) {
throw new BizException("发布标签组失败");
}
boolean tagUpdated = this.update(new LambdaUpdateWrapper<EdTagLibrary>()
.in(EdTagLibrary::getParentId, tagGroupIds) // ID 是传入的标签组
.eq(EdTagLibrary::getType, TagTypeEnum.TAG.getCode()) // 只更新标签
.set(EdTagLibrary::getIsPublished, PublishEnum.PUBLISHED.getCode()));
if (!tagUpdated) {
throw new RuntimeException("发布标签失败");
}
return true;
}
/**
* 废除标签
* @param tagId
* @return
*/
@Override
@Transactional
public Boolean deleteTagOrGroup(String tagId) {
EdTagLibrary tag = this.getById(tagId);
if (tag == null) {
throw new BizException("此标签已被删除");
}
// 如果是标签组级联删除其下的所有标签
if (tag.getType() == 0) {
this.remove(new LambdaQueryWrapper<EdTagLibrary>().eq(EdTagLibrary::getParentId, tagId));
}
// 删除本身
return this.removeById(tagId);
}
/**
* 标签数据
* @return
*/
@Override
public List<TagListVO> listTagsWithGroups() {
// 查询所有标签组
List<EdTagLibrary> groups = this.list(new LambdaQueryWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getType, TagTypeEnum.GROUP.getCode())
.orderByAsc(EdTagLibrary::getOrderBy));
// 查询所有标签
List<EdTagLibrary> tags = this.list(new LambdaQueryWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getType, TagTypeEnum.TAG.getCode())
.orderByAsc(EdTagLibrary::getOrderBy));
// 构造分组数据
Map<String, List<EdTagLibrary>> tagsGrouped = tags.stream()
.collect(Collectors.groupingBy(EdTagLibrary::getParentId));
List<TagListVO> result = new ArrayList<>();
for (EdTagLibrary group : groups) {
TagListVO vo = new TagListVO();
BeanUtils.copyProperties(group, vo);
vo.setChildList(tagsGrouped.getOrDefault(group.getTagId(), new ArrayList<>()));
result.add(vo);
}
return result;
}
}

View File

@ -1,21 +0,0 @@
package com.electromagnetic.industry.software.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum TagTypeEnum {
/**
* 标签组
*/
GROUP (0),
/**
* 标签
*/
TAG (1);
private final Integer code;
}