zhanghua
2025-07-02 59aed09c5faffa1ef7a8ade34f5a75fcb3877dcf
会员标签
9个文件已修改
10个文件已添加
2 文件已复制
3 文件已重命名
4个文件已删除
1027 ■■■■■ 已修改文件
buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/CustomerTagForm.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/CustomerTagMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerTagServiceImpl.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/CustomerMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/CustomerTagMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/MemberMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/MemberTagMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/TagMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer-api/src/main/java/cn/lili/controller/lmk/CustomerController.java
@@ -3,13 +3,13 @@
import cn.lili.base.Result;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.form.CustomerTagForm;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.domain.form.CustomerTagRefForm;
import cn.lili.modules.lmk.domain.query.CustomerQuery;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import cn.lili.modules.lmk.service.CustomerService;
import cn.lili.modules.lmk.service.CustomerTagRefService;
import cn.lili.modules.lmk.service.CustomerTagService;
import cn.lili.modules.lmk.service.MemberTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -27,7 +27,7 @@
public class CustomerController {
    private final CustomerService customerService;
    private final CustomerTagService customerTagService;
    private final MemberTagService memberTagService;
    private final CustomerTagRefService customerTagRefService;
    @ApiOperation(value = "商铺下拉列表")
@@ -45,39 +45,39 @@
    @PostMapping("/addTag")
    @ApiOperation(value = "添加标签", notes = "添加标签")
    public Result add(@RequestBody @Validated(Add.class) CustomerTagForm form) {
        return customerTagService.add(form);
    public Result add(@RequestBody @Validated(Add.class) MemberTagForm form) {
        return memberTagService.add(form);
    }
    @PutMapping("/editTag")
    @ApiOperation(value = "修改标签", notes = "修改标签")
    public Result update(@RequestBody @Validated(Update.class) CustomerTagForm form) {
        return customerTagService.update(form);
    public Result update(@RequestBody @Validated(Update.class) MemberTagForm form) {
        return memberTagService.update(form);
    }
    @DeleteMapping("/tag/{id}")
    @ApiOperation(value = "ID删除标签", notes = "ID删除")
    public Result removeById(@PathVariable("id") String id) {
        return customerTagService.removeById(id);
        return memberTagService.removeById(id);
    }
    @GetMapping("/tagList")
    @ApiOperation(value = "标签列表", notes = "标签列表")
    public Result list() {
        return customerTagService.all();
        return memberTagService.all();
    }
    @GetMapping("/pageTagList")
    @ApiOperation(value = "分页标签列表", notes = "标签列表")
    public Result pageList(CustomerTagQuery query) {
        return customerTagService.page(query);
        return memberTagService.page(query);
    }
    @PostMapping("/customerAddTag")
    @ApiOperation(value = "添加客户标签标识", notes = "添加客户标签标识")
    public Result addCustomerTag(@RequestBody @Validated(Add.class) CustomerTagForm form) {
        return customerTagService.addCustomerTag(form);
    public Result addCustomerTag(@RequestBody @Validated(Add.class) MemberTagForm form) {
        return memberTagService.addMemberTag(form);
    }
//    @PostMapping("/customerAddTag")
framework/src/main/java/cn/lili/modules/lmk/domain/entity/GoodsTag.java
File was renamed from framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java
@@ -3,21 +3,24 @@
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import lombok.Data;
/**
 *
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@TableName("lmk_customer_tag")
public class CustomerTag extends BaseEntity {
@TableName("lmk_goods_tag")
public class GoodsTag extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableField("tag_id")
    private String tagId;
    @TableField("goods_id")
    private String goodsId;
    @TableField("tag_name")
    /**  标签名称*/
    private String tagName;
framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java
copy from framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java copy to framework/src/main/java/cn/lili/modules/lmk/domain/entity/MemberTag.java
File was copied from framework/src/main/java/cn/lili/modules/lmk/domain/entity/CustomerTag.java
@@ -3,21 +3,24 @@
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import lombok.Data;
/**
 *
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@TableName("lmk_customer_tag")
public class CustomerTag extends BaseEntity {
@TableName("lmk_member_tag")
public class MemberTag extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @TableField("tag_id")
    private String tagId;
    @TableField("member_id")
    private String memberId;
    @TableField("tag_name")
    /**  标签名称*/
    private String tagName;
framework/src/main/java/cn/lili/modules/lmk/domain/form/CustomerTagForm.java
File was deleted
framework/src/main/java/cn/lili/modules/lmk/domain/form/GoodsTagForm.java
New file
@@ -0,0 +1,51 @@
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.GoodsTag;
import cn.lili.modules.lmk.domain.entity.MemberTag;
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 java.util.List;
/**
 * 表单
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@ApiModel(value = "GoodsTag表单", description = "表单")
public class GoodsTagForm extends AbsForm {
    @NotBlank(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签Id")
    private List<String> tagIds;
    @NotBlank(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("")
    private String createType;
    /**
     * 客户id
     */
    @ApiModelProperty("商品id")
    private String goodsId;
    public static GoodsTag getEntityByForm(@NonNull GoodsTagForm form, GoodsTag entity) {
        if (entity == null) {
            entity = new GoodsTag();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberTagForm.java
New file
@@ -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.MemberTag;
import org.springframework.beans.BeanUtils;
import javax.validation.constraints.NotBlank;
import org.springframework.lang.NonNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * 表单
 *
 * @author zxl
 * @since 2025-05-14
 */
@Data
@ApiModel(value = "MemberTag表单", description = "表单")
public class MemberTagForm extends AbsForm {
    @NotBlank(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("标签Id")
    private List<String> tagIds;
    @NotBlank(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("")
    private String createType;
    /**
     * 客户id
     */
    @ApiModelProperty("客户id")
    private String memberId;
    public static MemberTag getEntityByForm(@NonNull MemberTagForm form, MemberTag entity) {
        if (entity == null) {
            entity = new MemberTag();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/TagQuery.java
@@ -26,6 +26,8 @@
    @ApiModelProperty("标签分类")
    private String tagTypeId;
    @ApiModelProperty("标签类别key")
    private String tagTypeKey;
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java
copy from framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java copy to framework/src/main/java/cn/lili/modules/lmk/domain/vo/GoodsTagVO.java
File was copied from framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java
@@ -1,16 +1,12 @@
package cn.lili.modules.lmk.domain.vo;
import cn.lili.base.AbsVo;
import java.util.List;
import cn.lili.modules.lmk.domain.entity.CustomerTag;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import cn.lili.modules.lmk.domain.entity.MemberTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
/**
 * 展示
@@ -20,21 +16,30 @@
 */
@Data
@ApiModel(value = "响应数据", description = "响应数据")
public class CustomerTagVO extends AbsVo {
public class GoodsTagVO extends AbsVo {
    /**  */
    @ApiModelProperty("标签Id")
    private String tagId;
    @ApiModelProperty("客户id")
    private String goodsId;
    /**
     *
     */
    @ApiModelProperty("标签名称")
    private String tagName;
    /**  */
    /**
     *
     */
    @ApiModelProperty("创建方式")
    private String createType;
    public static CustomerTagVO getVoByEntity(@NonNull CustomerTag entity, CustomerTagVO vo) {
        if(vo == null) {
            vo = new CustomerTagVO();
    public static GoodsTagVO getVoByEntity(@NonNull MemberTag entity, GoodsTagVO vo) {
        if (vo == null) {
            vo = new GoodsTagVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
framework/src/main/java/cn/lili/modules/lmk/domain/vo/MemberTagVO.java
File was renamed from framework/src/main/java/cn/lili/modules/lmk/domain/vo/CustomerTagVO.java
@@ -2,15 +2,12 @@
import cn.lili.base.AbsVo;
import java.util.List;
import cn.lili.modules.lmk.domain.entity.CustomerTag;
import cn.lili.modules.lmk.domain.entity.MemberTag;
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;
/**
 * 展示
@@ -20,21 +17,30 @@
 */
@Data
@ApiModel(value = "响应数据", description = "响应数据")
public class CustomerTagVO extends AbsVo {
public class MemberTagVO extends AbsVo {
    /**  */
    @ApiModelProperty("标签Id")
    private String tagId;
    @ApiModelProperty("客户id")
    private String memberId;
    /**
     *
     */
    @ApiModelProperty("标签名称")
    private String tagName;
    /**  */
    /**
     *
     */
    @ApiModelProperty("创建方式")
    private String createType;
    public static CustomerTagVO getVoByEntity(@NonNull CustomerTag entity, CustomerTagVO vo) {
        if(vo == null) {
            vo = new CustomerTagVO();
    public static MemberTagVO getVoByEntity(@NonNull MemberTag entity, MemberTagVO vo) {
        if (vo == null) {
            vo = new MemberTagVO();
        }
        BeanUtils.copyProperties(entity, vo);
        return vo;
framework/src/main/java/cn/lili/modules/lmk/mapper/CustomerTagMapper.java
File was deleted
framework/src/main/java/cn/lili/modules/lmk/mapper/GoodsTagMapper.java
New file
@@ -0,0 +1,16 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.GoodsTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 *  Mapper 接口
 *
 * @author zxl
 * @since 2025-05-14
 */
@Mapper
public interface GoodsTagMapper extends BaseMapper<GoodsTag> {
}
framework/src/main/java/cn/lili/modules/lmk/mapper/MemberTagMapper.java
New file
@@ -0,0 +1,16 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.MemberTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 *  Mapper 接口
 *
 * @author zxl
 * @since 2025-05-14
 */
@Mapper
public interface MemberTagMapper extends BaseMapper<MemberTag> {
}
framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java
New file
@@ -0,0 +1,51 @@
package cn.lili.modules.lmk.service;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.GoodsTag;
import cn.lili.modules.lmk.domain.form.GoodsTagForm;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * 服务类
 *
 * @author zxl
 * @since 2025-05-14
 */
public interface GoodsTagService extends IService<GoodsTag> {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    Result addGoodsTag(GoodsTagForm form);
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    Result remove(List<String> ids);
    /**
     * id删除
     *
     * @param id
     * @return
     */
    Result removeById(String id);
    /**
     * 列表
     *
     * @return
     */
    Result getByGoodsId(String goodsId);
}
framework/src/main/java/cn/lili/modules/lmk/service/MemberTagService.java
File was renamed from framework/src/main/java/cn/lili/modules/lmk/service/CustomerTagService.java
@@ -1,37 +1,40 @@
package cn.lili.modules.lmk.service;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.CustomerTag;
import cn.lili.modules.lmk.domain.form.CustomerTagForm;
import cn.lili.modules.lmk.domain.entity.MemberTag;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 *  服务类
 * 服务类
 *
 * @author zxl
 * @since 2025-05-14
 */
public interface CustomerTagService extends IService<CustomerTag> {
public interface MemberTagService extends IService<MemberTag> {
    /**
     * 添加
     *
     * @param form
     * @return
     */
    Result add(CustomerTagForm form);
    Result add(MemberTagForm form);
    /**
     * 修改
     *
     * @param form
     * @return
     */
    Result update(CustomerTagForm form);
    Result update(MemberTagForm form);
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
@@ -39,6 +42,7 @@
    /**
     * id删除
     *
     * @param id
     * @return
     */
@@ -46,23 +50,22 @@
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    Result page(CustomerTagQuery query);
    /**
     * 根据id查找
     * @param id
     * @return
     */
    Result detail(Integer id);
    /**
     * 列表
     *
     * @return
     */
    Result all();
    Result addCustomerTag(CustomerTagForm form);
    Result addMemberTag(MemberTagForm form);
    Result getByMemberId(String memberId);
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/CustomerTagServiceImpl.java
File was deleted
framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java
New file
@@ -0,0 +1,92 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.GoodsTag;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.form.GoodsTagForm;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import cn.lili.modules.lmk.domain.vo.MemberTagVO;
import cn.lili.modules.lmk.mapper.GoodsTagMapper;
import cn.lili.modules.lmk.service.GoodsTagService;
import cn.lili.modules.lmk.service.TagService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
/**
 * 服务实现类
 *
 * @author zxl
 * @since 2025-05-14
 */
@Service
@RequiredArgsConstructor
public class GoodsTagServiceImpl extends ServiceImpl<GoodsTagMapper, GoodsTag> implements GoodsTagService {
    private final TagService tagService;
    /**
     * 批量删除
     *
     * @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("删除成功");
    }
    @Override
    public Result getByGoodsId(String goodsId) {
        LambdaQueryWrapper<GoodsTag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(GoodsTag::getGoodsId, goodsId);
        return Result.ok().data(baseMapper.selectList(queryWrapper));
    }
    @Override
    public Result addGoodsTag(GoodsTagForm form) {
        LambdaQueryWrapper<Tag> query = new LambdaQueryWrapper<>();
        query.in(Tag::getId, form.getTagIds());
        List<Tag> tags = tagService.list(query);
        List<GoodsTag> GoodsTags = tags.stream().map(tag -> {
            GoodsTag GoodsTag = new GoodsTag();
            GoodsTag.setTagId(tag.getId());
            GoodsTag.setGoodsId(form.getGoodsId());
            GoodsTag.setTagName(tag.getTagName());
            GoodsTag.setCreateType(form.getCreateType());
            return GoodsTag;
        }).collect(Collectors.toList());
        this.saveBatch(GoodsTags);
        return Result.ok("添加成功");
    }
    public Result delCustomerTag(String id) {
        return null;
    }
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/MemberTagServiceImpl.java
New file
@@ -0,0 +1,158 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.entity.MemberTag;
import cn.lili.modules.lmk.domain.entity.Tag;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import cn.lili.modules.lmk.domain.vo.MemberTagVO;
import cn.lili.modules.lmk.mapper.MemberTagMapper;
import cn.lili.modules.lmk.service.MemberTagService;
import cn.lili.modules.lmk.service.TagService;
import cn.lili.utils.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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-05-14
 */
@Service
@RequiredArgsConstructor
public class MemberTagServiceImpl extends ServiceImpl<MemberTagMapper, MemberTag> implements MemberTagService {
    private final TagService tagService;
    /**
     * 添加
     *
     * @param form
     * @return
     */
    @Override
    public Result add(MemberTagForm form) {
        MemberTag entity = MemberTagForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
    /**
     * 修改
     *
     * @param form
     * @return
     */
    @Override
    public Result update(MemberTagForm form) {
        MemberTag 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(CustomerTagQuery query) {
        IPage<MemberTag> page = PageUtil.getPage(query, MemberTag.class);
        LambdaQueryWrapper<MemberTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        baseMapper.selectPage(page, lambdaQueryWrapper);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
     * 列表
     *
     * @return
     */
    @Override
    public Result all() {
        List<MemberTag> entities = baseMapper.selectList(null);
        List<MemberTagVO> vos = entities.stream()
                .map(entity -> MemberTagVO.getVoByEntity(entity, null))
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public Result addMemberTag(MemberTagForm form) {
        LambdaQueryWrapper<MemberTag> deleteQuery = new LambdaQueryWrapper<>();
        deleteQuery.eq(MemberTag::getMemberId, form.getMemberId());
        baseMapper.delete(deleteQuery);
        LambdaQueryWrapper<Tag> query = new LambdaQueryWrapper<>();
        query.in(Tag::getId, form.getTagIds());
        List<Tag> tags = tagService.list(query);
        List<MemberTag> memberTags = tags.stream().map(tag -> {
            MemberTag memberTag = new MemberTag();
            memberTag.setTagId(tag.getId());
            memberTag.setMemberId(form.getMemberId());
            memberTag.setTagName(tag.getTagName());
            memberTag.setCreateType(form.getCreateType());
            return memberTag;
        }).collect(Collectors.toList());
        this.saveBatch(memberTags);
        return Result.ok("添加成功");
    }
    @Override
    public Result getByMemberId(String memberId) {
        LambdaQueryWrapper<MemberTag> query = new LambdaQueryWrapper<>();
        query.eq(MemberTag::getMemberId, memberId);
        List<MemberTag> memberTags = baseMapper.selectList(query);
        return Result.ok().data(memberTags);
    }
    public Result delCustomerTag(String id) {
        return null;
    }
}
framework/src/main/java/cn/lili/modules/member/entity/dto/ManagerMemberEditDTO.java
@@ -10,6 +10,7 @@
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
 * 会员修改
@@ -54,4 +55,6 @@
    @ApiModelProperty(value = "会员头像")
    private String face;
    private List<String> tags;
}
framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
@@ -4,7 +4,7 @@
import cn.lili.common.security.sensitive.Sensitive;
import cn.lili.common.security.sensitive.enums.SensitiveStrategy;
import cn.lili.common.utils.BeanUtil;
import cn.lili.modules.lmk.domain.vo.CustomerTagVO;
import cn.lili.modules.lmk.domain.vo.MemberTagVO;
import cn.lili.modules.member.entity.dos.Member;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
@@ -98,7 +98,7 @@
    private Date createTime;
    @ApiModelProperty(value = "客户标签列表")
    private List<CustomerTagVO> customerTagList;
    private List<MemberTagVO> tags;
    /**
     * 为null则不在黑名单内
framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java
@@ -29,4 +29,6 @@
    @Select("select * from li_member ${ew.customSqlSegment}")
    IPage<MemberVO> pageByMemberVO(IPage<MemberVO> page, @Param(Constants.WRAPPER) Wrapper<Member> queryWrapper);
    MemberVO getVoById(@Param("id") String id);
}
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -24,6 +24,8 @@
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.lmk.domain.entity.VideoAccount;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.service.MemberTagService;
import cn.lili.modules.lmk.service.VideoAccountService;
import cn.lili.modules.member.aop.annotation.PointLogPoint;
import cn.lili.modules.member.entity.dos.Member;
@@ -111,6 +113,9 @@
    @Autowired
    private VideoAccountService videoAccountService;
    @Autowired
    private MemberTagService memberTagService;
    @Override
    public Member findByUsername(String userName) {
@@ -487,6 +492,7 @@
    }
    @Override
    @Transactional
    public Member updateMember(ManagerMemberEditDTO managerMemberEditDTO) {
        //过滤会员昵称敏感词
        if (CharSequenceUtil.isNotBlank(managerMemberEditDTO.getNickName())) {
@@ -501,6 +507,13 @@
        //传递修改会员信息
        BeanUtil.copyProperties(managerMemberEditDTO, member);
        this.updateById(member);
        if (managerMemberEditDTO.getTags() != null) {
            MemberTagForm memberTagForm = new MemberTagForm();
            memberTagForm.setMemberId(member.getId());
            memberTagForm.setTagIds(managerMemberEditDTO.getTags());
            memberTagForm.setCreateType("MANAGER");
            memberTagService.addMemberTag(memberTagForm);
        }
        return member;
    }
@@ -786,7 +799,7 @@
    @Override
    public MemberVO getMember(String id) {
        return new MemberVO(this.getById(id));
        return baseMapper.getVoById(id);
    }
    @Override
framework/src/main/resources/mapper/lmk/CustomerMapper.xml
@@ -27,7 +27,7 @@
        <result property="experience" column="experience"/>
        <result property="createTime" column="create_time"/>
        <result property="blackId" column="blackId"/>
        <collection property="customerTagList"  ofType="cn.lili.modules.lmk.domain.vo.CustomerTagVO"
        <collection property="customerTagList"  ofType="cn.lili.modules.lmk.domain.vo.MemberTagVO"
                    select="selectTagByMemberId"
                    column="id"
        />
@@ -69,7 +69,7 @@
        ORDER BY lm.create_time DESC
    </select>
    <select id="selectTagByMemberId" resultType="cn.lili.modules.lmk.domain.vo.CustomerTagVO">
    <select id="selectTagByMemberId" resultType="cn.lili.modules.lmk.domain.vo.MemberTagVO">
        SELECT
            LCT.id,
            LCT.tag_name,
framework/src/main/resources/mapper/lmk/CustomerTagMapper.xml
File was deleted
framework/src/main/resources/mapper/lmk/GoodsTagMapper.xml
New file
@@ -0,0 +1,15 @@
<?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.GoodsTagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.GoodsTagVO">
        <result column="tag_id" property="tagId"/>
        <result column="tag_name" property="tagName"/>
        <result column="create_type" property="createType"/>
        <result column="create_by" property="createBy"/>
        <result column="create_time" property="createTime"/>
        <result column="update_by" property="updateBy"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
</mapper>
framework/src/main/resources/mapper/lmk/MemberMapper.xml
New file
@@ -0,0 +1,41 @@
<?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.member.mapper.MemberMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.member.entity.vo.MemberVO">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="nick_name" property="nickName"/>
        <result column="sex" property="sex"/>
        <result column="birthday" property="birthday"/>
        <result column="region_id" property="regionId"/>
        <result column="region" property="region"/>
        <result column="mobile" property="mobile"/>
        <result column="point" property="point"/>
        <result column="total_point" property="totalPoint"/>
        <result column="face" property="face"/>
        <result column="disabled" property="disabled"/>
        <result column="have_store" property="haveStore"/>
        <result column="store_id" property="storeId"/>
        <result column="open_id" property="openId"/>
        <result column="client_enum" property="clientEnum"/>
        <result column="last_login_date" property="lastLoginDate"/>
        <result column="grade_id" property="gradeId"/>
        <result column="experience" property="experience"/>
        <collection property="tags" ofType="cn.lili.modules.lmk.domain.vo.MemberTagVO">
            <id column="member_tag_id" property="id"/>
            <result column="tag_name" property="tagName"/>
            <result column="tag_id" property="tagId"/>
        </collection>
    </resultMap>
    <select id="getVoById" resultMap="BaseResultMap">
        select m.*, mt.id member_tag_id, mt.tag_name, mt.tag_id
        from li_member m
                 left join lmk_member_tag mt on m.id = mt.member_id and mt.delete_flag = 0
        where m.id = #{id} and m.delete_flag = 0
    </select>
</mapper>
framework/src/main/resources/mapper/lmk/MemberTagMapper.xml
New file
@@ -0,0 +1,43 @@
<?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.MemberTagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.MemberTagVO">
        <result column="tag_id" property="tagId"/>
        <result column="tag_name" property="tagName"/>
        <result column="create_type" property="createType"/>
        <result column="create_by" property="createBy"/>
        <result column="create_time" property="createTime"/>
        <result column="update_by" property="updateBy"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT LCT.tag_name,
               LCT.create_type,
               LCT.create_by,
               LCT.create_time,
               LCT.update_by,
               LCT.update_time,
               LCT.id
        FROM lmk_customer_tag LCT
        WHERE LCT.id = #{id}
          AND LCT.delete_flag = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT LCT.tag_name,
               LCT.create_type,
               LCT.create_by,
               LCT.create_time,
               LCT.update_by,
               LCT.update_time,
               LCT.id
        FROM lmk_customer_tag LCT
        WHERE LCT.delete_flag = 0
    </select>
</mapper>
framework/src/main/resources/mapper/lmk/TagMapper.xml
@@ -20,7 +20,10 @@
            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},'%')
            and t.tag_type_id = #{query.tagTypeId}
        </if>
        <if test="query.tagTypeKey != null and query.tagTypeKey  != ''">
            and tt.type_key = #{query.tagTypeKey}
        </if>
        order by t.sort_num
    </select>
manager-api/src/main/java/cn/lili/controller/lmk/CustomerController.java
@@ -1,21 +1,15 @@
package cn.lili.controller.lmk;
import cn.lili.base.Result;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.group.Add;
import cn.lili.group.Update;
import cn.lili.modules.lmk.domain.form.CustomerTagForm;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.domain.form.CustomerTagRefForm;
import cn.lili.modules.lmk.domain.query.CustomerQuery;
import cn.lili.modules.lmk.domain.query.CustomerTagQuery;
import cn.lili.modules.lmk.service.CustomerService;
import cn.lili.modules.lmk.service.CustomerTagRefService;
import cn.lili.modules.lmk.service.CustomerTagService;
import cn.lili.modules.member.entity.vo.MemberSearchVO;
import cn.lili.modules.member.entity.vo.MemberVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.service.MemberTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -29,8 +23,7 @@
@RequestMapping("/manager/customerManager")
public class CustomerController {
    private final CustomerService customerService;
    private final CustomerTagService customerTagService;
    private final CustomerTagRefService customerTagRefService;
    private final MemberTagService memberTagService;
    @ApiOperation(value = "商铺下拉列表")
    @GetMapping("/store/selectOption")
@@ -52,39 +45,39 @@
    @PostMapping("/addTag")
    @ApiOperation(value = "添加标签", notes = "添加标签")
    public Result add(@RequestBody @Validated(Add.class) CustomerTagForm form) {
        return customerTagService.add(form);
    public Result add(@RequestBody @Validated(Add.class) MemberTagForm form) {
        return memberTagService.add(form);
    }
    @PutMapping("/editTag")
    @ApiOperation(value = "修改标签", notes = "修改标签")
    public Result update(@RequestBody @Validated(Update.class) CustomerTagForm form) {
        return customerTagService.update(form);
    public Result update(@RequestBody @Validated(Update.class) MemberTagForm form) {
        return memberTagService.update(form);
    }
    @DeleteMapping("/tag/{id}")
    @ApiOperation(value = "ID删除标签", notes = "ID删除")
    public Result removeById(@PathVariable("id") String id) {
        return customerTagService.removeById(id);
        return memberTagService.removeById(id);
    }
    @GetMapping("/tagList")
    @ApiOperation(value = "标签列表", notes = "标签列表")
    public Result list() {
        return customerTagService.all();
        return memberTagService.all();
    }
    @GetMapping("/pageTagList")
    @ApiOperation(value = "分页标签列表", notes = "标签列表")
    public Result pageList(CustomerTagQuery query) {
        return customerTagService.page(query);
        return memberTagService.page(query);
    }
    @PostMapping("/customerAddTag")
    @ApiOperation(value = "添加客户标签标识", notes = "添加客户标签标识")
    public Result addCustomerTag(@RequestBody @Validated(Add.class) CustomerTagForm form) {
        return customerTagService.addCustomerTag(form);
    public Result addCustomerTag(@RequestBody @Validated(Add.class) MemberTagForm form) {
        return memberTagService.addMemberTag(form);
    }
//    @PostMapping("/customerAddTag")
@@ -93,16 +86,11 @@
//        return customerTagRefService.add(form);
//    }
    @PutMapping("/customerEditTag")
    @ApiOperation(value = "修改客户标签标识", notes = "修改客户标签标识")
    public Result update(@RequestBody @Validated(Update.class) CustomerTagRefForm form) {
        return customerTagRefService.update(form);
    }
    @DeleteMapping("/customerDelTag/{id}")
    @ApiOperation(value = "删除客户标签标识ID删除", notes = "删除客户标签标识ID删除")
    public Result removeCustomerTagById(@PathVariable("id") String id) {
        return customerTagRefService.removeById(id);
        return memberTagService.removeById(id);
    }
}