Jelajahi Sumber

APP区域搜索

helixiao 2 tahun lalu
induk
melakukan
9508e9fffa

+ 1 - 1
src/main/java/com/ydtech/modules/admin/controller/SysPcAddressController.java

@@ -82,7 +82,7 @@ public class SysPcAddressController extends BaseController{
 
 
     @GetMapping("/queryRegionInfo/{type}")
     @GetMapping("/queryRegionInfo/{type}")
     @ApiOperation(value = "区域人员概览")
     @ApiOperation(value = "区域人员概览")
-    public HttpResult<List<RegionInfoVo>> queryRegionInfo(@PathVariable("type") @ApiParam("全部:null   渠道:1 代理:2") String type) {
+    public HttpResult<List<RegionInfoVo>> queryRegionInfo(@PathVariable("type") @ApiParam("全部:0   渠道:1 代理:2") Integer type) {
         return HttpResult.ok("success", this.sysPcAddressService.queryRegionInfo(type));
         return HttpResult.ok("success", this.sysPcAddressService.queryRegionInfo(type));
     }
     }
 
 

+ 9 - 1
src/main/java/com/ydtech/modules/admin/controller/websocket/SysGeographyPositionController.java

@@ -3,10 +3,12 @@ package com.ydtech.modules.admin.controller.websocket;
 
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.dto.AdressRangeDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
+import com.ydtech.modules.admin.model.vo.SysGeographyPositionInfoVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -53,10 +55,16 @@ public class SysGeographyPositionController {
 
 
     @GetMapping("/queryRegionInfo/{type}")
     @GetMapping("/queryRegionInfo/{type}")
     @ApiOperation(value = "区域人员概览")
     @ApiOperation(value = "区域人员概览")
-    public HttpResult<List<RegionInfoVo>> queryRegionInfo(@PathVariable("type") @ApiParam("全部:null  渠道:1 代理:2")  String type) {
+    public HttpResult<List<RegionInfoVo>> queryRegionInfo(@PathVariable("type") @ApiParam("全部:0  渠道:1 代理:2")  Integer type) {
         return HttpResult.ok("success", this.sysGeographyPositionService.queryRegionInfo(type));
         return HttpResult.ok("success", this.sysGeographyPositionService.queryRegionInfo(type));
     }
     }
 
 
+    @PostMapping("/locations")
+    @ApiOperation(value = "APP地址范围查询")
+    public List<SysGeographyPositionInfoVo> getLocationsWithinRadius(@RequestBody AdressRangeDto adressRangeDto) {
+        return sysGeographyPositionService.findLocationsWithinRadius(adressRangeDto);
+    }
+
 
 
 
 
 }
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/GeoService.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.service;
 package com.ydtech.modules.admin.service;
 
 
+import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.model.po.SysPcAddress;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.geo.Circle;
 import org.springframework.data.geo.Circle;
@@ -33,6 +34,12 @@ public class GeoService {
         }
         }
     }
     }
 
 
+    public void addLocationGeography(List<SysGeographyPosition> list, String geoKey) {
+        for (SysGeographyPosition location : list) {
+            addLocation(geoKey,location.getId(),Double.parseDouble(location.getLongitude()) , Double.parseDouble(location.getLatitude()));
+        }
+    }
+
 
 
 
 
     // 查找某位置附近的ID集合
     // 查找某位置附近的ID集合

+ 5 - 1
src/main/java/com/ydtech/modules/admin/service/SysGeographyPositionService.java

@@ -3,10 +3,12 @@ package com.ydtech.modules.admin.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.dto.AdressRangeDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
+import com.ydtech.modules.admin.model.vo.SysGeographyPositionInfoVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 
@@ -20,5 +22,7 @@ public interface SysGeographyPositionService extends IService<SysGeographyPositi
 
 
     SysPcAddressNumVo queryPcNum();
     SysPcAddressNumVo queryPcNum();
 
 
-    List<RegionInfoVo> queryRegionInfo(String type);
+    List<RegionInfoVo> queryRegionInfo(Integer type);
+
+    List<SysGeographyPositionInfoVo> findLocationsWithinRadius(AdressRangeDto adressRangeDto);
 }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/service/SysPcAddressService.java

@@ -35,5 +35,5 @@ public interface SysPcAddressService extends IService<SysPcAddress> {
 
 
     SysPcAddressNumVo queryPcNum();
     SysPcAddressNumVo queryPcNum();
 
 
-    List<RegionInfoVo> queryRegionInfo(String type);
+    List<RegionInfoVo> queryRegionInfo(Integer type);
 }
 }

+ 34 - 10
src/main/java/com/ydtech/modules/admin/service/impl/SysGeographyPositionServiceImpl.java

@@ -11,13 +11,14 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.AdressRangeDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
 import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo;
-import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionInfoVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionInfoVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
 import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo;
+import com.ydtech.modules.admin.service.GeoService;
 import com.ydtech.modules.admin.service.SysGeographyPositionRecordService;
 import com.ydtech.modules.admin.service.SysGeographyPositionRecordService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.admin.service.SysUserService;
@@ -47,7 +48,10 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
 
 
     @Resource
     @Resource
     private SysDeptMapper sysDeptMapper;
     private SysDeptMapper sysDeptMapper;
+    @Resource
+    private GeoService geoService;
 
 
+    private static final String APP_GEO_KEY = "APPLocations";
 
 
 
 
     @Override
     @Override
@@ -58,10 +62,10 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getProvince()), SysGeographyPosition::getProvince, sysGeographyPositionDto.getProvince())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getProvince()), SysGeographyPosition::getProvince, sysGeographyPositionDto.getProvince())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getCity()), SysGeographyPosition::getCity, sysGeographyPositionDto.getCity())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getCity()), SysGeographyPosition::getCity, sysGeographyPositionDto.getCity())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getDistrict()), SysGeographyPosition::getDistrict, sysGeographyPositionDto.getDistrict())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getDistrict()), SysGeographyPosition::getDistrict, sysGeographyPositionDto.getDistrict())
-                .in(SysGeographyPosition::getSource, Arrays.asList("1","2"))
+                .in(SysGeographyPosition::getSource, Arrays.asList("1", "2"))
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getSource()), SysGeographyPosition::getSource, sysGeographyPositionDto.getSource())
                 .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getSource()), SysGeographyPosition::getSource, sysGeographyPositionDto.getSource())
                 .orderByDesc(SysGeographyPosition::getCreateTime));
                 .orderByDesc(SysGeographyPosition::getCreateTime));
-        if (list.size()==0) return new SysGeographyPositionVo();
+        if (list.size() == 0) return new SysGeographyPositionVo();
 
 
         List<SysGeographyPositionInfoVo> sysGeographyPositionList = BeanUtil.copyToList(list, SysGeographyPositionInfoVo.class);
         List<SysGeographyPositionInfoVo> sysGeographyPositionList = BeanUtil.copyToList(list, SysGeographyPositionInfoVo.class);
         //填充机构名
         //填充机构名
@@ -79,7 +83,7 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
         Long aLong = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getStatus, 1));
         Long aLong = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getStatus, 1));
         sysGeographyPositionVo.setManNum(aLong);
         sysGeographyPositionVo.setManNum(aLong);
 
 
-        return  sysGeographyPositionVo;
+        return sysGeographyPositionVo;
     }
     }
 
 
     @Override
     @Override
@@ -87,7 +91,7 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
         Page<SysGeographyPositionRecord> page = new Page<>(sysGeographyPositionPageDto.getPageNum(), sysGeographyPositionPageDto.getPageSize());
         Page<SysGeographyPositionRecord> page = new Page<>(sysGeographyPositionPageDto.getPageNum(), sysGeographyPositionPageDto.getPageSize());
 
 
         LambdaQueryWrapper<SysGeographyPositionRecord> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<SysGeographyPositionRecord> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(StringUtils.isNotEmpty(sysGeographyPositionPageDto.getId()),SysGeographyPositionRecord::getUserId, sysGeographyPositionPageDto.getId());
+        wrapper.eq(StringUtils.isNotEmpty(sysGeographyPositionPageDto.getId()), SysGeographyPositionRecord::getUserId, sysGeographyPositionPageDto.getId());
         wrapper.orderByDesc(SysGeographyPositionRecord::getCreateTime);
         wrapper.orderByDesc(SysGeographyPositionRecord::getCreateTime);
 
 
         Page<SysGeographyPositionRecord> insOrdersPage = sysGeographyPositionRecordService.page(page, wrapper);
         Page<SysGeographyPositionRecord> insOrdersPage = sysGeographyPositionRecordService.page(page, wrapper);
@@ -103,8 +107,8 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
         SysPcAddressNumVo sysPcAddressNumVo = new SysPcAddressNumVo();
         SysPcAddressNumVo sysPcAddressNumVo = new SysPcAddressNumVo();
 
 
         Long all = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>());
         Long all = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>());
-        Long channelNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getSource,1));
-        Long proxyNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getSource,2));
+        Long channelNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getSource, 1));
+        Long proxyNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper<SysGeographyPosition>().eq(SysGeographyPosition::getSource, 2));
         sysPcAddressNumVo.setAllNum(all);
         sysPcAddressNumVo.setAllNum(all);
         sysPcAddressNumVo.setProxyNum(proxyNum);
         sysPcAddressNumVo.setProxyNum(proxyNum);
         sysPcAddressNumVo.setChannelNum(channelNum);
         sysPcAddressNumVo.setChannelNum(channelNum);
@@ -114,12 +118,12 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
     }
     }
 
 
     @Override
     @Override
-    public List<RegionInfoVo> queryRegionInfo(String type) {
+    public List<RegionInfoVo> queryRegionInfo(Integer type) {
         List<RegionInfoVo> regionInfoVos = new ArrayList<>();
         List<RegionInfoVo> regionInfoVos = new ArrayList<>();
         //全部:null  渠道:1 代理:2
         //全部:null  渠道:1 代理:2
         List<SysGeographyPosition> sysPcAddresses = sysGeographyPositionMapper.selectList(new LambdaQueryWrapper<SysGeographyPosition>()
         List<SysGeographyPosition> sysPcAddresses = sysGeographyPositionMapper.selectList(new LambdaQueryWrapper<SysGeographyPosition>()
-                .in(SysGeographyPosition::getSource, Arrays.asList("1","2"))
-                .eq(StringUtils.isNotEmpty(type),SysGeographyPosition::getSource, type));
+                .in(SysGeographyPosition::getSource, Arrays.asList("1", "2"))
+                .eq(type != 0, SysGeographyPosition::getSource, type));
         Map<String, List<SysGeographyPosition>> map = sysPcAddresses.stream().collect(Collectors.groupingBy(SysGeographyPosition::getDistrict));
         Map<String, List<SysGeographyPosition>> map = sysPcAddresses.stream().collect(Collectors.groupingBy(SysGeographyPosition::getDistrict));
 
 
         for (Map.Entry<String, List<SysGeographyPosition>> entry : map.entrySet()) {
         for (Map.Entry<String, List<SysGeographyPosition>> entry : map.entrySet()) {
@@ -132,7 +136,27 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
 
 
     }
     }
 
 
+    @Override
+    public List<SysGeographyPositionInfoVo> findLocationsWithinRadius(AdressRangeDto adressRangeDto) {
+
+        geoService.addLocationGeography(list(), APP_GEO_KEY);
+        List<String> nearbyIds = geoService.findNearbyIds(APP_GEO_KEY, adressRangeDto.getLongitude(), adressRangeDto.getLatitude(), adressRangeDto.getRadius());
+        List<SysGeographyPosition> sysGeographyPositions = listByIds(nearbyIds);
+        List<SysGeographyPositionInfoVo> sysGeographyPositionInfoVoList = BeanUtil.copyToList(sysGeographyPositions, SysGeographyPositionInfoVo.class);
+        if (sysGeographyPositionInfoVoList.size()==0) return sysGeographyPositionInfoVoList;
 
 
+        for (SysGeographyPositionInfoVo sysGeographyPositionInfoVo : sysGeographyPositionInfoVoList) {
+            SysUser sysUser = sysUserService.getById(sysGeographyPositionInfoVo.getId());
+            if (sysUser == null) continue;
+            SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                    .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
+            if (sysDept == null) continue;
+            sysGeographyPositionInfoVo.setDeptName(sysDept.getName());
+        }
+
+        return sysGeographyPositionInfoVoList;
+
+    }
 
 
 
 
 }
 }

+ 2 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressServiceImpl.java

@@ -111,12 +111,12 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
     }
     }
 
 
     @Override
     @Override
-    public List<RegionInfoVo> queryRegionInfo(String type) {
+    public List<RegionInfoVo> queryRegionInfo(Integer type) {
         List<RegionInfoVo> regionInfoVos = new ArrayList<>();
         List<RegionInfoVo> regionInfoVos = new ArrayList<>();
         //全部:null   渠道:1 代理:2
         //全部:null   渠道:1 代理:2
         List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
         List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
                 .in(SysPcAddress::getSource, Arrays.asList("1","2"))
                 .in(SysPcAddress::getSource, Arrays.asList("1","2"))
-                .eq(StringUtils.isNotEmpty(type),SysPcAddress::getSource, type));
+                .eq(type != 0,SysPcAddress::getSource, type));
         Map<String, List<SysPcAddress>> map = sysPcAddresses.stream().collect(Collectors.groupingBy(SysPcAddress::getDistrict));
         Map<String, List<SysPcAddress>> map = sysPcAddresses.stream().collect(Collectors.groupingBy(SysPcAddress::getDistrict));
 
 
         for (Map.Entry<String, List<SysPcAddress>> entry : map.entrySet()) {
         for (Map.Entry<String, List<SysPcAddress>> entry : map.entrySet()) {