modify join policy in api group_join_api

Brightcells 9 years ago
parent
commit
904fabf2d0
1 changed files with 10 additions and 13 deletions
  1. 10 13
      group/views.py

+ 10 - 13
group/views.py

@@ -224,22 +224,19 @@ def group_join_api(request):
224 224
     if group.group_lock:
225 225
         return response(GroupStatusCode.GROUP_HAS_LOCKED)
226 226
 
227
-    # 重复申请校验
228
-    if (r.sismember(GROUP_USERS_APPLYING_SET % group_id, user_id) or
229
-            r.sismember(GROUP_USERS_PASSED_SET % group_id, user_id)):
230
-        return response(GroupStatusCode.DUPLICATE_JOIN_REQUEST)
231
-
232
-    # 群组用户记录创建
233
-    GroupUserInfo.objects.create(
227
+    # 群组用户记录创建,若记录不存在,则创建,若记录已存在,则更新
228
+    group_user, created = GroupUserInfo.objects.get_or_create(
234 229
         group_id=group_id,
235 230
         user_id=user_id,
236
-        current_id=int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1),
237
-        nickname=nickname or user.final_nickname,
238
-        avatar=user.avatar,
239
-        admin=False,
240
-        user_status=GroupUserInfo.PASSED,
241
-        passed_at=tc.utc_datetime(),
242 231
     )
232
+    if not created:
233
+        group_user.current_id = int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1)
234
+        group_user.nickname = nickname or user.final_nickname
235
+        group_user.avatar = user.avatar
236
+        group_user.admin = False
237
+        group_user.user_status = GroupUserInfo.PASSED
238
+        group_user.passed_at = tc.utc_datetime()
239
+        group_user.save()
243 240
 
244 241
     # Redis 群组用户数据缓存
245 242
     set_group_users_info(group)