36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
from __future__ import absolute_import, unicode_literals
 | 
						|
from apps.utils.tasks import CustomTask
 | 
						|
from apps.am.models import Area
 | 
						|
from celery import shared_task
 | 
						|
from django.core.cache import cache
 | 
						|
from shapely.geometry import Polygon
 | 
						|
 | 
						|
 | 
						|
@shared_task(base=CustomTask)
 | 
						|
def cache_areas_info():
 | 
						|
    """
 | 
						|
    缓存区域信息
 | 
						|
    """
 | 
						|
    area_list = []
 | 
						|
    for i in Area.objects.filter(is_hidden=False).exclude(third_info__xx_rail=None).order_by('number'):
 | 
						|
        points = []
 | 
						|
        is_ok = True
 | 
						|
        for item in i.third_info['xx_rail']['detail']['polygon']['points']:
 | 
						|
            if 'longitude' not in item:
 | 
						|
                is_ok = False
 | 
						|
                break
 | 
						|
            points.append((item['longitude'], item['latitude']))
 | 
						|
        if is_ok:
 | 
						|
            area_dict = {
 | 
						|
                'id': i.id,
 | 
						|
                'name': i.name,
 | 
						|
                'type': i.type,
 | 
						|
                'floor_no': i.third_info['xx_rail']['detail']['floorNo'],
 | 
						|
                'polygon': Polygon(points),
 | 
						|
                'stay_minute_min': i.stay_minute_min,
 | 
						|
                'stay_minute_max': i.stay_minute_max
 | 
						|
            }
 | 
						|
            area_list.append(area_dict)
 | 
						|
    cache.set('area_list', area_list, timeout=None)
 | 
						|
    return len(area_list)
 |