diff-d81043a955670ab14c18350f0fdae2a71f6299e8R151">151
"""
user_id = request.POST.get('user_id', '')
+ current_id = -1
# 判断 user_id 是否存在,如果不存在,则直接分配帐户
- user, created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
+ user, user_created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
'user_id': CurtailUUID.uuid(UserInfo, 'user_id'),
'user_status': UserInfo.ASSIGN,
'assign_ip': ip_addr(request),
@@ -160,34 +162,91 @@ def session_detail_api(request, session):
user_id = user.user_id
# 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建
- group, created = GroupInfo.objects.get_or_create(session_id=session, defaults={
+ group, group_created = GroupInfo.objects.get_or_create(session_id=session, defaults={
'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'),
'admin_id': user_id,
+ 'group_name': user.final_nickname,
+ 'group_default_avatar': 0,
'group_from': GroupInfo.SESSION_GROUP,
'session_id': session,
})
group_id = group.group_id
+ # Redis 群组数据缓存
+ if group_created:
+ group_info = set_group_info(group)
+
# 判断 group_id/user_id 的群组用户是否存在,如果不存在,则直接创建
- group_user = GroupUserInfo.objects.get_or_create(group_id=group_id, user_id=user_id, defaults={
- 'current_id': int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1),
+ group_user, group_user_created = GroupUserInfo.objects.get_or_create(group_id=group_id, user_id=user_id, defaults={
+ # 'current_id': int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1),
+ 'current_id': current_id, # 通过扫描 session_id 二维码进群的用户,默认可以查看该群组所有照片
'nickname': user.final_nickname,
- 'admin': False,
+ 'avatar': user.avatar,
+ 'admin': group_created,
'user_status': GroupUserInfo.PASSED,
'passed_at': tc.utc_datetime(),
})
+ # Redis 群组用户数据缓存
+ if group_user_created:
+ group_users = set_group_users_info(group)
+
+ # 获取 Session 照片
photos = PhotosInfo.objects.filter(session_id=session)
+
+ #
+ if group_created:
+ for photo in photos:
+ photo_path = photo.p_photo_path
+ photo_thumbnail_path = photo_path.replace('.', '_thumbnail.')
+
+ # 群组照片缩略图生成
+ photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail(
+ os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
+ os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
+ settings.THUMBNAIL_MAX_WIDTH
+ )
+
+ # 群组照片记录创建
+ group_photo = GroupPhotoInfo.objects.create(
+ group_id=group_id,
+ user_id=user_id,
+ nickname=user.final_nickname,
+ avatar=user.avatar,
+ photo_path=photo_path,
+ photo_w=photo_w,
+ photo_h=photo_h,
+ photo_thumbnail_path=photo_thumbnail_path,
+ photo_thumbnail_w=photo_thumbnail_w,
+ photo_thumbnail_h=photo_thumbnail_h,
+ photo_from=GroupPhotoInfo.SESSION_GROUP,
+ )
+
+ # 设置群组最后一张照片PK
+ r.set(GROUP_LAST_PHOTO_PK % group_id, group_photo.pk)
+
+ # 获取从 current_id 到 now 的群组照片列表
+ group_photos = GroupPhotoInfo.objects.filter(
+ group_id=group_id,
+ status=True,
+ pk__gt=group_user.current_id,
+ ).order_by(
+ '-pk'
+ )
+ latest_photo = group_photos.first()
+
return JsonResponse({
'status': 200,
'message': u'获取照片列表成功',
'data': {
- 'count': photos.count(),
- 'photos': [p.detail for p in photos],
+ # 'count': photos.count(),
+ # 'photos': [p.detail for p in photos],
+ 'current_id': latest_photo and latest_photo.pk or current_id,
+ 'photos': [photo.photo_info for photo in group_photos],
'group_id': group_id,
- 'group': get_group_info(group_id),
+ 'group': group_info,
'user_id': user_id,
- 'users': get_group_users_info(group_id, user_id),
+ 'users': group_users,
}
})
@@ -8,11 +8,11 @@ except ImportError: |
||
| 8 | 8 |
import Image |
| 9 | 9 |
|
| 10 | 10 |
|
| 11 |
-def make_thumb(im_path, max_width=360): |
|
| 11 |
+def make_thumbnail(im_path, im_thumbnail_path=None, max_width=360): |
|
| 12 | 12 |
im = Image.open(im_path) |
| 13 | 13 |
width, height = im.size |
| 14 | 14 |
thumb_width = min(max_width, width) |
| 15 | 15 |
thumb_height = height / width * thumb_width |
| 16 | 16 |
im.thumbnail((thumb_width, thumb_height)) |
| 17 |
- im.save(im_path, im.format or 'JPEG') |
|
| 17 |
+ im.save(im_thumbnail_path or im_path, im.format or 'JPEG') |
|
| 18 | 18 |
return width, height, thumb_width, thumb_height |