@@ -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),  | 
            
                @@ -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'获取首页列表成功',  | 
            
                @@ -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,  | 
            
                @@ -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  | 
            
                @@ -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 | 
                # 系统消息相关  |