mirror of
https://github.com/Teamlinker/Teamlinker.git
synced 2025-06-03 03:00:17 +00:00
187 lines
8.3 KiB
TypeScript
187 lines
8.3 KiB
TypeScript
import {ECommon_Model_Organization_Member_Type} from "../../../common/model/organization";
|
|
import {ECommon_User_Type} from "../../../common/model/user";
|
|
import projectApi from "../../../common/routes/project";
|
|
import {Err} from "../../../common/status/error";
|
|
import {DHttpApi, DHttpController, DHttpReqParam, DHttpReqParamRequired, DHttpUser} from "../../common/http/http";
|
|
import {ProjectService} from "../service/project";
|
|
import {IUserSession} from "../../user/types/config";
|
|
import rpcAuthApi from "../../auth/rpc/auth";
|
|
|
|
@DHttpController(projectApi)
|
|
class ProjectController {
|
|
@DHttpApi(projectApi.routes.basic)
|
|
async projectInfo(@DHttpReqParamRequired("projectId") projectId:string):Promise<typeof projectApi.routes.basic.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
return obj.getItem();
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.create)
|
|
async createProject(@DHttpReqParamRequired("name") name:string,@DHttpReqParamRequired("keyword") keyword:string,@DHttpReqParam("photo") photo:string,@DHttpReqParam("description") description:string,@DHttpUser user:IUserSession):Promise<typeof projectApi.routes.create.res>{
|
|
let obj=new ProjectService()
|
|
obj.assignItem({
|
|
keyword:keyword,
|
|
name:name,
|
|
created_by:user.organizationInfo.organizationUserId,
|
|
description:description,
|
|
photo:photo,
|
|
organization_id:user.organizationInfo.organizationId
|
|
})
|
|
let ret=await obj.create()
|
|
return ret
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.edit)
|
|
async editProject(@DHttpReqParam("name") name:string,@DHttpReqParam("keyword") keyword:string,@DHttpReqParam("photo") photo:string,@DHttpReqParam("description") description:string,@DHttpReqParam("projectId") projectId:string):Promise<typeof projectApi.routes.edit.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let item=obj.getItem()
|
|
item.name=name;
|
|
item.keyword=keyword
|
|
item.photo=photo
|
|
item.description=description
|
|
let ret=await obj.update()
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.remove)
|
|
async removeProject(@DHttpReqParamRequired("projectId") projectId:string):Promise<typeof projectApi.routes.remove.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
await obj.delete()
|
|
return
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.listMember)
|
|
async listMember(@DHttpReqParamRequired("projectId") projectId:string,@DHttpReqParamRequired("memberType") memberType:ECommon_Model_Organization_Member_Type,@DHttpReqParamRequired("page") page:number,@DHttpReqParamRequired("size") size:number,@DHttpReqParam("key") key:string):Promise<typeof projectApi.routes.listMember.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await obj.listMember(memberType,page,size,key);
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.addMember)
|
|
async addMember(@DHttpReqParamRequired("projectId") projectId:string, @DHttpReqParam("memberId") memberId:string, @DHttpReqParamRequired("type") type:ECommon_Model_Organization_Member_Type, @DHttpReqParamRequired("roleId") roleId:string):Promise<typeof projectApi.routes.addMember.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await obj.addMember(memberId,type,roleId)
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.editMember)
|
|
async editMember(@DHttpReqParamRequired("projectId") projectId:string,@DHttpReqParamRequired("memberId") memberId:string,@DHttpReqParam("type") type:ECommon_Model_Organization_Member_Type,@DHttpReqParamRequired("roleId") roleId:string):Promise<typeof projectApi.routes.editMember.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await obj.editMember(memberId,type,roleId);
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.removeMember)
|
|
async removeMember(@DHttpReqParamRequired("projectId") projectId:string,@DHttpReqParam("memberId") memberId:string,@DHttpReqParamRequired("type") type:ECommon_Model_Organization_Member_Type):Promise<typeof projectApi.routes.removeMember.res>{
|
|
let obj=await ProjectService.getItemById(projectId);
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
await obj.removeMember(memberId,type)
|
|
return
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.list)
|
|
async list(@DHttpReqParam("keyword") keyword:string,@DHttpReqParamRequired("page") page:number,@DHttpReqParamRequired("size") size:number,@DHttpReqParam("organizationUserId") organizationUserId:string,@DHttpUser userInfo:IUserSession) :Promise<typeof projectApi.routes.list.res>{
|
|
let user=""
|
|
if(userInfo.type==ECommon_User_Type.ADMIN && organizationUserId) {
|
|
user=organizationUserId
|
|
} else if(userInfo.type==ECommon_User_Type.USER) {
|
|
user=userInfo.organizationInfo.organizationUserId
|
|
}
|
|
let list=await ProjectService.list(userInfo.organizationInfo.organizationId,page,size,keyword,user)
|
|
return list
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.issueTypeList)
|
|
async issueTypeList(@DHttpReqParamRequired("projectId") projectId:string) :Promise<typeof projectApi.routes.issueTypeList.res> {
|
|
let project=await ProjectService.getItemById(projectId)
|
|
if(!project) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await project.issueTypeList()
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.recentProjectList)
|
|
async recentProjectList(@DHttpUser user:IUserSession) :Promise<typeof projectApi.routes.recentProjectList.res> {
|
|
let ret=await ProjectService.recentProjectList(user.userId);
|
|
return ret;
|
|
}
|
|
|
|
|
|
@DHttpApi(projectApi.routes.listRole)
|
|
async listRole(@DHttpReqParam("projectId") projectId:string,@DHttpUser user:IUserSession) :Promise<typeof projectApi.routes.listRole.res>{
|
|
if(projectId) {
|
|
let obj=await ProjectService.getItemById(projectId)
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await obj.listRole();
|
|
return ret;
|
|
} else {
|
|
let ret=await ProjectService.listGlobalRole(user.organizationInfo.organizationId);
|
|
return ret;
|
|
}
|
|
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.addRole)
|
|
async addRole(@DHttpReqParam("projectId") projectId:string,
|
|
@DHttpReqParamRequired("name") name :string,
|
|
@DHttpReqParamRequired("value") value:number,
|
|
@DHttpReqParam("description") description:string,@DHttpUser user:IUserSession) :Promise<typeof projectApi.routes.addRole.res>{
|
|
if(projectId) {
|
|
let obj=await ProjectService.getItemById(projectId)
|
|
if(!obj) {
|
|
throw Err.Project.projectNotFound
|
|
}
|
|
let ret=await obj.createRole(name,description,value);
|
|
return ret;
|
|
} else {
|
|
let ret=await ProjectService.createGlobalRole(user.organizationInfo.organizationId,name,description,value)
|
|
return ret;
|
|
}
|
|
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.editRole)
|
|
async editRole(@DHttpReqParamRequired("roleId") roleId:string,
|
|
@DHttpReqParam("name") name :string,
|
|
@DHttpReqParam("value") value:number,
|
|
@DHttpReqParam("description") description:string,
|
|
@DHttpUser user:IUserSession) :Promise<typeof projectApi.routes.editRole.res>{
|
|
let ret=await rpcAuthApi.updateRole({
|
|
id:roleId,
|
|
name,
|
|
description,
|
|
value:value
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
@DHttpApi(projectApi.routes.removeRole)
|
|
async removeRole(@DHttpReqParamRequired("roleId") roleId:string,@DHttpUser user:IUserSession) :Promise<typeof projectApi.routes.removeRole.res>{
|
|
await rpcAuthApi.removeRole(roleId);
|
|
return;
|
|
}
|
|
|
|
}
|
|
export default new ProjectController |