diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java index 2a86631..8cd004c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/EdMetaObjectHandler.java @@ -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()); + } } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdTagLibraryController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdTagLibraryController.java index 8cfbcd0..1238e15 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdTagLibraryController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdTagLibraryController.java @@ -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 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)); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdTagLibrary.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdTagLibrary.java index 76bc8af..a76b1ac 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdTagLibrary.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdTagLibrary.java @@ -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; // 更新时间 } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdTagLibraryService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdTagLibraryService.java index cc2063c..118b161 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdTagLibraryService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdTagLibraryService.java @@ -27,9 +27,9 @@ public interface EdTagLibraryService extends IService { /** * 拖拽标签顺序 * @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 { * @return */ List listTagsWithGroups(); + + /** + * 更新标签信息 + * @param tagId + * @param tagName + * @return 更新结果 + */ + Boolean updateTagInfo(String tagId, String tagName, String updatedBy); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java index 39474da..7f3c74b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java @@ -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() + .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() .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() .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 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 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); + } + }