| @@ -322,8 +322,10 @@ class UserInfo(CreateUpdateMixin): | ||
| 322 | 322 | def data(self): | 
| 323 | 323 |          return { | 
| 324 | 324 | 'user_id': self.user_id, | 
| 325 | + 'name': self.name, | |
| 325 | 326 | 'username': self.username, | 
| 326 | 327 | 'nickname': self.nickname, | 
| 328 | + 'avatar': self.avatar, | |
| 327 | 329 | } | 
| 328 | 330 |  | 
| 329 | 331 |  | 
| @@ -14,11 +14,10 @@ from group.models import GroupInfo, GroupUserInfo | ||
| 14 | 14 | from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode | 
| 15 | 15 | from utils.error.response_utils import response | 
| 16 | 16 | from utils.group_photo_utils import get_current_photos | 
| 17 | -from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_users_info | |
| 17 | +from utils.redis.rgroup import get_group_info, get_group_users_info, get_group_users_kv_info, set_group_users_info | |
| 18 | 18 | from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, | 
| 19 | 19 | GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, TOUR_GUIDE_GROUP_CUR_GATHER_INFO, | 
| 20 | 20 | TOUR_GUIDE_GROUP_CUR_SESSION, TOUR_GUIDE_GROUP_GEO_INFO, TOUR_GUIDE_GROUP_USER_GEO_LIST) | 
| 21 | -from utils.redis.rprofile import get_profile_by_id | |
| 22 | 21 | from utils.redis.rtourguide import get_tour_guide_own_group | 
| 23 | 22 | from utils.redis.rtouruser import set_tour_user_belong_group | 
| 24 | 23 |  | 
| @@ -233,9 +232,11 @@ def tgu_group_user_locations_api(request): | ||
| 233 | 232 | # [['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], []] | 
| 234 | 233 |      locations = r.georadius(TOUR_GUIDE_GROUP_GEO_INFO % group_id, gather_info.get('gather_lon', 0), gather_info.get('gather_lat', 0), '+inf', unit='m', withdist=True, withcoord=True, sort='ASC') | 
| 235 | 234 |      # [{'location_info': ['x', 0.33, (2.68220901489e-06, 1.26736058093e-06)], 'user_info': {}}, {}] | 
| 235 | + # 获取旅行团用户 KV 信息 | |
| 236 | + group_users_kv_info = get_group_users_kv_info(group_id) | |
| 236 | 237 |      locations = [{ | 
| 237 | 238 | 'location_info': loc, | 
| 238 | - 'user_info': get_profile_by_id(loc[0]) | |
| 239 | + 'user_info': group_users_kv_info(loc[0]) | |
| 239 | 240 | } for loc in locations] | 
| 240 | 241 |  | 
| 241 | 242 |      return response(200, 'Get Tour Guide Group All User Location Success', u'获取旅行团成员地理位置信息成功', { | 
| @@ -6,7 +6,8 @@ from django.conf import settings | ||
| 6 | 6 | from django.core.serializers.json import DjangoJSONEncoder | 
| 7 | 7 |  | 
| 8 | 8 | from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP, | 
| 9 | - GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO) | |
| 9 | + GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO, | |
| 10 | + GROUP_USERS_KV_INFO) | |
| 10 | 11 |  | 
| 11 | 12 |  | 
| 12 | 13 | r = settings.REDIS_CACHE | 
| @@ -43,12 +44,17 @@ def get_group_info(group_id): | ||
| 43 | 44 | def set_group_users_info(group): | 
| 44 | 45 | """ 设置群组用户信息 """ | 
| 45 | 46 | group_users = group.users(admin=False) | 
| 47 | + | |
| 46 | 48 |      group_users_data = { | 
| 47 | 49 | 'group_users': group_users, | 
| 48 | 50 | 'admin_id': group.admin_id, | 
| 49 | 51 | } | 
| 50 | 52 | r.setex(GROUP_USERS_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_data, cls=DjangoJSONEncoder)) | 
| 51 | - return group_users_data | |
| 53 | + | |
| 54 | +    group_users_kv_data = {user_info.get('user_id', ''): user_info for user_info in group_users.get('passed', [])} | |
| 55 | + r.setex(GROUP_USERS_KV_INFO % group.group_id, settings.REDIS_EXPIRED_MONTH, json.dumps(group_users_kv_data, cls=DjangoJSONEncoder)) | |
| 56 | + | |
| 57 | + return group_users_data, group_users_kv_data | |
| 52 | 58 |  | 
| 53 | 59 |  | 
| 54 | 60 | def set_group_users_info_by_id(group_id): | 
| @@ -57,19 +63,24 @@ def set_group_users_info_by_id(group_id): | ||
| 57 | 63 | try: | 
| 58 | 64 | group = GroupInfo.objects.get(group_id=group_id) | 
| 59 | 65 | except GroupInfo.DoesNotExist: | 
| 60 | -        return {} | |
| 66 | +        return {}, {} | |
| 61 | 67 | return set_group_users_info(group) | 
| 62 | 68 |  | 
| 63 | 69 |  | 
| 64 | 70 | def get_group_users_info(group_id, user_id): | 
| 65 | 71 | """ 获取群组用户信息 """ | 
| 66 | -    group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id) | |
| 72 | +    group_users_data = json.loads(r.get(GROUP_USERS_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[0] | |
| 67 | 73 |      group_users, admin_id = group_users_data.get('group_users', {}), group_users_data.get('admin_id', '') | 
| 68 | 74 | if group_users and user_id != admin_id: | 
| 69 | 75 | [group_users.pop(k) for k in ['applying_count', 'applying']] | 
| 70 | 76 | return group_users | 
| 71 | 77 |  | 
| 72 | 78 |  | 
| 79 | +def get_group_users_kv_info(group_id): | |
| 80 | + """ 获取群组用户信息 """ | |
| 81 | +    return json.loads(r.get(GROUP_USERS_KV_INFO % group_id) or '{}') or set_group_users_info_by_id(group_id)[1] | |
| 82 | + | |
| 83 | + | |
| 73 | 84 | # 群组照片相关 | 
| 74 | 85 |  | 
| 75 | 86 |  | 
| @@ -20,6 +20,7 @@ GROUP_INFO = 'group:info:%s' # STRING,群组信息,group_id | ||
| 20 | 20 |  | 
| 21 | 21 | # 群组用户相关 | 
| 22 | 22 | GROUP_USERS_INFO = 'group:users:info:%s' # STRING,群组用户信息,group_id | 
| 23 | +GROUP_USERS_KV_INFO = 'group:users:kv:info:%s' # STRING,群组用户信息,group_id | |
| 23 | 24 | GROUP_USERS_APPLYING_SET = 'group:users:applying:set:%s' # SET,群组用户申请集合,group_id | 
| 24 | 25 | GROUP_USERS_PASSED_SET = 'group:users:passed:set:%s' # SET,群组用户通过集合,group_id | 
| 25 | 26 | GROUP_USERS_REFUSED_SET = 'group:users:refused:set:%s' # SET,群组用户拒绝集合,group_id |