From 67a12050bcbad4a583908dd9b8c8557287afb061 Mon Sep 17 00:00:00 2001 From: sx1989827 <395414574@qq.com> Date: Sun, 7 Nov 2021 15:07:41 +0800 Subject: [PATCH] aa --- code/common/model/project_label.ts | 11 +++- code/common/routes/project.ts | 11 +--- code/common/routes/response.ts | 9 +++ code/common/status/error.ts | 8 +++ code/server/common/entity/entity.ts | 65 +++++++++++++++++++--- code/server/common/entity/mapper.ts | 55 ++++++++++++++++++ code/server/common/tsconfig.json | 3 + code/server/common/util/sql.ts | 4 +- code/server/cooperation/app/app.ts | 2 +- code/server/cooperation/http/project.ts | 8 +-- code/server/cooperation/http/tag.ts | 12 ++++ code/server/cooperation/mapper/project.ts | 49 +++------------- code/server/cooperation/mapper/tag.ts | 36 ++++++++++++ code/server/cooperation/service/project.ts | 49 ++-------------- code/server/cooperation/service/tag.ts | 6 ++ code/server/user/http/team.ts | 3 +- code/server/user/http/user.ts | 15 ++--- code/server/user/mapper/admin.ts | 51 ++++------------- code/server/user/mapper/team.ts | 58 +++++-------------- code/server/user/mapper/user.ts | 50 ++++------------- code/server/user/service/admin.ts | 53 ++---------------- code/server/user/service/team.ts | 43 ++------------ code/server/user/service/user.ts | 53 ++---------------- 23 files changed, 277 insertions(+), 377 deletions(-) create mode 100644 code/server/common/entity/mapper.ts create mode 100644 code/server/cooperation/http/tag.ts create mode 100644 code/server/cooperation/mapper/tag.ts create mode 100644 code/server/cooperation/service/tag.ts diff --git a/code/common/model/project_label.ts b/code/common/model/project_label.ts index da45348..712edf2 100644 --- a/code/common/model/project_label.ts +++ b/code/common/model/project_label.ts @@ -1,6 +1,15 @@ +import { BaseModel } from "./base" + export interface ICommon_Model_Project_Lable { id :string, name:string, project_id:string } -export const Table_Project_Label="project_label" \ No newline at end of file +export const Table_Project_Label="project_label" + +class ProjectLabelModel extends BaseModel { + table=Table_Project_Label + model={} + } + + export let projectLabelModel=new ProjectLabelModel \ No newline at end of file diff --git a/code/common/routes/project.ts b/code/common/routes/project.ts index 8da6d82..5a9f7d4 100644 --- a/code/common/routes/project.ts +++ b/code/common/routes/project.ts @@ -2,7 +2,7 @@ import { Permission_Types } from '../permission/permission'; import { ICommon_Model_Project } from './../model/project'; import { ICommon_Model_Project_Module } from './../model/project_module'; import { ECommon_Services } from './../types'; -import { ECommon_Route_Res_Project_Member_Type, ICommon_Route_Res_Project_CreateModule_Data, ICommon_Route_Res_Project_Member } from './response'; +import { ECommon_Route_Res_Project_Member_Type, ICommon_RouteRes_Project_ListTag, ICommon_Route_Res_Project_CreateModule_Data, ICommon_Route_Res_Project_Member } from './response'; import { ECommon_HttpApi_Method } from "./types"; const api={ baseUrl:"/project", @@ -49,14 +49,7 @@ const api={ size:number, keyword:string }>{}, - res:<{ - totalPage:number, - page:number, - data:{ - id:string, - name:string - }[] - }>{} + res:{} }, createTag:{ method:ECommon_HttpApi_Method.POST, diff --git a/code/common/routes/response.ts b/code/common/routes/response.ts index d479d31..9c5c58a 100644 --- a/code/common/routes/response.ts +++ b/code/common/routes/response.ts @@ -19,4 +19,13 @@ export type ICommon_Route_Res_Project_Member = { id:string, name:string } +} + +export type ICommon_RouteRes_Project_ListTag = { + totalPage:number, + page:number, + data:{ + id:string, + name:string + }[] } \ No newline at end of file diff --git a/code/common/status/error.ts b/code/common/status/error.ts index b6b7af6..7ff0825 100644 --- a/code/common/status/error.ts +++ b/code/common/status/error.ts @@ -7,6 +7,14 @@ export namespace Err { mysqlError:{ code:2, msg:"mysql error" + }, + itemNotFound:{ + code:3, + msg:"item not found" + }, + itemExists:{ + code:4, + msg:"item exists" } } export let User = { diff --git a/code/server/common/entity/entity.ts b/code/server/common/entity/entity.ts index 5e47004..2a68525 100644 --- a/code/server/common/entity/entity.ts +++ b/code/server/common/entity/entity.ts @@ -1,5 +1,14 @@ -export abstract class Entity { - protected item:T; +import { BaseModel } from '../../../common/model/base'; +import { Err } from '../../../common/status/error'; +import { EServer_Common_Event_Types } from '../event/types'; +import { emitServiceEvent } from '../rpc/rpc'; +import { Mapper } from './mapper'; +export abstract class Entity> { + protected item:T["model"]; + protected mapper:M + constructor(mapper:M) { + this.mapper=mapper + } getId():string{ if(this.item) { return (this.item).id @@ -7,10 +16,10 @@ export abstract class Entity { return null; } } - setItem(item:T) { + setItem(item:T["model"]) { this.item=item } - assignItem(item:Partial) { + assignItem(item:Partial) { if(typeof(item)=="object") { if(!this.item) { this.item={} @@ -20,11 +29,49 @@ export abstract class Entity { } } } - getItem():T { + getItem():T["model"] { return this.item; } - abstract create():Promise; - abstract update():Promise; - abstract delete(); - abstract loadItem():Promise; + async create():Promise { + if(!this.item) { + throw Err.Common.itemNotFound; + } else if(this.item.id) { + throw Err.Common.itemExists; + } + await this.mapper.create(this.item) + await this.loadItem(); + return this.item; + } + async update():Promise{ + if(!this.item || !this.item.id) { + throw Err.Common.itemNotFound; + } + await this.mapper.update(this.item) + return this.item; + } + async delete(eventPulish?:EServer_Common_Event_Types.Types){ + await this.mapper.delete(this.item.id); + if(eventPulish) { + emitServiceEvent(eventPulish,this.item.id); + } + + } + async loadItem():Promise{ + if(!this.item || !this.item.id) { + throw Err.Common.itemNotFound; + } + let obj = await this.mapper.getById(this.item.id); + this.item=obj; + return this.item; + } + static async getItemById(this:{new():Type},id:string):Promise{ + let user = new this() as any; + let obj = await user.mapper.getById(id); + if(obj) { + user.setItem(obj); + return user; + } else { + return null; + } + } } \ No newline at end of file diff --git a/code/server/common/entity/mapper.ts b/code/server/common/entity/mapper.ts new file mode 100644 index 0000000..f14c37d --- /dev/null +++ b/code/server/common/entity/mapper.ts @@ -0,0 +1,55 @@ +import { BaseModel } from "../../../common/model/base"; +import { Err } from "../../../common/status/error"; +import { getMysqlInstance } from "../db/mysql"; +import { generateCreateSql, generateDeleteSql, generateQuerySql, generateSnowId, generateUpdateSql } from "../util/sql"; + +export abstract class Mapper { + private model:T + constructor(model:T){ + this.model=model + } + async createConfig(info:T["model"]){} + async create(info:T["model"]):Promise { + if(!info || info.id){ + throw Err.Common.paramError + } + await this.createConfig(info); + info.id=await generateSnowId(); + var mysql=getMysqlInstance() + await mysql.execute(generateCreateSql(this.model,info)) + } + + async getById(id:string):Promise { + if(!id) { + throw Err.Common.itemNotFound + } + var mysql=getMysqlInstance(); + let ret=await mysql.executeOne(generateQuerySql(this.model,[],{id})) + return ret + } + async updateConfig(info:T["model"]){} + async update(info:T["model"]):Promise { + if(!info.id) { + throw Err.Common.itemNotFound + } + var mysql=getMysqlInstance(); + await this.updateConfig(info) + let id=info.id; + delete info.id + if(info.created_time) { + delete info.created_time + } + if(info.modified_time) { + delete info.modified_time + } + await mysql.execute(generateUpdateSql(this.model,info,{id})) + } + + async delete(id):Promise { + if(!id) { + throw Err.Common.itemNotFound + } + var mysql=getMysqlInstance(); + await mysql.execute(generateDeleteSql(this.model,{id})) + } +} \ No newline at end of file diff --git a/code/server/common/tsconfig.json b/code/server/common/tsconfig.json index 8503187..73b1741 100644 --- a/code/server/common/tsconfig.json +++ b/code/server/common/tsconfig.json @@ -11,6 +11,9 @@ "emitDecoratorMetadata": true, "noImplicitOverride": true, "baseUrl": "./", + "plugins": [ + { "transform": "../../common/transform/transformer.js" } + ] }, "include": [ "./**/*", diff --git a/code/server/common/util/sql.ts b/code/server/common/util/sql.ts index f3d80f8..9593859 100644 --- a/code/server/common/util/sql.ts +++ b/code/server/common/util/sql.ts @@ -134,7 +134,7 @@ export function generateCreateSql(model:T,obj:{ export function generateQuerySql(model:T,columns:K1[],objExpr?:{ [param in keyof T["model"]]?:EXPRVALUE -},exprMode?:"and"|"or"):{ +},exprMode?:"and"|"or",limit?:number,size?:number):{ value:string, type:{ [key in Extract]:T["model"][key] @@ -148,7 +148,7 @@ export function generateQuerySql{ - let obj=await projectService.getItemById(projectId); + let obj=await ProjectService.getItemById(projectId); return obj.getItem(); } @DHttpApi(projectApi.routes.create) async createProject(@DHttpReqParamRequired("name") name:string,@DHttpReqParamRequired("keyword") keyword:string,@DHttpReqParam("image") image:string,@DHttpReqParam("description") description:string,@DHttpUser user:IUserSession):Promise{ - let obj=new projectService() + let obj=new ProjectService() obj.assignItem({ keyword:keyword, name:name, @@ -28,7 +28,7 @@ class ProjectController { @DHttpApi(projectApi.routes.edit) async editProject(@DHttpReqParam("name") name:string,@DHttpReqParam("keyword") keyword:string,@DHttpReqParam("image") image:string,@DHttpReqParam("description") description:string,@DHttpReqParam("projectId") projectId:string):Promise{ - let obj=await projectService.getItemById(projectId); + let obj=await ProjectService.getItemById(projectId); if(!obj) { throw Err.Project.projectNotFound } diff --git a/code/server/cooperation/http/tag.ts b/code/server/cooperation/http/tag.ts new file mode 100644 index 0000000..ed5c7e3 --- /dev/null +++ b/code/server/cooperation/http/tag.ts @@ -0,0 +1,12 @@ +import { DComponent } from "../../common/decorate/component"; +import { DHttpApi, DHttpReqParam, DHttpReqParamRequired } from "../../common/http/http"; +import * as projectApi from "../../../common/routes/project"; + + +@DComponent +class TagController { + @DHttpApi(projectApi.routes.listTag) + async listTag(@DHttpReqParamRequired("projectId") projectId:string,@DHttpReqParamRequired("page") page:number,@DHttpReqParamRequired("size") size:number,@DHttpReqParam("keyword") keyword:string) { + + } +} \ No newline at end of file diff --git a/code/server/cooperation/mapper/project.ts b/code/server/cooperation/mapper/project.ts index 4fcb00a..47f80ce 100644 --- a/code/server/cooperation/mapper/project.ts +++ b/code/server/cooperation/mapper/project.ts @@ -1,42 +1,9 @@ -import { ICommon_Model_Project, projectModel } from '../../../common/model/project'; -import { Err } from "../../../common/status/error"; -import { getMysqlInstance } from "../../common/db/mysql"; -import { generateCreateSql, generateDeleteSql, generateQuerySql, generateSnowId, generateUpdateSql } from "../../common/util/sql"; -export namespace projectMapper { - - export async function createProject(info:ICommon_Model_Project):Promise { - if(!info || !info.name || !info.keyword || info.id){ - throw Err.Common.paramError - } - info.id=await generateSnowId(); - var mysql=getMysqlInstance() - await mysql.execute(generateCreateSql(projectModel,info)) +import { projectModel } from '../../../common/model/project'; +import { Mapper } from "../../common/entity/mapper"; +; +class ProjectMapper extends Mapper{ + constructor(){ + super(projectModel) } - - export async function getProjecById(id:string):Promise { - if(!id) { - throw Err.Project.userIdNotExists - } - var mysql=getMysqlInstance(); - let ret=await mysql.executeOne(generateQuerySql(projectModel,[],{id})) - return ret - } - - export async function updateProject(info:ICommon_Model_Project):Promise { - if(!info.id) { - throw Err.Project.userIdNotExists - } - var mysql=getMysqlInstance(); - let id=info.id; - delete info.id,info.created_time,info.modified_time - await mysql.execute(generateUpdateSql(projectModel,info,{id})) - } - - export async function deleteProject(id):Promise { - if(!id) { - throw Err.Project.userIdNotExists - } - var mysql=getMysqlInstance(); - await mysql.execute(generateDeleteSql(projectModel,{id})) - } -} \ No newline at end of file +} +export let projectMapper=new ProjectMapper \ No newline at end of file diff --git a/code/server/cooperation/mapper/tag.ts b/code/server/cooperation/mapper/tag.ts new file mode 100644 index 0000000..f8f6c14 --- /dev/null +++ b/code/server/cooperation/mapper/tag.ts @@ -0,0 +1,36 @@ +import { ICommon_RouteRes_Project_ListTag } from "../../../common/routes/response"; +import { Err } from "../../../common/status/error"; +import { getMysqlInstance } from "../../common/db/mysql"; +import { DComponent } from "../../common/decorate/component"; +import { Mapper } from "../../common/entity/mapper"; +import { generateQuerySql } from '../../common/util/sql'; +import { projectLabelModel, Table_Project_Label } from './../../../common/model/project_label'; +class TagMapper extends Mapper { + constructor() { + super(projectLabelModel) + } + async listTag(projectId:string,page:number,size:number,keyword:string):Promise { + if(!projectId || page===undefined || page<0 || size===undefined || size<=0) { + throw Err.Common.paramError + } + let mysql=getMysqlInstance() + let ret:Pick[]=[] + let count=await mysql.executeOne(`select count(1) from ${Table_Project_Label} where project_id='${projectId}'${keyword?` and name like %${keyword}%`:""}`) + if(count>0) { + ret=await mysql.execute(generateQuerySql(projectLabelModel,["id","name"],{ + project_id:projectId, + ...(keyword && { + name:{ + exp:"%like%", + value:keyword + }}) + })) + } + return { + totalPage:count, + page:page, + data:ret + } + } +} +export let tagMapper=new TagMapper diff --git a/code/server/cooperation/service/project.ts b/code/server/cooperation/service/project.ts index 4cafaaa..a07d115 100644 --- a/code/server/cooperation/service/project.ts +++ b/code/server/cooperation/service/project.ts @@ -1,47 +1,8 @@ +import { Entity } from "../../common/entity/entity"; import { projectMapper } from '../mapper/project'; -import { ICommon_Model_Project } from '../../../common/model/project'; -import { Err } from '../../../common/status/error'; -import {Entity} from "../../common/entity/entity" -import { EServer_Common_Event_Types } from '../../common/event/types'; -import { emitServiceEvent } from '../../common/rpc/rpc'; -export default class Project extends Entity { - async create():Promise { - if(!this.item) { - throw Err.Project.projectNotFound; - } else if(this.item.id) { - throw Err.Project.projectExists; - } - await projectMapper.createProject(this.item) - await this.loadItem(); - return this.item; +import { projectModel } from './../../../common/model/project'; +export default class Project extends Entity { + constructor(){ + super(projectMapper) } - async update():Promise{ - if(!this.item || !this.item.id) { - throw Err.Project.projectNotFound; - } - await projectMapper.updateProject(this.item) - return this.item; - } - async delete(){ - await projectMapper.deleteProject(this.item.id); - emitServiceEvent(EServer_Common_Event_Types.Project.DELETE,this.item.id); - } - async loadItem():Promise{ - if(!this.item || !this.item.id) { - throw Err.Project.projectNotFound; - } - let obj = await projectMapper.getProjecById(this.item.id); - this.item=obj; - return this.item; - } - static async getItemById(id:string):Promise>{ - let obj = await projectMapper.getProjecById(id); - if(obj) { - let user = new Project; - user.setItem(obj); - return user; - } else { - return null; - } - } } \ No newline at end of file diff --git a/code/server/cooperation/service/tag.ts b/code/server/cooperation/service/tag.ts new file mode 100644 index 0000000..bda4771 --- /dev/null +++ b/code/server/cooperation/service/tag.ts @@ -0,0 +1,6 @@ +import { Entity } from "../../common/entity/entity"; +import { projectLabelModel } from './../../../common/model/project_label'; +import { tagMapper } from './../mapper/tag'; +export default class ProjectTag extends Entity { + +} \ No newline at end of file diff --git a/code/server/user/http/team.ts b/code/server/user/http/team.ts index f151919..c69258d 100644 --- a/code/server/user/http/team.ts +++ b/code/server/user/http/team.ts @@ -1,6 +1,7 @@ import * as teamApi from "../../../common/routes/team"; import { Err } from '../../../common/status/error'; import { DComponent } from "../../common/decorate/component"; +import { EServer_Common_Event_Types } from "../../common/event/types"; import { DHttpApi, DHttpReqParamRequired, DHttpUser } from "../../common/http/http"; import { IUserSession } from '../../common/rpc/api/user'; import { EServer_Common_User_Type } from '../../common/types/user'; @@ -46,7 +47,7 @@ class TeamController { if(!team) { throw Err.Team.teamNotFound } - await team.delete() + await team.delete(EServer_Common_Event_Types.Team.DELETE) } @DHttpApi(teamApi.routes.roles) diff --git a/code/server/user/http/user.ts b/code/server/user/http/user.ts index 30c1700..7c87dff 100644 --- a/code/server/user/http/user.ts +++ b/code/server/user/http/user.ts @@ -1,10 +1,11 @@ -import { IUserSession } from './../../common/rpc/api/user'; -import { DHttpApi, DHttpContext, DHttpReqParam, DHttpReqParamFile,DHttpContent, DHttpReqParamRequired, DHttpUser } from "../../common/http/http" -import * as userApi from "../../../common/routes/user" -import HttpContext from "../../common/http/context" -import UserService from "../service/user" -import { Err } from "../../../common/status/error" +import * as userApi from "../../../common/routes/user"; +import { Err } from "../../../common/status/error"; import { DComponent } from '../../common/decorate/component'; +import { EServer_Common_Event_Types } from '../../common/event/types'; +import HttpContext from "../../common/http/context"; +import { DHttpApi, DHttpContent, DHttpContext, DHttpReqParamRequired, DHttpUser } from "../../common/http/http"; +import UserService from "../service/user"; +import { IUserSession } from './../../common/rpc/api/user'; @DComponent class UserController { @DHttpApi(userApi.routes.create) @@ -80,7 +81,7 @@ class UserController { if(!user) { throw Err.User.userNotFound } - await user.delete() + await user.delete(EServer_Common_Event_Types.User.DELETE) } @DHttpApi(userApi.routes.active) diff --git a/code/server/user/mapper/admin.ts b/code/server/user/mapper/admin.ts index f681b0e..23c31e7 100644 --- a/code/server/user/mapper/admin.ts +++ b/code/server/user/mapper/admin.ts @@ -1,47 +1,19 @@ import { Err } from "../../../common/status/error"; import { getMysqlInstance } from "../../common/db/mysql"; -import { generateCreateSql, generateDeleteSql, generateQuerySql, generateSnowId, generateUpdateSql } from "../../common/util/sql"; -import { userModel, ICommon_Model_User } from './../../../common/model/user'; -export namespace adminMapper { - - export async function createUser(info:ICommon_Model_User):Promise { - if(!info || !info.username || !info.password ||info.id){ - throw Err.Common.paramError - } - info.id=await generateSnowId() +import { Mapper } from "../../common/entity/mapper"; +import { generateQuerySql } from "../../common/util/sql"; +import { ICommon_Model_User, userModel } from './../../../common/model/user'; +class AdminMapper extends Mapper { + constructor(){ + super(userModel) + } + override async createConfig(info:ICommon_Model_User) { info.admin=1 - var mysql=getMysqlInstance() - await mysql.execute(generateCreateSql(userModel,info)) } - - export async function getUserById(id:string):Promise { - if(!id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - let ret=await mysql.executeOne(generateQuerySql(userModel,[],{id})) - return ret + override async updateConfig(info:ICommon_Model_User) { + info.admin=1 } - - export async function updateUser(info:ICommon_Model_User):Promise { - if(!info.id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - let id=info.id; - delete info.id,info.created_time,info.modified_time - await mysql.execute(generateUpdateSql(userModel,info,{id})) - } - - export async function deleteUser(id):Promise { - if(!id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - await mysql.execute(generateDeleteSql(userModel,{id})) - } - - export async function getUserByName(name:string):Promise { + async getUserByName(name:string):Promise { if(!name) { throw Err.User.userNameNotExists } @@ -50,3 +22,4 @@ export namespace adminMapper { return ret } } +export let adminMapper=new AdminMapper diff --git a/code/server/user/mapper/team.ts b/code/server/user/mapper/team.ts index bcc4117..ee49666 100644 --- a/code/server/user/mapper/team.ts +++ b/code/server/user/mapper/team.ts @@ -4,9 +4,13 @@ import { teamUserModel } from '../../../common/model/team_user'; import { userModel } from '../../../common/model/user'; import { Err } from "../../../common/status/error"; import { getMysqlInstance } from "../../common/db/mysql"; +import { Mapper } from '../../common/entity/mapper'; import { generateCreateSql, generateDeleteSql, generateLeftJoin2Sql, generateQuerySql, generateSnowId, generateUpdateSql } from "../../common/util/sql"; -export namespace teamMapper { - export async function checkTeam(name:string):Promise { +class TeamMapper extends Mapper { + constructor(){ + super(teamModel) + } + async checkTeam(name:string):Promise { if(!name) { throw Err.Common.paramError } @@ -15,48 +19,14 @@ export namespace teamMapper { return !!ret; } - - export async function createTeam(info:ICommon_Model_Team):Promise { - if(!info || !info.name ||info.id){ - throw Err.Common.paramError - } - let isExists=await checkTeam(info.name); + override async createConfig(info:ICommon_Model_Team) { + let isExists=await this.checkTeam(info.name); if(isExists) { throw Err.Team.teamExists } - info.id=await generateSnowId() - var mysql=getMysqlInstance() - await mysql.execute(generateCreateSql(teamModel,info)) - } - - export async function getTeamById(id:string):Promise { - if(!id) { - throw Err.Team.teamNotFound - } - var mysql=getMysqlInstance(); - let ret=await mysql.executeOne(generateQuerySql(teamModel,[],{id})) - return ret } - export async function updateTeam(info:ICommon_Model_Team):Promise { - if(!info.id) { - throw Err.Team.teamNotFound - } - var mysql=getMysqlInstance(); - let id=info.id; - delete info.id,info.created_time,info.modified_time - await mysql.execute(generateUpdateSql(teamModel,info,{id})) - } - - export async function deleteTeam(id:string):Promise { - if(!id) { - throw Err.Team.teamNotFound - } - var mysql=getMysqlInstance(); - await mysql.execute(generateDeleteSql(teamModel,{id})) - } - - export async function getRoles(teamId:string):Promise { + async getRoles(teamId:string):Promise { if(!teamId) { throw Err.Team.teamNotFound } @@ -70,7 +40,7 @@ export namespace teamMapper { return ret } - export async function members(teamId:string):Promise<{ + async members(teamId:string):Promise<{ id:string, name:string, photo:string, @@ -115,7 +85,7 @@ export namespace teamMapper { return ret; } - export async function addMember(teamId:string,userId:string,roleId:string) { + async addMember(teamId:string,userId:string,roleId:string) { if(!teamId) { throw Err.Team.teamNotFound } else if(!userId) { @@ -145,7 +115,7 @@ export namespace teamMapper { })) } - export async function removeMember(teamId:string,userId:string) { + async removeMember(teamId:string,userId:string) { if(!teamId) { throw Err.Team.teamNotFound } else if(!userId) { @@ -158,7 +128,7 @@ export namespace teamMapper { })) } - export async function changeRole(teamId:string,userId:string,roleId:string) { + async changeRole(teamId:string,userId:string,roleId:string) { if(!teamId) { throw Err.Team.teamNotFound } else if(!userId) { @@ -188,3 +158,5 @@ export namespace teamMapper { })) } } + +export let teamMapper=new TeamMapper() \ No newline at end of file diff --git a/code/server/user/mapper/user.ts b/code/server/user/mapper/user.ts index 6fa7873..71443ad 100644 --- a/code/server/user/mapper/user.ts +++ b/code/server/user/mapper/user.ts @@ -1,9 +1,13 @@ import { Err } from "../../../common/status/error"; import { getMysqlInstance } from "../../common/db/mysql"; -import { generateCreateSql, generateDeleteSql, generateQuerySql, generateSnowId, generateUpdateSql } from "../../common/util/sql"; +import { Mapper } from "../../common/entity/mapper"; +import { generateQuerySql, generateUpdateSql } from "../../common/util/sql"; import { ICommon_Model_User, userModel } from './../../../common/model/user'; -export namespace userMapper { - export async function checkUserValid(username:string):Promise { +class UserMapper extends Mapper { + constructor(){ + super(userModel) + } + async checkUserValid(username:string):Promise { if(!username){ return false } @@ -14,25 +18,7 @@ export namespace userMapper { return !!ret } - export async function createUser(info:ICommon_Model_User):Promise { - if(!info || !info.username || !info.password ||info.id){ - throw Err.Common.paramError - } - info.id=await generateSnowId() - var mysql=getMysqlInstance() - await mysql.execute(generateCreateSql(userModel,info)) - } - - export async function getUserById(id:string):Promise { - if(!id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - let ret=await mysql.executeOne(generateQuerySql(userModel,[],{id})) - return ret - } - - export async function getUserByName(name:string):Promise { + async getUserByName(name:string):Promise { if(!name) { throw Err.User.userNameNotExists } @@ -41,25 +27,8 @@ export namespace userMapper { return ret } - export async function updateUser(info:ICommon_Model_User):Promise { - if(!info.id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - let id=info.id; - delete info.id,info.created_time,info.modified_time,info.active - await mysql.execute(generateUpdateSql(userModel,info,{id})) - } - export async function deleteUser(id):Promise { - if(!id) { - throw Err.User.userIdNotExists - } - var mysql=getMysqlInstance(); - await mysql.execute(generateDeleteSql(userModel,{id})) - } - - export async function active(id:string,active:number) { + async active(id:string,active:number) { if(!id) { throw Err.User.userIdNotExists } @@ -67,3 +36,4 @@ export namespace userMapper { await mysql.execute(generateUpdateSql(userModel,{active},{id})) } } +export let userMapper=new UserMapper() diff --git a/code/server/user/service/admin.ts b/code/server/user/service/admin.ts index 07686e5..aece819 100644 --- a/code/server/user/service/admin.ts +++ b/code/server/user/service/admin.ts @@ -3,56 +3,13 @@ import { Err } from '../../../common/status/error'; import { REDIS_USER } from "../../common/cache/keys/user"; import { Entity } from "../../common/entity/entity"; import { getNacosInstance } from '../../common/nacos/nacos'; -import { adminMapper } from '../mapper/admin'; -import { ICommon_Model_User } from './../../../common/model/user'; +import { userModel } from './../../../common/model/user'; import { EServer_Common_User_Type } from './../../common/types/user'; -export default class Admin extends Entity { - - async create():Promise{ - if(!this.item) { - throw Err.User.userNotFound; - } else if(this.item.id) { - throw Err.User.userExists; - } - await adminMapper.createUser(this.item) - await this.loadItem(); - return this.item; +import { adminMapper } from './../mapper/admin'; +export default class Admin extends Entity { + constructor(){ + super(adminMapper) } - async update():Promise{ - if(!this.item || !this.item.id) { - throw Err.User.userNotFound; - } - await adminMapper.updateUser(this.item) - return this.item; - } - async delete(){ - await adminMapper.deleteUser(this.item.id); - } - async loadItem():Promise { - if(!this.item || !this.item.id) { - throw Err.User.userNotFound; - } - let obj = await adminMapper.getUserById(this.item.id); - this.item=obj; - let session=REDIS_USER.adminInfo(this.item.id); - await session.set(obj) - return this.item; - } - static async getItemById(id:string,reload:boolean=false):Promise>{ - let session=REDIS_USER.adminInfo(id); - let obj=await session.get(); - if(!obj || reload) { - obj = await adminMapper.getUserById(id); - if(!obj) { - return null - } - await session.set(obj) - } - let user = new Admin; - user.setItem(obj); - return user; - } - static async getItemByName(name:string):Promise>{ let obj = await adminMapper.getUserByName(name); if(obj) { diff --git a/code/server/user/service/team.ts b/code/server/user/service/team.ts index 6c2463e..abf8eb8 100644 --- a/code/server/user/service/team.ts +++ b/code/server/user/service/team.ts @@ -1,3 +1,4 @@ +import { teamModel } from './../../../common/model/team'; import { ICommon_Model_Team } from '../../../common/model/team'; import { ICommon_Model_Team_Role } from '../../../common/model/team_role'; import { Err } from '../../../common/status/error'; @@ -5,45 +6,9 @@ import { Entity } from "../../common/entity/entity"; import { EServer_Common_Event_Types } from '../../common/event/types'; import { emitServiceEvent } from '../../common/rpc/rpc'; import { teamMapper } from '../mapper/team'; -export default class Team extends Entity { - - async create():Promise{ - if(!this.item) { - throw Err.Team.teamNotFound; - } else if(this.item.id) { - throw Err.Team.teamExists; - } - await teamMapper.createTeam(this.item) - await this.loadItem(); - return this.item; - } - async update():Promise{ - if(!this.item || !this.item.id) { - throw Err.Team.teamNotFound; - } - await teamMapper.updateTeam(this.item) - return this.item; - } - async delete(){ - await teamMapper.deleteTeam(this.item.id); - emitServiceEvent(EServer_Common_Event_Types.Team.DELETE,this.item.id); - } - async loadItem():Promise { - if(!this.item || !this.item.id) { - throw Err.Team.teamNotFound; - } - let obj = await teamMapper.getTeamById(this.item.id); - this.item=obj; - return this.item; - } - static async getItemById(id:string,reload:boolean=false):Promise>{ - let obj = await teamMapper.getTeamById(id); - if (!obj) { - return null - } - let team = new Team; - team.setItem(obj); - return team; +export default class Team extends Entity { + constructor(){ + super(teamMapper) } async getRoles():Promise{ diff --git a/code/server/user/service/user.ts b/code/server/user/service/user.ts index 17e8b11..cd07a05 100644 --- a/code/server/user/service/user.ts +++ b/code/server/user/service/user.ts @@ -6,56 +6,11 @@ import { EServer_Common_Event_Types } from '../../common/event/types'; import { getNacosInstance } from '../../common/nacos/nacos'; import { emitServiceEvent } from '../../common/rpc/rpc'; import { userMapper } from '../mapper/user'; -import { ICommon_Model_User } from './../../../common/model/user'; +import { ICommon_Model_User, userModel } from './../../../common/model/user'; import { EServer_Common_User_Type } from './../../common/types/user'; -export default class User extends Entity { - - async create():Promise{ - if(!this.item) { - throw Err.User.userNotFound; - } else if(this.item.id) { - throw Err.User.userExists; - } - await userMapper.createUser(this.item) - await this.loadItem(); - return this.item; - } - async update():Promise{ - if(!this.item || !this.item.id) { - throw Err.User.userNotFound; - } - await userMapper.updateUser(this.item) - await this.loadItem(); - return this.item; - } - async delete(){ - await userMapper.deleteUser(this.item.id); - await this.clearCache() - emitServiceEvent(EServer_Common_Event_Types.User.DELETE,this.item.id); - } - async loadItem():Promise { - if(!this.item || !this.item.id) { - throw Err.User.userNotFound; - } - let obj = await userMapper.getUserById(this.item.id); - this.item=obj; - let session=REDIS_USER.info(this.item.id); - await session.set(obj) - return this.item; - } - static async getItemById(id:string,reload:boolean=false):Promise>{ - let session=REDIS_USER.info(id); - let obj=await session.get(); - if(!obj || reload) { - obj = await userMapper.getUserById(id); - if(!obj) { - return null - } - await session.set(obj) - } - let user = new User; - user.setItem(obj); - return user; +export default class User extends Entity { + constructor(){ + super(userMapper) } static async getItemByName(name:string):Promise>{