From 63e52ca4e0d2085c09d169782c5f57ec4994a8b3 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期二, 24 六月 2025 14:31:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java | 21 +
manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java | 71 ++++
framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java | 60 +++
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java | 129 +++++++
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java | 33 +
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java | 48 ++
framework/src/main/java/cn/lili/modules/lmk/service/TagService.java | 67 +++
manager-api/src/main/java/cn/lili/controller/lmk/TagController.java | 63 +++
framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java | 29 +
framework/src/main/resources/mapper/lmk/TagTypeMapper.xml | 42 ++
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java | 31 +
framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java | 108 ++++++
framework/src/main/resources/mapper/lmk/TagMapper.xml | 28 +
framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java | 55 +++
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java | 47 ++
framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java | 52 +++
framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java | 29 +
framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java | 24 +
framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java | 50 ++
19 files changed, 987 insertions(+), 0 deletions(-)
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java
new file mode 100644
index 0000000..a85ad80
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Tag.java
@@ -0,0 +1,29 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author zxl
+ * @since 2025-05-14
+ */
+@Data
+@TableName("lmk_tag")
+public class Tag extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+
+ @TableField("tag_name")
+ private String tagName;
+
+ @TableField("tag_type_id")
+ private String tagTypeId;
+
+
+ @TableField("sort_num")
+ private Integer sortNum;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java
new file mode 100644
index 0000000..1960dee
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/TagType.java
@@ -0,0 +1,29 @@
+package cn.lili.modules.lmk.domain.entity;
+
+import cn.lili.mybatis.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author zxl
+ * @since 2025-05-14
+ */
+@Data
+@TableName("lmk_tag_type")
+public class TagType extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("tag_type_name")
+ private String tagTypeName;
+
+ @TableField("type_key")
+ private String typeKey;
+
+ @TableField("parent_id")
+ private String parentId;
+
+ @TableField("sort_num")
+ private Integer sortNum;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java
new file mode 100644
index 0000000..fbaa5be
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagForm.java
@@ -0,0 +1,47 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.base.AbsForm;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.entity.Tag;
+import cn.lili.modules.lmk.domain.entity.VideoTag;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 瑙嗛鏍囩琛ㄥ崟
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "VideoTag琛ㄥ崟", description = "瑙嗛鏍囩琛ㄥ崟")
+public class TagForm extends AbsForm {
+
+ @NotBlank(message = "鏍囩鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+ @NotNull(message = "鏍囩鍒嗙被涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏍囩鍒嗙被")
+ private String tagTypeId;
+
+ @NotNull(message = "搴忓彿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("搴忓彿")
+ private Integer sortNum;
+
+ public static Tag getEntityByForm(@NonNull TagForm form, Tag entity) {
+ if (entity == null) {
+ entity = new Tag();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java
new file mode 100644
index 0000000..6e82fa0
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/TagTypeForm.java
@@ -0,0 +1,52 @@
+package cn.lili.modules.lmk.domain.form;
+
+import cn.lili.base.AbsForm;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.entity.TagType;
+import cn.lili.modules.lmk.domain.entity.VideoTag;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 瑙嗛鏍囩琛ㄥ崟
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "VideoTag琛ㄥ崟", description = "瑙嗛鏍囩琛ㄥ崟")
+public class TagTypeForm extends AbsForm {
+
+ @NotBlank(message = "鏍囩鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagTypeName;
+
+ @NotNull(message = "鍒嗙被鏍囪瘑涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒嗙被鏍囪瘑")
+ private String typeKey;
+
+ @NotNull(message = "鐖惰妭鐐逛笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("鐖惰妭鐐�")
+ private String parentId;
+
+
+ @NotNull(message = "搴忓彿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("搴忓彿")
+ private Integer sortNum;
+
+ public static TagType getEntityByForm(@NonNull TagTypeForm form, TagType entity) {
+ if (entity == null) {
+ entity = new TagType();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java
new file mode 100644
index 0000000..605e894
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java
@@ -0,0 +1,31 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 瑙嗛鏍囩鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "Tag鏌ヨ鍙傛暟", description = "鏍囩鏌ヨ鍙傛暟")
+public class TagQuery extends AbsQuery {
+
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+ @ApiModelProperty("鏍囩鍒嗙被")
+ private String tagTypeId;
+
+
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java
new file mode 100644
index 0000000..6c65a35
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/TagTypeQuery.java
@@ -0,0 +1,33 @@
+package cn.lili.modules.lmk.domain.query;
+
+import cn.lili.base.AbsQuery;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 瑙嗛鏍囩鏌ヨ
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "Tag鍒嗙被鏌ヨ鍙傛暟", description = "鏍囩鍒嗙被鏌ヨ鍙傛暟")
+public class TagTypeQuery extends AbsQuery {
+
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagTypeName;
+
+ @ApiModelProperty("鍒嗙被鏍囪瘑")
+ private String typeKey;
+
+ @ApiModelProperty("鐖惰妭鐐�")
+ private String parentId;
+
+}
+
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java
new file mode 100644
index 0000000..6e0fce6
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagTypeVO.java
@@ -0,0 +1,50 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.entity.TagType;
+import cn.lili.modules.lmk.domain.entity.VideoTag;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 瑙嗛鏍囩灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "鏍囩鍒嗙被鍝嶅簲鏁版嵁", description = "鏍囩鍒嗙被鍝嶅簲鏁版嵁")
+public class TagTypeVO extends AbsVo {
+
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagTypeName;
+
+ @ApiModelProperty("鍒嗙被鏍囪瘑")
+ private String typeKey;
+
+ @ApiModelProperty("鐖惰妭鐐�")
+ private String parentId;
+
+ @ApiModelProperty("搴忓彿")
+ private Integer sortNum;
+
+ private List<TagVO> children;
+
+ public static TagTypeVO getVoByEntity(@NonNull TagType entity, TagTypeVO vo) {
+ if (vo == null) {
+ vo = new TagTypeVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java
new file mode 100644
index 0000000..e472c74
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/TagVO.java
@@ -0,0 +1,48 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.entity.Tag;
+import cn.lili.modules.lmk.domain.entity.VideoTag;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 瑙嗛鏍囩灞曠ず
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Data
+@ApiModel(value = "鏍囩鍝嶅簲鏁版嵁", description = "鏍囩鍝嶅簲鏁版嵁")
+public class TagVO extends AbsVo {
+
+ @ApiModelProperty("鏍囩鍚嶇О")
+ private String tagName;
+
+ @ApiModelProperty("鏍囩鍒嗙被")
+ private String tagTypeId;
+
+ @ApiModelProperty("鏍囩鍒嗙被")
+ private String tagTypeName;
+
+
+ @ApiModelProperty("搴忓彿")
+ private Integer sortNum;
+
+ public static TagVO getVoByEntity(@NonNull Tag entity, TagVO vo) {
+ if (vo == null) {
+ vo = new TagVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java
new file mode 100644
index 0000000..a580c68
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/TagTypeKeyEnum.java
@@ -0,0 +1,55 @@
+package cn.lili.modules.lmk.enums.general;
+
+import lombok.Getter;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Getter
+public enum TagTypeKeyEnum {
+ USER("USER", "鐢ㄦ埛"),
+ GOODS("GOODS", "鍟嗗搧");
+
+ private final String value;
+
+
+ private final String desc;
+
+ TagTypeKeyEnum(String value, String desc) {
+ this.value = value;
+ this.desc = desc;
+ }
+
+ /**
+ * 鑾峰彇鍚箟
+ *
+ * @param value
+ * @return
+ */
+ public static String getDescByValue(String value) {
+ if (StringUtils.isBlank(value)) {
+ return null;
+ }
+ for (TagTypeKeyEnum e : TagTypeKeyEnum.values()) {
+ if (value.equals(e.getValue())) {
+ return e.getDesc();
+ }
+ }
+ return null;
+ }
+
+ public static List<Map<String, Object>> getList() {
+ return Arrays.stream(TagTypeKeyEnum.values())
+ .map(e -> {
+ Map<String, Object> map = new LinkedHashMap<>();
+ map.put("value", e.getValue());
+ map.put("label", e.getDesc());
+ return map;
+ })
+ .collect(Collectors.toList());
+ }
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java
new file mode 100644
index 0000000..987da9a
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/TagMapper.java
@@ -0,0 +1,21 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.Tag;
+import cn.lili.modules.lmk.domain.query.TagQuery;
+import cn.lili.modules.lmk.domain.vo.TagVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 瑙嗛鏍囩 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Mapper
+public interface TagMapper extends BaseMapper<Tag> {
+
+ IPage<TagVO> getPage(IPage<TagVO> page, @Param("query") TagQuery query);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java
new file mode 100644
index 0000000..89d8c3a
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/TagTypeMapper.java
@@ -0,0 +1,24 @@
+package cn.lili.modules.lmk.mapper;
+
+import cn.lili.modules.lmk.domain.entity.TagType;
+import cn.lili.modules.lmk.domain.vo.TagTypeVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 瑙嗛鏍囩 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Mapper
+public interface TagTypeMapper extends BaseMapper<TagType> {
+
+
+ List<TagTypeVO> getTree(@Param("typeKey") String typeKey, @Param("tagTypeName") String tagTypeName);
+
+ List<TagTypeVO> getByParentId(@Param("id") String id);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/TagService.java b/framework/src/main/java/cn/lili/modules/lmk/service/TagService.java
new file mode 100644
index 0000000..97f5cd2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/TagService.java
@@ -0,0 +1,67 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.Tag;
+import cn.lili.modules.lmk.domain.form.TagForm;
+import cn.lili.modules.lmk.domain.query.TagQuery;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 鏍囩 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+public interface TagService extends IService<Tag> {
+
+ /**
+ * 娣诲姞
+ *
+ * @param form
+ * @return
+ */
+ Result add(TagForm form);
+
+ /**
+ * 淇敼
+ *
+ * @param form
+ * @return
+ */
+ Result update(TagForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ *
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ *
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param query
+ * @return
+ */
+ Result page(TagQuery query);
+
+ /**
+ * 鍒楄〃
+ *
+ * @param tagName
+ * @return
+ */
+ Result all(String tagName);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java b/framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java
new file mode 100644
index 0000000..030e03a
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/TagTypeService.java
@@ -0,0 +1,60 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.TagType;
+import cn.lili.modules.lmk.domain.form.TagTypeForm;
+import cn.lili.modules.lmk.domain.query.TagTypeQuery;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 鏍囩鍒嗙被 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+public interface TagTypeService extends IService<TagType> {
+
+ /**
+ * 娣诲姞
+ *
+ * @param form
+ * @return
+ */
+ Result add(TagTypeForm form);
+
+ /**
+ * 淇敼
+ *
+ * @param form
+ * @return
+ */
+ Result update(TagTypeForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ *
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ *
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+
+ /**
+ * 鍒楄〃
+ *
+ * @param tagTypeName
+ * @return
+ */
+ Result getTree(String keyType, String tagTypeName);
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java
new file mode 100644
index 0000000..2fa9260
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagServiceImpl.java
@@ -0,0 +1,129 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.Tag;
+import cn.lili.modules.lmk.domain.form.TagForm;
+import cn.lili.modules.lmk.domain.query.TagQuery;
+import cn.lili.modules.lmk.domain.vo.TagVO;
+import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
+import cn.lili.modules.lmk.mapper.TagMapper;
+import cn.lili.modules.lmk.service.TagService;
+import cn.lili.utils.PageUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 瑙嗛鏍囩 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Service
+@RequiredArgsConstructor
+public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {
+
+
+ /**
+ * 娣诲姞
+ *
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(TagForm form) {
+ Tag entity = TagForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ *
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(TagForm form) {
+ Tag entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎
+ *
+ * @param ids
+ * @return
+ */
+ @Override
+ public Result remove(List<String> ids) {
+ baseMapper.deleteBatchIds(ids);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * id鍒犻櫎
+ *
+ * @param id
+ * @return
+ */
+ @Override
+ public Result removeById(String id) {
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param query
+ * @return
+ */
+ @Override
+ public Result page(TagQuery query) {
+ IPage<TagVO> page = PageUtil.getPage(query, TagVO.class);
+ page = baseMapper.getPage(page, query);
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+
+ /**
+ * 鍒楄〃
+ *
+ * @param tagName
+ * @return
+ */
+ @Override
+ public Result all(String tagName) {
+// List<Tag> entities = new LambdaQueryChainWrapper<>(baseMapper)
+// .select(Tag::getId, Tag::getTagName)
+// .like(StringUtils.isNotBlank(tagName), Tag::getTagName, tagName)
+// .orderByDesc(Tag::getUseNum)
+// .list();
+// List<SimpleTagVO> vos = entities.stream()
+// .map(entity -> {
+// SimpleTagVO vo = new SimpleTagVO();
+// BeanUtils.copyProperties(entity, vo);
+// return vo;
+// })
+// .collect(Collectors.toList());
+// return Result.ok().data(vos);
+ return Result.ok().data(new ArrayList<>());
+ }
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java
new file mode 100644
index 0000000..4253114
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/TagTypeServiceImpl.java
@@ -0,0 +1,108 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.TagType;
+import cn.lili.modules.lmk.domain.form.TagForm;
+import cn.lili.modules.lmk.domain.form.TagTypeForm;
+import cn.lili.modules.lmk.domain.query.TagQuery;
+import cn.lili.modules.lmk.domain.query.TagTypeQuery;
+import cn.lili.modules.lmk.domain.vo.TagTypeVO;
+import cn.lili.modules.lmk.domain.vo.TagVO;
+import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
+import cn.lili.modules.lmk.mapper.TagMapper;
+import cn.lili.modules.lmk.mapper.TagTypeMapper;
+import cn.lili.modules.lmk.service.TagService;
+import cn.lili.modules.lmk.service.TagTypeService;
+import cn.lili.utils.PageUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 瑙嗛鏍囩 鏈嶅姟瀹炵幇绫�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Service
+@RequiredArgsConstructor
+public class TagTypeServiceImpl extends ServiceImpl<TagTypeMapper, TagType> implements TagTypeService {
+
+ /**
+ * 娣诲姞
+ *
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(TagTypeForm form) {
+ TagType entity = TagTypeForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ *
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(TagTypeForm form) {
+ TagType entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎
+ *
+ * @param ids
+ * @return
+ */
+ @Override
+ public Result remove(List<String> ids) {
+ baseMapper.deleteBatchIds(ids);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * id鍒犻櫎
+ *
+ * @param id
+ * @return
+ */
+ @Override
+ public Result removeById(String id) {
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+
+ /**
+ * 鍒楄〃
+ *
+ * @param tagTypeName
+ * @return
+ */
+ @Override
+ public Result getTree(String keyType, String tagTypeName) {
+ List<TagTypeVO> list = baseMapper.getTree(keyType, tagTypeName);
+ return Result.ok().data(list);
+ }
+
+
+}
diff --git a/framework/src/main/resources/mapper/lmk/TagMapper.xml b/framework/src/main/resources/mapper/lmk/TagMapper.xml
new file mode 100644
index 0000000..c8ceb7f
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/TagMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.lili.modules.lmk.mapper.TagMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.TagVO">
+ <id column="id" property="id"/>
+ <result column="tag_type_id" property="tagTypeId"/>
+ <result column="tag_type_name" property="tagTypeName"/>
+ <result column="tag_name" property="tagName"/>
+ <result column="sort_num" property="sortNum"/>
+
+ </resultMap>
+ <select id="getPage" resultMap="BaseResultMap">
+ select t.id,t.tag_type_id,t.tag_name,t.sort_num,tt.tag_type_name as tag_type_name
+ from lmk_tag t
+ left join lmk_tag_type tt on t.tag_type_id = tt.id
+ where t.delete_flag = false
+ <if test="query.tagName != null and query.tagName != ''">
+ and t.tag_name like concat('%',#{query.tagName},'%')
+ </if>
+ <if test="query.tagTypeId != null and query.tagTypeId != ''">
+ and t.tag_type_id like concat('%',#{query.tagTypeId},'%')
+ </if>
+ order by t.sort_num
+ </select>
+
+</mapper>
diff --git a/framework/src/main/resources/mapper/lmk/TagTypeMapper.xml b/framework/src/main/resources/mapper/lmk/TagTypeMapper.xml
new file mode 100644
index 0000000..b206fd2
--- /dev/null
+++ b/framework/src/main/resources/mapper/lmk/TagTypeMapper.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.lili.modules.lmk.mapper.TagTypeMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.TagTypeVO">
+ <id column="id" property="id"/>
+ <result column="tag_type_name" property="tagTypeName"/>
+ <result column="type_key" property="typeKey"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="sort_num" property="sortNum"/>
+ <collection property="children" ofType="cn.lili.modules.lmk.domain.vo.TagVO"
+ select="cn.lili.modules.lmk.mapper.TagTypeMapper.getByParentId" column="id">
+ </collection>
+
+
+ </resultMap>
+ <select id="getByParentId" resultMap="BaseResultMap">
+ select *
+ from lmk_tag_type
+ where delete_flag = false
+ and parent_id = #{id}
+ order by sort_num asc
+ </select>
+ <select id="getTree" resultMap="BaseResultMap">
+ select *
+ from lmk_tag_type
+ where delete_flag = false
+ <if test="tagTypeName != null and tagTypeName!=''">
+ and tag_type_name like concat('%',#{tagTypeName},'%')
+ </if>
+ <if test="tagTypeName == null or tagTypeName==''">
+ and parent_id = 0
+ </if>
+ <if test="typeKey != null">
+ and type_key = #{typeKey}
+ </if>
+ order by sort_num asc
+ </select>
+
+
+</mapper>
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/TagController.java b/manager-api/src/main/java/cn/lili/controller/lmk/TagController.java
new file mode 100644
index 0000000..c26526a
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/TagController.java
@@ -0,0 +1,63 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.form.TagForm;
+import cn.lili.modules.lmk.domain.query.TagQuery;
+import cn.lili.modules.lmk.service.TagService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 瑙嗛鏍囩 鍓嶇鎺у埗鍣�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鏍囩", tags = "鏍囩绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/tag")
+public class TagController {
+
+ private final TagService tagService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) TagForm form) {
+ return tagService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) TagForm form) {
+ return tagService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return tagService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return tagService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ public Result page(TagQuery query) {
+ return tagService.page(query);
+ }
+
+}
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java b/manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java
new file mode 100644
index 0000000..468ab37
--- /dev/null
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/TagTypeController.java
@@ -0,0 +1,71 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.group.Add;
+import cn.lili.group.Update;
+import cn.lili.modules.lmk.domain.form.TagTypeForm;
+import cn.lili.modules.lmk.domain.query.TagTypeQuery;
+import cn.lili.modules.lmk.enums.general.TagTypeKeyEnum;
+import cn.lili.modules.lmk.service.TagTypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 瑙嗛鏍囩 鍓嶇鎺у埗鍣�
+ *
+ * @author xp
+ * @since 2025-05-13
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鏍囩鍒嗙被", tags = "鏍囩鍒嗙被绠$悊")
+@RestController
+@RequestMapping("/manager/lmk/tag-type")
+public class TagTypeController {
+
+ private final TagTypeService tagTypeService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ public Result add(@RequestBody @Validated(Add.class) TagTypeForm form) {
+ return tagTypeService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ public Result update(@RequestBody @Validated(Update.class) TagTypeForm form) {
+ return tagTypeService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ public Result removeById(@PathVariable("id") String id) {
+ return tagTypeService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return tagTypeService.remove(ids);
+ }
+
+
+ @GetMapping("/list")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list(String tagTypeName) {
+ return tagTypeService.getTree(null, tagTypeName);
+ }
+
+
+ @GetMapping("/key/list")
+ @ApiOperation(value = "keyType鍒楄〃", notes = "keyType鍒楄〃")
+ public Result keyList() {
+ return Result.ok().data(TagTypeKeyEnum.getList());
+ }
+}
--
Gitblit v1.8.0