AreaServiceImpl.java 2.17 KB
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.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.govmade.common.utils.PageTreeUtils;
import com.govmade.modules.system.dao.AreaDao;
import com.govmade.modules.system.entity.AreaEntity;
import com.govmade.modules.system.service.AreaService;

import cn.hutool.core.util.StrUtil;

/**
 * 系统管理 - 行政区划设置
 * 
 * @author 刘弈臻
 * @date 2018年8月9日
 */
@Service("AreaService")
public class AreaServiceImpl extends ServiceImpl<AreaDao, AreaEntity> implements AreaService {

	@Override
	public PageTreeUtils queryPage(Map<String, Object> params) {
		String name = (String) params.get("name");

		int currPage = Integer.parseInt((String) params.get("currPage"));
		int pageSize = Integer.parseInt((String) params.get("pageSize"));
		int start = (currPage - 1) * pageSize;
		params.put("name2", name);
		params.put("pageSize2", pageSize);
		params.put("start", start);
		List<AreaEntity> allList = this.baseMapper.listTree(params);
		List<AreaEntity> list = buildAreaTree(allList, 0L);
		int totalCount = super.selectCount(new EntityWrapper<AreaEntity>().like(StrUtil.isNotBlank(name), "name", name)
				.eq("pid", 0).eq("state", 1));
		return new PageTreeUtils(list, totalCount, pageSize, currPage);
	}

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

		for (AreaEntity area : areaList) {
			if (id == area.getPid()) {
				area.setChildren(buildAreaTree(areaList, area.getId()));
				aList.add(area);
			}
		}
		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));
	}

}