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