mirror of
https://github.com/Teamlinker/Teamlinker.git
synced 2025-06-03 03:00:17 +00:00
add
This commit is contained in:
parent
54fd070960
commit
aad076efde
@ -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[]
|
||||
|
4
code/server/common/cache/keys/base.ts
vendored
4
code/server/common/cache/keys/base.ts
vendored
@ -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
|
||||
}
|
||||
}
|
||||
|
10
code/server/common/cache/redis.ts
vendored
10
code/server/common/cache/redis.ts
vendored
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
}
|
||||
|
@ -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)
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user