个人观看记录更新
This commit is contained in:
		
							parent
							
								
									ddba9c0b9a
								
							
						
					
					
						commit
						b73ca096ef
					
				| 
						 | 
					@ -43,6 +43,7 @@ const install = (Vue, vm) => {
 | 
				
			||||||
	let getDocument = (params={})=>vm.$u.get('/quality/document/', params);//文档
 | 
						let getDocument = (params={})=>vm.$u.get('/quality/document/', params);//文档
 | 
				
			||||||
	let getVideos = (params={})=>vm.$u.get('/vod/video/', params);//点播视频
 | 
						let getVideos = (params={})=>vm.$u.get('/vod/video/', params);//点播视频
 | 
				
			||||||
	let getDickey = (params={})=>vm.$u.get('/system/dict/', params);//查询字典
 | 
						let getDickey = (params={})=>vm.$u.get('/system/dict/', params);//查询字典
 | 
				
			||||||
 | 
						let addVodView =(id)=>vm.$u.post(`/vod/video/${id}/view/`);//新增观看次数
 | 
				
			||||||
	vm.$u.api = {getUserInfo, 
 | 
						vm.$u.api = {getUserInfo, 
 | 
				
			||||||
				getCode,
 | 
									getCode,
 | 
				
			||||||
				codeLogin,
 | 
									codeLogin,
 | 
				
			||||||
| 
						 | 
					@ -62,7 +63,8 @@ const install = (Vue, vm) => {
 | 
				
			||||||
				startInspectDept,
 | 
									startInspectDept,
 | 
				
			||||||
				getDocument,
 | 
									getDocument,
 | 
				
			||||||
				getVideos,
 | 
									getVideos,
 | 
				
			||||||
				getDickey
 | 
									getDickey,
 | 
				
			||||||
 | 
									addVodView
 | 
				
			||||||
				};
 | 
									};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,6 +103,12 @@
 | 
				
			||||||
				if (e.type == 'play') {
 | 
									if (e.type == 'play') {
 | 
				
			||||||
					var playingVideoStr = e.target.id
 | 
										var playingVideoStr = e.target.id
 | 
				
			||||||
					this.list[this.swiperIndex].content[index].showTitle = false
 | 
										this.list[this.swiperIndex].content[index].showTitle = false
 | 
				
			||||||
 | 
										if(this.list[this.swiperIndex].content[index]){
 | 
				
			||||||
 | 
											
 | 
				
			||||||
 | 
										}else{
 | 
				
			||||||
 | 
										this.$u.api.addVodView(this.list[this.swiperIndex].content[index].id).then(res=>{
 | 
				
			||||||
 | 
											this.list[this.swiperIndex].content[index].played = true
 | 
				
			||||||
 | 
										})}
 | 
				
			||||||
					//暂停其他视频播放
 | 
										//暂停其他视频播放
 | 
				
			||||||
					if(this.playingVideoStr==null){
 | 
										if(this.playingVideoStr==null){
 | 
				
			||||||
						this.playingVideoStr = playingVideoStr
 | 
											this.playingVideoStr = playingVideoStr
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ class Video(CommonAModel):
 | 
				
			||||||
    coverurl = models.CharField(verbose_name='封面地址', max_length=200)
 | 
					    coverurl = models.CharField(verbose_name='封面地址', max_length=200)
 | 
				
			||||||
    duration = models.IntegerField(verbose_name='时长(秒)', default=0)
 | 
					    duration = models.IntegerField(verbose_name='时长(秒)', default=0)
 | 
				
			||||||
    views = models.IntegerField(verbose_name='观看次数', default=0)
 | 
					    views = models.IntegerField(verbose_name='观看次数', default=0)
 | 
				
			||||||
 | 
					    viewsp = models.IntegerField(verbose_name='观看人数', default=0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        verbose_name = '点播视频'
 | 
					        verbose_name = '点播视频'
 | 
				
			||||||
| 
						 | 
					@ -25,8 +26,8 @@ class ViewRecord(BaseModel):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 观看记录
 | 
					    # 观看记录
 | 
				
			||||||
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='观看人', related_name='viewrecord_user')
 | 
					    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='观看人', related_name='viewrecord_user')
 | 
				
			||||||
    num = models.IntegerField(verbose_name='观看次数', default=0)
 | 
					    views = models.IntegerField(verbose_name='观看次数', default=0)
 | 
				
			||||||
    current = models.IntegerField(verbose_name='当前观看进度', default=0)
 | 
					    current = models.IntegerField(verbose_name='当前观看进度(秒)', default=0)
 | 
				
			||||||
    video = models.ForeignKey(Video, verbose_name='点播视频', on_delete=models.CASCADE)
 | 
					    video = models.ForeignKey(Video, verbose_name='点播视频', on_delete=models.CASCADE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from datetime import timedelta
 | 
				
			||||||
 | 
					from time import timezone
 | 
				
			||||||
from rest_framework.mixins import ListModelMixin
 | 
					from rest_framework.mixins import ListModelMixin
 | 
				
			||||||
from apps.vod.serializers import VRecordSerializer, VRecordUpdateSerializer, VideoSerializer
 | 
					from apps.vod.serializers import VRecordSerializer, VRecordUpdateSerializer, VideoSerializer
 | 
				
			||||||
from apps.vod.models import Video, ViewRecord
 | 
					from apps.vod.models import Video, ViewRecord
 | 
				
			||||||
| 
						 | 
					@ -11,6 +13,7 @@ from apps.system.mixins import CreateUpdateModelAMixin
 | 
				
			||||||
from rest_framework.decorators import action, permission_classes
 | 
					from rest_framework.decorators import action, permission_classes
 | 
				
			||||||
from rest_framework.permissions import IsAuthenticated
 | 
					from rest_framework.permissions import IsAuthenticated
 | 
				
			||||||
from rest_framework.status import HTTP_400_BAD_REQUEST
 | 
					from rest_framework.status import HTTP_400_BAD_REQUEST
 | 
				
			||||||
 | 
					from django.utils import timezone
 | 
				
			||||||
# Create your views here.
 | 
					# Create your views here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClassView(APIView):
 | 
					class ClassView(APIView):
 | 
				
			||||||
| 
						 | 
					@ -57,16 +60,6 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
 | 
				
			||||||
        serializer = self.get_serializer(queryset, many=True)
 | 
					        serializer = self.get_serializer(queryset, many=True)
 | 
				
			||||||
        return Response(serializer.data)
 | 
					        return Response(serializer.data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @action(methods=['post'], detail=True, permission_classes=[IsAuthenticated])
 | 
					 | 
				
			||||||
    def view(self, request, *args, **kwargs):
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        新增观看次数
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        obj = self.get_object()
 | 
					 | 
				
			||||||
        obj.views = obj.views + 1
 | 
					 | 
				
			||||||
        obj.save()
 | 
					 | 
				
			||||||
        return Response()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class VRecordViewSet(ListModelMixin, GenericViewSet):
 | 
					class VRecordViewSet(ListModelMixin, GenericViewSet):
 | 
				
			||||||
    perms_map = {'get':'viewrecord_view'}
 | 
					    perms_map = {'get':'viewrecord_view'}
 | 
				
			||||||
| 
						 | 
					@ -101,10 +94,15 @@ class MyViewRecordAPIView(APIView):
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            return Response('视频不存在', status=HTTP_400_BAD_REQUEST)
 | 
					            return Response('视频不存在', status=HTTP_400_BAD_REQUEST)
 | 
				
			||||||
        record = ViewRecord.objects.get_or_create(video=video, user=request.user, defaults={'video':video, 'user':request.user})
 | 
					        record = ViewRecord.objects.get_or_create(video=video, user=request.user, defaults={'video':video, 'user':request.user})
 | 
				
			||||||
 | 
					        if request.data:
 | 
				
			||||||
            serializer = VRecordUpdateSerializer(record, data=request.data)
 | 
					            serializer = VRecordUpdateSerializer(record, data=request.data)
 | 
				
			||||||
            serializer.is_valid(raise_exception=True)
 | 
					            serializer.is_valid(raise_exception=True)
 | 
				
			||||||
        serializer.save()
 | 
					            if request.data.get('current', None):
 | 
				
			||||||
        return Response(serializer.data)
 | 
					                record.current = request.data.get('current')
 | 
				
			||||||
 | 
					            if timezone.now() > record.update_time + timedelta(hours=6):
 | 
				
			||||||
 | 
					                record.views = record.views + 1
 | 
				
			||||||
 | 
					            record.save()
 | 
				
			||||||
 | 
					        return Response()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SignatureAPIView(APIView):
 | 
					class SignatureAPIView(APIView):
 | 
				
			||||||
    perms_map={'get':'video_create'}
 | 
					    perms_map={'get':'video_create'}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue