package com.agri.generator.service.impl;

import java.util.List;
import com.agri.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.agri.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.agri.generator.domain.SysApiParam;
import com.agri.generator.mapper.SysApiInfoMapper;
import com.agri.generator.domain.SysApiInfo;
import com.agri.generator.service.ISysApiInfoService;

/**
 * 接口基础信息Service业务层处理
 * 
 * @author agri
 * @date 2025-12-30
 */
@Service
public class SysApiInfoServiceImpl implements ISysApiInfoService 
{
    @Autowired
    private SysApiInfoMapper sysApiInfoMapper;

    /**
     * 查询接口基础信息
     * 
     * @param id 接口基础信息主键
     * @return 接口基础信息
     */
    @Override
    public SysApiInfo selectSysApiInfoById(Long id)
    {
        return sysApiInfoMapper.selectSysApiInfoById(id);
    }

    /**
     * 查询接口基础信息列表
     * 
     * @param sysApiInfo 接口基础信息
     * @return 接口基础信息
     */
    @Override
    public List<SysApiInfo> selectSysApiInfoList(SysApiInfo sysApiInfo)
    {
        return sysApiInfoMapper.selectSysApiInfoList(sysApiInfo);
    }

    /**
     * 新增接口基础信息
     * 
     * @param sysApiInfo 接口基础信息
     * @return 结果
     */
    @Transactional
    @Override
    public int insertSysApiInfo(SysApiInfo sysApiInfo)
    {
        sysApiInfo.setCreateTime(DateUtils.getNowDate());
        int rows = sysApiInfoMapper.insertSysApiInfo(sysApiInfo);
        insertSysApiParam(sysApiInfo);
        return rows;
    }

    /**
     * 修改接口基础信息
     * 
     * @param sysApiInfo 接口基础信息
     * @return 结果
     */
    @Transactional
    @Override
    public int updateSysApiInfo(SysApiInfo sysApiInfo)
    {
        sysApiInfo.setUpdateTime(DateUtils.getNowDate());
        sysApiInfoMapper.deleteSysApiParamByApiId(sysApiInfo.getId());
        insertSysApiParam(sysApiInfo);
        return sysApiInfoMapper.updateSysApiInfo(sysApiInfo);
    }

    /**
     * 批量删除接口基础信息
     * 
     * @param ids 需要删除的接口基础信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSysApiInfoByIds(Long[] ids)
    {
        sysApiInfoMapper.deleteSysApiParamByApiIds(ids);
        return sysApiInfoMapper.deleteSysApiInfoByIds(ids);
    }

    /**
     * 删除接口基础信息信息
     * 
     * @param id 接口基础信息主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSysApiInfoById(Long id)
    {
        sysApiInfoMapper.deleteSysApiParamByApiId(id);
        return sysApiInfoMapper.deleteSysApiInfoById(id);
    }

    /**
     * 新增接口参数信息
     * 
     * @param sysApiInfo 接口基础信息对象
     */
    public void insertSysApiParam(SysApiInfo sysApiInfo)
    {
        List<SysApiParam> sysApiParamList = sysApiInfo.getSysApiParamList();
        Long id = sysApiInfo.getId();
        if (StringUtils.isNotNull(sysApiParamList))
        {
            List<SysApiParam> list = new ArrayList<SysApiParam>();
            for (SysApiParam sysApiParam : sysApiParamList)
            {
                sysApiParam.setApiId(id);
                list.add(sysApiParam);
            }
            if (list.size() > 0)
            {
                sysApiInfoMapper.batchSysApiParam(list);
            }
        }
    }
}
