From a737d24d0e8cb08dcce303dcefc16097cc3cfe47 Mon Sep 17 00:00:00 2001 From: COOL Date: Sat, 11 Jan 2025 16:37:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/comm/utils.ts | 137 ++++++++++++++++++++++++++++ src/controller/api.controller.ts | 18 ---- src/controller/home.controller.ts | 9 -- src/filter/default.filter.ts | 13 --- src/filter/notfound.filter.ts | 10 -- src/index.ts | 9 +- src/middleware/report.middleware.ts | 27 ------ src/service/user.service.ts | 14 --- 8 files changed, 139 insertions(+), 98 deletions(-) create mode 100644 src/comm/utils.ts delete mode 100644 src/controller/api.controller.ts delete mode 100644 src/controller/home.controller.ts delete mode 100644 src/filter/default.filter.ts delete mode 100644 src/filter/notfound.filter.ts delete mode 100644 src/middleware/report.middleware.ts delete mode 100644 src/service/user.service.ts diff --git a/src/comm/utils.ts b/src/comm/utils.ts new file mode 100644 index 0000000..1b73aea --- /dev/null +++ b/src/comm/utils.ts @@ -0,0 +1,137 @@ +import { Inject, Provide } from '@midwayjs/decorator'; +import { Context } from '@midwayjs/koa'; +import * as _ from 'lodash'; +import * as moment from 'moment'; + +/** + * 帮助类 + */ +@Provide() +export class Utils { + @Inject() + baseDir; + + /** + * 获得请求IP + */ + async getReqIP(ctx: Context) { + const req = ctx.req; + return ( + req.headers['x-forwarded-for'] || + req.socket.remoteAddress.replace('::ffff:', '') + ); + } + + /** + * 去除对象的空值属性 + * @param obj + */ + async removeEmptyP(obj) { + Object.keys(obj).forEach(key => { + if (obj[key] === null || obj[key] === '' || obj[key] === 'undefined') { + delete obj[key]; + } + }); + } + + /** + * 线程阻塞毫秒数 + * @param ms + */ + sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + /** + * 获得最近几天的日期集合 + * @param recently + */ + getRecentlyDates(recently, format = 'YYYY-MM-DD') { + moment.locale('zh-cn'); + const dates = []; + for (let i = 0; i < recently; i++) { + dates.push(moment().subtract(i, 'days').format(format)); + } + return dates.reverse(); + } + /** + * 获得最近几个月的月数 + * @param recently + */ + getRecentlyMonths(recently, format = 'YYYY-MM') { + moment.locale('zh-cn'); + const dates = []; + const date = moment(Date.now()).format('YYYY-MM'); + for (let i = 0; i < recently; i++) { + dates.push(moment(date).subtract(i, 'months').format(format)); + } + return dates.reverse(); + } + + /** + * 根据开始和结束时间,获得时间段内的日期集合 + * @param start + * @param end + */ + getBetweenDays(start, end, format = 'YYYY-MM-DD') { + moment.locale('zh-cn'); + const dates = []; + const startTime = moment(start).format(format); + const endTime = moment(end).format(format); + const days = moment(endTime).diff(moment(startTime), 'days'); + for (let i = 0; i <= days; i++) { + dates.push(moment(startTime).add(i, 'days').format(format)); + } + return dates; + } + + /** + * 根据开始和结束时间,获得时间段内的月份集合 + * @param start + * @param end + */ + getBetweenMonths(start, end, format = 'YYYY-MM') { + moment.locale('zh-cn'); + const dates = []; + const startTime = moment(start).format(format); + const endTime = moment(end).format(format); + const months = moment(endTime).diff(moment(startTime), 'months'); + for (let i = 0; i <= months; i++) { + dates.push(moment(startTime).add(i, 'months').format(format)); + } + return dates; + } + + /** + * 根据开始和结束时间,获得时间段内的小时集合 + * @param start + * @param end + */ + getBetweenHours(start, end, format = 'YYYY-MM-DD HH') { + moment.locale('zh-cn'); + const dates = []; + const startTime = moment(start).format(format); + const endTime = moment(end).format(format); + const hours = moment(endTime).diff(moment(startTime), 'hours'); + for (let i = 0; i <= hours; i++) { + dates.push(moment(startTime).add(i, 'hours').format(format)); + } + return dates; + } + + /** + * 字段转驼峰法 + * @param obj + * @returns + */ + toCamelCase(obj) { + const camelCaseObject = {}; + for (const i in obj) { + const camelCase = i.replace(/([-_][a-z])/gi, $1 => { + return $1.toUpperCase().replace('-', '').replace('_', ''); + }); + camelCaseObject[camelCase] = obj[i]; + } + return camelCaseObject; + } +} diff --git a/src/controller/api.controller.ts b/src/controller/api.controller.ts deleted file mode 100644 index d00a169..0000000 --- a/src/controller/api.controller.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Inject, Controller, Get, Query } from '@midwayjs/core'; -import { Context } from '@midwayjs/koa'; -import { UserService } from '../service/user.service'; - -@Controller('/api') -export class APIController { - @Inject() - ctx: Context; - - @Inject() - userService: UserService; - - @Get('/get_user') - async getUser(@Query('uid') uid) { - const user = await this.userService.getUser({ uid }); - return { success: true, message: 'OK', data: user }; - } -} diff --git a/src/controller/home.controller.ts b/src/controller/home.controller.ts deleted file mode 100644 index 4b14647..0000000 --- a/src/controller/home.controller.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Controller, Get } from '@midwayjs/core'; - -@Controller('/') -export class HomeController { - @Get('/') - async home(): Promise { - return 'Hello Midwayjs!'; - } -} diff --git a/src/filter/default.filter.ts b/src/filter/default.filter.ts deleted file mode 100644 index 24c8af2..0000000 --- a/src/filter/default.filter.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Catch } from '@midwayjs/core'; -import { Context } from '@midwayjs/koa'; - -@Catch() -export class DefaultErrorFilter { - async catch(err: Error, ctx: Context) { - // 所有的未分类错误会到这里 - return { - success: false, - message: err.message, - }; - } -} diff --git a/src/filter/notfound.filter.ts b/src/filter/notfound.filter.ts deleted file mode 100644 index e3b7fa9..0000000 --- a/src/filter/notfound.filter.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Catch, httpError, MidwayHttpError } from '@midwayjs/core'; -import { Context } from '@midwayjs/koa'; - -@Catch(httpError.NotFoundError) -export class NotFoundFilter { - async catch(err: MidwayHttpError, ctx: Context) { - // 404 错误会到这里 - ctx.redirect('/404.html'); - } -} diff --git a/src/index.ts b/src/index.ts index e328e88..bda227b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,6 @@ /** This file generated by @midwayjs/bundle-helper */ - export { MainConfiguration as Configuration } from './configuration'; + +export { MainConfiguration as Configuration } from './configuration'; export * from './config/config.default'; export * from './config/config.local'; -export * from './middleware/report.middleware'; export * from './interface'; -export * from './service/user.service'; -export * from './controller/api.controller'; -export * from './controller/home.controller'; -export * from './filter/default.filter'; -export * from './filter/notfound.filter'; diff --git a/src/middleware/report.middleware.ts b/src/middleware/report.middleware.ts deleted file mode 100644 index 8121353..0000000 --- a/src/middleware/report.middleware.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Middleware, IMiddleware } from '@midwayjs/core'; -import { NextFunction, Context } from '@midwayjs/koa'; - -@Middleware() -export class ReportMiddleware implements IMiddleware { - resolve() { - return async (ctx: Context, next: NextFunction) => { - // 控制器前执行的逻辑 - const startTime = Date.now(); - // 执行下一个 Web 中间件,最后执行到控制器 - // 这里可以拿到下一个中间件或者控制器的返回值 - const result = await next(); - // 控制器之后执行的逻辑 - ctx.logger.info( - `Report in "src/middleware/report.middleware.ts", rt = ${ - Date.now() - startTime - }ms` - ); - // 返回给上一个中间件的结果 - return result; - }; - } - - static getName(): string { - return 'report'; - } -} diff --git a/src/service/user.service.ts b/src/service/user.service.ts deleted file mode 100644 index 1dce594..0000000 --- a/src/service/user.service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Provide } from '@midwayjs/core'; -import { IUserOptions } from '../interface'; - -@Provide() -export class UserService { - async getUser(options: IUserOptions) { - return { - uid: options.uid, - username: 'mockedName', - phone: '12345678901', - email: 'xxx.xxx@xxx.com', - }; - } -}