运营区删除:redisGeo数据清空
This commit is contained in:
parent
ca2c32462e
commit
081dc26d85
@ -47,6 +47,7 @@ import static com.cdzy.ebikeoperate.model.pojo.table.EbikeAdministrationZoneTabl
|
||||
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeOperationRegionTableDef.EBIKE_OPERATION_REGION;
|
||||
import static com.cdzy.ebikeoperate.model.pojo.table.EbikePointTableDef.EBIKE_POINT;
|
||||
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeRegionLevelTableDef.EBIKE_REGION_LEVEL;
|
||||
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeSiteRegionTableDef.EBIKE_SITE_REGION;
|
||||
import static com.cdzy.ebikeoperate.model.pojo.table.EbikeStaffRegionTableDef.EBIKE_STAFF_REGION;
|
||||
|
||||
/**
|
||||
@ -135,9 +136,15 @@ public class EbikeOperationRegionServiceImpl extends ServiceImpl<EbikeOperationR
|
||||
@Override
|
||||
public void delOperation(ReqBatchRegionDto delRegionDto) {
|
||||
List<EbikeOperationRegion> ebikeOperationRegions = this.mapper.selectListByIds(delRegionDto.getIds());
|
||||
//做不同运营商考虑,通过循环进行删除
|
||||
ebikeOperationRegions.forEach(region ->
|
||||
delPoints(region.getOrgId(), region.getOperationRegionId())
|
||||
);
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(EBIKE_SITE_REGION.OPERATION_REGION_ID.in(delRegionDto.getIds()));
|
||||
staffRegionMapper.deleteByQuery(queryWrapper);
|
||||
//站点与运营商解耦仅与运营区有关,做批量删除
|
||||
redisUtil.deleteStieByOperationIds(delRegionDto.getIds());
|
||||
this.mapper.deleteBatchByIds(delRegionDto.getIds());
|
||||
}
|
||||
|
||||
|
||||
@ -321,6 +321,32 @@ public class RedisUtil {
|
||||
Polygon polygon = parsePolygonFromWKT(polygonFromWKT);
|
||||
return isPointInPolygon(lng, lat, polygon);
|
||||
}
|
||||
/**
|
||||
* 判断坐标点是否在附近站点区内
|
||||
* @param lng 经度
|
||||
* @param lat 纬度
|
||||
* @return true-在内部;false-在外部或边界上(根据业务需求调整)
|
||||
*/
|
||||
public Long isPointInSiteWithSiteRegionId(double lng, double lat,Long areaId) {
|
||||
//查询附近停车区
|
||||
List<String> nearbyParking = findNearbyParking(lng, lat,areaId);
|
||||
if (nearbyParking.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
//获取第一个大致包含该点位的停车区
|
||||
String regionId = checkPointInArea(lng, lat, nearbyParking,areaId);
|
||||
if (regionId == null) {
|
||||
return null;
|
||||
}
|
||||
//进行更精确的判断
|
||||
String polygonFromWKT = getPolygonFromWKT(areaId,regionId,"parking_area:meta:");
|
||||
Polygon polygon = parsePolygonFromWKT(polygonFromWKT);
|
||||
boolean inPolygon = isPointInPolygon(lng, lat, polygon);
|
||||
if (inPolygon) {
|
||||
return Long.valueOf(regionId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断坐标点是否在附近运营区内
|
||||
@ -809,4 +835,21 @@ public class RedisUtil {
|
||||
public Boolean releaseLock(String key) {
|
||||
return redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
public void deleteStieByOperationIds(List<Long> ids) {
|
||||
List<String> parkingKeyList = new ArrayList<>();
|
||||
List<String> siteKeyList = new ArrayList<>();
|
||||
List<String> parkingAreaKeyList = new ArrayList<>();
|
||||
List<String> siteAreaKeyList = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
parkingKeyList.add(parkingKey+id);
|
||||
siteKeyList.add(siteKey+id);
|
||||
parkingAreaKeyList.add("parking_area:meta:"+id);
|
||||
siteAreaKeyList.add("site_area:meta:"+id);
|
||||
}
|
||||
redisTemplate.delete(parkingKeyList);
|
||||
redisTemplate.delete(siteKeyList);
|
||||
redisTemplate.delete(parkingAreaKeyList);
|
||||
redisTemplate.delete(siteAreaKeyList);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user