package com.yx.face.service.impl;

import com.yx.face.boot.restful.ServiceException;
import com.yx.face.dao.AreaCodeDao;
import com.yx.face.dao.PoliceStationDao;
import com.yx.face.model.entity.AreaCode;
import com.yx.face.model.vo.AreaCodeVO;
import com.yx.face.model.vo.AreaCodeVOList;
import com.yx.face.service.AreaCodeService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;


/**
 * @description: 地址编码表(AreaCode)表服务实现类 <br>
 * @author: PWB <br>
 * @since: 1.0 <br>
 * @date: 2021-06-04 14:25:45 <br>
 */

@Service
public class AreaCodeServiceImpl implements AreaCodeService {
    @Resource
    private AreaCodeDao areaCodeDao;
    @Resource
    private PoliceStationDao policeStationDao;


    public List<AreaCodeVOList> getProvince() {
        return areaCodeDao.getProvince();
    }
    @Override
    public List<AreaCodeVOList> getCity(Integer areaCodeId) {
        AreaCode areaCode = areaCodeDao.selectByPrimaryKey(areaCodeId);
        if(areaCode==null){
            throw new ServiceException("主键查询到的省份信息为空");
        }
        if (areaCode.getType()!=0){
            throw new ServiceException("这不是省份的主键");
        }
        return areaCodeDao.getAreaList(areaCodeId);
    }

    @Override
    public List<AreaCodeVOList> getArea(Integer areaCodeId) {
        //城市
        AreaCode areaCode = areaCodeDao.selectByPrimaryKey(areaCodeId);
        if(areaCode==null){
            throw new ServiceException("主键查询到的城市信息为空");
        }
        if (areaCode.getType()!=1){
            throw new ServiceException("这不是城市的主键");
        }
        return areaCodeDao.getAreaList(areaCodeId);
    }
    @Override
    public List<AreaCodeVOList> getStreet(Integer areaCodeId) {
        //区县
        AreaCode areaCode = areaCodeDao.selectByPrimaryKey(areaCodeId);
        if(areaCode==null){
            throw new ServiceException("主键查询到的区县信息为空");
        }
        if (areaCode.getType()!=2){
            throw new ServiceException("这不是区县的主键");
        }
        return areaCodeDao.getAreaList(areaCodeId);
    }
    @Override
    public AreaCodeVO getById(Integer areaCodeId) {
        AreaCode areaCode = areaCodeDao.selectByPrimaryKey(areaCodeId);
        if (areaCode == null) {
            throw new ServiceException("地址编码错误，没有找到相关信息");
        }
        AreaCodeVO areaCodeVO = new AreaCodeVO();
        areaCodeVO.setId(areaCode.getId());
        areaCodeVO.setName(areaCode.getName());
        areaCodeVO.setCode(areaCode.getCode());
        areaCodeVO.setSuperCode(areaCode.getSuperCode());
        areaCodeVO.setType(areaCode.getType());
        return areaCodeVO;
    }
}

