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

View File

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

View File

@ -1,5 +1,5 @@
import * as IORedis from "ioredis";
import { IServer_Common_Config_Redis } from './../types/config';
import * as IORedis from "ioredis"
var g_redis:InstanceType<typeof Redis>;
export function getRedisInstance(){
return g_redis
@ -69,14 +69,12 @@ export class Redis {
await this.redis.set(key,String(value),"EX",ttl)
}
}
async scan<T>(key:string,type:T):Promise<T[]> {
let index=0,values=<T[]><unknown>[]
async scan(key:string):Promise<string[]> {
let index=0,values=<string[]>[]
do {
let ret=await this.redis.scan(index,"match",key);
index=Number(ret[0])
values=values.concat(ret[1].map(item=>{
return this.parseType(item,type)
}));
values=values.concat(ret[1]);
} while(index!=0)
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_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 {
name:string,
args:any[]
@ -213,11 +213,7 @@ async function validInstances(): Promise<string[]> {
let objRedis = REDIS_GATEWAY.allInstances()
let ret = await objRedis.scan()
return ret.map(item=>{
return item[0].name ?? ""
}).filter(item => {
if (item) {
return true
}
return item.substr(item.lastIndexOf(":")+1)
})
}

View File

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

View File

@ -19,7 +19,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
}
let mysql=getMysqlInstance()
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) {
let sql=generateLeftJoin3Sql({
model:projectMemberModel,
@ -89,7 +90,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
}
}
return {
totalPage:count,
count:count,
totalPage:totalPage,
page:page,
data:data
}
@ -180,6 +182,7 @@ class ProjectMapper extends Mapper<typeof projectModel>{
}
async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number,
data:ICommon_Model_Project[]
}> {
@ -187,7 +190,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
throw Err.Common.paramError
}
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?{
name:{
exp:"%like%",
@ -198,7 +202,8 @@ class ProjectMapper extends Mapper<typeof projectModel>{
type:"asc"
},page*size,size))
return {
totalPage:count,
count:count,
totalPage:totalPage,
data:ret
};
}

View File

@ -15,7 +15,8 @@ class TagMapper extends Mapper<typeof projectLabelModel> {
}
let mysql=getMysqlInstance()
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) {
ret=await mysql.execute(generateQuerySql(projectLabelModel,["id","name"],{
project_id:projectId,
@ -30,7 +31,8 @@ class TagMapper extends Mapper<typeof projectLabelModel> {
},page*size,size))
}
return {
totalPage:count,
count:count,
totalPage:totalPage,
page:page,
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>{
let ret=await projectMapper.list(page,size,keyword)
return {
count:ret.count,
totalPage:ret.totalPage,
page:page,
data:ret.data

View File

@ -18,7 +18,7 @@ class AdminMapper extends Mapper<typeof userModel> {
throw Err.User.userNameNotExists
}
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
}
}

View File

@ -161,6 +161,7 @@ class TeamMapper extends Mapper<typeof teamModel> {
}
async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number,
data:ICommon_Model_Team[]
}> {
@ -168,7 +169,8 @@ class TeamMapper extends Mapper<typeof teamModel> {
throw Err.Common.paramError
}
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?{
name:{
exp:"%like%",
@ -179,7 +181,8 @@ class TeamMapper extends Mapper<typeof teamModel> {
type:"asc"
},page*size,size))
return {
totalPage:count,
count:count,
totalPage:totalPage,
data:ret
};
}

View File

@ -29,7 +29,7 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.User.userNameNotExists
}
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
}
@ -43,6 +43,7 @@ class UserMapper extends Mapper<typeof userModel> {
}
async list(page:number,size:number,keyword?:string):Promise<{
count:number,
totalPage:number,
data:ICommon_Model_User[]
}> {
@ -50,7 +51,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError
}
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 ret=await mysql.execute(generateQuerySql(userModel,exculdeColumns(colums,[]),{
admin:0,
@ -64,12 +66,14 @@ class UserMapper extends Mapper<typeof userModel> {
type:"asc"
},page*size,size))
return {
totalPage:count,
count:count,
totalPage:totalPage,
data:ret
};
}
async teamList(page:number,size:number,userId:string,keyword?:string):Promise<{
count:number,
totalPage:number,
data:ICommon_Model_Team[]
}>{
@ -77,7 +81,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError
}
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({
model:teamUserModel,
},{
@ -111,12 +116,14 @@ class UserMapper extends Mapper<typeof userModel> {
},page*size,size)
let ret=await mysql.execute(sql)
return {
totalPage:count,
count:count,
totalPage:totalPage,
data:ret.map(item=>item.team)
};
}
async projectList(page:number,size:number,userId:string,keyword?:string):Promise<{
count:number,
totalPage:number,
data:ICommon_Model_Project[]
}>{
@ -124,7 +131,8 @@ class UserMapper extends Mapper<typeof userModel> {
throw Err.Common.paramError
}
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({
model:projectMemberModel,
},{
@ -158,7 +166,8 @@ class UserMapper extends Mapper<typeof userModel> {
},page*size,size)
let ret=await mysql.execute(sql)
return {
totalPage:count,
count:count,
totalPage:totalPage,
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>{
let ret=await teamMapper.list(page,size,keyword)
return {
count:ret.count,
totalPage:ret.totalPage,
page:page,
data:ret.data

View File

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