On this page
保存到自己的网盘
控制器:app/controller/share.js
js
// 保存到自己的网盘
async saveToSelf(){
const { ctx,app,service } = this;
let current_user_id = ctx.authUser.id
ctx.validate({
dir_id:{
type:"int",
required:true,
desc:"目录ID"
},
sharedurl:{
type:"string",
required:true,
desc:"分享标识"
},
})
let { dir_id,sharedurl } = ctx.request.body
// 分享是否存在
let s = await service.share.isExist(sharedurl,{
include:[{
model:app.model.File
}]
})
if(s.user_id === current_user_id){
return ctx.apiSuccess('本人分享,无需保存')
}
// 文件是否存在
if(dir_id > 0){
await service.file.isDirExist(dir_id)
}
// 查询该分享目录下的所有数据
let getAllFile = async (obj,dirId)=>{
let data = {
name: obj.name,
ext: obj.ext,
md: obj.md,
file_id:dirId,
user_id: current_user_id,
size: obj.size,
isdir: obj.isdir,
url: obj.url,
}
// 判断当前用户剩余空间
if ((ctx.authUser.total_size - ctx.authUser.used_size) < data.size) {
return ctx.throw(400,'你的可用内存不足');
}
// 直接创建
let o = await app.model.File.create(data)
// 更新user表的使用内存
ctx.authUser.used_size = ctx.authUser.used_size + parseInt(data.size);
await ctx.authUser.save();
// 目录
if(obj.isdir){
// 继续查询下面其他的数据
let rows = await app.model.File.findAll({
where:{
user_id:obj.user_id,
file_id:obj.id,
}
});
rows.forEach((item)=>{
getAllFile(item,o.id)
})
return
}
}
await getAllFile(s.file,dir_id)
ctx.apiSuccess('ok')
}
路由:app/router.js
js
router.post("/share/save_to_self", controller.share.saveToSelf);