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