diff --git a/packages/zutils b/packages/zutils index 59dc200..e207a95 160000 --- a/packages/zutils +++ b/packages/zutils @@ -1 +1 @@ -Subproject commit 59dc2009a505c28909bb01a63a08a7eb14d7585d +Subproject commit e207a95fd79c0e926668074e68ca2467952d1ded diff --git a/src/api.server.ts b/src/api.server.ts index e772fda..ef7fb98 100644 --- a/src/api.server.ts +++ b/src/api.server.ts @@ -4,11 +4,10 @@ import * as dotenv from 'dotenv' const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development' dotenv.config({ path: envFile }) import { IncomingMessage, Server, ServerResponse } from 'http' -import { RouterMap } from 'decorators/router' import { mongoose } from '@typegoose/typegoose' import logger from 'logger/logger' import NonceRecordSchedule from 'schedule/noncerecord.schedule' -import { SyncLocker, ZRedisClient } from 'zutils' +import { RouterMap, SyncLocker, ZRedisClient } from 'zutils' import CacheSchedule from 'schedule/cache.schedule' const zReqParserPlugin = require('plugins/zReqParser') diff --git a/src/common/base.controller.ts b/src/common/base.controller.ts deleted file mode 100644 index 2fda6fe..0000000 --- a/src/common/base.controller.ts +++ /dev/null @@ -1,7 +0,0 @@ -import fastify = require('fastify') - -export const ROLE_ANON = 'anon' -class BaseController { - aotoRoute(req: fastify.FastifyRequest, res) {} -} -export default BaseController diff --git a/src/controllers/activity.controller.ts b/src/controllers/activity.controller.ts index 0922639..a17d957 100644 --- a/src/controllers/activity.controller.ts +++ b/src/controllers/activity.controller.ts @@ -1,10 +1,8 @@ -import BaseController, { ROLE_ANON } from 'common/base.controller' -import { role, router } from 'decorators/router' import { ActivityInfo } from 'models/ActivityInfo' import { ActivityUser } from 'models/ActivityUser' import { rankKey } from 'services/rank.svr' 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 export default class ActivityController extends BaseController { diff --git a/src/controllers/chain.controller.ts b/src/controllers/chain.controller.ts index 4c0e8d4..98c3013 100644 --- a/src/controllers/chain.controller.ts +++ b/src/controllers/chain.controller.ts @@ -1,6 +1,4 @@ -import { ZError, SyncLocker } from 'zutils' -import BaseController from 'common/base.controller' -import { router } from 'decorators/router' +import { ZError, SyncLocker, BaseController, router } from 'zutils' import { FastifyRequest } from 'fastify' import { ActivityItem } from 'models/ActivityItem' import { TokenClaimHistory } from 'models/TokenClaimHistory' diff --git a/src/controllers/lottery.controller.ts b/src/controllers/lottery.controller.ts index 79270b5..77700d4 100644 --- a/src/controllers/lottery.controller.ts +++ b/src/controllers/lottery.controller.ts @@ -1,11 +1,9 @@ import { EMPTY_REWARD } from 'common/Constants' import { LotteryCache } from 'common/LotteryCache' -import { ZError, SyncLocker } from 'zutils' -import BaseController from 'common/base.controller' +import { ZError, SyncLocker, BaseController, router } from 'zutils' import { FUSION_CFG } from 'configs/fusion' import { ALL_ITEMS } from 'configs/items' import { LOTTERY_CFG } from 'configs/lottery' -import { router } from 'decorators/router' import { ActivityItem } from 'models/ActivityItem' import { LotteryRecord } from 'models/LotteryRecord' import { updateRankScore } from 'services/rank.svr' diff --git a/src/controllers/sign.controller.ts b/src/controllers/sign.controller.ts index a51e424..f0b27d9 100644 --- a/src/controllers/sign.controller.ts +++ b/src/controllers/sign.controller.ts @@ -1,7 +1,5 @@ -import BaseController, { ROLE_ANON } from 'common/base.controller' -import { ZError, SyncLocker, ZRedisClient } from 'zutils' +import { ZError, SyncLocker, ZRedisClient, BaseController, ROLE_ANON, role, router } from 'zutils' import { BOOST_CFG } from 'configs/boost' -import { role, router } from 'decorators/router' import logger from 'logger/logger' import { ActivityUser } from 'models/ActivityUser' import { DEFAULT_EXPIRED, NonceRecord } from 'models/NonceRecord' diff --git a/src/controllers/tasks.controller.ts b/src/controllers/tasks.controller.ts index 1e8ba6c..61f92da 100644 --- a/src/controllers/tasks.controller.ts +++ b/src/controllers/tasks.controller.ts @@ -1,6 +1,4 @@ -import { ZError, SyncLocker } from 'zutils' -import BaseController from 'common/base.controller' -import { router } from 'decorators/router' +import { ZError, SyncLocker, BaseController, router } from 'zutils' import { TaskCfg, TaskTypeEnum } from 'models/ActivityInfo' import { TaskStatus, TaskStatusEnum } from 'models/ActivityUser' import { join } from 'path' diff --git a/src/decorators/router.ts b/src/decorators/router.ts deleted file mode 100644 index 366aa6f..0000000 --- a/src/decorators/router.ts +++ /dev/null @@ -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) - } - } -} diff --git a/src/plugins/apiauth.ts b/src/plugins/apiauth.ts index 6784037..971a9d6 100644 --- a/src/plugins/apiauth.ts +++ b/src/plugins/apiauth.ts @@ -1,8 +1,8 @@ -import { ROLE_ANON } from 'common/base.controller' import { FastifyPluginAsync, FastifyReply, FastifyRequest } from 'fastify' import fastifyPlugin from 'fastify-plugin' import { ActivityInfo } from 'models/ActivityInfo' import { ActivityUser } from 'models/ActivityUser' +import { ROLE_ANON } from 'zutils' declare module 'fastify' { interface FastifyRequest {