@@ -3,6 +3,6 @@  | 
            ||
| 3 | 3 | 
                 | 
            
| 4 | 4 | 
                [settings]  | 
            
| 5 | 5 | 
                indent=' '  | 
            
| 6 | 
                -line_length=200  | 
            |
| 6 | 
                +line_length=120  | 
            |
| 7 | 7 | 
                lines_after_imports=2  | 
            
| 8 | 8 | 
                skip=migrations  | 
            
                @@ -4,7 +4,8 @@ from curtail_uuid import CurtailUUID  | 
            ||
| 4 | 4 | 
                from django.contrib import admin  | 
            
| 5 | 5 | 
                from django.contrib.auth.hashers import make_password  | 
            
| 6 | 6 | 
                 | 
            
| 7 | 
                -from account.models import LensmanIncomeExpensesInfo, LensmanInfo, LensmanLoginLogInfo, UserIncomeExpensesInfo, UserInfo, UserLoginLogInfo  | 
            |
| 7 | 
                +from account.models import (LensmanIncomeExpensesInfo, LensmanInfo, LensmanLoginLogInfo, UserIncomeExpensesInfo,  | 
            |
| 8 | 
                + UserInfo, UserLoginLogInfo)  | 
            |
| 8 | 9 | 
                 | 
            
| 9 | 10 | 
                 | 
            
| 10 | 11 | 
                class LensmanInfoAdmin(admin.ModelAdmin):  | 
            
                @@ -32,10 +32,11 @@ urlpatterns += [  | 
            ||
| 32 | 32 | 
                url(r'^g/join$', group_views.group_join_api, name='group_join_api'), # 申请加群  | 
            
| 33 | 33 | 
                url(r'^g/lock$', group_views.group_lock_api, name='group_lock_api'), # 群组锁定  | 
            
| 34 | 34 | 
                url(r'^g/unlock$', group_views.group_unlock_api, name='group_unlock_api'), # 群组解锁  | 
            
| 35 | 
                - url(r'^g/remove$', group_views.group_remove_api, name='group_remove_api'), # 成员移除,管理员主动,群成员被动  | 
            |
| 35 | 
                + url(r'^g/remove$', group_views.group_remove_api, name='group_remove_api'), # 成员移除, 管理员主动, 群成员被动  | 
            |
| 36 | 36 | 
                url(r'^g/quit$', group_views.group_quit_api, name='group_quit_api'), # 成员退出,群成员主动  | 
            
| 37 | 37 | 
                # url(r'^g/pass$', group_views.group_pass_api, name='group_pass_api'), # 申请通过  | 
            
| 38 | 38 | 
                # url(r'^g/refuse$', group_views.group_refuse_api, name='group_refuse_api'), # 申请拒绝  | 
            
| 39 | 
                + url(r'^g/data$', group_views.group_data_api, name='group_data_api'), # 群组数据, 评论数, 点赞数  | 
            |
| 39 | 40 | 
                ]  | 
            
| 40 | 41 | 
                 | 
            
| 41 | 42 | 
                # 飞图相关  | 
            
                @@ -2,7 +2,8 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from django.contrib import admin  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -from group.models import GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo, GroupUserInfo, PhotoCommentInfo, PhotoThumbUpInfo  | 
            |
| 5 | 
                +from group.models import (GroupInfo, GroupPhotoInfo, GroupPhotoOrderInfo, GroupUserInfo, PhotoCommentInfo,  | 
            |
| 6 | 
                + PhotoThumbUpInfo)  | 
            |
| 6 | 7 | 
                 | 
            
| 7 | 8 | 
                 | 
            
| 8 | 9 | 
                class GroupInfoAdmin(admin.ModelAdmin):  | 
            
                @@ -182,6 +182,14 @@ class GroupPhotoInfo(CreateUpdateMixin):  | 
            ||
| 182 | 182 | 
                def photo_thumbnail2_url(self):  | 
            
| 183 | 183 | 
                return img_url(self.photo_thumbnail2_path)  | 
            
| 184 | 184 | 
                 | 
            
| 185 | 
                + @property  | 
            |
| 186 | 
                + def photo_data(self):  | 
            |
| 187 | 
                +        return {
               | 
            |
| 188 | 
                + 'photo_id': self.pk,  | 
            |
| 189 | 
                + 'comment_num': self.comment_num,  | 
            |
| 190 | 
                + 'thumbup_num': self.thumbup_num,  | 
            |
| 191 | 
                + }  | 
            |
| 192 | 
                +  | 
            |
| 185 | 193 | 
                def photo_info(self, user_id):  | 
            
| 186 | 194 | 
                try:  | 
            
| 187 | 195 | 
                group = GroupInfo.objects.get(group_id=self.group_id)  | 
            
                @@ -20,8 +20,11 @@ from message.models import UserMessageInfo  | 
            ||
| 20 | 20 | 
                from utils.error.errno_utils import GroupPhotoStatusCode, GroupStatusCode, GroupUserStatusCode, UserStatusCode  | 
            
| 21 | 21 | 
                from utils.error.response_utils import response  | 
            
| 22 | 22 | 
                from utils.page_utils import pagination  | 
            
| 23 | 
                -from utils.redis.rgroup import del_group_photo_thumbup_flag, get_group_info, get_group_photo_thumbup_flag, get_group_users_info, set_group_info, set_group_photo_thumbup_flag, set_group_users_info  | 
            |
| 24 | 
                -from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_APPLYING_SET, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET,  | 
            |
| 23 | 
                +from utils.redis.rgroup import (del_group_photo_thumbup_flag, get_group_info, get_group_photo_data,  | 
            |
| 24 | 
                + get_group_photo_thumbup_flag, get_group_users_info, set_group_info,  | 
            |
| 25 | 
                + set_group_photo_data, set_group_photo_thumbup_flag, set_group_users_info)  | 
            |
| 26 | 
                +from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_APPLYING_SET, GROUP_USERS_DELETED_SET,  | 
            |
| 27 | 
                + GROUP_USERS_PASSED_SET, GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET,  | 
            |
| 25 | 28 | 
                LENSMAN_PHOTO_HAGGLE_TIMES, LENSMAN_PHOTO_PRICE)  | 
            
| 26 | 29 | 
                from utils.redis.rorder import get_lensman_order_record  | 
            
| 27 | 30 | 
                from utils.sql.raw import PAI2_HOME_API  | 
            
                @@ -511,6 +514,23 @@ def group_refuse_api(request):  | 
            ||
| 511 | 514 | 
                })  | 
            
| 512 | 515 | 
                 | 
            
| 513 | 516 | 
                 | 
            
| 517 | 
                +def group_data_api(request):  | 
            |
| 518 | 
                + """  | 
            |
| 519 | 
                + 群组数据, 评论数, 点赞数  | 
            |
| 520 | 
                + :param request:  | 
            |
| 521 | 
                + :return:  | 
            |
| 522 | 
                + """  | 
            |
| 523 | 
                +    group_id = request.POST.get('group_id', '')
               | 
            |
| 524 | 
                +  | 
            |
| 525 | 
                +    return JsonResponse({
               | 
            |
| 526 | 
                + 'status': 200,  | 
            |
| 527 | 
                + 'message': u'获取群组数据成功',  | 
            |
| 528 | 
                +        'data': {
               | 
            |
| 529 | 
                + 'photo_datas': get_group_photo_data(group_id),  | 
            |
| 530 | 
                + }  | 
            |
| 531 | 
                + })  | 
            |
| 532 | 
                +  | 
            |
| 533 | 
                +  | 
            |
| 514 | 534 | 
                def flyimg_upload_api(request):  | 
            
| 515 | 535 | 
                """  | 
            
| 516 | 536 | 
                飞图上传/飞图列表  | 
            
                @@ -637,6 +657,9 @@ def comment_submit_api(request):  | 
            ||
| 637 | 657 | 
                comment=comment,  | 
            
| 638 | 658 | 
                )  | 
            
| 639 | 659 | 
                 | 
            
| 660 | 
                + # Redis 群组照片数据缓存  | 
            |
| 661 | 
                + set_group_photo_data(group_id)  | 
            |
| 662 | 
                +  | 
            |
| 640 | 663 | 
                # 群组照片评论数更新  | 
            
| 641 | 664 | 
                group_photo.comment_num += 1  | 
            
| 642 | 665 | 
                group_photo.save()  | 
            
                @@ -708,6 +731,9 @@ def thumbup_submit_api(request):  | 
            ||
| 708 | 731 | 
                # Redis 群组照片点赞数据缓存  | 
            
| 709 | 732 | 
                set_group_photo_thumbup_flag(photo_id, user_id)  | 
            
| 710 | 733 | 
                 | 
            
| 734 | 
                + # Redis 群组照片数据缓存  | 
            |
| 735 | 
                + set_group_photo_data(group_id)  | 
            |
| 736 | 
                +  | 
            |
| 711 | 737 | 
                # 群组照片点赞数更新  | 
            
| 712 | 738 | 
                group_photo.thumbup_num += 1  | 
            
| 713 | 739 | 
                group_photo.save()  | 
            
                @@ -808,6 +834,9 @@ def thumbup_cancel_api(request):  | 
            ||
| 808 | 834 | 
                # Redis 群组照片点赞数据移除  | 
            
| 809 | 835 | 
                del_group_photo_thumbup_flag(photo_id, user_id)  | 
            
| 810 | 836 | 
                 | 
            
| 837 | 
                + # Redis 群组照片数据缓存  | 
            |
| 838 | 
                + set_group_photo_data(group_id)  | 
            |
| 839 | 
                +  | 
            |
| 811 | 840 | 
                # 群组照片点赞数更新  | 
            
| 812 | 841 | 
                group_photo.thumbup_num -= 1  | 
            
| 813 | 842 | 
                group_photo.save()  | 
            
                @@ -8,7 +8,8 @@ from message.models import SystemMessageDeleteInfo, SystemMessageInfo, SystemMes  | 
            ||
| 8 | 8 | 
                from utils.error.errno_utils import MessageStatusCode, UserStatusCode  | 
            
| 9 | 9 | 
                from utils.error.response_utils import response  | 
            
| 10 | 10 | 
                from utils.page_utils import pagination  | 
            
| 11 | 
                -from utils.redis.rmessage import get_system_message_delete_info, get_system_message_read_info, set_system_message_delete_info, set_system_message_read_info  | 
            |
| 11 | 
                +from utils.redis.rmessage import (get_system_message_delete_info, get_system_message_read_info,  | 
            |
| 12 | 
                + set_system_message_delete_info, set_system_message_read_info)  | 
            |
| 12 | 13 | 
                 | 
            
| 13 | 14 | 
                 | 
            
| 14 | 15 | 
                def message_list_api(request):  | 
            
                @@ -1,19 +1,31 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                +import json  | 
            |
| 4 | 
                +  | 
            |
| 3 | 5 | 
                from django.conf import settings  | 
            
| 4 | 6 | 
                 | 
            
| 5 | 7 | 
                from group.models import GroupInfo, GroupPhotoInfo, GroupUserInfo  | 
            
| 6 | 
                -from utils.redis.rkeys import GROUP_LAST_PHOTO_PK, GROUP_USERS_APPLYING_SET, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, GROUP_USERS_REFUSED_SET  | 
            |
| 8 | 
                +from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_PHOTO_DATA, GROUP_USERS_APPLYING_SET, GROUP_USERS_DELETED_SET,  | 
            |
| 9 | 
                + GROUP_USERS_PASSED_SET, GROUP_USERS_REFUSED_SET)  | 
            |
| 7 | 10 | 
                 | 
            
| 8 | 11 | 
                 | 
            
| 9 | 12 | 
                r = settings.REDIS_CACHE  | 
            
| 10 | 13 | 
                 | 
            
| 11 | 14 | 
                 | 
            
| 15 | 
                +def retrieve_group_data():  | 
            |
| 16 | 
                + """ 群组数据 """  | 
            |
| 17 | 
                + groups = GroupInfo.objects.filter(status=True)  | 
            |
| 18 | 
                + for group in groups:  | 
            |
| 19 | 
                + group_photos = GroupPhotoInfo.objects.filter(group_id=group.group_id, status=True)  | 
            |
| 20 | 
                + group_photos = [photo.photo_data for photo in group_photos]  | 
            |
| 21 | 
                + r.set(GROUP_PHOTO_DATA % group.group_id, json.dumps(group_photos))  | 
            |
| 22 | 
                +  | 
            |
| 23 | 
                +  | 
            |
| 12 | 24 | 
                def retrieve_last_pk():  | 
            
| 13 | 25 | 
                """ 群组最后一张照片PK """  | 
            
| 14 | 26 | 
                groups = GroupInfo.objects.filter(status=True)  | 
            
| 15 | 27 | 
                for group in groups:  | 
            
| 16 | 
                - group_photo = GroupPhotoInfo.objects.filter(group_id=group.group_id).last()  | 
            |
| 28 | 
                + group_photo = GroupPhotoInfo.objects.filter(group_id=group.group_id, status=True).last()  | 
            |
| 17 | 29 | 
                r.set(GROUP_LAST_PHOTO_PK % group.group_id, group_photo and group_photo.pk or -1)  | 
            
| 18 | 30 | 
                 | 
            
| 19 | 31 | 
                 | 
            
                @@ -33,5 +45,6 @@ def retrieve_group_user_status():  | 
            ||
| 33 | 45 | 
                 | 
            
| 34 | 46 | 
                 | 
            
| 35 | 47 | 
                def retrieve_redis_data():  | 
            
| 48 | 
                + retrieve_group_data()  | 
            |
| 36 | 49 | 
                retrieve_last_pk()  | 
            
| 37 | 50 | 
                retrieve_group_user_status()  | 
            
                @@ -5,7 +5,7 @@ import json  | 
            ||
| 5 | 5 | 
                from django.conf import settings  | 
            
| 6 | 6 | 
                from django.core.serializers.json import DjangoJSONEncoder  | 
            
| 7 | 7 | 
                 | 
            
| 8 | 
                -from utils.redis.rkeys import GROUP_INFO, GROUP_PHOTO_THUMB_UP, GROUP_USERS_INFO  | 
            |
| 8 | 
                +from utils.redis.rkeys import GROUP_INFO, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP, GROUP_USERS_INFO  | 
            |
| 9 | 9 | 
                 | 
            
| 10 | 10 | 
                 | 
            
| 11 | 11 | 
                r = settings.REDIS_CACHE  | 
            
                @@ -71,15 +71,32 @@ def get_group_users_info(group_id, user_id):  | 
            ||
| 71 | 71 | 
                # 群组照片相关  | 
            
| 72 | 72 | 
                 | 
            
| 73 | 73 | 
                 | 
            
| 74 | 
                +def set_group_photo_data(group_id):  | 
            |
| 75 | 
                + """ 设置群组照片数据信息 """  | 
            |
| 76 | 
                + from group.models import GroupPhotoInfo  | 
            |
| 77 | 
                + group_photos = GroupPhotoInfo.objects.filter(group_id=group_id, status=True)  | 
            |
| 78 | 
                + group_photos = [photo.photo_data for photo in group_photos]  | 
            |
| 79 | 
                + r.set(GROUP_PHOTO_DATA % group_id, json.dumps(group_photos))  | 
            |
| 80 | 
                + return group_photos  | 
            |
| 81 | 
                +  | 
            |
| 82 | 
                +  | 
            |
| 83 | 
                +def get_group_photo_data(group_id):  | 
            |
| 84 | 
                + """ 获取群组照片数据信息 """  | 
            |
| 85 | 
                + return json.loads(r.get(GROUP_PHOTO_DATA % group_id) or '[]') or set_group_photo_data(group_id)  | 
            |
| 86 | 
                +  | 
            |
| 87 | 
                +  | 
            |
| 74 | 88 | 
                def set_group_photo_thumbup_flag(photo_id, user_id):  | 
            
| 89 | 
                + """ 设置群组照片用户点赞标识信息 """  | 
            |
| 75 | 90 | 
                r.setex(GROUP_PHOTO_THUMB_UP % (photo_id, user_id), settings.REDIS_EXPIRED_MONTH, True)  | 
            
| 76 | 91 | 
                 | 
            
| 77 | 92 | 
                 | 
            
| 78 | 93 | 
                def del_group_photo_thumbup_flag(photo_id, user_id):  | 
            
| 94 | 
                + """ 删除群组照片用户点赞标识信息 """  | 
            |
| 79 | 95 | 
                r.delete(GROUP_PHOTO_THUMB_UP % (photo_id, user_id))  | 
            
| 80 | 96 | 
                 | 
            
| 81 | 97 | 
                 | 
            
| 82 | 98 | 
                def get_group_photo_thumbup_flag(photo_id, user_id):  | 
            
| 99 | 
                + """ 获取群组照片用户点赞标识信息 """  | 
            |
| 83 | 100 | 
                if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)):  | 
            
| 84 | 101 | 
                return True  | 
            
| 85 | 102 | 
                else:  | 
            
                @@ -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_DATA = 'group:photo:data:%s' # STRING,群组数据记录,photo_id  | 
            |
| 18 | 19 | 
                GROUP_PHOTO_THUMB_UP = 'group:photo:thumb:up:%s:%s' # STRING,群组照片用户点赞记录,photo_id、user_id  | 
            
| 19 | 20 | 
                GROUP_LAST_PHOTO_PK = 'group:last:photo:pk:%s' # STRING,群组最后一张照片PK,group_id  | 
            
| 20 | 21 | 
                 |