package com.govmade.modules.system.service.impl;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.govmade.common.utils.PageUtils;
import com.govmade.modules.system.dao.AreaDao;
import com.govmade.modules.system.entity.AreaEntity;
import com.govmade.modules.system.service.AreaService;

/**
 * 系统管理 - 行政区划设置
 * 
 * @author 刘弈臻
 * @date 2018年8月9日
 */
@Service("AreaService")
public class AreaServiceImpl extends ServiceImpl<AreaDao,AreaEntity> implements AreaService{
     
	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		
		String name = (String) params.get("name");
		List<AreaEntity> list=buildAreaTree(this.baseMapper.listTree(name),0);
		Page<AreaEntity> page= new Page<AreaEntity>();
		page.setRecords(list);
		return new PageUtils(page);

    }
	
	
/**
 *递归方法
 */
	 private List<AreaEntity> buildAreaTree(List<AreaEntity> list, long id) {
	        List<AreaEntity> aList = Lists.newArrayList();

	        for (AreaEntity a : list) {
	            if (id == a.getPid()) {
	                a.setChildren(buildAreaTree(list, a.getId()));
	                aList.add(a);
	            }
	        }
	        return aList;
	    }
		
	
	@Override
	public void save(AreaEntity area) {
		super.insertOrUpdate(area);
	}
	
	@Override
	public void deleteBatch(Set<Long> ids) {
		this.baseMapper.deleteBatch(ids);
	}
	
	@Override
	public Integer checkArea(String name) {
		return super.selectCount(new EntityWrapper<AreaEntity>().eq("name",name));
	}
	
}