package com.ruoyi.ai.service.impl;

import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.ai.mapper.AiTagMapper;
import com.ruoyi.ai.domain.AiTag;
import com.ruoyi.ai.service.IAiTagService;

/**
 * ai-标签管理Service业务层处理
 * 
 * @author shi
 * @date 2025-11-24
 */
@Service
public class AiTagServiceImpl implements IAiTagService {

    @Autowired
    private AiTagMapper aiTagMapper;

    /**
     * 查询ai-标签管理
     * 
     * @param id ai-标签管理主键
     * @return ai-标签管理
     */
    @Override
    public AiTag selectAiTagById(Long id) {
        return aiTagMapper.selectAiTagById(id);
    }

    /**
     * 查询ai-标签管理列表
     * 
     * @param aiTag ai-标签管理
     * @return ai-标签管理
     */
    @Override
    public List<AiTag> selectAiTagList(AiTag aiTag) {
        return aiTagMapper.selectAiTagList(aiTag);
    }

    @Override
    public List<AiTag> selectUserAiTagList(AiTag aiTag) {
        return aiTagMapper.selectUserAiTagList(aiTag);
    }

    /**
     * 分页查询ai-标签管理列表
     *
     * @param aiTag ai-标签管理
     * @return ai-标签管理
     */
    @Override
    public IPage<AiTag> selectAiTagPage(Page page, AiTag aiTag) {
        LambdaQueryWrapper<AiTag> query = Wrappers.lambdaQuery(aiTag);
        query.eq(AiTag::getDelFlag, "0");
        return aiTagMapper.selectPage(page, query);
    }

    /**
     * 新增ai-标签管理
     * 
     * @param aiTag ai-标签管理
     * @return 结果
     */
    @Override
    public int insertAiTag(AiTag aiTag) {
        aiTag.setDelFlag("0");
        aiTag.setCreateBy(SecurityUtils.getUsername());
        aiTag.setCreateTime(DateUtils.getNowDate());
        return aiTagMapper.insert(aiTag);
    }

    /**
     * 修改ai-标签管理
     * 
     * @param aiTag ai-标签管理
     * @return 结果
     */
    @Override
    public int updateAiTag(AiTag aiTag) {
        aiTag.setUpdateBy(SecurityUtils.getUsername());
        aiTag.setUpdateTime(DateUtils.getNowDate());
        return aiTagMapper.updateById(aiTag);
    }

    /**
     * 批量删除ai-标签管理
     * 
     * @param ids 需要删除的ai-标签管理主键
     * @return 结果
     */
    @Override
    public int deleteAiTagByIds(Long[] ids)
    {
        QueryWrapper<AiTag> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("parent_id", ids);
        if (aiTagMapper.selectCount(queryWrapper) > 0) {
            throw new ServiceException("要删除的标签存在子级标签");
        }
        return aiTagMapper.deleteAiTagByIds(ids);
    }

    /**
     * 删除ai-标签管理信息
     * 
     * @param id ai-标签管理主键
     * @return 结果
     */
    @Override
    public int deleteAiTagById(Long id)
    {
        return aiTagMapper.deleteAiTagById(id);
    }

    @Override
    public boolean checkStatus(Long parentId) {
        AiTag pT = aiTagMapper.selectById(parentId);
        if (pT.getStatus() == 0) {
            QueryWrapper<AiTag> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("parent_id", parentId);
            queryWrapper.eq("status", 0);
            return aiTagMapper.selectCount(queryWrapper) > 0;
        }
        return true;
    }

    @Override
    public List<AiTag> selectAiTagListByIds(String tags, String parentTags) {
        if (parentTags == null) parentTags = "";
        return aiTagMapper.selectAiTagListByIds(tags.split(","), parentTags.split(","));
    }
}
