This commit is contained in:
sx1989827 2021-11-29 20:10:54 +08:00
parent 54fd070960
commit aad076efde
13 changed files with 63 additions and 40 deletions

View File

@ -20,6 +20,7 @@ export type ICommon_Route_Res_Project_Member = {
} }
export type ICommon_Route_Res_Project_ListTag = { export type ICommon_Route_Res_Project_ListTag = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:{ data:{
@ -29,6 +30,7 @@ export type ICommon_Route_Res_Project_ListTag = {
} }
export type ICommon_Route_Res_Project_ListMemeber ={ export type ICommon_Route_Res_Project_ListMemeber ={
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:ICommon_Route_Res_Project_Member[] data:ICommon_Route_Res_Project_Member[]
@ -41,24 +43,28 @@ export type ICommon_Route_Res_User_Profile={
} }
export type ICommon_Route_Res_User_List = { export type ICommon_Route_Res_User_List = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:Omit<ICommon_Model_User,"password">[] data:Omit<ICommon_Model_User,"password">[]
} }
export type ICommon_Route_Res_User_TeamList = { export type ICommon_Route_Res_User_TeamList = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:ICommon_Model_Team[] data:ICommon_Model_Team[]
} }
export type ICommon_Route_Res_User_ProjectList = { export type ICommon_Route_Res_User_ProjectList = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:ICommon_Model_Project[] data:ICommon_Model_Project[]
} }
export type ICommon_Route_Res_Project_List = { export type ICommon_Route_Res_Project_List = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:ICommon_Model_Project[] data:ICommon_Model_Project[]
@ -66,6 +72,7 @@ export type ICommon_Route_Res_Project_List = {
export type ICommon_Route_Res_Team_List = { export type ICommon_Route_Res_Team_List = {
count:number,
totalPage:number, totalPage:number,
page:number, page:number,
data:ICommon_Model_Team[] data:ICommon_Model_Team[]

View File

@ -33,8 +33,8 @@ export class RedisStringKey<T> extends RedisBaseKey<T> {
async set(value:T,ttl?:number){ async set(value:T,ttl?:number){
await this.redis.set(this.name,value,ttl??this.ttl); await this.redis.set(this.name,value,ttl??this.ttl);
} }
async scan():Promise<T[]>{ async scan():Promise<string[]>{
let ret=await this.redis.scan<T>(this.name,this.type); let ret=await this.redis.scan(this.name);
return ret return ret
} }
} }

View File

@ -1,5 +1,5 @@
import * as IORedis from "ioredis";
import { IServer_Common_Config_Redis } from './../types/config'; import { IServer_Common_Config_Redis } from './../types/config';
import * as IORedis from "ioredis"
var g_redis:InstanceType<typeof Redis>; var g_redis:InstanceType<typeof Redis>;
export function getRedisInstance(){ export function getRedisInstance(){
return g_redis return g_redis
@ -69,14 +69,12 @@ export class Redis {
await this.redis.set(key,String(value),"EX",ttl) await this.redis.set(key,String(value),"EX",ttl)
} }
} }
async scan<T>(key:string,type:T):Promise<T[]> { async scan(key:string):Promise<string[]> {
let index=0,values=<T[]><unknown>[] let index=0,values=<string[]>[]
do { do {
let ret=await this.redis.scan(index,"match",key); let ret=await this.redis.scan(index,"match",key);
index=Number(ret[0]) index=Number(ret[0])
values=values.concat(ret[1].map(item=>{ values=values.concat(ret[1]);
return this.parseType(item,type)
}));
} while(index!=0) } while(index!=0)
return values; return values;
} }

View File

@ -1,14 +1,14 @@
import * as http from 'http';
import * as sio from "socket.io";
import * as ioClient from "socket.io-client";
import { ECommon_Services } from '../../../common/types';
import { REDIS_GATEWAY } from '../cache/keys/gateway';
import { getEventsFunc } from "../event/event";
import { EServer_Common_Event_Types } from '../event/types';
import { getHttpRoutes, handleHttpCall } from '../http/http';
import { getNacosInstance } from '../nacos/nacos';
import { IServer_Common_Http_Proxy } from './../types/http'; import { IServer_Common_Http_Proxy } from './../types/http';
import { IServer_Common_Nacos_Instance } from './../types/nacos'; import { IServer_Common_Nacos_Instance } from './../types/nacos';
import { ECommon_Services } from '../../../common/types';
import { EServer_Common_Event_Types } from '../event/types';
import * as sio from "socket.io"
import * as ioClient from "socket.io-client"
import { REDIS_GATEWAY } from '../cache/keys/gateway';
import * as http from 'http';
import { getHttpRoutes, handleHttpCall } from '../http/http';
import {getEventsFunc} from "../event/event"
import { getNacosInstance } from '../nacos/nacos';
interface ISocketStruct { interface ISocketStruct {
name:string, name:string,
args:any[] args:any[]
@ -212,12 +212,8 @@ export function DRPCRecieve(target: Object, propertyName: string, descriptor: Ty
async function validInstances(): Promise<string[]> { async function validInstances(): Promise<string[]> {
let objRedis = REDIS_GATEWAY.allInstances() let objRedis = REDIS_GATEWAY.allInstances()
let ret = await objRedis.scan() let ret = await objRedis.scan()
return ret.map(item => { return ret.map(item=>{
return item[0].name ?? "" return item.substr(item.lastIndexOf(":")+1)
}).filter(item => {
if (item) {
return true
}
}) })
} }

View File

@ -179,7 +179,7 @@ export function generateUpdateSql<T extends BaseModel>(model:T,obj:{
} else { } else {
val="'"+value+"'" val="'"+value+"'"
} }
arrVal.push(`key=${val}`) arrVal.push(`${key}=${val}`)
} }
let expr=generateExp(objExpr,exprMode); let expr=generateExp(objExpr,exprMode);
return { return {

View File

@ -19,7 +19,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
} }
let mysql=getMysqlInstance() let mysql=getMysqlInstance()
let data:ICommon_Route_Res_Project_ListMemeber["data"]=[]; let data:ICommon_Route_Res_Project_ListMemeber["data"]=[];
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Member} where project_id='${projectId}'`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Member} where project_id='${projectId}'`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
if(count>0) { if(count>0) {
let sql=generateLeftJoin3Sql({ let sql=generateLeftJoin3Sql({
model:projectMemberModel, model:projectMemberModel,
@ -89,7 +90,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
} }
} }
return { return {
totalPage:count, count:count,
totalPage:totalPage,
page:page, page:page,
data:data data:data
} }
@ -180,6 +182,7 @@ class ProjectMapper extends Mapper<typeof projectModel>{
} }
async list(page:number,size:number,keyword?:string):Promise<{ async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number, totalPage:number,
data:ICommon_Model_Project[] data:ICommon_Model_Project[]
}> { }> {
@ -187,7 +190,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
throw Err.Common.paramError throw Err.Common.paramError
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project}${keyword?` where name like '%${keyword}%'`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project}${keyword?` where name like '%${keyword}%'`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
let ret=await mysql.execute(generateQuerySql(projectModel,[],keyword?{ let ret=await mysql.execute(generateQuerySql(projectModel,[],keyword?{
name:{ name:{
exp:"%like%", exp:"%like%",
@ -198,7 +202,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
type:"asc" type:"asc"
},page*size,size)) },page*size,size))
return { return {
totalPage:count, count:count,
totalPage:totalPage,
data:ret data:ret
}; };
} }

View File

@ -15,7 +15,8 @@ class TagMapper extends Mapper<typeof projectLabelModel> {
} }
let mysql=getMysqlInstance() let mysql=getMysqlInstance()
let ret:Pick<typeof projectLabelModel["model"],"id"|"name">[]=[] let ret:Pick<typeof projectLabelModel["model"],"id"|"name">[]=[]
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Label} where project_id='${projectId}'${keyword?` and name like %${keyword}%`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Label} where project_id='${projectId}'${keyword?` and name like %${keyword}%`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
if(count>0) { if(count>0) {
ret=await mysql.execute(generateQuerySql(projectLabelModel,["id","name"],{ ret=await mysql.execute(generateQuerySql(projectLabelModel,["id","name"],{
project_id:projectId, project_id:projectId,
@ -30,7 +31,8 @@ class TagMapper extends Mapper<typeof projectLabelModel> {
},page*size,size)) },page*size,size))
} }
return { return {
totalPage:count, count:count,
totalPage:totalPage,
page:page, page:page,
data:ret data:ret
} }

View File

@ -37,6 +37,7 @@ export default class Project extends Entity<typeof projectModel,typeof projectMa
static async list(page:number,size:number,keyword?:string):Promise<ICommon_Route_Res_Project_List>{ static async list(page:number,size:number,keyword?:string):Promise<ICommon_Route_Res_Project_List>{
let ret=await projectMapper.list(page,size,keyword) let ret=await projectMapper.list(page,size,keyword)
return { return {
count:ret.count,
totalPage:ret.totalPage, totalPage:ret.totalPage,
page:page, page:page,
data:ret.data data:ret.data

View File

@ -18,7 +18,7 @@ class AdminMapper extends Mapper<typeof userModel> {
throw Err.User.userNameNotExists throw Err.User.userNameNotExists
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let ret=await mysql.executeOne(generateQuerySql(userModel,[],{username:name})) let ret=await mysql.executeOne(generateQuerySql(userModel,[],{username:name,admin:1}))
return ret return ret
} }
} }

View File

@ -161,6 +161,7 @@ class TeamMapper extends Mapper<typeof teamModel> {
} }
async list(page:number,size:number,keyword?:string):Promise<{ async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number, totalPage:number,
data:ICommon_Model_Team[] data:ICommon_Model_Team[]
}> { }> {
@ -168,7 +169,8 @@ class TeamMapper extends Mapper<typeof teamModel> {
throw Err.Common.paramError throw Err.Common.paramError
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Team}${keyword?` where name like '%${keyword}%'`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Team}${keyword?` where name like '%${keyword}%'`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
let ret=await mysql.execute(generateQuerySql(teamModel,[],keyword?{ let ret=await mysql.execute(generateQuerySql(teamModel,[],keyword?{
name:{ name:{
exp:"%like%", exp:"%like%",
@ -179,7 +181,8 @@ class TeamMapper extends Mapper<typeof teamModel> {
type:"asc" type:"asc"
},page*size,size)) },page*size,size))
return { return {
totalPage:count, count:count,
totalPage:totalPage,
data:ret data:ret
}; };
} }

View File

@ -29,7 +29,7 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.User.userNameNotExists throw Err.User.userNameNotExists
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let ret=await mysql.executeOne(generateQuerySql(userModel,[],{username:name})) let ret=await mysql.executeOne(generateQuerySql(userModel,[],{username:name,admin:0}))
return ret return ret
} }
@ -43,6 +43,7 @@ class UserMapper extends Mapper<typeof userModel> {
} }
async list(page:number,size:number,keyword?:string):Promise<{ async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number, totalPage:number,
data:ICommon_Model_User[] data:ICommon_Model_User[]
}> { }> {
@ -50,7 +51,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError throw Err.Common.paramError
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_User} where admin=0${keyword?` and username like '%${keyword}%'`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_User} where admin=0${keyword?` and username like '%${keyword}%'`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
let colums=keys<ICommon_Model_User>().map(item=>item.name); let colums=keys<ICommon_Model_User>().map(item=>item.name);
let ret=await mysql.execute(generateQuerySql(userModel,exculdeColumns(colums,[]),{ let ret=await mysql.execute(generateQuerySql(userModel,exculdeColumns(colums,[]),{
admin:0, admin:0,
@ -64,12 +66,14 @@ class UserMapper extends Mapper<typeof userModel> {
type:"asc" type:"asc"
},page*size,size)) },page*size,size))
return { return {
totalPage:count, count:count,
totalPage:totalPage,
data:ret data:ret
}; };
} }
async teamList(page:number,size:number,userId:string,keyword?:string):Promise<{ async teamList(page:number,size:number,userId:string,keyword?:string):Promise<{
count:number,
totalPage:number, totalPage:number,
data:ICommon_Model_Team[] data:ICommon_Model_Team[]
}>{ }>{
@ -77,7 +81,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError throw Err.Common.paramError
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Team_User} tu left join ${Table_Team} t on t.id=tu.team_id where tu.user_id='${userId}'${keyword?` and t.name like '%${keyword}%'`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Team_User} tu left join ${Table_Team} t on t.id=tu.team_id where tu.user_id='${userId}'${keyword?` and t.name like '%${keyword}%'`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
let sql=generateLeftJoinSql({ let sql=generateLeftJoinSql({
model:teamUserModel, model:teamUserModel,
},{ },{
@ -111,12 +116,14 @@ class UserMapper extends Mapper<typeof userModel> {
},page*size,size) },page*size,size)
let ret=await mysql.execute(sql) let ret=await mysql.execute(sql)
return { return {
totalPage:count, count:count,
totalPage:totalPage,
data:ret.map(item=>item.team) data:ret.map(item=>item.team)
}; };
} }
async projectList(page:number,size:number,userId:string,keyword?:string):Promise<{ async projectList(page:number,size:number,userId:string,keyword?:string):Promise<{
count:number,
totalPage:number, totalPage:number,
data:ICommon_Model_Project[] data:ICommon_Model_Project[]
}>{ }>{
@ -124,7 +131,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError throw Err.Common.paramError
} }
var mysql=getMysqlInstance(); var mysql=getMysqlInstance();
let count=CommonUtil.pageTotal(Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Member} pm left join ${Table_Project} p on p.id=pm.project_id where pm.member_id='${userId}'${keyword?` and p.name like '%${keyword}%'`:""}`))[0],size) let count=Object.values(await mysql.executeOne<number>(`select count(1) from ${Table_Project_Member} pm left join ${Table_Project} p on p.id=pm.project_id where pm.member_id='${userId}'${keyword?` and p.name like '%${keyword}%'`:""}`))[0]
let totalPage=CommonUtil.pageTotal(count,size)
let sql=generateLeftJoinSql({ let sql=generateLeftJoinSql({
model:projectMemberModel, model:projectMemberModel,
},{ },{
@ -158,7 +166,8 @@ class UserMapper extends Mapper<typeof userModel> {
},page*size,size) },page*size,size)
let ret=await mysql.execute(sql) let ret=await mysql.execute(sql)
return { return {
totalPage:count, count:count,
totalPage:totalPage,
data:ret.map(item=>item.project) data:ret.map(item=>item.project)
}; };
} }

View File

@ -54,6 +54,7 @@ export default class Team extends Entity<typeof teamModel,typeof teamMapper> {
static async list(page:number,size:number,keyword?:string):Promise<ICommon_Route_Res_Team_List>{ static async list(page:number,size:number,keyword?:string):Promise<ICommon_Route_Res_Team_List>{
let ret=await teamMapper.list(page,size,keyword) let ret=await teamMapper.list(page,size,keyword)
return { return {
count:ret.count,
totalPage:ret.totalPage, totalPage:ret.totalPage,
page:page, page:page,
data:ret.data data:ret.data

View File

@ -75,6 +75,7 @@ export default class User extends Entity<typeof userModel,typeof userMapper> {
delete item.admin delete item.admin
}) })
return { return {
count:ret.count,
totalPage:ret.totalPage, totalPage:ret.totalPage,
page:page, page:page,
data:ret.data data:ret.data