|
|
@@ -16,8 +16,7 @@ from group.models import GroupInfo, GroupUserInfo
|
16
|
16
|
from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, TokenStatusCode, UserStatusCode
|
17
|
17
|
from utils.error.response_utils import response
|
18
|
18
|
from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_info, set_group_users_info
|
19
|
|
-from utils.redis.rkeys import (TOUR_GUIDE_GROUP_CUR_GATHER_INFO, TOUR_GUIDE_GROUP_CUR_SESSION,
|
20
|
|
- TOUR_GUIDE_GROUP_GEO_SUBMIT_DT)
|
|
19
|
+from utils.redis.rkeys import TOUR_GUIDE_GROUP_CUR_GATHER_INFO, TOUR_GUIDE_GROUP_CUR_SESSION
|
21
|
20
|
from utils.redis.rtourguide import get_tour_guide_own_group, set_tour_guide_own_group
|
22
|
21
|
from utils.redis.rtouruser import get_tour_user_belong_group
|
23
|
22
|
from utils.storage_utils import file_save
|
|
|
@@ -102,41 +101,16 @@ def tg_group_create_api(request):
|
102
|
101
|
})
|
103
|
102
|
|
104
|
103
|
|
105
|
|
-def set_geo_submit_flag(uinfo, geo_at, gather_at):
|
106
|
|
- """ 是否上传过位置字段(即是否失联) """
|
107
|
|
- uinfo['geo_submited'] = False
|
108
|
|
- if geo_at and gather_at:
|
109
|
|
- current_dt = tc.utc_datetime()
|
110
|
|
- delta_seconds = tc.total_seconds(gather_at - current_dt)
|
111
|
|
- # 距离集合时间超过30分钟是5分钟,15分钟到30分钟是3分钟,15分钟以内是1分钟
|
112
|
|
- for delta, gdt in [(1800, 300), (900, 180), (0, 60)]:
|
113
|
|
- if delta_seconds > delta:
|
114
|
|
- uinfo['geo_submited'] = tc.total_seconds(current_dt - geo_at) <= gdt
|
115
|
|
- break
|
116
|
|
- return uinfo
|
117
|
|
-
|
118
|
|
-
|
119
|
104
|
@logit
|
120
|
105
|
def tg_group_detail_api(request):
|
121
|
106
|
""" 旅行团详情 """
|
122
|
107
|
group_id = request.POST.get('group_id', '')
|
123
|
108
|
user_id = request.POST.get('user_id', '')
|
124
|
109
|
|
125
|
|
- # GEO last submit datetimes
|
126
|
|
- geo_dts = r.hgetall(TOUR_GUIDE_GROUP_GEO_SUBMIT_DT % group_id)
|
127
|
|
-
|
128
|
|
- group_info = get_group_info(group_id)
|
129
|
|
- # Gather datetime
|
130
|
|
- gather_at = group_info.get('gather_at', '')
|
131
|
|
- gather_at = tc.utc_string_to_utc_datetime(gather_at, format='%Y-%m-%dT%H:%M:%SZ') if isinstance(gather_at, basestring) else gather_at
|
132
|
|
- if gather_at and tc.utc_datetime() > gather_at:
|
133
|
|
- gather_at = ''
|
134
|
|
-
|
135
|
110
|
group_users_info = get_group_users_info(group_id, user_id)
|
136
|
111
|
# Remove tourguide
|
137
|
112
|
group_passed_users = [uinfo for uinfo in group_users_info['passed'] if not uinfo['subadmin']]
|
138
|
|
- # GEO Submited Flag
|
139
|
|
- group_passed_users = [set_geo_submit_flag(uinfo, tc.utc_string_to_utc_datetime(geo_dts.get(uinfo['user_id'], '')), gather_at) for uinfo in group_passed_users]
|
|
113
|
+ # Update passed users
|
140
|
114
|
group_users_info['passed'] = group_passed_users
|
141
|
115
|
# Update passed count
|
142
|
116
|
group_users_info['passed_count'] = len(group_passed_users)
|
|
|
@@ -145,7 +119,7 @@ def tg_group_detail_api(request):
|
145
|
119
|
|
146
|
120
|
return response(200, 'Get Tour Guide Group Detail Info Success', u'获取旅行团详情成功', {
|
147
|
121
|
'group_id': group_id,
|
148
|
|
- 'group': group_info,
|
|
122
|
+ 'group': get_group_info(group_id),
|
149
|
123
|
'users': group_users_info,
|
150
|
124
|
})
|
151
|
125
|
|