package com.ruoyi.syzy.service.impl;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.syzy.domain.BWwwGkmc;
import com.ruoyi.syzy.dto.GkmcDTO;
import com.ruoyi.syzy.dto.GkmcTreeDTO;
import com.ruoyi.syzy.mapper.BWwwGkmcMapper;
import com.ruoyi.syzy.service.IBWwwGkmcService;

/**
 * 高考名词Service业务层处理
 * 
 * @author mingxue
 * @date 2021-08-19
 */
@Service
public class BWwwGkmcServiceImpl implements IBWwwGkmcService {
    @Autowired
    private BWwwGkmcMapper bWwwGkmcMapper;

    /**
     * 查询高考名词
     * 
     * @param id 高考名词ID
     * @return 高考名词
     */
    @Override
    public BWwwGkmc selectBWwwGkmcById(Long id) {
        return bWwwGkmcMapper.selectBWwwGkmcById(id);
    }

    @Override
    public BWwwGkmc info(Long id) {
        BWwwGkmc res = bWwwGkmcMapper.selectBWwwGkmcById(id);
        final BWwwGkmc prev = bWwwGkmcMapper.prev(id);
        if (null != prev) {
            res.setPrev(new GkmcDTO().setId(prev.getId()).setName(prev.getName()));
        }
        final BWwwGkmc next = bWwwGkmcMapper.next(id);
        if (null != next) {
            res.setNext(new GkmcDTO().setId(next.getId()).setName(next.getName()));
        }
        return res;
    }

    /**
     * 查询高考名词列表
     * 
     * @param bWwwGkmc 高考名词
     * @return 高考名词
     */
    @Override
    public List<BWwwGkmc> selectBWwwGkmcList(BWwwGkmc bWwwGkmc) {
        return bWwwGkmcMapper.selectBWwwGkmcList(bWwwGkmc);
    }

    @Override
    public List<GkmcTreeDTO> all() {
        Map<String, GkmcTreeDTO> cache = new LinkedHashMap<>(12);
        bWwwGkmcMapper.selectBWwwGkmcList(new BWwwGkmc().setStatus(1)).forEach(row -> {
            String key = StringUtils.trim(row.getType());
            if (!cache.containsKey(key)) {
                cache.put(key, new GkmcTreeDTO().setType(key));
            }
            cache.get(key).addChild(row);
        });
        return new ArrayList<>(cache.values());
    }

    /**
     * 新增高考名词
     * 
     * @param bWwwGkmc 高考名词
     * @return 结果
     */
    @Override
    public int insertBWwwGkmc(BWwwGkmc bWwwGkmc) {
        bWwwGkmc.setCreateTime(DateUtils.getNowDate());
        return bWwwGkmcMapper.insertBWwwGkmc(bWwwGkmc);
    }

    /**
     * 修改高考名词
     * 
     * @param bWwwGkmc 高考名词
     * @return 结果
     */
    @Override
    public int updateBWwwGkmc(BWwwGkmc bWwwGkmc) {
        return bWwwGkmcMapper.updateBWwwGkmc(bWwwGkmc);
    }

    /**
     * 批量删除高考名词
     * 
     * @param ids 需要删除的高考名词ID
     * @return 结果
     */
    @Override
    public int deleteBWwwGkmcByIds(Long[] ids) {
        return bWwwGkmcMapper.deleteBWwwGkmcByIds(ids);
    }

    /**
     * 删除高考名词信息
     * 
     * @param id 高考名词ID
     * @return 结果
     */
    @Override
    public int deleteBWwwGkmcById(Long id) {
        return bWwwGkmcMapper.deleteBWwwGkmcById(id);
    }
}
