package com.kexue.skills.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.kexue.skills.entity.ModelPrice;
import com.kexue.skills.entity.dto.ModelPriceDto;
import com.kexue.skills.mapper.ModelPriceMapper;
import com.kexue.skills.service.ModelPriceService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * (ModelPrice)表服务实现类
 * 大模型Token价格表
 *
 * @author 王志维
 * @since 2026-03-26 10:15:00
 */
@Service("modelPriceService")
public class ModelPriceServiceImpl implements ModelPriceService {
    @Resource
    private ModelPriceMapper modelPriceMapper;

    /**
     * 分页查询
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    @Override
    public PageInfo<ModelPrice> getPageList(ModelPriceDto queryDto) {
        PageHelper.startPage(queryDto.getPageNum(), queryDto.getPageSize());
        List<ModelPrice> list = this.modelPriceMapper.getPageList(queryDto);
        return new PageInfo<>(list);
    }

    /**
     * 查询列表
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    @Override
    public List<ModelPrice> getList(ModelPriceDto queryDto) {
        return this.modelPriceMapper.getList(queryDto);
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public ModelPrice queryById(Long id) {
        return this.modelPriceMapper.queryById(id);
    }

    /**
     * 通过模型名称查询数据
     *
     * @param modelName 模型名称
     * @return 实例对象列表
     */
    @Override
    public List<ModelPrice> queryByModelName(String modelName) {
        return this.modelPriceMapper.queryByModelName(modelName);
    }

    /**
     * 根据模型名称、输出模式和token数量查询价格规则
     *
     * @param modelName 模型名称
     * @param outputMode 输出模式
     * @param tokens token数量
     * @return 实例对象
     */
    @Override
    public ModelPrice queryByModelNameAndOutputModeAndTokens(String modelName, String outputMode, Long tokens) {
        return this.modelPriceMapper.queryByModelNameAndOutputModeAndTokens(modelName, outputMode, tokens);
    }

    /**
     * 新增数据
     *
     * @param modelPrice 实例对象
     * @return 实例对象
     */
    @Override
    public ModelPrice insert(ModelPrice modelPrice) {
        // 设置创建时间
        modelPrice.setCreatedTime(new Date());
        // 保存数据
        this.modelPriceMapper.insert(modelPrice);
        return modelPrice;
    }

    /**
     * 更新数据
     *
     * @param modelPrice 实例对象
     * @return 实例对象
     */
    @Override
    public ModelPrice update(ModelPrice modelPrice) {
        // 设置更新时间
        modelPrice.setUpdatedTime(new Date());
        // 更新数据
        this.modelPriceMapper.update(modelPrice);
        return this.queryById(modelPrice.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    @Override
    public int deleteById(Long id) {
        return this.modelPriceMapper.deleteById(id);
    }

}
