| package com.xzx.gc.user.service;  | 
|   | 
| import cn.hutool.core.lang.Dict;  | 
| import cn.hutool.core.util.StrUtil;  | 
| import com.xzx.gc.common.constant.Constants;  | 
| import com.xzx.gc.entity.AddressInfo;  | 
| import com.xzx.gc.entity.PartnerGaode;  | 
| import com.xzx.gc.model.admin.AreaModel;  | 
| import com.xzx.gc.model.order.FenceDto;  | 
| import com.xzx.gc.user.mapper.AddressMapper;  | 
| import com.xzx.gc.user.mapper.PartnerGaodeMapper;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.stereotype.Service;  | 
| import org.springframework.transaction.annotation.Transactional;  | 
| import tk.mybatis.mapper.entity.Example;  | 
|   | 
| import java.util.ArrayList;  | 
| import java.util.HashMap;  | 
| import java.util.List;  | 
| import java.util.Map;  | 
|   | 
| @Service  | 
| @Transactional  | 
| public class PartnerGaodeService {  | 
|   | 
|     @Autowired  | 
|     private PartnerGaodeMapper partnerGaodeMapper;  | 
|   | 
|   | 
|     @Autowired  | 
|     private AddressService addressService;  | 
|   | 
|   | 
|     @Autowired  | 
|     private FenceService fenceService;  | 
|   | 
|     public PartnerGaode findByTownId(String areaId){  | 
|         Example example=new Example(PartnerGaode.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("delFlag",Constants.DEL_NOT_FLAG);  | 
|         criteria.andEqualTo("townId",areaId);  | 
|         criteria.andCondition("partner_id!=partner_key");  | 
|         PartnerGaode partnerGaode1 = partnerGaodeMapper.selectOneByExample(example);  | 
|         return partnerGaode1;  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 根据合伙人ID查找合伙人列表  | 
|      * @param partnerId  | 
|      * @return  | 
|      */  | 
|     public List<PartnerGaode> findByPartnerId(String partnerId){  | 
|         PartnerGaode partnerGaode=new PartnerGaode();  | 
|         partnerGaode.setDelFlag(Constants.DEL_NOT_FLAG);  | 
|         partnerGaode.setPartnerId(partnerId);  | 
|         List<PartnerGaode> partnerGaode1 = partnerGaodeMapper.select(partnerGaode);  | 
|         return partnerGaode1;  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 根据经纬度查询所属合伙人  | 
|      * @param lon  | 
|      * @param lat  | 
|      * @return  | 
|      */  | 
|     public String findPartnerIdByLon(String lon,String lat){  | 
|         AddressInfo addressInfo = addressService.getByLon(lon,lat);  | 
|         if(addressInfo!=null) {  | 
|             FenceDto fence = fenceService.getFence(addressInfo.getTownshipId(), false, addressInfo.getLongitude(), addressInfo.getLatitude(), false);  | 
|             if (StrUtil.isNotBlank(fence.getFenceId())) {  | 
|                 return fence.getPartnerId();  | 
|             }  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     /**  | 
|      * 根据经纬度获取合伙人和围栏和区信息  | 
|      * @param lon  | 
|      * @param lat  | 
|      * @return  | 
|      */  | 
|     public FenceDto findPartnerIdAndTownByLon(String lon, String lat,Long addressId ){  | 
|         FenceDto fenceDto=new FenceDto();  | 
|         AddressInfo addressInfo;  | 
|         if(addressId==null) {  | 
|             addressInfo = addressService.getByLon(lon, lat);  | 
|         }else {  | 
|             addressInfo = addressService.findById(addressId);  | 
|         }  | 
|         if(addressInfo!=null) {  | 
|             fenceDto = fenceService.getFence(addressInfo.getTownshipId(), false, addressInfo.getLongitude(), addressInfo.getLatitude(), true);  | 
|         }  | 
|         return fenceDto;  | 
|     }  | 
|   | 
|   | 
|     public List<String> queryAreaByParentner(String partnerId){  | 
|         List<AreaModel> areaList = partnerGaodeMapper.queryAreaByParentner(partnerId);  | 
|         List<String> townIds = new ArrayList<>();  | 
|         for (AreaModel areaM:areaList) {  | 
|             townIds.add(areaM.getTownId());  | 
|         }  | 
|         return townIds;  | 
|     }  | 
|   | 
|   | 
|   | 
| }  |