将basecontroller移至公共模块
This commit is contained in:
parent
83e94cf0ad
commit
2e79aea349
@ -1 +1 @@
|
|||||||
Subproject commit 59dc2009a505c28909bb01a63a08a7eb14d7585d
|
Subproject commit e207a95fd79c0e926668074e68ca2467952d1ded
|
@ -4,11 +4,10 @@ import * as dotenv from 'dotenv'
|
|||||||
const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development'
|
const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development'
|
||||||
dotenv.config({ path: envFile })
|
dotenv.config({ path: envFile })
|
||||||
import { IncomingMessage, Server, ServerResponse } from 'http'
|
import { IncomingMessage, Server, ServerResponse } from 'http'
|
||||||
import { RouterMap } from 'decorators/router'
|
|
||||||
import { mongoose } from '@typegoose/typegoose'
|
import { mongoose } from '@typegoose/typegoose'
|
||||||
import logger from 'logger/logger'
|
import logger from 'logger/logger'
|
||||||
import NonceRecordSchedule from 'schedule/noncerecord.schedule'
|
import NonceRecordSchedule from 'schedule/noncerecord.schedule'
|
||||||
import { SyncLocker, ZRedisClient } from 'zutils'
|
import { RouterMap, SyncLocker, ZRedisClient } from 'zutils'
|
||||||
import CacheSchedule from 'schedule/cache.schedule'
|
import CacheSchedule from 'schedule/cache.schedule'
|
||||||
|
|
||||||
const zReqParserPlugin = require('plugins/zReqParser')
|
const zReqParserPlugin = require('plugins/zReqParser')
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import fastify = require('fastify')
|
|
||||||
|
|
||||||
export const ROLE_ANON = 'anon'
|
|
||||||
class BaseController {
|
|
||||||
aotoRoute(req: fastify.FastifyRequest, res) {}
|
|
||||||
}
|
|
||||||
export default BaseController
|
|
@ -1,10 +1,8 @@
|
|||||||
import BaseController, { ROLE_ANON } from 'common/base.controller'
|
|
||||||
import { role, router } from 'decorators/router'
|
|
||||||
import { ActivityInfo } from 'models/ActivityInfo'
|
import { ActivityInfo } from 'models/ActivityInfo'
|
||||||
import { ActivityUser } from 'models/ActivityUser'
|
import { ActivityUser } from 'models/ActivityUser'
|
||||||
import { rankKey } from 'services/rank.svr'
|
import { rankKey } from 'services/rank.svr'
|
||||||
import { yesterday } from 'zutils/utils/date.util'
|
import { yesterday } from 'zutils/utils/date.util'
|
||||||
import { SyncLocker, ZError, ZRedisClient } from 'zutils'
|
import { BaseController, ROLE_ANON, SyncLocker, ZError, ZRedisClient, role, router } from 'zutils'
|
||||||
|
|
||||||
const MAX_LIMIT = 50
|
const MAX_LIMIT = 50
|
||||||
export default class ActivityController extends BaseController {
|
export default class ActivityController extends BaseController {
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { ZError, SyncLocker } from 'zutils'
|
import { ZError, SyncLocker, BaseController, router } from 'zutils'
|
||||||
import BaseController from 'common/base.controller'
|
|
||||||
import { router } from 'decorators/router'
|
|
||||||
import { FastifyRequest } from 'fastify'
|
import { FastifyRequest } from 'fastify'
|
||||||
import { ActivityItem } from 'models/ActivityItem'
|
import { ActivityItem } from 'models/ActivityItem'
|
||||||
import { TokenClaimHistory } from 'models/TokenClaimHistory'
|
import { TokenClaimHistory } from 'models/TokenClaimHistory'
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
import { EMPTY_REWARD } from 'common/Constants'
|
import { EMPTY_REWARD } from 'common/Constants'
|
||||||
import { LotteryCache } from 'common/LotteryCache'
|
import { LotteryCache } from 'common/LotteryCache'
|
||||||
import { ZError, SyncLocker } from 'zutils'
|
import { ZError, SyncLocker, BaseController, router } from 'zutils'
|
||||||
import BaseController from 'common/base.controller'
|
|
||||||
import { FUSION_CFG } from 'configs/fusion'
|
import { FUSION_CFG } from 'configs/fusion'
|
||||||
import { ALL_ITEMS } from 'configs/items'
|
import { ALL_ITEMS } from 'configs/items'
|
||||||
import { LOTTERY_CFG } from 'configs/lottery'
|
import { LOTTERY_CFG } from 'configs/lottery'
|
||||||
import { router } from 'decorators/router'
|
|
||||||
import { ActivityItem } from 'models/ActivityItem'
|
import { ActivityItem } from 'models/ActivityItem'
|
||||||
import { LotteryRecord } from 'models/LotteryRecord'
|
import { LotteryRecord } from 'models/LotteryRecord'
|
||||||
import { updateRankScore } from 'services/rank.svr'
|
import { updateRankScore } from 'services/rank.svr'
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import BaseController, { ROLE_ANON } from 'common/base.controller'
|
import { ZError, SyncLocker, ZRedisClient, BaseController, ROLE_ANON, role, router } from 'zutils'
|
||||||
import { ZError, SyncLocker, ZRedisClient } from 'zutils'
|
|
||||||
import { BOOST_CFG } from 'configs/boost'
|
import { BOOST_CFG } from 'configs/boost'
|
||||||
import { role, router } from 'decorators/router'
|
|
||||||
import logger from 'logger/logger'
|
import logger from 'logger/logger'
|
||||||
import { ActivityUser } from 'models/ActivityUser'
|
import { ActivityUser } from 'models/ActivityUser'
|
||||||
import { DEFAULT_EXPIRED, NonceRecord } from 'models/NonceRecord'
|
import { DEFAULT_EXPIRED, NonceRecord } from 'models/NonceRecord'
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { ZError, SyncLocker } from 'zutils'
|
import { ZError, SyncLocker, BaseController, router } from 'zutils'
|
||||||
import BaseController from 'common/base.controller'
|
|
||||||
import { router } from 'decorators/router'
|
|
||||||
import { TaskCfg, TaskTypeEnum } from 'models/ActivityInfo'
|
import { TaskCfg, TaskTypeEnum } from 'models/ActivityInfo'
|
||||||
import { TaskStatus, TaskStatusEnum } from 'models/ActivityUser'
|
import { TaskStatus, TaskStatusEnum } from 'models/ActivityUser'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
@ -1,142 +0,0 @@
|
|||||||
import BaseController from '../common/base.controller'
|
|
||||||
|
|
||||||
export class RouterData {
|
|
||||||
target?: any
|
|
||||||
method?: string
|
|
||||||
path?: string
|
|
||||||
fun?: Function
|
|
||||||
}
|
|
||||||
|
|
||||||
export class RouterMap {
|
|
||||||
static decoratedRouters: Map<
|
|
||||||
Function,
|
|
||||||
{
|
|
||||||
roles?: string[]
|
|
||||||
permissions?: string[][]
|
|
||||||
data?: RouterData[]
|
|
||||||
depts?: string[]
|
|
||||||
}
|
|
||||||
> = new Map()
|
|
||||||
}
|
|
||||||
|
|
||||||
export function router(route?: string) {
|
|
||||||
return (target: BaseController, name: string, value: PropertyDescriptor) => {
|
|
||||||
if (!route) {
|
|
||||||
const controller = target.constructor.name
|
|
||||||
const controllerName = controller.toLowerCase().replace('.controller', '')
|
|
||||||
route = 'all ' + ['', controllerName, name].join('/')
|
|
||||||
}
|
|
||||||
const split = route.split(' ')
|
|
||||||
if (split.length > 2) {
|
|
||||||
throw new Error('路由中只允许一个空格')
|
|
||||||
}
|
|
||||||
const [method, path] = split
|
|
||||||
// @ts-ignore
|
|
||||||
const key = target[name]
|
|
||||||
let routerData = new RouterData()
|
|
||||||
routerData.target = target
|
|
||||||
routerData.method = method
|
|
||||||
routerData.path = path
|
|
||||||
// @ts-ignore
|
|
||||||
routerData.fun = target[name]
|
|
||||||
|
|
||||||
if (RouterMap.decoratedRouters.has(key)) {
|
|
||||||
let objCurrent = RouterMap.decoratedRouters.get(key)
|
|
||||||
if (!objCurrent.data) {
|
|
||||||
objCurrent.data = [routerData]
|
|
||||||
} else {
|
|
||||||
objCurrent.data.push(routerData)
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], objCurrent)
|
|
||||||
} else {
|
|
||||||
let routerObj = {
|
|
||||||
data: [routerData],
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], routerObj)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function role(roles?: string | string[]) {
|
|
||||||
return (target: BaseController, name: string, value: PropertyDescriptor) => {
|
|
||||||
let roleList: string[] = []
|
|
||||||
if (roles) {
|
|
||||||
if (Array.isArray(roles)) {
|
|
||||||
roleList = roles
|
|
||||||
} else {
|
|
||||||
roleList = [roles]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
const key = target[name]
|
|
||||||
let roleObj = { roles: roleList }
|
|
||||||
if (RouterMap.decoratedRouters.has(key)) {
|
|
||||||
let objCurrent = RouterMap.decoratedRouters.get(key)
|
|
||||||
Object.assign(objCurrent, roleObj)
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], objCurrent)
|
|
||||||
} else {
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], roleObj)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function permission(permissions?: string | string[]) {
|
|
||||||
return (target: BaseController, name: string, value: PropertyDescriptor) => {
|
|
||||||
let permissionList: string[][] = [[]]
|
|
||||||
if (permissions) {
|
|
||||||
if (Array.isArray(permissions)) {
|
|
||||||
let arr = []
|
|
||||||
for (let sub of permissions) {
|
|
||||||
arr.push(sub.split(':'))
|
|
||||||
}
|
|
||||||
permissionList = arr
|
|
||||||
} else {
|
|
||||||
permissionList = [permissions.split(':')]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
const key = target[name]
|
|
||||||
let permissionObj = { permissions: permissionList }
|
|
||||||
if (RouterMap.decoratedRouters.has(key)) {
|
|
||||||
let objCurrent = RouterMap.decoratedRouters.get(key)
|
|
||||||
Object.assign(objCurrent, permissionObj)
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], objCurrent)
|
|
||||||
} else {
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], permissionObj)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 有dept修饰器的, 需要验证部门id是否存在
|
|
||||||
*/
|
|
||||||
export function dept(depts?: string | string[]) {
|
|
||||||
return (target: BaseController, name: string, value: PropertyDescriptor) => {
|
|
||||||
let deptList: string[] = []
|
|
||||||
if (depts) {
|
|
||||||
if (Array.isArray(depts)) {
|
|
||||||
deptList = depts
|
|
||||||
} else {
|
|
||||||
deptList = [depts]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// @ts-ignore
|
|
||||||
const key = target[name]
|
|
||||||
let deptObj = { depts: deptList }
|
|
||||||
if (RouterMap.decoratedRouters.has(key)) {
|
|
||||||
let objCurrent = RouterMap.decoratedRouters.get(key)
|
|
||||||
Object.assign(objCurrent, deptObj)
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], objCurrent)
|
|
||||||
} else {
|
|
||||||
// @ts-ignore
|
|
||||||
RouterMap.decoratedRouters.set(target[name], deptObj)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +1,8 @@
|
|||||||
import { ROLE_ANON } from 'common/base.controller'
|
|
||||||
import { FastifyPluginAsync, FastifyReply, FastifyRequest } from 'fastify'
|
import { FastifyPluginAsync, FastifyReply, FastifyRequest } from 'fastify'
|
||||||
import fastifyPlugin from 'fastify-plugin'
|
import fastifyPlugin from 'fastify-plugin'
|
||||||
import { ActivityInfo } from 'models/ActivityInfo'
|
import { ActivityInfo } from 'models/ActivityInfo'
|
||||||
import { ActivityUser } from 'models/ActivityUser'
|
import { ActivityUser } from 'models/ActivityUser'
|
||||||
|
import { ROLE_ANON } from 'zutils'
|
||||||
|
|
||||||
declare module 'fastify' {
|
declare module 'fastify' {
|
||||||
interface FastifyRequest {
|
interface FastifyRequest {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user