This commit is contained in:
sx1989827 2021-10-28 22:57:12 +08:00
parent 6b99bb3e4e
commit 1890d78560
11 changed files with 55 additions and 55 deletions

View File

@ -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"

View File

@ -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 ,
}

View File

@ -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")
}
}

View File

@ -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:{

View File

@ -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"
},
}
}

View File

@ -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
}
}

View File

@ -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]
}
}
}

View File

@ -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")
}

View File

@ -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;
}

View File

@ -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
}

View File

@ -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;