四端上传

This commit is contained in:
tianmo committed 2026-09-29 15:25:40 +08:00
1 parent 25bbb5f9c8
commit c6e2cb4d5b
276 files changed
+17812 -3

No files matched your search

@@ -0,0 +1 @@
exports.id=681,exports.ids=[681],exports.modules={702:(a,b,c)=>{"use strict";c.d(b,{F:()=>h});var d=c(1278);let e="http://127.0.0.1:3000".replace(/\/+$/,"");async function f(a,b={}){let c,g=(0,d.gf)(),h={"content-type":"application/json",...b.headers??{}};g&&(h.Authorization=`Bearer ${g}`);try{c=await fetch(`${e}${a}`,{...b,headers:h})}catch{throw{code:-1,message:"无法连接服务端,请检查网络或接口地址"}}let i=null;try{i=await c.json()}catch{throw{code:-1,message:`服务端返回异常(HTTP ${c.status})`}}if(401===c.status)throw(0,d.L)(),{code:i?.code??2e3,message:i?.message??"登录已失效,请重新登录"};if(!i||0!==i.code)throw{code:i?.code??-1,message:i?.message??"请求失败"};return i.data}let g=a=>{let b=Object.entries(a).filter(([,a])=>void 0!==a&&""!==a).map(([a,b])=>`${encodeURIComponent(a)}=${encodeURIComponent(String(b))}`);return b.length?`?${b.join("&")}`:""},h={base:e,request:f,login:(a,b)=>f("/admin/v1/auth/login",{method:"POST",body:JSON.stringify({username:a,password:b})}),bootstrap:(a,b)=>f("/admin/v1/auth/bootstrap",{method:"POST",body:JSON.stringify({username:a,password:b})}),stats:()=>f("/admin/v1/stats"),listUsers:(a,b,c)=>f(`/admin/v1/users${g({page:a,pageSize:b,keyword:c})}`),updateUser:(a,b)=>f(`/admin/v1/users/${a}`,{method:"PATCH",body:JSON.stringify(b)}),listResource:(a,b)=>f(`/admin/v1/data/${a}${g(b)}`),createResource:(a,b)=>f(`/admin/v1/data/${a}`,{method:"POST",body:JSON.stringify(b)}),updateResource:(a,b,c)=>f(`/admin/v1/data/${a}/${b}`,{method:"PATCH",body:JSON.stringify(c)}),deleteResource:(a,b)=>f(`/admin/v1/data/${a}/${b}`,{method:"DELETE"}),listSettings:()=>f("/admin/v1/settings"),upsertSetting:(a,b,c)=>f("/admin/v1/settings",{method:"PUT",body:JSON.stringify({key:a,value:b,remark:c})}),listOrders:(a,b,c)=>f(`/admin/v1/orders${g({page:a,pageSize:b,status:c})}`),refundOrder:(a,b)=>f(`/admin/v1/orders/${a}/refund`,{method:"POST",body:JSON.stringify({reason:b})}),listEntitlements:a=>f(`/admin/v1/entitlements${g({userId:a})}`),grantEntitlement:(a,b,c)=>f("/admin/v1/entitlements",{method:"POST",body:JSON.stringify({userId:a,courseId:b,note:c})}),revokeEntitlement:(a,b)=>f(`/admin/v1/entitlements${g({userId:a,courseId:b})}`,{method:"DELETE"})}},1242:(a,b,c)=>{Promise.resolve().then(c.bind(c,8571))},1278:(a,b,c)=>{"use strict";c.d(b,{L:()=>g,M3:()=>h,WG:()=>f,gf:()=>e});let d="yelay_admin_token";function e(){return""}function f(a){window.localStorage.setItem(d,a)}function g(){window.localStorage.removeItem(d)}function h(){return!1}},1669:()=>{},2837:()=>{},3178:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,1094,23)),Promise.resolve().then(c.t.bind(c,1065,23)),Promise.resolve().then(c.t.bind(c,3313,23)),Promise.resolve().then(c.t.bind(c,3016,23)),Promise.resolve().then(c.t.bind(c,3944,23)),Promise.resolve().then(c.t.bind(c,5708,23)),Promise.resolve().then(c.t.bind(c,9516,23)),Promise.resolve().then(c.t.bind(c,1597,23)),Promise.resolve().then(c.bind(c,3852))},3384:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f,metadata:()=>e});var d=c(8936);c(2837);let e={title:"叶雷讲数学 \xb7 管理后台",description:"课程、订单与用户管理"};function f({children:a}){return(0,d.jsx)("html",{lang:"zh-CN",children:(0,d.jsx)("body",{className:"min-h-screen",children:a})})}},3665:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(6076).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/tianmokeji/Desktop/YelayMaths/yelaymaths_admin/src/app/(admin)/layout.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/tianmokeji/Desktop/YelayMaths/yelaymaths_admin/src/app/(admin)/layout.tsx","default")},4251:(a,b,c)=>{"use strict";c.d(b,{MW:()=>g,le:()=>f,u_:()=>h});let d={name:"status",label:"状态",type:"select",options:[{value:1,label:"启用"},{value:0,label:"停用"}]},e={name:"sort_order",label:"排序",type:"number",hideInTable:!0},f=[{key:"courses",title:"课程",description:"付费课程。注意 code 是视频目录名与封面名,创建后不可修改。",fields:[{name:"code",label:"课程标识",type:"text",immutable:!0,hint:"64 位哈希,对应视频目录"},{name:"title",label:"课程名称",type:"text"},{name:"intro",label:"课程介绍",type:"text"},{name:"price_fen",label:"价格(分)",type:"number"},{name:"cover_image",label:"封面文件",type:"text",hideInTable:!0},d,e]},{key:"lessons",title:"课时",description:"课程下的视频。chapter_id 与 play_id 参与视频路径拼接,改动会使旧地址失效。",filterByCourse:!0,fields:[{name:"course_id",label:"课程 ID",type:"number"},{name:"chapter_id",label:"章节 ID",type:"text"},{name:"play_id",label:"播放 ID",type:"text"},{name:"chapter_title",label:"章节名称",type:"text"},{name:"lesson_title",label:"视频名称",type:"text"},{name:"duration",label:"时长",type:"tLine truncated