mirror of
https://github.com/Teamlinker/Teamlinker.git
synced 2025-06-03 03:00:17 +00:00
38 lines
1.6 KiB
TypeScript
38 lines
1.6 KiB
TypeScript
import { ECommon_Model_File_Type } from '../../../common/model/file';
|
|
import fileApi from "../../../common/routes/file";
|
|
import { Err } from '../../../common/status/error';
|
|
import { DComponent } from "../../common/decorate/component";
|
|
import { DHttpApi, DHttpController, DHttpReqParamRequired, DHttpUser } from "../../common/http/http";
|
|
import { IServer_Common_Http_Req_File } from "../../common/types/http";
|
|
import FileService from "../service/file";
|
|
import { IUserSession } from './../../common/rpc/api/user';
|
|
@DComponent
|
|
@DHttpController(fileApi)
|
|
class AdminController {
|
|
@DHttpApi(fileApi.routes.upload)
|
|
async upload(@DHttpReqParamRequired("file") file:IServer_Common_Http_Req_File,@DHttpUser user:IUserSession):Promise<typeof fileApi.routes.upload.res>{
|
|
let obj=await FileService.getItemByMd5(file.md5)
|
|
if(obj) {
|
|
return obj.getItem().id
|
|
} else {
|
|
let objFile=new FileService()
|
|
objFile.assignItem({
|
|
created_by:user.userId,
|
|
size:file.size,
|
|
filename:file.fileName,
|
|
type:ECommon_Model_File_Type.LOCAL,
|
|
md5:file.md5
|
|
})
|
|
let ret=await objFile.upload(file.data)
|
|
return ret
|
|
}
|
|
}
|
|
@DHttpApi(fileApi.routes.getPath)
|
|
async getPath(@DHttpReqParamRequired("fileId") fileId:string):Promise<typeof fileApi.routes.getPath.res> {
|
|
let obj=await FileService.getItemById(fileId)
|
|
if(!obj) {
|
|
throw Err.File.fileNotFound
|
|
}
|
|
return "/file"+obj.getItem().path
|
|
}
|
|
} |