个人观看记录更新
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):
|
||||||
|
|
@ -56,16 +59,6 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
||||||
return self.get_paginated_response(serializer.data)
|
return self.get_paginated_response(serializer.data)
|
||||||
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):
|
||||||
|
|
@ -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})
|
||||||
serializer = VRecordUpdateSerializer(record, data=request.data)
|
if request.data:
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer = VRecordUpdateSerializer(record, data=request.data)
|
||||||
serializer.save()
|
serializer.is_valid(raise_exception=True)
|
||||||
return Response(serializer.data)
|
if request.data.get('current', None):
|
||||||
|
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