jiangqs
2023-06-08 77723a7720dab6bebc8b6c6af963df205e4dba7c
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java
@@ -2,13 +2,23 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.domain.dto.MgtTagEditDto;
import com.ruoyi.system.domain.dto.MgtTagPageDto;
import com.ruoyi.system.domain.vo.MgtTagPageVo;
import com.ruoyi.system.mapper.config.SysTagMapper;
import com.ruoyi.system.service.config.SysTagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -21,6 +31,8 @@
@Service
public class SysTagServiceImpl extends ServiceImpl<SysTagMapper, SysTag> implements SysTagService {
    @Resource
    private SysTagMapper sysTagMapper;
    /**
     * 通过id获取系统标签
@@ -44,4 +56,98 @@
        List<SysTag> sysTagsList = this.list(queryWrapper);
        return sysTagsList;
    }
    /**
     * @description  标签管理
     * @author  jqs
     * @date    2023/6/8 14:09
     * @param page
     * @param mgtTagPageDto
     * @return  List<MgtTagPageVo>
     */
    @Override
    public List<MgtTagPageVo> pageTag(Page page, MgtTagPageDto mgtTagPageDto){
        return sysTagMapper.pageTag(page, mgtTagPageDto);
    }
    /**
     * @description  修改标签
     * @author  jqs
     * @date    2023/6/8 15:01
     * @param mgtTagEditDto
     * @return  void
     */
    @Override
    public void editTag(MgtTagEditDto mgtTagEditDto){
        // 创建LambdaQueryWrapper对象,用于构建查询条件
        LambdaQueryWrapper<SysTag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0
                .eq(SysTag::getTagType, mgtTagEditDto.getTagType()) // 查询条件:tagType=mgtTagEditDto的tagType属性
                .eq(SysTag::getTagName, mgtTagEditDto.getTagName()); // 查询条件:tagName=mgtTagEditDto的tagName属性
        // 执行查询,获取与查询条件匹配的SysTag对象
        SysTag sysTagSame = this.getOne(queryWrapper);
        // 获取mgtTagEditDto的tagId属性
        Long tagId = mgtTagEditDto.getTagId();
        // 定义SysTag对象
        SysTag sysTag;
        if (tagId != null) { // 如果tagId不为空
            // 如果存在同类名同分类类型的分类,但是分类ID不同,抛出异常
            if (sysTagSame != null && !Objects.equals(sysTagSame.getTagId(), tagId)) {
                throw new ServiceException(AppErrorConstant.TAG_DOUBLE);
            }
            // 根据tagId获取要修改的分类
            sysTag = this.getById(tagId);
        } else { // 如果tagId为空
            // 如果存在同类名同分类类型的分类,抛出异常
            if (sysTagSame != null) {
                throw new ServiceException(AppErrorConstant.TAG_DOUBLE);
            }
            // 新建分类
            sysTag = new SysTag();
            sysTag.setDelFlag(0);
        }
        // 设置sysTag的属性
        sysTag.setTagType(mgtTagEditDto.getTagType());
        sysTag.setTagName(mgtTagEditDto.getTagName());
        sysTag.setCreateTime(new Date());
        sysTag.setSynFlag(0);
        // 执行保存或更新操作
        this.saveOrUpdate(sysTag);
    }
    /**
     * @description  删除标签
     * @author  jqs
     * @date    2023/6/8 15:09
     * @param tagId
     * @return  void
     */
    @Override
    public void deleteTag(Long tagId){
        SysTag sysTag = this.getById(tagId);
        sysTag.setDelFlag(1);
        this.saveOrUpdate(sysTag);
        handleDeleteTag(sysTag.getTagType(),sysTag.getTagName());
    }
    @Async
    protected void handleDeleteTag(Integer tagType, String tagName){
        //标签类型1用户2合作商3商品4建议
        switch (tagType){
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            default:
                break;
        }
    }
}