From b12641e1a7b8b361a249e3f8ef51542efa1734a5 Mon Sep 17 00:00:00 2001 From: king <2229249788@qq.com> Date: Wed, 23 Aug 2023 19:20:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/curriculum.ts | 9 ++-- src/app.tsx | 3 -- src/components/video/video.tsx | 5 ++- src/hooks/unique_ident.ts | 42 ++++++++++++------ .../business/videoInfo/components/course.tsx | 25 ++--------- src/pages/business/videoInfo/videoInfo.tsx | 4 +- src/static/img/illnessTop.png | Bin 4954 -> 4640 bytes types/curriculum.d.ts | 1 - 8 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/api/curriculum.ts b/src/api/curriculum.ts index ecaec40..ad3d7c7 100644 --- a/src/api/curriculum.ts +++ b/src/api/curriculum.ts @@ -18,8 +18,6 @@ export interface CourseDepData { } export interface HourPlayData { - /** 独特的识别 */ - unique_ident: number /** 时间 */ duration: number /** 格式 */ @@ -117,10 +115,9 @@ export const curriculum = { }, /** 学习记录 */ hourCache(courseId: number, data: HourCacheParam) { - return request(`/api/v1/course/${courseId}/hour/cache`, "PUT", data) + return request(`/api/v1/course/${courseId}/hour/cache`, "PUT", data) }, - /** 删除 */ - delCache(courseId: number) { - return request(`/api/v1/course/${courseId}/hour/cache`, "DELETE") + commit(courseId: number, data: HourCacheParam) { + return request(`/api/v1/course/${courseId}/hour/commit`, "PUT", data) } } diff --git a/src/app.tsx b/src/app.tsx index 778cdcf..14389ff 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,7 +1,6 @@ import Taro, {useDidShow, useDidHide} from '@tarojs/taro' import './app.scss' import {CustomWrapper} from "@tarojs/components"; -import unique_ident from "@/hooks/unique_ident"; import {Profile} from '@/store' import storageDep from "@/hooks/storageDep"; @@ -38,8 +37,6 @@ function App(props) { Taro.useLaunch(() => { updateApp() storageDep.remove() - unique_ident.put() - unique_ident.del() }) Taro.getSystemInfo({ diff --git a/src/components/video/video.tsx b/src/components/video/video.tsx index 6275ffa..f2730e3 100644 --- a/src/components/video/video.tsx +++ b/src/components/video/video.tsx @@ -68,6 +68,7 @@ const HVideo: FC = (opt: HVideoOptions) => { opt.onEnded() } else { video?.seek(currentTime) + unique_ident.remove() video?.play() } } @@ -96,7 +97,9 @@ const HVideo: FC = (opt: HVideoOptions) => { }) Taro.useUnload(() => { - unique_ident.del(currentTime, Date.now()) + unique_ident.put(undefined, currentTime) + unique_ident.remove() + unique_ident.upload().then() }) diff --git a/src/hooks/unique_ident.ts b/src/hooks/unique_ident.ts index 995bff8..87ae56b 100644 --- a/src/hooks/unique_ident.ts +++ b/src/hooks/unique_ident.ts @@ -5,44 +5,58 @@ const KEY = 'unique_ident' /** 设置学习记录缓存 */ -function set(data: HourCacheParam) { +async function set(courseId: number) { Taro.removeStorageSync(KEY) + const res = await curriculum.hourCache(courseId, {duration: 0} as HourCacheParam) Taro.setStorage({ key: KEY, - data + data: { + courseId, + duration: 0, + end_date: 0, + hour_id: 0, + start_date: Date.now(), + unique_ident: res + } }) } +function remove() { + Taro.removeStorageSync(KEY) +} + /** * 上传学习记录 - * @param duration 视频播放的学习时长 + * @param hour_id 课时id + * @param duration * @param start_date 记录当前的时间戳 - * @param upload 是否上传 */ -function put(duration?: number, start_date?: number, upload = true) { +function put(hour_id?: number, duration?: number, start_date?: number) { const data: HourCacheParam | undefined = Taro.getStorageSync(KEY) if (data) { - data.duration = duration || data.duration data.start_date = start_date || data.start_date + data.duration = duration || data.duration + data.hour_id = hour_id || data.hour_id Taro.setStorageSync(KEY, data) - if (upload) { - curriculum.hourCache(data.courseId, data) - } } } -function del(duration?: number, start_date?: number, upload = true) { - put(duration, start_date, upload) +async function upload() { const data: HourCacheParam | undefined = Taro.getStorageSync(KEY) if (data) { - curriculum.delCache(data.courseId) + await curriculum.commit(data.courseId, data) } - Taro.removeStorageSync(KEY) +} + +function get(): HourCacheParam | undefined { + return Taro.getStorageSync(KEY) } export default { set, put, - del + remove, + upload, + get } diff --git a/src/pages/business/videoInfo/components/course.tsx b/src/pages/business/videoInfo/components/course.tsx index a2ce75d..0b9d142 100644 --- a/src/pages/business/videoInfo/components/course.tsx +++ b/src/pages/business/videoInfo/components/course.tsx @@ -1,7 +1,7 @@ import {ScrollView, Text, View} from "@tarojs/components"; import {FC, useEffect, useState} from "react"; import HVideo from "@/components/video/video"; -import {CurEndParam, curriculum, HourPlayData} from "@/api"; +import {curriculum, HourPlayData} from "@/api"; import {Profile} from '@/store' import Taro from "@tarojs/taro"; import Judge from "@/components/topic/judge"; @@ -28,11 +28,10 @@ const Course: FC = ({id, courseId, preview, curEnd}) => { const [validate, setValidate] = useState(false) // 开启验证 const [record, setRecord] = useState([]) // 考题记录 const [testId, setTestId] = useState(null) - const [startRecording, setStartRecording] = useState(null) // 视频开始记录 const {user} = Profile.useContainer() async function onEnded() { - unique_ident.put(data?.duration, Date.now()) // 记录 + const startRecording = unique_ident.get() startRecording && await curriculum.curEnd(courseId, id, {...startRecording, duration: data?.duration!}) // 结束 if (testId) { @@ -64,31 +63,13 @@ const Course: FC = ({id, courseId, preview, curEnd}) => { } async function getData() { - unique_ident.put() - + unique_ident.put(id, Date.now()) const res = await curriculum.hourPlay(courseId, id) - if (res) { setData(res) setBreakpoint(res.timeList) setExamAll(res.hourExamQuestions || []) setTestId(res?.hour_test?.id || null) - - setStartRecording({ - duration: 0, - unique_ident: res.unique_ident, - start_date: Date.now() - }) - - unique_ident.set({ - courseId: Number(courseId), - user_id: user?.id!, - duration: 0, - start_date: Date.now(), - end_date: Date.now(), - hour_id: id, - unique_ident: res.unique_ident - }) } } diff --git a/src/pages/business/videoInfo/videoInfo.tsx b/src/pages/business/videoInfo/videoInfo.tsx index 466d5af..bec6f10 100644 --- a/src/pages/business/videoInfo/videoInfo.tsx +++ b/src/pages/business/videoInfo/videoInfo.tsx @@ -8,6 +8,7 @@ import Taro from "@tarojs/taro"; import eventsIndex from "@/hooks/eventsIndex"; import {formatMinute} from "@/utils/time"; import videoEvents from "@/hooks/videoEvents"; +import unique_ident from "@/hooks/unique_ident"; const VideoInfo: FC = () => { const {id, depId} = Taro.getCurrentInstance()?.router?.params as any @@ -40,7 +41,8 @@ const VideoInfo: FC = () => { } useEffect(() => { - getData(false) + getData(false).then() + unique_ident.set(id) }, [id]) diff --git a/src/static/img/illnessTop.png b/src/static/img/illnessTop.png index 35ee98e7a141120bbf888cd9207bb39ce0bbea64..6c3f026bfd6aab9f17eee83eb7bf7dd5fe02010e 100644 GIT binary patch delta 4635 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 diff --git a/types/curriculum.d.ts b/types/curriculum.d.ts index 31cb7df..4b05e7d 100644 --- a/types/curriculum.d.ts +++ b/types/curriculum.d.ts @@ -106,7 +106,6 @@ interface HourCacheParam { hour_id: number; /** 课时开始学习时间 */ start_date: number; - user_id: number; unique_ident: number }