package com.tmerclub.cloud.cuerecycle.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.tmerclub.cloud.common.database.util.PageUtil;
import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueFlawDTO;
import com.tmerclub.cloud.cuerecycle.model.vo.CueFlawVO;
import com.tmerclub.cloud.cuerecycle.model.CueFlaw;
import com.tmerclub.cloud.cuerecycle.mapper.CueFlawMapper;
import com.tmerclub.cloud.cuerecycle.service.CueFlawService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

/**
 * 球杆缺陷Service实现类
 *
 * @author : frank
 * @create : 2025-04-13
 */
@Service
public class CueFlawServiceImpl implements CueFlawService {

    @Resource
    CueFlawMapper cueFlawMapper;

    @Override
    public PageVO<CueFlawVO> page(PageDTO pageDTO, CueFlawDTO cueFlawDTO) {
        return PageUtil.doPage(pageDTO, () -> cueFlawMapper.list(cueFlawDTO));
    }

    @Override
    public PageVO<CueFlawVO> listEnabled(PageDTO pageDTO) {
        CueFlawDTO cueFlawDTO = new CueFlawDTO();
        cueFlawDTO.setFlawStatus(1);
        return PageUtil.doPage(pageDTO, () -> cueFlawMapper.list(cueFlawDTO));
    }

    @Override
    public CueFlawVO getById(Long id) {
        return cueFlawMapper.getById(id);
    }

    @Override
    public int save(CueFlawDTO cueFlawDTO) {
        CueFlaw cueFlaw = BeanUtil.toBean(cueFlawDTO, CueFlaw.class);
        cueFlaw.setCreateTime(DateUtil.date());
        return cueFlawMapper.save(cueFlaw);
    }

    @Override
    public int update(CueFlawDTO cueFlawDTO) {
        CueFlaw cueFlaw = BeanUtil.toBean(cueFlawDTO, CueFlaw.class);
        cueFlaw.setUpdateTime(DateUtil.date());
        return cueFlawMapper.update(cueFlaw);
    }

    @Override
    public int delete(Long id) {
        CueFlawVO cueFlawVO = cueFlawMapper.getById(id);
        CueFlaw cueFlaw = BeanUtil.toBean(cueFlawVO, CueFlaw.class);
        cueFlaw.setUpdateTime(DateUtil.date());
        cueFlaw.setDeleted(1);
        return cueFlawMapper.update(cueFlaw);
    }
}