package com.ruoyi.mall.service.impl;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.mall.mapper.MallGoodsClassMapper;
import com.ruoyi.mall.domain.MallGoodsClass;
import com.ruoyi.mall.service.IMallGoodsClassService;

/**
 * 商品类型Service业务层处理
 *
 * @author chang
 * @date 2021-11-25
 */
@Service
public class MallGoodsClassServiceImpl implements IMallGoodsClassService
{
    @Autowired
    private MallGoodsClassMapper mallGoodsClassMapper;

    /**
     * 查询商品类型
     *
     * @param id 商品类型主键
     * @return 商品类型
     */
    @Override
    public MallGoodsClass selectMallGoodsClassById(Long id)
    {
        return mallGoodsClassMapper.selectMallGoodsClassById(id);
    }

    /**
     * 查询商品类型列表
     *
     * @param mallGoodsClass 商品类型
     * @return 商品类型
     */
    @Override
    public List<MallGoodsClass> selectMallGoodsClassList(MallGoodsClass mallGoodsClass)
    {
        return mallGoodsClassMapper.selectMallGoodsClassList(mallGoodsClass);
    }

    /**
     * 查询下拉分类列表
     *
     * @return 商品类型
     */
    @Override
    public List<Map<String,Object>> getClassSelectList()
    {
        //返回数据map集合
        List<Map<String, Object>> resultMap = new ArrayList<>();

        //一级分类列表
        List<MallGoodsClass> goodsClasseParentList = mallGoodsClassMapper.getClassSelectList(0L);
        if (goodsClasseParentList.size() > 0){
            for (MallGoodsClass mallGoodsClass : goodsClasseParentList) {
                Map<String, Object> classParentMap = new HashMap<>();
                classParentMap.put("value",mallGoodsClass.getId());
                classParentMap.put("label",mallGoodsClass.getName());

                //查询二级分类列表
                List<MallGoodsClass> goodsClassesChildList = mallGoodsClassMapper.getClassSelectList(mallGoodsClass.getId());

                List<Map<String, Object>> childMapList = new ArrayList<>();

                if (goodsClassesChildList.size() > 0){
                    for (MallGoodsClass goodsClass : goodsClassesChildList) {
                        Map<String, Object> childMap = new HashMap<>();
                        childMap.put("value",goodsClass.getId());
                        childMap.put("label",goodsClass.getName());
                        childMapList.add(childMap);
                    }
                }
                classParentMap.put("children",childMapList);

                resultMap.add(classParentMap);
            }
        }
        return resultMap;
    }

    /**
     * 新增商品类型
     *
     * @param mallGoodsClass 商品类型
     * @return 结果
     */
    @Override
    public int insertMallGoodsClass(MallGoodsClass mallGoodsClass)
    {
        return mallGoodsClassMapper.insertMallGoodsClass(mallGoodsClass);
    }

    /**
     * 修改商品类型
     *
     * @param mallGoodsClass 商品类型
     * @return 结果
     */
    @Override
    public int updateMallGoodsClass(MallGoodsClass mallGoodsClass)
    {
        return mallGoodsClassMapper.updateMallGoodsClass(mallGoodsClass);
    }

    /**
     * 批量删除商品类型
     *
     * @param ids 需要删除的商品类型主键
     * @return 结果
     */
    @Override
    public int deleteMallGoodsClassByIds(Long[] ids)
    {
        return mallGoodsClassMapper.deleteMallGoodsClassByIds(ids);
    }

    /**
     * 删除商品类型信息
     *
     * @param id 商品类型主键
     * @return 结果
     */
    @Override
    public int deleteMallGoodsClassById(Long id)
    {
        return mallGoodsClassMapper.deleteMallGoodsClassById(id);
    }

    /*
     * 查询所有在使用的商品分类
     *
     * */
    @Override
    public List<MallGoodsClass> selectDefaultMallGoodsClasses(Long parentId){
        return mallGoodsClassMapper.selectDefaultMallGoodsClasses(parentId);
    }

    /**
     * 查询下拉分类列表
     *
     * @param mallGoodsClass 商品类型
     * @return 商品类型集合
     */
    @Override
    public List<MallGoodsClass> getDropdownClassList(MallGoodsClass mallGoodsClass) {
        return mallGoodsClassMapper.getDropdownClassList(mallGoodsClass);
    }
}
