芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/api/user-playback/controllers/user-playback.js
'use strict'; const requestIp = require('request-ip'); const {sanitizeEntity} = require('strapi-utils'); /** * Read the documentation (https://strapi.io/documentation/developer-docs/latest/development/backend-customization.html#core-controllers) * to customize this controller */ module.exports = { async stopPlayback(ctx) { const {user} = ctx.state; const {id1, id2, desc} = ctx.request.body; let playbackInfo = await strapi.services["user-playback"].findOne({ id: id1 }); if (playbackInfo) { const entity = await strapi.services["user-playback"].update({ id: id1 }, { desc, isExpired: true }); } playbackInfo = await strapi.services["user-playback"].findOne({ id: id2 }); if (playbackInfo) { const entity = await strapi.services["user-playback"].update({ id: id2 }, { desc, isExpired: true }); } return ctx.send(true); }, async getRecentPlaybacks(ctx) { const {query} = ctx; const {id} = ctx.params; query["user_eq"] = id; query["_sort"] = "createdAt:desc"; let entities; if (query._q) { entities = await strapi.services["user-playback"].search(query, [ { path: "session", populate: { path: "course_level" } } ]); } else { entities = await strapi.services["user-playback"].find(query, [ { path: "session", populate: { path: "course_level" } } ]); } return entities.map(x => ({ip: x.ip, createdAt: x.createdAt, title: x.session.course_level.title})); }, async refreshPlayback(ctx) { const {user} = ctx.state; let {meetingId, desc, code, id, isAdobe} = ctx.request.body; code = code ? Number(code) : 0; let result = {id1: null, code1: null, id2: null, code2: null}; let entity = null; const ip = requestIp.getClientIp(ctx.request.req); if (desc === "before accept law") { const session = await strapi.services.helpers.verifyUserAccessToMeeting(meetingId, user); if (session.result === false) { return ctx.badRequest(null, session.entity); } code = strapi.services.helpers.makeRandomNumber(1000, 9999); entity = await strapi.services["user-playback"].create({ ip, code, user: user.id, session: session.entity.id, desc }); result.id1 = entity.id; result.code1 = code; if (!isAdobe) { code = strapi.services.helpers.makeRandomNumber(1000, 9999); entity = await strapi.services["user-playback"].create({ ip, code, user: user.id, session: session.entity.id, desc, }); result.id2 = entity.id; result.code2 = code; } } else { const isExist = await strapi.services["user-playback"].findOne({id}); if (!isExist || isExist.isExpired) { return ctx.badRequest(null, "session.errors.invalidPlayback"); } console.log("refresh desc is ...", desc); entity = await strapi.services["user-playback"].update({ id }, { ip, desc, code, isExpired: false, }); result.id1 = entity.id; result.code1 = code; } return ctx.send(result); }, async validatePlay(ctx) { const {user} = ctx.state; let {code, id, ip, initCode} = ctx.request.body; const result = await strapi.services["user-playback"] .validatePlay(user, ip, id, code, initCode); if (result.result) { return ctx.send(true); } else { return ctx.badRequest(null, result.entity); } } };