个人观看记录更新
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 getVideos = (params={})=>vm.$u.get('/vod/video/', params);//点播视频
|
||||
let getDickey = (params={})=>vm.$u.get('/system/dict/', params);//查询字典
|
||||
let addVodView =(id)=>vm.$u.post(`/vod/video/${id}/view/`);//新增观看次数
|
||||
vm.$u.api = {getUserInfo,
|
||||
getCode,
|
||||
codeLogin,
|
||||
|
|
@ -62,7 +63,8 @@ const install = (Vue, vm) => {
|
|||
startInspectDept,
|
||||
getDocument,
|
||||
getVideos,
|
||||
getDickey
|
||||
getDickey,
|
||||
addVodView
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,6 +103,12 @@
|
|||
if (e.type == 'play') {
|
||||
var playingVideoStr = e.target.id
|
||||
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){
|
||||
this.playingVideoStr = playingVideoStr
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ class Video(CommonAModel):
|
|||
coverurl = models.CharField(verbose_name='封面地址', max_length=200)
|
||||
duration = models.IntegerField(verbose_name='时长(秒)', default=0)
|
||||
views = models.IntegerField(verbose_name='观看次数', default=0)
|
||||
viewsp = models.IntegerField(verbose_name='观看人数', default=0)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '点播视频'
|
||||
|
|
@ -25,8 +26,8 @@ class ViewRecord(BaseModel):
|
|||
|
||||
# 观看记录
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='观看人', related_name='viewrecord_user')
|
||||
num = models.IntegerField(verbose_name='观看次数', default=0)
|
||||
current = models.IntegerField(verbose_name='当前观看进度', default=0)
|
||||
views = models.IntegerField(verbose_name='观看次数', default=0)
|
||||
current = models.IntegerField(verbose_name='当前观看进度(秒)', default=0)
|
||||
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 apps.vod.serializers import VRecordSerializer, VRecordUpdateSerializer, VideoSerializer
|
||||
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.permissions import IsAuthenticated
|
||||
from rest_framework.status import HTTP_400_BAD_REQUEST
|
||||
from django.utils import timezone
|
||||
# Create your views here.
|
||||
|
||||
class ClassView(APIView):
|
||||
|
|
@ -56,16 +59,6 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|||
return self.get_paginated_response(serializer.data)
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
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):
|
||||
|
|
@ -101,10 +94,15 @@ class MyViewRecordAPIView(APIView):
|
|||
except:
|
||||
return Response('视频不存在', status=HTTP_400_BAD_REQUEST)
|
||||
record = ViewRecord.objects.get_or_create(video=video, user=request.user, defaults={'video':video, 'user':request.user})
|
||||
serializer = VRecordUpdateSerializer(record, data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
return Response(serializer.data)
|
||||
if request.data:
|
||||
serializer = VRecordUpdateSerializer(record, data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
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):
|
||||
perms_map={'get':'video_create'}
|
||||
|
|
|
|||
Loading…
Reference in New Issue