zxl
2025-10-10 af90980f33ef5bc3b390b64cf47097b2731c01fb
商店标签
1个文件已修改
16个文件已添加
811 ■■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreTag.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreTagRef.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreTagForm.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreTagRefForm.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreTagQuery.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreTagRefQuery.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreTagRefVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreTagVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/StoreTagMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/StoreTagRefMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/StoreTagRefService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/StoreTagService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreTagRefServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreTagServiceImpl.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/StoreTagMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/StoreTagRefMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/StoreTagController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreTag.java
New file
@@ -0,0 +1,27 @@
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-10-09
 */
@Data
@TableName("lmk_store_tag")
public class StoreTag extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableField("tag_name")
    /** 标签名称 */
    private String tagName;
}
framework/src/main/java/cn/lili/modules/lmk/domain/entity/StoreTagRef.java
New file
@@ -0,0 +1,28 @@
package cn.lili.modules.lmk.domain.entity;
import cn.lili.mybatis.BaseEntity;
import cn.lili.mybatis.BaseIdEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * 视频标签中间表
 *
 * @author xp
 * @since 2025-05-19
 */
@Data
@TableName("lmk_store_tag_ref")
public class StoreTagRef extends BaseEntity {
    @TableField("store_id")
    /** 视频id */
    private String storeId;
    @TableField("store_tag_id")
    /** 视频标签id */
    private String storeTagId;
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreTagForm.java
New file
@@ -0,0 +1,40 @@
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.StoreTag;
import org.springframework.beans.BeanUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.springframework.lang.NonNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 表单
 *
 * @author zxl
 * @since 2025-10-09
 */
@Data
@ApiModel(value = "StoreTag表单", description = "表单")
public class StoreTagForm extends AbsForm {
    @NotBlank(message = "标签名不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签名")
    private String tagName;
    public static StoreTag getEntityByForm(@NonNull StoreTagForm form, StoreTag entity) {
        if(entity == null) {
          entity = new StoreTag();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/StoreTagRefForm.java
New file
@@ -0,0 +1,43 @@
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.StoreTagRef;
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 zxl
 * @since 2025-05-14
 */
@Data
@ApiModel(value = "LmkStoreTagRef表单", description = "客户标签中间表表单")
public class StoreTagRefForm extends AbsForm {
    @NotNull(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("客户id")
    private String storeId;
    @NotBlank(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签id")
    private String storeTagId;
    public static StoreTagRef getEntityByForm(@NonNull StoreTagRefForm form, StoreTagRef entity) {
        if(entity == null) {
          entity = new StoreTagRef();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreTagQuery.java
New file
@@ -0,0 +1,18 @@
package cn.lili.modules.lmk.domain.query;
import cn.lili.base.AbsQuery;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * 查询
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@ApiModel(value = "StoreTagQuery参数", description = "查询参数")
public class StoreTagQuery extends AbsQuery {
    private String tagName;
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/StoreTagRefQuery.java
New file
@@ -0,0 +1,17 @@
package cn.lili.modules.lmk.domain.query;
import cn.lili.base.AbsQuery;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * 查询
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@ApiModel(value = "StoreTagQuery参数", description = "查询参数")
public class StoreTagRefQuery extends AbsQuery {
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreTagRefVO.java
New file
@@ -0,0 +1,31 @@
package cn.lili.modules.lmk.domain.vo;
import cn.lili.base.AbsVo;
import cn.lili.modules.lmk.domain.entity.StoreTagRef;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
@Data
@ApiModel(value = "客户标签中间表响应数据", description = "客户标签中间表响应数据")
public class StoreTagRefVO extends AbsVo {
    /**  */
    @ApiModelProperty("")
    private String storeId;
    /**  */
    @ApiModelProperty("")
    private String storeTagId;
    private String tagName;
    public static StoreTagRefVO getVoByEntity(@NonNull StoreTagRef entity, StoreTagRefVO vo) {
        if(vo == null) {
            vo = new StoreTagRefVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/StoreTagVO.java
New file
@@ -0,0 +1,39 @@
package cn.lili.modules.lmk.domain.vo;
import java.util.List;
import cn.lili.base.AbsVo;
import cn.lili.modules.lmk.domain.entity.StoreTag;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * 展示
 *
 * @author zxl
 * @since 2025-10-09
 */
@Data
@ApiModel(value = "响应数据", description = "响应数据")
public class StoreTagVO extends AbsVo {
    /** 标签名 */
    @ApiModelProperty("标签名")
    private String tagName;
    private Boolean deleteFlag;
    public static StoreTagVO getVoByEntity(@NonNull StoreTag entity, StoreTagVO vo) {
        if(vo == null) {
            vo = new StoreTagVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
framework/src/main/java/cn/lili/modules/lmk/mapper/StoreTagMapper.java
New file
@@ -0,0 +1,34 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.StoreTag;
import cn.lili.modules.lmk.domain.query.StoreTagQuery;
import cn.lili.modules.lmk.domain.vo.StoreTagVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 *  Mapper 接口
 *
 * @author zxl
 * @since 2025-10-09
 */
@Mapper
public interface StoreTagMapper extends BaseMapper<StoreTag> {
    /**
     * id查找
     * @param id
     * @return
     */
    StoreTagVO getById(String id);
    /**
    *  分页
    */
    IPage getPage(IPage page, @Param("query") StoreTagQuery query);
}
framework/src/main/java/cn/lili/modules/lmk/mapper/StoreTagRefMapper.java
New file
@@ -0,0 +1,39 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.StoreTag;
import cn.lili.modules.lmk.domain.entity.StoreTagRef;
import cn.lili.modules.lmk.domain.query.StoreTagRefQuery;
import cn.lili.modules.lmk.domain.vo.StoreTagRefVO;
import cn.lili.modules.lmk.domain.vo.StoreTagVO;
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;
import java.util.List;
/**
 *  Mapper 接口
 *
 * @author zxl
 * @since 2025-05-14
 */
@Mapper
public interface StoreTagRefMapper extends BaseMapper<StoreTagRef> {
    /**
     * id查找
     * @param id
     * @return
     */
    StoreTagRefVO getById(Integer id);
    /**
    *  分页
    */
    IPage getPage(IPage page, @Param("query") StoreTagRefQuery query);
    List<StoreTagVO> getStoreTagVOList(String storeId);
}
framework/src/main/java/cn/lili/modules/lmk/service/StoreTagRefService.java
New file
@@ -0,0 +1,64 @@
package cn.lili.modules.lmk.service;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.StoreTagRef;
import cn.lili.modules.lmk.domain.form.StoreTagRefForm;
import cn.lili.modules.lmk.domain.query.CustomerTagRefQuery;
import cn.lili.modules.lmk.domain.query.StoreTagRefQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface StoreTagRefService extends IService<StoreTagRef> {
    /**
     * 添加
     * @param form
     * @return
     */
    Result add(StoreTagRefForm form);
    /**
     * 修改
     * @param form
     * @return
     */
    Result update(StoreTagRefForm form);
    /**
     * 批量删除
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 分页查询
     * @param query
     * @return
     */
    Result page(StoreTagRefQuery query);
    /**
     * 根据id查找
     * @param id
     * @return
     */
    Result detail(Integer id);
    /**
     * 列表
     * @return
     */
    Result all();
    Result getStoreTagsById(String storeId);
}
framework/src/main/java/cn/lili/modules/lmk/service/StoreTagService.java
@@ -56,11 +56,11 @@
     * @param id
     * @return
     */
    Result detail(Integer id);
    Result detail(String id);
    /**
     * 列表
     * @return
     */
    Result all();
    Result all(StoreTagQuery query);
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreTagRefServiceImpl.java
New file
@@ -0,0 +1,129 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.CustomerTagRef;
import cn.lili.modules.lmk.domain.entity.StoreTagRef;
import cn.lili.modules.lmk.domain.form.CustomerTagRefForm;
import cn.lili.modules.lmk.domain.form.StoreTagRefForm;
import cn.lili.modules.lmk.domain.query.CustomerTagRefQuery;
import cn.lili.modules.lmk.domain.query.StoreTagRefQuery;
import cn.lili.modules.lmk.domain.vo.CustomerTagRefVO;
import cn.lili.modules.lmk.domain.vo.StoreTagRefVO;
import cn.lili.modules.lmk.mapper.CustomerTagRefMapper;
import cn.lili.modules.lmk.mapper.StoreTagRefMapper;
import cn.lili.modules.lmk.service.StoreTagRefService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class StoreTagRefServiceImpl extends ServiceImpl<StoreTagRefMapper, StoreTagRef> implements StoreTagRefService {
    private final StoreTagRefMapper storeTagRefMapper;
    /**
     * 添加
     * @param form
     * @return
     */
    @Override
    public Result add(StoreTagRefForm form) {
        System.out.println(form);
        StoreTagRef entity = StoreTagRefForm.getEntityByForm(form, null);
        System.out.println(entity);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     * @param form
     * @return
     */
    @Override
    public Result update(StoreTagRefForm form) {
        StoreTagRef entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        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(StoreTagRefQuery query) {
        IPage<StoreTagRefVO> page = PageUtil.getPage(query, StoreTagRefVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 根据id查找
     * @param id
     * @return
     */
    @Override
    public Result detail(Integer id) {
        StoreTagRefVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
    /**
     * 列表
     * @return
     */
    @Override
    public Result all() {
        List<StoreTagRef> entities = baseMapper.selectList(null);
        List<StoreTagRefVO> vos = entities.stream()
                .map(entity -> StoreTagRefVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public Result getStoreTagsById(String storeId) {
        return Result.ok().data(baseMapper.getStoreTagVOList(storeId));
    }
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreTagServiceImpl.java
New file
@@ -0,0 +1,129 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.StoreTag;
import cn.lili.modules.lmk.domain.form.StoreTagForm;
import cn.lili.modules.lmk.domain.query.StoreTagQuery;
import cn.lili.modules.lmk.domain.vo.StoreTagVO;
import cn.lili.modules.lmk.mapper.StoreTagMapper;
import cn.lili.modules.lmk.service.StoreTagService;
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 org.apache.commons.collections.list.LazyList;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
import java.util.List;
import java.util.stream.Collectors;
/**
 *  服务实现类
 *
 * @author zxl
 * @since 2025-10-09
 */
@Service
@RequiredArgsConstructor
public class StoreTagServiceImpl extends ServiceImpl<StoreTagMapper, StoreTag> implements StoreTagService {
    private final StoreTagMapper storeTagMapper;
    /**
     * 添加
     * @param form
     * @return
     */
    @Override
    public Result add(StoreTagForm form) {
        StoreTag entity = StoreTagForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     * @param form
     * @return
     */
    @Override
    public Result update(StoreTagForm form) {
        StoreTag entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        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(StoreTagQuery query) {
        IPage<StoreTagVO> page = PageUtil.getPage(query, StoreTagVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 根据id查找
     * @param id
     * @return
     */
    @Override
    public Result detail(String id) {
        StoreTagVO vo = baseMapper.getById(id);
        Assert.notNull(vo, "记录不存在");
        return Result.ok().data(vo);
    }
    /**
     * 列表
     * @return
     */
    @Override
    public Result all(StoreTagQuery query) {
        List<StoreTag> entities = new LambdaQueryChainWrapper<>(baseMapper)
                .like(StoreTag::getTagName,query.getTagName())
                .list();
        List<StoreTagVO> vos = entities.stream()
                .map(entity -> StoreTagVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
}
framework/src/main/resources/mapper/lmk/StoreTagMapper.xml
New file
@@ -0,0 +1,55 @@
<?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.StoreTagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.StoreTagVO">
        <result column="tag_name" property="tagName" />
        <result column="delete_flag" property="deleteFlag" />
        <result column="update_time" property="updateTime" />
        <result column="update_by" property="updateBy" />
        <result column="create_time" property="createTime" />
        <result column="create_by" property="createBy" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            LST.tag_name,
            LST.delete_flag,
            LST.update_time,
            LST.update_by,
            LST.create_time,
            LST.create_by,
            LST.id
        FROM
            lmk_store_tag LST
        WHERE
            LST.id = #{id} AND LST.delete_flag = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            LST.tag_name,
            LST.delete_flag,
            LST.update_time,
            LST.update_by,
            LST.create_time,
            LST.create_by,
            LST.id
        FROM
            lmk_store_tag LST
        WHERE
            LST.delete_flag = 0
        <if test="query.tagName != null and query.tagName !=''">
            AND LST.tag_name LIKE CONCAT('%',#{query.tagName},'%')
        </if>
    </select>
</mapper>
framework/src/main/resources/mapper/lmk/StoreTagRefMapper.xml
New file
@@ -0,0 +1,19 @@
<?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.StoreTagRefMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.StoreTagRefVO">
        <id column="id" property="id"/>
        <result column="tag_name" property="tagName" />
    </resultMap>
   <select id="getStoreTagVOList" resultMap="BaseResultMap">
       select DISTINCT LSTR.id,LST.tag_name from lmk_store_tag_ref LSTR
            INNER JOIN lmk_store_tag LST on LST.id = LSTR.store_tag_id
       WHERE LSTR.store_id = #{storeId} AND LSTR.delete_flag = 0 AND LST.delete_flag = 0
   </select>
</mapper>
manager-api/src/main/java/cn/lili/controller/lmk/StoreTagController.java
New file
@@ -0,0 +1,95 @@
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.StoreTagForm;
import cn.lili.modules.lmk.domain.form.StoreTagRefForm;
import cn.lili.modules.lmk.domain.query.StoreTagQuery;
import cn.lili.modules.lmk.service.StoreTagRefService;
import cn.lili.modules.lmk.service.StoreTagService;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
 *  前端控制器
 *
 * @author zxl
 * @since 2025-10-09
 */
@Validated
@RequiredArgsConstructor
@Api(value = "", tags = "管理")
@RestController
@RequestMapping("/manager/lmk/store-tag")
public class StoreTagController {
    private final StoreTagService storeTagService;
    private final StoreTagRefService storeTagRefService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    public Result add(@RequestBody @Validated(Add.class) StoreTagForm form) {
        return storeTagService.add(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    public Result update(@RequestBody @Validated(Update.class) StoreTagForm form) {
        return storeTagService.update(form);
    }
    @DeleteMapping("/{id}")
    @ApiOperation(value = "ID删除", notes = "ID删除")
    public Result removeById(@PathVariable("id") String id) {
        return storeTagService.removeById(id);
    }
    @DeleteMapping("/batch")
    @ApiOperation(value = "批量删除", notes = "批量删除")
    public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) {
        return storeTagService.remove(ids);
    }
    @GetMapping("/page")
    @ApiOperation(value = "分页", notes = "分页")
    public Result page(StoreTagQuery query) {
        return storeTagService.page(query);
    }
    @GetMapping("/{id}")
    @ApiOperation(value = "详情", notes = "详情")
    public Result detail(@PathVariable("id") String id) {
        return storeTagService.detail(id);
    }
    @GetMapping("/list")
    @ApiOperation(value = "列表", notes = "列表")
    public Result list(StoreTagQuery query) {
        return storeTagService.all(query);
    }
    @PostMapping("/bind")
    public Result bindTagByStore(@RequestBody StoreTagRefForm form) {
        return storeTagRefService.add(form);
    }
    @GetMapping("/storeTags/{storeId}")
    public Result getStoreTagsById(@PathVariable String storeId){
        return storeTagRefService.getStoreTagsById(storeId);
    }
    @DeleteMapping("/delTagByStoreTagRefId/{id}")
    public Result delTagByStoreTagRefId(@PathVariable String id) {
        return storeTagRefService.removeById(id);
    }
}