add return field thumbup for api flyimg_upload_api/flyimg_list_api/session_detail_api/pai2_home_api

Brightcells 9 年之前
父節點
當前提交
15772543dd
共有 5 個文件被更改,包括 44 次插入5 次删除
  1. 8 2
      group/models.py
  2. 10 1
      group/views.py
  3. 1 1
      photo/views.py
  4. 24 1
      utils/redis/rgroup.py
  5. 1 0
      utils/redis/rkeys.py

+ 8 - 2
group/models.py

@@ -8,6 +8,11 @@ from pai2.basemodels import CreateUpdateMixin
8 8
 
9 9
 from utils.url_utils import img_url
10 10
 
11
+from utils.redis.rgroup import get_group_photo_thumbup_flag
12
+
13
+
14
+r = settings.REDIS_CACHE
15
+
11 16
 
12 17
 class GroupInfo(CreateUpdateMixin):
13 18
     APP_GROUP = 0
@@ -160,8 +165,7 @@ class GroupPhotoInfo(CreateUpdateMixin):
160 165
     def photo_thumbnail_url(self):
161 166
         return img_url(self.photo_thumbnail_path)
162 167
 
163
-    @property
164
-    def photo_info(self):
168
+    def photo_info(self, user_id):
165 169
         try:
166 170
             group = GroupInfo.objects.get(group_id=self.group_id)
167 171
         except GroupInfo.DoesNotExist:
@@ -171,6 +175,7 @@ class GroupPhotoInfo(CreateUpdateMixin):
171 175
             'group_name': group and group.group_name,
172 176
             'group_default_avatar': group and group.group_default_avatar,
173 177
             'group_avatar': group and group.group_avatar_url,
178
+            'group_from': group and group.group_from,
174 179
             'photo_id': self.pk,
175 180
             'photo_url': self.photo_url,
176 181
             'photo_w': self.photo_w,
@@ -182,6 +187,7 @@ class GroupPhotoInfo(CreateUpdateMixin):
182 187
             'nickname': self.nickname,
183 188
             'avatar': self.avatar,
184 189
             'comment_num': self.comment_num,
190
+            'thumbup': get_group_photo_thumbup_flag(self.pk, user_id),
185 191
             'thumbup_num': self.thumbup_num,
186 192
             'photo_from': self.photo_from,
187 193
             'created_at': self.created_at.replace(microsecond=0),

+ 10 - 1
group/views.py

@@ -26,6 +26,7 @@ from utils.redis.rkeys import (
26 26
 )
27 27
 from utils.redis.rkeys import GROUP_LAST_PHOTO_PK
28 28
 from utils.redis.rgroup import set_group_info, get_group_info, set_group_users_info, get_group_users_info
29
+from utils.redis.rgroup import set_group_photo_thumbup_flag, del_group_photo_thumbup_flag, get_group_photo_thumbup_flag
29 30
 
30 31
 from utils.sql.raw import PAI2_HOME_API
31 32
 
@@ -590,7 +591,7 @@ def flyimg_upload_api(request):
590 591
         'message': u'飞图上传成功',
591 592
         'data': {
592 593
             'current_id': latest_photo and latest_photo.pk or current_id,
593
-            'photos': [photo.photo_info for photo in group_photos],
594
+            'photos': [photo.photo_info(user_id) for photo in group_photos],
594 595
         }
595 596
     })
596 597
 
@@ -696,6 +697,9 @@ def thumbup_submit_api(request):
696 697
     photo_thumbup.thumbup = True
697 698
     photo_thumbup.save()
698 699
 
700
+    # Redis 群组照片点赞数据缓存
701
+    set_group_photo_thumbup_flag(photo_id, user_id)
702
+
699 703
     # 群组照片点赞数更新
700 704
     group_photo.thumbup_num += 1
701 705
     group_photo.save()
@@ -793,6 +797,9 @@ def thumbup_cancel_api(request):
793 797
     photo_thumbup.thumbup = False
794 798
     photo_thumbup.save()
795 799
 
800
+    # Redis 群组照片点赞数据移除
801
+    del_group_photo_thumbup_flag(photo_id, user_id)
802
+
796 803
     # 群组照片点赞数更新
797 804
     group_photo.thumbup_num -= 1
798 805
     group_photo.save()
@@ -872,6 +879,8 @@ def pai2_home_api(request):
872 879
         'created_at': row[18],
873 880
     } for row in rows]
874 881
 
882
+    [row.update({'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id)}) for row in rows]
883
+
875 884
     return JsonResponse({
876 885
         'status': 200,
877 886
         'message': u'获取首页列表成功',

+ 1 - 1
photo/views.py

@@ -241,7 +241,7 @@ def session_detail_api(request, session):
241 241
             # 'count': photos.count(),
242 242
             # 'photos': [p.detail for p in photos],
243 243
             'current_id': latest_photo and latest_photo.pk or current_id,
244
-            'photos': [photo.photo_info for photo in group_photos],
244
+            'photos': [photo.photo_info(user_id) for photo in group_photos],
245 245
             'group_id': group_id,
246 246
             'group': group_info,
247 247
             'user_id': user_id,

+ 24 - 1
utils/redis/rgroup.py

@@ -3,7 +3,7 @@
3 3
 from django.conf import settings
4 4
 from django.core.serializers.json import DjangoJSONEncoder
5 5
 
6
-from utils.redis.rkeys import GROUP_INFO, GROUP_USERS_INFO, GROUP_LAST_PHOTO_PK
6
+from utils.redis.rkeys import GROUP_INFO, GROUP_USERS_INFO, GROUP_PHOTO_THUMB_UP
7 7
 
8 8
 import json
9 9
 
@@ -66,3 +66,26 @@ def get_group_users_info(group_id, user_id):
66 66
     if group_users and user_id != admin_id:
67 67
         [group_users.pop(k) for k in ['applying_count', 'applying']]
68 68
     return group_users
69
+
70
+
71
+# 群组照片相关
72
+
73
+
74
+def set_group_photo_thumbup_flag(photo_id, user_id):
75
+    r.set(GROUP_PHOTO_THUMB_UP % (photo_id, user_id))
76
+
77
+
78
+def del_group_photo_thumbup_flag(photo_id, user_id):
79
+    r.delete(GROUP_PHOTO_THUMB_UP % (photo_id, user_id))
80
+
81
+
82
+def get_group_photo_thumbup_flag(photo_id, user_id):
83
+    if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)):
84
+        return True
85
+    else:
86
+        from group.models import PhotoThumbUpInfo
87
+        if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id).exists():
88
+            set_group_photo_thumbup_flag(photo_id, user_id)
89
+            return True
90
+        else:
91
+            return False

+ 1 - 0
utils/redis/rkeys.py

@@ -15,6 +15,7 @@ GROUP_USERS_DELETED_SET = 'group:users:deleted:set:%s'  # SET,群组用户移
15 15
 GROUP_USERS_QUIT_SET = 'group:users:quit:set:%s'  # SET,群组用户退出集合,group_id
16 16
 
17 17
 # 群组照片相关
18
+GROUP_PHOTO_THUMB_UP = 'group:photo:thumb:up:%s:%s'  # STRING,群组照片用户点赞记录,photo_id、user_id
18 19
 GROUP_LAST_PHOTO_PK = 'group:last:photo:pk:%s'  # STRING,群组最后一张照片PK,group_id
19 20
 
20 21
 # 系统消息相关