Add api tgu_group_user_remove_api

Brightcells преди 8 години
родител
ревизия
6e5652151a
променени са 4 файла, в които са добавени 72 реда и са изтрити 28 реда
  1. 11 10
      api/urls.py
  2. 8 8
      group/groupuser_views.py
  3. 52 9
      group/tourguidegroupuser_views.py
  4. 1 1
      group/views.py

+ 11 - 10
api/urls.py

@@ -58,14 +58,14 @@ urlpatterns += [
58 58
     url(r'^g/list$', group_views.group_list_api, name='group_list_api'),  # 群组列表
59 59
     url(r'^g/lock$', group_views.group_lock_api, name='group_lock_api'),  # 群组锁定
60 60
     url(r'^g/unlock$', group_views.group_unlock_api, name='group_unlock_api'),  # 群组解锁
61
-    url(r'^g/data$', group_views.group_data_api, name='group_data_api'),  # 群组数据, 评论数, 点赞数
61
+    url(r'^g/data$', group_views.group_data_api, name='group_data_api'),  # 群组数据,评论数,点赞数
62 62
 ]
63 63
 
64
-# 群用户相关
64
+# 群成员相关
65 65
 urlpatterns += [
66
-    url(r'^g/join$', groupuser_views.group_user_join_api, name='group_join_api'),  # 成员申请加群
67
-    url(r'^g/remove$', groupuser_views.group_user_remove_api, name='group_remove_api'),  # 成员移除, 管理员主动, 群成员被动
68
-    url(r'^g/quit$', groupuser_views.group_user_quit_api, name='group_quit_api'),  # 成员退出,群成员主动
66
+    url(r'^g/join$', groupuser_views.group_user_join_api, name='group_join_api'),  # 群成员加群
67
+    url(r'^g/remove$', groupuser_views.group_user_remove_api, name='group_remove_api'),  # 群成员移除,管理员主动,群成员被动
68
+    url(r'^g/quit$', groupuser_views.group_user_quit_api, name='group_quit_api'),  # 群成员退出,群成员主动
69 69
 ]
70 70
 
71 71
 # 旅行团相关
@@ -80,12 +80,13 @@ urlpatterns += [
80 80
     url(r'^tg/transfer$', tourguidegroup_views.tg_group_transfer_api, name='tg_group_transfer_api'),  # 旅行团权限管理转移
81 81
 ]
82 82
 
83
-# 旅行团用户相关
83
+# 旅行团成员相关
84 84
 urlpatterns += [
85
-    url(r'^tgu/join$', tourguidegroupuser_views.tgu_group_user_join_api, name='tgu_group_user_join_api'),  # 旅行团用户加群
86
-    url(r'^tgu/update$', tourguidegroupuser_views.tgu_group_user_update_api, name='tg_group_update_api'),  # 旅行团用户更新
87
-    url(r'^tgu/locations$', tourguidegroupuser_views.tgu_group_user_locations_api, name='tgu_group_user_locations_api'),  # 旅行团所有用户位置信息
88
-    url(r'^tgu/location$', tourguidegroupuser_views.tgu_group_user_location_api, name='tgu_group_user_location_api'),  # 旅行团单个用户位置信息
85
+    url(r'^tgu/join$', tourguidegroupuser_views.tgu_group_user_join_api, name='tgu_group_user_join_api'),  # 旅行团成员加团
86
+    url(r'^tgu/remove$', tourguidegroupuser_views.tgu_group_user_remove_api, name='tgu_group_user_remove_api'),  # 旅行团成员移除,管理员主动,团成员被动
87
+    url(r'^tgu/update$', tourguidegroupuser_views.tgu_group_user_update_api, name='tg_group_update_api'),  # 旅行团成员信息更新
88
+    url(r'^tgu/locations$', tourguidegroupuser_views.tgu_group_user_locations_api, name='tgu_group_user_locations_api'),  # 旅行团所有成员位置信息
89
+    url(r'^tgu/location$', tourguidegroupuser_views.tgu_group_user_location_api, name='tgu_group_user_location_api'),  # 旅行团单个成员位置信息
89 90
 ]
90 91
 
91 92
 # 飞图相关

+ 8 - 8
group/groupuser_views.py

@@ -21,7 +21,7 @@ r = settings.REDIS_CACHE
21 21
 
22 22
 @logit
23 23
 def group_user_join_api(request):
24
-    """ 申请加群 """
24
+    """ 群成员加群 """
25 25
     group_id = request.POST.get('group_id', '')
26 26
     user_id = request.POST.get('user_id', '')
27 27
     nickname = request.POST.get('nickname', '')
@@ -67,7 +67,7 @@ def group_user_join_api(request):
67 67
 
68 68
     curinfo = get_current_photos(group_id, user_id, group_user.current_id)
69 69
 
70
-    return response(200, 'Apply Success', u'申请成功', {
70
+    return response(200, 'Group User Join Success', u'群成员加群成功', {
71 71
         'current_id': curinfo.get('current_id', ''),
72 72
         'photos': curinfo.get('photos', ''),
73 73
         'group_id': group_id,
@@ -79,7 +79,7 @@ def group_user_join_api(request):
79 79
 
80 80
 @logit
81 81
 def group_user_remove_api(request):
82
-    """ 成员移除 """
82
+    """ 群成员移除,管理员主动,群成员被动 """
83 83
     group_id = request.POST.get('group_id', '')
84 84
     admin_id = request.POST.get('admin_id', '')
85 85
     user_id = request.POST.get('user_id', '')
@@ -96,7 +96,7 @@ def group_user_remove_api(request):
96 96
 
97 97
     # 群组用户校验
98 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'获取群组数据成功', {