@@ -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 |