add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api

Brightcells 9 years ago
parent
commit
c72d89f6e5
8 changed files with 352 additions and 7 deletions
  1. 5 0
      api/urls.py
  2. 4 1
      docs/errorcode
  3. 13 1
      group/admin.py
  4. 32 0
      group/migrations/0008_photocommentinfo.py
  5. 32 0
      group/migrations/0009_photothumbupinfo.py
  6. 48 0
      group/models.py
  7. 218 1
      group/views.py
  8. 0 4
      operation/views.py

+ 5 - 0
api/urls.py

@@ -33,6 +33,11 @@ urlpatterns += [
33 33
 urlpatterns += [
34 34
     url(r'^f/upload$', group_views.flyimg_upload_api, name='flyimg_upload_api'),  # 飞图上传
35 35
     url(r'^f/list$', group_views.flyimg_upload_api, name='flyimg_list_api'),  # 飞图列表
36
+    url(r'^f/comment/submit$', group_views.comment_submit_api, name='comment_submit_api'),  # 飞图评论提交
37
+    url(r'^f/comment/list$', group_views.comment_submit_api, name='comment_list_api'),  # 飞图评论列表
38
+    url(r'^f/thumbup/submit$', group_views.thumbup_submit_api, name='thumbup_submit_api'),  # 飞图点赞提交
39
+    url(r'^f/thumbup/list$', group_views.thumbup_list_api, name='thumbup_list_api'),  # 飞图点赞列表
40
+    url(r'^f/thumbup/cancel$', group_views.thumbup_cancel_api, name='thumbup_cancel_api'),  # 飞图点赞取消
36 41
 ]
37 42
 
38 43
 urlpatterns += [

+ 4 - 1
docs/errorcode

@@ -24,4 +24,7 @@
24 24
         40224 —— 没有拒绝权限
25 25
     4027 —— 重复加群申请
26 26
     4028 —— 加群申请不存在
27
-    4029 —— 该用户不在群组
27
+    4029 —— 该用户不在群组
28
+
29
+4、飞图信息 —— 403
30
+    4030 —— 飞图不存在

+ 13 - 1
group/admin.py

@@ -2,7 +2,7 @@
2 2
 
3 3
 from django.contrib import admin
4 4
 
5
-from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo
5
+from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo, PhotoCommentInfo, PhotoThumbUpInfo
6 6
 
7 7
 
8 8
 class GroupInfoAdmin(admin.ModelAdmin):
@@ -20,6 +20,18 @@ class GroupPhotoInfoAdmin(admin.ModelAdmin):
20 20
     list_filter = ('status', )
21 21
 
22 22
 
23
+class PhotoCommentInfoAdmin(admin.ModelAdmin):
24
+    list_display = ('photo_id', 'user_id', 'nickname', 'avatar', 'comment', 'status', 'created_at', 'updated_at')
25
+    list_filter = ('status', )
26
+
27
+
28
+class PhotoThumbUpInfoAdmin(admin.ModelAdmin):
29
+    list_display = ('photo_id', 'user_id', 'nickname', 'avatar', 'thumbup', 'status', 'created_at', 'updated_at')
30
+    list_filter = ('thumbup', 'status')
31
+
32
+
23 33
 admin.site.register(GroupInfo, GroupInfoAdmin)
24 34
 admin.site.register(GroupUserInfo, GroupUserInfoAdmin)
25 35
 admin.site.register(GroupPhotoInfo, GroupPhotoInfoAdmin)
36
+admin.site.register(PhotoCommentInfo, PhotoCommentInfoAdmin)
37
+admin.site.register(PhotoThumbUpInfo, PhotoThumbUpInfoAdmin)

+ 32 - 0
group/migrations/0008_photocommentinfo.py

@@ -0,0 +1,32 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.db import models, migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('group', '0007_auto_20160112_2040'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='PhotoCommentInfo',
16
+            fields=[
17
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
18
+                ('status', models.BooleanField(default=True, help_text='\u72b6\u6001', verbose_name='status')),
19
+                ('created_at', models.DateTimeField(help_text='\u521b\u5efa\u65f6\u95f4', verbose_name='created_at', auto_now_add=True)),
20
+                ('updated_at', models.DateTimeField(help_text='\u66f4\u65b0\u65f6\u95f4', verbose_name='updated_at', auto_now=True)),
21
+                ('photo_id', models.CharField(max_length=255, blank=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', null=True, verbose_name='photo_id', db_index=True)),
22
+                ('user_id', models.CharField(help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=255, null=True, verbose_name='user_id', blank=True)),
23
+                ('nickname', models.CharField(help_text='\u7528\u6237\u7fa4\u7ec4\u6635\u79f0', max_length=255, null=True, verbose_name='nickname', blank=True)),
24
+                ('avatar', models.CharField(help_text='\u7528\u6237\u5934\u50cf', max_length=255, null=True, verbose_name='avatar', blank=True)),
25
+                ('comment', models.TextField(help_text='\u7528\u6237\u8bc4\u8bba', null=True, verbose_name='comment', blank=True)),
26
+            ],
27
+            options={
28
+                'verbose_name': 'photocommentinfo',
29
+                'verbose_name_plural': 'photocommentinfo',
30
+            },
31
+        ),
32
+    ]

+ 32 - 0
group/migrations/0009_photothumbupinfo.py

@@ -0,0 +1,32 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.db import models, migrations
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('group', '0008_photocommentinfo'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.CreateModel(
15
+            name='PhotoThumbUpInfo',
16
+            fields=[
17
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
18
+                ('status', models.BooleanField(default=True, help_text='\u72b6\u6001', verbose_name='status')),
19
+                ('created_at', models.DateTimeField(help_text='\u521b\u5efa\u65f6\u95f4', verbose_name='created_at', auto_now_add=True)),
20
+                ('updated_at', models.DateTimeField(help_text='\u66f4\u65b0\u65f6\u95f4', verbose_name='updated_at', auto_now=True)),
21
+                ('photo_id', models.CharField(max_length=255, blank=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', null=True, verbose_name='photo_id', db_index=True)),
22
+                ('user_id', models.CharField(help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=255, null=True, verbose_name='user_id', blank=True)),
23
+                ('nickname', models.CharField(help_text='\u7528\u6237\u7fa4\u7ec4\u6635\u79f0', max_length=255, null=True, verbose_name='nickname', blank=True)),
24
+                ('avatar', models.CharField(help_text='\u7528\u6237\u5934\u50cf', max_length=255, null=True, verbose_name='avatar', blank=True)),
25
+                ('thumbup', models.BooleanField(default=True, help_text='\u7528\u6237\u70b9\u8d5e', db_index=True, verbose_name='thumbup')),
26
+            ],
27
+            options={
28
+                'verbose_name': 'photothumbupinfo',
29
+                'verbose_name_plural': 'photothumbupinfo',
30
+            },
31
+        ),
32
+    ]

+ 48 - 0
group/models.py

@@ -137,3 +137,51 @@ class GroupPhotoInfo(CreateUpdateMixin):
137 137
             'photo_path': self.photo_url,
138 138
             'photo_thumbnail_path': self.photo_thumbnail_url,
139 139
         }
140
+
141
+
142
+class PhotoCommentInfo(CreateUpdateMixin):
143
+    photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)
144
+    user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
145
+    nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
146
+    avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
147
+    comment = models.TextField(_(u'comment'), blank=True, null=True, help_text=u'用户评论')
148
+
149
+    class Meta:
150
+        verbose_name = _(u'photocommentinfo')
151
+        verbose_name_plural = _(u'photocommentinfo')
152
+
153
+    def __unicode__(self):
154
+        return unicode(self.pk)
155
+
156
+    @property
157
+    def comment_info(self):
158
+        return {
159
+            'user_id': self.user_id,
160
+            'nickname': self.nickname,
161
+            'avatar': self.avatar,
162
+            'comment': self.comment,
163
+            'created_at': self.created_at,
164
+        }
165
+
166
+
167
+class PhotoThumbUpInfo(CreateUpdateMixin):
168
+    photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)
169
+    user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')
170
+    nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')
171
+    avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')
172
+    thumbup = models.BooleanField(_(u'thumbup'), default=True, help_text=u'用户点赞', db_index=True)
173
+
174
+    class Meta:
175
+        verbose_name = _(u'photothumbupinfo')
176
+        verbose_name_plural = _(u'photothumbupinfo')
177
+
178
+    def __unicode__(self):
179
+        return unicode(self.pk)
180
+
181
+    @property
182
+    def thumbup_info(self):
183
+        return {
184
+            'user_id': self.user_id,
185
+            'nickname': self.nickname,
186
+            'avatar': self.avatar,
187
+        }

+ 218 - 1
group/views.py

@@ -8,7 +8,7 @@ from django.http import JsonResponse
8 8
 from rest_framework import viewsets
9 9
 
10 10
 from account.models import UserInfo
11
-from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo
11
+from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo, PhotoCommentInfo, PhotoThumbUpInfo
12 12
 from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer
13 13
 
14 14
 from utils.thumbnail_utils import make_thumb
@@ -517,6 +517,223 @@ def flyimg_upload_api(request):
517 517
     })
518 518
 
519 519
 
520
+def comment_submit_api(request):
521
+    group_id = request.POST.get('group_id', '')
522
+    user_id = request.POST.get('user_id', '')
523
+    photo_id = request.POST.get('photo_id', '')
524
+    comment = request.POST.get('comment', '')
525
+
526
+    current_id = int(request.POST.get('current_id', -1))
527
+
528
+    try:
529
+        group = GroupInfo.objects.get(group_id=group_id)
530
+    except GroupInfo.DoesNotExist:
531
+        return JsonResponse({
532
+            'status': 4020,
533
+            'message': u'群组不存在',
534
+        })
535
+
536
+    try:
537
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
538
+    except GroupUserInfo.DoesNotExist:
539
+        return JsonResponse({
540
+            'status': 4029,
541
+            'message': u'该用户不在群组',
542
+        })
543
+
544
+    try:
545
+        group_photo = GroupPhotoInfo.objects.get(pk=photo_id)
546
+    except GroupPhotoInfo.DoesNotExist:
547
+        return JsonResponse({
548
+            'status': 4030,
549
+            'message': u'飞图不存在',
550
+        })
551
+
552
+    if comment:
553
+        PhotoCommentInfo.objects.create(
554
+            photo_id=photo_id,
555
+            user_id=user_id,
556
+            nickname=group_user.nickname,
557
+            avatar=group_user.avatar,
558
+            comment=comment,
559
+        )
560
+
561
+    photo_comments = PhotoCommentInfo.objects.filter(
562
+        photo_id=photo_id,
563
+        pk__gt=current_id
564
+    )
565
+    latest_comment = photo_comments.last()
566
+
567
+    return JsonResponse({
568
+        'status': 200,
569
+        'message': u'评论成功',
570
+        'data': {
571
+            'current_id': latest_comment and latest_comment.pk or current_id,
572
+            'comments': [comment.comment_info for comment in photo_comments],
573
+        }
574
+    })
575
+
576
+
577
+def thumbup_submit_api(request):
578
+    group_id = request.POST.get('group_id', '')
579
+    user_id = request.POST.get('user_id', '')
580
+    photo_id = request.POST.get('photo_id', '')
581
+
582
+    try:
583
+        group = GroupInfo.objects.get(group_id=group_id)
584
+    except GroupInfo.DoesNotExist:
585
+        return JsonResponse({
586
+            'status': 4020,
587
+            'message': u'群组不存在',
588
+        })
589
+
590
+    try:
591
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
592
+    except GroupUserInfo.DoesNotExist:
593
+        return JsonResponse({
594
+            'status': 4029,
595
+            'message': u'该用户不在群组',
596
+        })
597
+
598
+    try:
599
+        group_photo = GroupPhotoInfo.objects.get(pk=photo_id)
600
+    except GroupPhotoInfo.DoesNotExist:
601
+        return JsonResponse({
602
+            'status': 4030,
603
+            'message': u'飞图不存在',
604
+        })
605
+
606
+    photo_thumbup, created = PhotoThumbUpInfo.objects.get_or_create(
607
+        photo_id=photo_id,
608
+        user_id=user_id,
609
+        # defaults={
610
+        #     'nickname': group_user.nickname,
611
+        #     'avatar': group_user.avatar,
612
+        # }
613
+    )
614
+    photo_thumbup.nickname = group_user.nickname
615
+    photo_thumbup.avatar = group_user.avatar
616
+    photo_thumbup.thumbup = True
617
+    photo_thumbup.save()
618
+
619
+    photo_thumbups = PhotoThumbUpInfo.objects.filter(
620
+        photo_id=photo_id,
621
+        thumbup=True,
622
+    )
623
+
624
+    return JsonResponse({
625
+        'status': 200,
626
+        'message': u'点赞提交成功',
627
+        'data': {
628
+            'thumbup': True,
629
+            'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],
630
+        }
631
+    })
632
+
633
+
634
+def thumbup_list_api(request):
635
+    group_id = request.POST.get('group_id', '')
636
+    user_id = request.POST.get('user_id', '')
637
+    photo_id = request.POST.get('photo_id', '')
638
+
639
+    try:
640
+        group = GroupInfo.objects.get(group_id=group_id)
641
+    except GroupInfo.DoesNotExist:
642
+        return JsonResponse({
643
+            'status': 4020,
644
+            'message': u'群组不存在',
645
+        })
646
+
647
+    try:
648
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
649
+    except GroupUserInfo.DoesNotExist:
650
+        return JsonResponse({
651
+            'status': 4029,
652
+            'message': u'该用户不在群组',
653
+        })
654
+
655
+    try:
656
+        group_photo = GroupPhotoInfo.objects.get(pk=photo_id)
657
+    except GroupPhotoInfo.DoesNotExist:
658
+        return JsonResponse({
659
+            'status': 4030,
660
+            'message': u'飞图不存在',
661
+        })
662
+
663
+    try:
664
+        thumbup = PhotoThumbUpInfo.objects.get(
665
+            photo_id=photo_id,
666
+            user_id=user_id,
667
+        ).thumbup
668
+    except PhotoThumbUpInfo.DoesNotExist:
669
+        thumbup = False
670
+
671
+    photo_thumbups = PhotoThumbUpInfo.objects.filter(
672
+        photo_id=photo_id,
673
+        thumbup=True,
674
+    )
675
+
676
+    return JsonResponse({
677
+        'status': 200,
678
+        'message': u'获取点赞列表成功',
679
+        'data': {
680
+            'thumbup': thumbup,
681
+            'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],
682
+        }
683
+    })
684
+
685
+
686
+def thumbup_cancel_api(request):
687
+    group_id = request.POST.get('group_id', '')
688
+    user_id = request.POST.get('user_id', '')
689
+    photo_id = request.POST.get('photo_id', '')
690
+
691
+    try:
692
+        group = GroupInfo.objects.get(group_id=group_id)
693
+    except GroupInfo.DoesNotExist:
694
+        return JsonResponse({
695
+            'status': 4020,
696
+            'message': u'群组不存在',
697
+        })
698
+
699
+    try:
700
+        group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
701
+    except GroupUserInfo.DoesNotExist:
702
+        return JsonResponse({
703
+            'status': 4029,
704
+            'message': u'该用户不在群组',
705
+        })
706
+
707
+    try:
708
+        group_photo = GroupPhotoInfo.objects.get(pk=photo_id)
709
+    except GroupPhotoInfo.DoesNotExist:
710
+        return JsonResponse({
711
+            'status': 4030,
712
+            'message': u'飞图不存在',
713
+        })
714
+
715
+    photo_thumbup, created = PhotoThumbUpInfo.objects.get_or_create(
716
+        photo_id=photo_id,
717
+        user_id=user_id,
718
+    )
719
+    photo_thumbup.thumbup = False
720
+    photo_thumbup.save()
721
+
722
+    photo_thumbups = PhotoThumbUpInfo.objects.filter(
723
+        photo_id=photo_id,
724
+        thumbup=True,
725
+    )
726
+
727
+    return JsonResponse({
728
+        'status': 200,
729
+        'message': u'点赞取消成功',
730
+        'data': {
731
+            'thumbup': False,
732
+            'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],
733
+        }
734
+    })
735
+
736
+
520 737
 class GroupInfoViewSet(viewsets.ModelViewSet):
521 738
     queryset = GroupInfo.objects.all().order_by('-created_at')
522 739
     serializer_class = GroupInfoSerializer

+ 0 - 4
operation/views.py

@@ -1,10 +1,6 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
-from django.conf import settings
4
-from django.core.files.storage import default_storage
5
-from django.db import transaction
6 3
 from django.http import JsonResponse
7
-from django.shortcuts import render, redirect
8 4
 
9 5
 from operation.models import LatestAppInfo, SplashInfo
10 6