个人观看记录更新

This commit is contained in:
caoqianming 2021-07-06 10:03:59 +08:00
parent ddba9c0b9a
commit b73ca096ef
4 changed files with 24 additions and 17 deletions

View File

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

View File

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

View File

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

View File

@ -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):
@ -57,16 +60,6 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
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):
perms_map = {'get':'viewrecord_view'}
@ -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})
if request.data:
serializer = VRecordUpdateSerializer(record, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
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):
perms_map={'get':'video_create'}