98
     try:
99
-        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
99
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
100 100
     except GroupUserInfo.DoesNotExist:
101 101
         return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
102 102
 
@@ -112,7 +112,7 @@ def group_user_remove_api(request):
112 112
     r.srem(GROUP_USERS_PASSED_SET % group_id, user_id)
113 113
     r.sadd(GROUP_USERS_DELETED_SET % group_id, user_id)
114 114
 
115
-    return response(200, 'Remove Success', u'用户移除成功', {
115
+    return response(200, 'Group User Remove Success', u'群成员移除成功', {
116 116
         'group_id': group_id,
117 117
         'users': group_users,
118 118
     })
@@ -120,7 +120,7 @@ def group_user_remove_api(request):
120 120
 
121 121
 @logit
122 122
 def group_user_quit_api(request):
123
-    """ 成员退出 """
123
+    """ 群成员退出,群成员主动 """
124 124
     group_id = request.POST.get('group_id', '')
125 125
     user_id = request.POST.get('user_id', '')
126 126
 
@@ -136,7 +136,7 @@ def group_user_quit_api(request):
136 136
 
137 137
     # 群组用户校验
138 138
     try:
139
-        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
139
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
140 140
     except GroupUserInfo.DoesNotExist:
141 141
         return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
142 142
 
@@ -152,7 +152,7 @@ def group_user_quit_api(request):
152 152
     r.srem(GROUP_USERS_PASSED_SET % group_id, user_id)
153 153
     r.sadd(GROUP_USERS_QUIT_SET % group_id, user_id)
154 154
 
155
-    return response(200, 'Quit Success', u'用户退出成功', {
155
+    return response(200, 'Group User Quit Success', u'群成员退出成功', {
156 156
         'group_id': group_id,
157 157
         'users': group_users,
158 158
     })

+ 52 - 9
group/tourguidegroupuser_views.py

@@ -5,6 +5,7 @@ from __future__ import division
5 5
 import json
6 6
 
7 7
 from django.conf import settings
8
+from django.db import transaction
8 9
 from logit import logit
9 10
 from TimeConvert import TimeConvert as tc
10 11
 
@@ -26,7 +27,7 @@ r = settings.REDIS_CACHE
26 27
 
27 28
 @logit
28 29
 def tgu_group_user_join_api(request):
29
-    """ 旅行团用户加群 """
30
+    """ 旅行团成员加团 """
30 31
     admin_id = request.POST.get('admin_id', '')  # 导游唯一标识,识别二维码获取
31 32
     user_id = request.POST.get('user_id', '')
32 33
     nickname = request.POST.get('nickname', '')
@@ -100,7 +101,7 @@ def tgu_group_user_join_api(request):
100 101
     # 添加默认地理位置信息
101 102
     r.geoadd(TOUR_GUIDE_GROUP_GEO_INFO % group_id, 0, 0, user_id)
102 103
 
103
-    return response(200, 'Apply Success', u'申请成功', {
104
+    return response(200, 'Tour Guide User Join Success', u'旅行团成员加团成功', {
104 105
         'current_id': curinfo.get('current_id', ''),
105 106
         'photos': curinfo.get('photos', ''),
106 107
         'group_id': group_id,
@@ -111,8 +112,50 @@ def tgu_group_user_join_api(request):
111 112
 
112 113
 
113 114
 @logit
115
+def tgu_group_user_remove_api(request):
116
+    """ 旅行团成员移除,管理员主动,团成员被动 """
117
+    group_id = request.POST.get('group_id', '')
118
+    admin_id = request.POST.get('admin_id', '')  # 导游唯一标识
119
+    user_id = request.POST.get('user_id', '')
120
+
121
+    # 群组校验
122
+    try:
123
+        group = GroupInfo.objects.get(group_id=group_id)
124
+    except GroupInfo.DoesNotExist:
125
+        return response(GroupStatusCode.GROUP_NOT_FOUND)
126
+
127
+    # 权限校验
128
+    if not GroupUserInfo.objects.filter(group_id=group_id, user_id=admin_id, subadmin=True, status=True).exists() or admin_id == user_id:  # 管理员也不允许将自己移除
129
+        return response(GroupStatusCode.NO_UPDATE_PERMISSION)
130
+
131
+    # 群组用户校验
132
+    try:
133
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
134
+    except GroupUserInfo.DoesNotExist:
135
+        return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
136
+
137
+    # 群组用户移除
138
+    group_user.user_status = GroupUserInfo.DELETED
139
+    group_user.deleted_at = tc.utc_datetime()
140
+    group_user.save()
141
+
142
+    # Redis 群组数据缓存更新
143
+    group_users = set_group_users_info(group)
144
+
145
+    # Redis 群组删除集合缓存
146
+    r.srem(GROUP_USERS_PASSED_SET % group_id, user_id)
147
+    r.sadd(GROUP_USERS_DELETED_SET % group_id, user_id)
148
+
149
+    return response(200, 'Tour Guide User Remove Success', u'旅行团成员移除成功', {
150
+        'group_id': group_id,
151
+        'users': group_users,
152
+    })
153
+
154
+
155
+@logit
156
+@transaction.atomic
114 157
 def tgu_group_user_update_api(request):
115
-    """ 旅行团用户更新 """
158
+    """ 旅行团成员信息更新 """
116 159
     group_id = request.POST.get('group_id', '')
117 160
     admin_id = request.POST.get('admin_id', '')  # 导游唯一标识
118 161
     user_id = request.POST.get('user_id', '')
@@ -139,7 +182,7 @@ def tgu_group_user_update_api(request):
139 182
 
140 183
     # 权限
141 184
     try:
142
-        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
185
+        group_user = GroupUserInfo.objects.select_for_update().get(group_id=group_id, user_id=user_id, status=True)
143 186
     except GroupUserInfo.DoesNotExist:
144 187
         return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
145 188
 
@@ -160,7 +203,7 @@ def tgu_group_user_update_api(request):
160 203
     # Redis 群组用户数据缓存
161 204
     group_users = set_group_users_info(group)
162 205
 
163
-    return response(200, 'Update Group Success', u'群组更新成功', {
206
+    return response(200, 'Tour Guide User Update Success', u'旅行团成员信息更新成功', {
164 207
         'group_id': group_id,
165 208
         'group': group.data,
166 209
         'users': group_users,
@@ -169,7 +212,7 @@ def tgu_group_user_update_api(request):
169 212
 
170 213
 @logit
171 214
 def tgu_group_user_locations_api(request):
172
-    """ 旅行团所有用户位置信息 """
215
+    """ 旅行团所有成员位置信息 """
173 216
     group_id = request.POST.get('group_id', '')
174 217
     admin_id = request.POST.get('admin_id', '')  # 导游唯一标识
175 218
 
@@ -188,7 +231,7 @@ def tgu_group_user_locations_api(request):
188 231
         'user_info': get_profile_by_id(loc[0])
189 232
     } for loc in locations]
190 233
 
191
-    return response(200, 'Get Tour Guide Group All User Location Success', u'获取旅行团用户地理位置信息成功', {
234
+    return response(200, 'Get Tour Guide Group All User Location Success', u'获取旅行团成员地理位置信息成功', {
192 235
         'group_id': group_id,
193 236
         'locations': locations,
194 237
     })
@@ -196,7 +239,7 @@ def tgu_group_user_locations_api(request):
196 239
 
197 240
 @logit
198 241
 def tgu_group_user_location_api(request):
199
-    """ 旅行团单个用户位置信息 """
242
+    """ 旅行团单个成员位置信息 """
200 243
     group_id = request.POST.get('group_id', '')
201 244
     admin_id = request.POST.get('admin_id', '')  # 导游唯一标识
202 245
     user_id = request.POST.get('user_id', '')
@@ -208,7 +251,7 @@ def tgu_group_user_location_api(request):
208 251
     session_id = r.get(TOUR_GUIDE_GROUP_CUR_SESSION % group_id)
209 252
     locations = r.lrange(TOUR_GUIDE_GROUP_USER_GEO_LIST % (group_id, session_id, user_id), 0, -1)
210 253
 
211
-    return response(200, 'Get Tour Guide Group User Location Success', u'获取旅行团用户地理位置信息成功', {
254
+    return response(200, 'Get Tour Guide Group User Location Success', u'获取旅行团成员地理位置信息成功', {
212 255
         'group_id': group_id,
213 256
         'user_id': user_id,
214 257
         'locations': [json.loads(loc) for loc in locations]

+ 1 - 1
group/views.py

@@ -229,7 +229,7 @@ def group_unlock_api(request):
229 229
 
230 230
 @logit
231 231
 def group_data_api(request):
232
-    """ 群组数据, 评论数, 点赞数 """
232
+    """ 群组数据,评论数,点赞数 """
233 233
     group_id = request.POST.get('group_id', '')
234 234
 
235 235
     return response(200, 'Get Group Data Success', u'获取群组数据成功', {

kodo - Gogs: Go Git Service

Aucune description

Brightcells: 627187a7d7 Update Kodo 8 ans auparavant
..
page 627187a7d7 Update Kodo 8 ans auparavant