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