Compare commits

...

2 Commits

Author SHA1 Message Date
s2042968 893fbb5597 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-14 17:11:24 +08:00
s2042968 805b25686e 标签库功能接口 2025-02-14 17:11:16 +08:00
5 changed files with 130 additions and 19 deletions

View File

@ -17,22 +17,31 @@ public class EdMetaObjectHandler implements MetaObjectHandler {
if (metaObject.hasGetter("createdAt")) {
this.strictInsertFill(metaObject, "createdAt", Date.class, new Date());
}
if (metaObject.hasSetter("gmtModified")) {
this.strictUpdateFill(metaObject, "gmtModified", Date.class, new Date());
if (metaObject.hasGetter("createdTime")) {
this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
}
if (metaObject.hasGetter("gmtModified")) {
this.strictInsertFill(metaObject, "gmtModified", Date.class, new Date());
}
if (metaObject.hasGetter("updatedAt")) {
this.strictUpdateFill(metaObject, "updatedAt", Date.class, new Date());
this.strictInsertFill(metaObject, "updatedAt", Date.class, new Date());
}
if (metaObject.hasGetter("updatedTime")) {
this.strictInsertFill(metaObject, "updatedTime", Date.class, new Date());
}
}
@Override
public void updateFill(MetaObject metaObject) {
if (metaObject.hasSetter("gmtModified")) {
if (metaObject.hasGetter("gmtModified")) {
this.strictUpdateFill(metaObject, "gmtModified", Date.class, new Date());
}
if (metaObject.hasGetter("updatedAt")) {
this.strictUpdateFill(metaObject, "updatedAt", Date.class, new Date());
}
if (metaObject.hasGetter("updatedTime")) {
this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());
}
}
}

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
@ -17,6 +18,7 @@ public class EdTagLibraryController {
// 新建标签组
@PostMapping("/createGroup")
@UserOperation(value="创建了标签组")
public ElectromagneticResult<?> createTagGroup(@RequestParam String tagName) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.createTagGroup(tagName, createdBy));
@ -24,25 +26,30 @@ public class EdTagLibraryController {
// 在标签组下新建标签
@PostMapping("/createTag")
@UserOperation(value="创建了标签")
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));
@UserOperation("修改了标签顺序")
public ElectromagneticResult<?> updateTagOrder(@RequestParam String tagId, @RequestParam String newParentId, @RequestParam Integer newOrderBy) {
String updatedBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.updateTagOrder(tagId, newParentId, newOrderBy,updatedBy));
}
// 发布标签
@PostMapping("/batchPublish")
@UserOperation(value="发布了标签组")
public ElectromagneticResult<?> publishTag(@RequestParam List<String> tagIds) {
return ElectromagneticResultUtil.success(edTagLibraryService.batchPublishTagGroups(tagIds));
}
// 废除标签
@GetMapping("/delete")
@UserOperation(value="废除了标签组/标签")
public ElectromagneticResult<?> deleteTag(@RequestParam String tagId) {
return ElectromagneticResultUtil.success(edTagLibraryService.deleteTagOrGroup(tagId));
}
@ -52,5 +59,13 @@ public class EdTagLibraryController {
public ElectromagneticResult<?> listTags() {
return ElectromagneticResultUtil.success(edTagLibraryService.listTagsWithGroups());
}
// 修改标签组/标签
@PostMapping ("/updateTag")
@UserOperation("修改了标签名称")
public ElectromagneticResult<?> updateTag(@RequestParam String tagId, @RequestParam String tagName) {
String updatedBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.updateTagInfo(tagId, tagName, updatedBy));
}
}

View File

@ -1,5 +1,7 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -8,7 +10,7 @@ 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: 标签
@ -16,8 +18,13 @@ public class EdTagLibrary {
private Integer orderBy; // 排序字段
private Integer isPublished; // 是否已发布0: 未发布, 1: 已发布
private String createdBy; // 创建人
@TableField(fill = FieldFill.INSERT)
private Date createdTime; // 创建时间
private String updatedBy; // 更新人
@TableField(fill = FieldFill.UPDATE)
private Date updatedTime; // 更新时间
}

View File

@ -27,9 +27,9 @@ public interface EdTagLibraryService extends IService<EdTagLibrary> {
/**
* 拖拽标签顺序
* @param tagId
* @param orderBy
* @param newOrderBy
*/
Boolean updateTagOrder(String tagId, Integer orderBy);
Boolean updateTagOrder(String tagId, String newParentId, Integer newOrderBy, String updatedBy);
/**
* 发布标签
@ -48,4 +48,12 @@ public interface EdTagLibraryService extends IService<EdTagLibrary> {
* @return
*/
List<TagListVO> listTagsWithGroups();
/**
* 更新标签信息
* @param tagId
* @param tagName
* @return 更新结果
*/
Boolean updateTagInfo(String tagId, String tagName, String updatedBy);
}

View File

@ -2,6 +2,7 @@ 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.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.enums.TagTypeEnum;
@ -32,20 +33,19 @@ public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdT
// 查询当前最大排序值
Integer maxOrder = this.getBaseMapper()
.selectMaxOrder(TagTypeEnum.GROUP.getCode(), "");
.selectMaxOrder(TagTypeEnum.GROUP.getCode(), "0");
if (maxOrder == null) {
maxOrder = 0;
}
EdTagLibrary tagGroup = new EdTagLibrary();
tagGroup.setTagId(IdWorker.getSnowFlakeIdString());
tagGroup.setParentId(""); // 标签组父节点为""
tagGroup.setParentId("0"); // 标签组父节点为"0"
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);
}
@ -60,7 +60,7 @@ public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdT
// 查询当前组内最大排序值
Integer maxOrder = this.getBaseMapper()
.selectMaxOrder(TagTypeEnum.GROUP.getCode(), parentId);
.selectMaxOrder(TagTypeEnum.TAG.getCode(), parentId);
if (maxOrder == null) {
maxOrder = 0;
}
@ -73,20 +73,54 @@ public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdT
tag.setOrderBy(maxOrder+1); // 默认排序
tag.setIsPublished(PublishEnum.UNPUBLISHED.getCode()); // 默认未发布
tag.setCreatedBy(createdBy);
tag.setCreatedTime(new Date());
return this.save(tag);
}
/**
* 更新标签顺序
* @param tagId
* @param orderBy
* @param newOrderBy
*/
@Override
public Boolean updateTagOrder(String tagId, Integer orderBy) {
@Transactional
public Boolean updateTagOrder(String tagId, String newParentId, Integer newOrderBy, String updatedBy) {
if (StringUtils.isEmpty(newParentId) || newOrderBy == null) {
throw new IllegalArgumentException("缺少参数");
}
// 查询该标签
EdTagLibrary tag = this.getOne(new LambdaQueryWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getTagId, tagId));
if (tag == null) {
throw new IllegalArgumentException("标签不存在");
}
String oldParentId = tag.getParentId();
Integer oldOrderBy = tag.getOrderBy();
// 是否更换了标签组
boolean isMoveToNewGroup = !oldParentId.equals(newParentId);
if (isMoveToNewGroup) {
// 旧组重新排序
int max = this.baseMapper.selectMaxOrder(tag.getType(),oldParentId)+1;
reorderTagGroup(oldParentId, oldOrderBy, max);
// 新组重新排序
max = this.baseMapper.selectMaxOrder(tag.getType(), newParentId)+1;
reorderTagGroup(newParentId, max, newOrderBy);
} else {
// 仅更新同组内的排序
reorderTagGroup(oldParentId, oldOrderBy, newOrderBy);
}
// 更新当前标签的新排序值
return this.update(new LambdaUpdateWrapper<EdTagLibrary>()
.eq(EdTagLibrary::getTagId, tagId)
.set(EdTagLibrary::getOrderBy, orderBy));
.set(EdTagLibrary::getParentId, newParentId)
.set(EdTagLibrary::getOrderBy, newOrderBy)
.set(EdTagLibrary::getUpdatedBy, updatedBy));
}
/**
@ -104,7 +138,7 @@ public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdT
boolean groupUpdated = this.update(new LambdaUpdateWrapper<EdTagLibrary>()
.in(EdTagLibrary::getTagId, tagGroupIds)
.eq(EdTagLibrary::getType, TagTypeEnum.GROUP.getCode()) // 只更新标签组
.set(EdTagLibrary::getIsPublished, PublishEnum.UNPUBLISHED.getCode()));
.set(EdTagLibrary::getIsPublished, PublishEnum.PUBLISHED.getCode()));
if (!groupUpdated) {
throw new BizException("发布标签组失败");
@ -176,5 +210,43 @@ public class EdTagLibraryServiceImpl extends ServiceImpl<EdTagLibraryMapper, EdT
return result;
}
/**
* 更新标签信息
* @param tagId
* @param tagName
* @param updatedBy
* @return 更新结果
*/
@Override
public Boolean updateTagInfo(String tagId, String tagName, String updatedBy) {
LambdaUpdateWrapper<EdTagLibrary> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(EdTagLibrary::getTagId, tagId)
.set(EdTagLibrary::getTagName, tagName)
.set(EdTagLibrary::getUpdatedBy, updatedBy);
return this.update(updateWrapper);
}
/**
* 重排标签组
*/
private void reorderTagGroup(String parentId, Integer oldOrderBy, Integer newOrderBy) {
boolean isMoveDown = newOrderBy > oldOrderBy;
LambdaUpdateWrapper<EdTagLibrary> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(EdTagLibrary::getParentId, parentId);
if (isMoveDown) {
updateWrapper.setSql("order_by = order_by - 1")
.gt(EdTagLibrary::getOrderBy, oldOrderBy)
.le(EdTagLibrary::getOrderBy, newOrderBy);
} else {
updateWrapper.setSql("order_by = order_by + 1")
.ge(EdTagLibrary::getOrderBy, newOrderBy)
.lt(EdTagLibrary::getOrderBy, oldOrderBy);
}
this.update(updateWrapper);
}
}