mirror of
https://github.com/Teamlinker/Teamlinker.git
synced 2025-06-03 03:00:17 +00:00
add
This commit is contained in:
parent
6b99bb3e4e
commit
1890d78560
@ -4,7 +4,7 @@ export interface ICommon_Model_Team_Role {
|
||||
id :string,
|
||||
name :string,
|
||||
description:string,
|
||||
group_id:string
|
||||
team_id:string
|
||||
}
|
||||
export const Table_Team_Role="team_role"
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { BaseModel } from "./base"
|
||||
|
||||
export interface ICommon_Model_Team_User {
|
||||
user_id :string,
|
||||
group_id :string,
|
||||
team_id :string,
|
||||
role:string,
|
||||
id :string ,
|
||||
}
|
||||
|
@ -12,11 +12,11 @@ export namespace Permission_Types {
|
||||
static readonly DELETE =new Project("DELETE","delete project")
|
||||
static readonly CREATE =new Project("CREATE","create project")
|
||||
}
|
||||
export class Group extends Permission_Base {
|
||||
static readonly READ =new Group("READ","read group")
|
||||
static readonly EDIT =new Group("EDIT","edit group")
|
||||
static readonly DELETE =new Group("DELETE","delete group")
|
||||
static readonly CREATE =new Group("CREATE","create group")
|
||||
static readonly MEMBER =new Group("MEMBER","modify group member")
|
||||
export class Team extends Permission_Base {
|
||||
static readonly READ =new Team("READ","read team")
|
||||
static readonly EDIT =new Team("EDIT","edit team")
|
||||
static readonly DELETE =new Team("DELETE","delete team")
|
||||
static readonly CREATE =new Team("CREATE","create team")
|
||||
static readonly MEMBER =new Team("MEMBER","modify team member")
|
||||
}
|
||||
}
|
@ -49,7 +49,7 @@ const api={
|
||||
id:string,
|
||||
name:string,
|
||||
photo:string,
|
||||
role:Omit<ICommon_Model_Team_Role,"group_id">
|
||||
role:Omit<ICommon_Model_Team_Role,"team_id">
|
||||
}[]>{}
|
||||
},
|
||||
addMember:{
|
||||
|
@ -66,11 +66,11 @@ export namespace Err {
|
||||
export let Team = {
|
||||
teamNotFound:{
|
||||
code:4000,
|
||||
msg:"group not found"
|
||||
msg:"team not found"
|
||||
},
|
||||
teamExists:{
|
||||
code:4001,
|
||||
msg:"group exists"
|
||||
msg:"team exists"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,6 @@ export namespace EServer_Common_Event_Types {
|
||||
DELETE="delete project" //projectId:string
|
||||
}
|
||||
export enum Team {
|
||||
DELETE="delete group" //teamId:string
|
||||
DELETE="delete team" //teamId:string
|
||||
}
|
||||
}
|
@ -30,22 +30,22 @@ export namespace OBTPConfig {
|
||||
permission:[Permission_Types.Project.READ]
|
||||
}
|
||||
}
|
||||
export const Group_Role=<{
|
||||
export const Team_Role=<{
|
||||
[param:string]:{
|
||||
name:string,
|
||||
description:"",
|
||||
permission:Permission_Types.Group[]
|
||||
permission:Permission_Types.Team[]
|
||||
}
|
||||
}>{
|
||||
admin:{
|
||||
name:"admin",
|
||||
description:"",
|
||||
permission:getAllPermissions(Permission_Types.Group)
|
||||
permission:getAllPermissions(Permission_Types.Team)
|
||||
},
|
||||
user:{
|
||||
name:"user",
|
||||
description:"",
|
||||
permission:[Permission_Types.Group.READ]
|
||||
permission:[Permission_Types.Team.READ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ export async function initSystem() {
|
||||
}
|
||||
await mysql.execute(`insert into ${Table_Project_User} (id,role,project_id,user_id) values ('${await generateSnowId()}','${projectRoleUserId}','${projectId}','${userId}')`)
|
||||
await mysql.execute(`insert into ${Table_Version} (version) values ('${getNacosInstance().version}')`)
|
||||
let objGroupRole=OBTPConfig.Role.Group_Role,groupRoleUserId;
|
||||
let objGroupRole=OBTPConfig.Role.Team_Role,groupRoleUserId;
|
||||
for(let key in objGroupRole) {
|
||||
let obj=objGroupRole[key]
|
||||
let groupRoleId=await generateSnowId()
|
||||
@ -130,7 +130,7 @@ export async function initSystem() {
|
||||
await mysql.execute(`insert into ${Table_Role_Permission} (id,role_id,permission_id) values ('${id}','${groupRoleId}','${objPermission[o.value]}')`)
|
||||
}
|
||||
}
|
||||
await mysql.execute(`insert into ${Table_Team_User} (id,role,group_id,user_id) values ('${await generateSnowId()}','${groupRoleUserId}','${groupId}','${userId}')`)
|
||||
await mysql.execute(`insert into ${Table_Team_User} (id,role,team_id,user_id) values ('${await generateSnowId()}','${groupRoleUserId}','${groupId}','${userId}')`)
|
||||
}
|
||||
console.log("init finish")
|
||||
}
|
@ -9,63 +9,63 @@ import TeamService from "../service/team";
|
||||
class TeamController {
|
||||
@DHttpApi(teamApi.routes.create)
|
||||
async create(@DHttpReqParamRequired("name") name:string,@DHttpUser user:IUserSession):Promise<typeof teamApi.routes.create.res>{
|
||||
let group=new TeamService
|
||||
group.assignItem({
|
||||
let team=new TeamService
|
||||
team.assignItem({
|
||||
name,
|
||||
created_by:user.type==EServer_Common_User_Type.USER?user.userId:null
|
||||
});
|
||||
let obj=await group.create()
|
||||
let obj=await team.create()
|
||||
return obj
|
||||
}
|
||||
|
||||
@DHttpApi(teamApi.routes.info)
|
||||
async info(@DHttpReqParamRequired("teamId") teamId:string):Promise<typeof teamApi.routes.create.res> {
|
||||
let group = await TeamService.getItemById(teamId)
|
||||
if(!group) {
|
||||
let team = await TeamService.getItemById(teamId)
|
||||
if(!team) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
return group.getItem()
|
||||
return team.getItem()
|
||||
}
|
||||
|
||||
@DHttpApi(teamApi.routes.update)
|
||||
async update(@DHttpReqParamRequired("teamId") teamId:string,@DHttpReqParamRequired("name") name:string):Promise<typeof teamApi.routes.create.res> {
|
||||
let group = await TeamService.getItemById(teamId)
|
||||
if(!group) {
|
||||
let team = await TeamService.getItemById(teamId)
|
||||
if(!team) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
group.assignItem({
|
||||
team.assignItem({
|
||||
name
|
||||
})
|
||||
let ret=await group.update()
|
||||
let ret=await team.update()
|
||||
return ret
|
||||
}
|
||||
|
||||
@DHttpApi(teamApi.routes.remove)
|
||||
async remove(@DHttpReqParamRequired("teamId") teamId:string) {
|
||||
let group=await TeamService.getItemById(teamId)
|
||||
if(!group) {
|
||||
let team=await TeamService.getItemById(teamId)
|
||||
if(!team) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
await group.delete()
|
||||
await team.delete()
|
||||
}
|
||||
|
||||
@DHttpApi(teamApi.routes.roles)
|
||||
async roles(@DHttpReqParamRequired("teamId") teamId:string) :Promise<typeof teamApi.routes.roles.res> {
|
||||
let group=await TeamService.getItemById(teamId)
|
||||
if(!group) {
|
||||
let team=await TeamService.getItemById(teamId)
|
||||
if(!team) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
let ret=await group.getRoles()
|
||||
let ret=await team.getRoles()
|
||||
return ret;
|
||||
}
|
||||
|
||||
@DHttpApi(teamApi.routes.members)
|
||||
async members(@DHttpReqParamRequired("teamId") teamId:string) :Promise<typeof teamApi.routes.members.res> {
|
||||
let group=await TeamService.getItemById(teamId)
|
||||
if(!group) {
|
||||
let team=await TeamService.getItemById(teamId)
|
||||
if(!team) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
let ret=await group.members()
|
||||
let ret=await team.members()
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ import { Err } from "../../../common/status/error";
|
||||
import { getMysqlInstance } from "../../common/db/mysql";
|
||||
import { generateCreateSql, generateDeleteSql, generateLeftJoin2Sql, generateQuerySql, generateSnowId, generateUpdateSql } from "../../common/util/sql";
|
||||
export namespace teamMapper {
|
||||
export async function checkGroup(name:string):Promise<boolean> {
|
||||
export async function checkTeam(name:string):Promise<boolean> {
|
||||
if(!name) {
|
||||
throw Err.Common.paramError
|
||||
}
|
||||
@ -16,11 +16,11 @@ export namespace teamMapper {
|
||||
}
|
||||
|
||||
|
||||
export async function createGroup(info:ICommon_Model_Team):Promise<void> {
|
||||
export async function createTeam(info:ICommon_Model_Team):Promise<void> {
|
||||
if(!info || !info.name ||info.id){
|
||||
throw Err.Common.paramError
|
||||
}
|
||||
let isExists=await checkGroup(info.name);
|
||||
let isExists=await checkTeam(info.name);
|
||||
if(isExists) {
|
||||
throw Err.Team.teamExists
|
||||
}
|
||||
@ -29,7 +29,7 @@ export namespace teamMapper {
|
||||
await mysql.execute(generateCreateSql(teamModel,info))
|
||||
}
|
||||
|
||||
export async function getGroupById(id:string):Promise<ICommon_Model_Team> {
|
||||
export async function getTeamById(id:string):Promise<ICommon_Model_Team> {
|
||||
if(!id) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
@ -38,7 +38,7 @@ export namespace teamMapper {
|
||||
return ret
|
||||
}
|
||||
|
||||
export async function updateGroup(info:ICommon_Model_Team):Promise<void> {
|
||||
export async function updateTeam(info:ICommon_Model_Team):Promise<void> {
|
||||
if(!info.id) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
@ -48,7 +48,7 @@ export namespace teamMapper {
|
||||
await mysql.execute(generateUpdateSql(teamModel,info,{id}))
|
||||
}
|
||||
|
||||
export async function deleteGroup(id:string):Promise<void> {
|
||||
export async function deleteTeam(id:string):Promise<void> {
|
||||
if(!id) {
|
||||
throw Err.Team.teamNotFound
|
||||
}
|
||||
@ -62,7 +62,7 @@ export namespace teamMapper {
|
||||
}
|
||||
var mysql=getMysqlInstance();
|
||||
let ret=await mysql.execute(generateQuerySql(teamRoleModel,null,{
|
||||
group_id:{
|
||||
team_id:{
|
||||
value:[teamId,null],
|
||||
exp:"in"
|
||||
}
|
||||
@ -74,7 +74,7 @@ export namespace teamMapper {
|
||||
id:string,
|
||||
name:string,
|
||||
photo:string,
|
||||
role:Omit<ICommon_Model_Team_Role,"group_id">
|
||||
role:Omit<ICommon_Model_Team_Role,"team_id">
|
||||
}[]> {
|
||||
if(!teamId) {
|
||||
throw Err.Team.teamNotFound
|
||||
@ -106,7 +106,7 @@ export namespace teamMapper {
|
||||
}
|
||||
}
|
||||
},{
|
||||
group_id:{
|
||||
team_id:{
|
||||
value:teamId,
|
||||
model:teamUserModel
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ export default class Team extends Entity<ICommon_Model_Team> {
|
||||
} else if(this.item.id) {
|
||||
throw Err.Team.teamExists;
|
||||
}
|
||||
await teamMapper.createGroup(this.item)
|
||||
await teamMapper.createTeam(this.item)
|
||||
await this.loadItem();
|
||||
return this.item;
|
||||
}
|
||||
@ -21,29 +21,29 @@ export default class Team extends Entity<ICommon_Model_Team> {
|
||||
if(!this.item || !this.item.id) {
|
||||
throw Err.Team.teamNotFound;
|
||||
}
|
||||
await teamMapper.updateGroup(this.item)
|
||||
await teamMapper.updateTeam(this.item)
|
||||
return this.item;
|
||||
}
|
||||
async delete(){
|
||||
await teamMapper.deleteGroup(this.item.id);
|
||||
await teamMapper.deleteTeam(this.item.id);
|
||||
emitServiceEvent(EServer_Common_Event_Types.Team.DELETE,this.item.id);
|
||||
}
|
||||
async loadItem():Promise<ICommon_Model_Team> {
|
||||
if(!this.item || !this.item.id) {
|
||||
throw Err.Team.teamNotFound;
|
||||
}
|
||||
let obj = await teamMapper.getGroupById(this.item.id);
|
||||
let obj = await teamMapper.getTeamById(this.item.id);
|
||||
this.item=obj;
|
||||
return this.item;
|
||||
}
|
||||
static async getItemById(id:string,reload:boolean=false):Promise<InstanceType<typeof Team>>{
|
||||
let obj = await teamMapper.getGroupById(id);
|
||||
let obj = await teamMapper.getTeamById(id);
|
||||
if (!obj) {
|
||||
return null
|
||||
}
|
||||
let group = new Team;
|
||||
group.setItem(obj);
|
||||
return group;
|
||||
let team = new Team;
|
||||
team.setItem(obj);
|
||||
return team;
|
||||
}
|
||||
|
||||
async getRoles():Promise<ICommon_Model_Team_Role[]>{
|
||||
@ -58,7 +58,7 @@ export default class Team extends Entity<ICommon_Model_Team> {
|
||||
id:string,
|
||||
name:string,
|
||||
photo:string,
|
||||
role:Omit<ICommon_Model_Team_Role,"group_id">
|
||||
role:Omit<ICommon_Model_Team_Role,"team_id">
|
||||
}[]>{
|
||||
if(!this.item || !this.item.id) {
|
||||
throw Err.Team.teamNotFound;
|
||||
|
Loading…
Reference in New Issue
Block a user