将一些module通用的方法和属性统一到BaseModule中
This commit is contained in:
parent
d2cd8a909e
commit
ac81078c19
@ -29,6 +29,15 @@ export default class ShopController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@role('anon')
|
||||||
|
@router('get /shop/test')
|
||||||
|
async testCreate() {
|
||||||
|
let record = (await Shop.findOrCreate({name: '上海莱悦口腔门诊部'})).doc
|
||||||
|
record.showName = '11'
|
||||||
|
await record.save()
|
||||||
|
return record
|
||||||
|
}
|
||||||
|
|
||||||
@permission('shop:read')
|
@permission('shop:read')
|
||||||
@router('get /shop/:id')
|
@router('get /shop/:id')
|
||||||
async detail(req: any) {
|
async detail(req: any) {
|
||||||
|
@ -3,24 +3,19 @@ import {
|
|||||||
getModelForClass,
|
getModelForClass,
|
||||||
index,
|
index,
|
||||||
modelOptions,
|
modelOptions,
|
||||||
plugin,
|
|
||||||
pre,
|
pre,
|
||||||
prop
|
prop
|
||||||
} from '@typegoose/typegoose';
|
} from '@typegoose/typegoose'
|
||||||
import {dbconn} from 'decorators/dbconn';
|
import { dbconn } from 'decorators/dbconn'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import findOrCreate from 'mongoose-findorcreate';
|
import findOrCreate from 'mongoose-findorcreate'
|
||||||
import {
|
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||||
Base,
|
import { IDCounter } from './IDCounter'
|
||||||
FindOrCreate,
|
import { BaseModule } from './Base'
|
||||||
TimeStamps
|
|
||||||
} from "@typegoose/typegoose/lib/defaultClasses";
|
|
||||||
import {IDCounter} from "./IDCounter";
|
|
||||||
|
|
||||||
interface AccountClass extends Base, TimeStamps {}
|
interface AccountClass extends Base, TimeStamps {}
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@index({ plat: 1, app: 1, openId: 1}, { unique: true })
|
@index({ plat: 1, app: 1, openId: 1}, { unique: true })
|
||||||
@plugin(findOrCreate)
|
|
||||||
@modelOptions({schemaOptions: {collection: "account", timestamps: true}})
|
@modelOptions({schemaOptions: {collection: "account", timestamps: true}})
|
||||||
@pre<AccountClass>('save', async function() {
|
@pre<AccountClass>('save', async function() {
|
||||||
if (!this.sid) {
|
if (!this.sid) {
|
||||||
@ -28,7 +23,7 @@ interface AccountClass extends Base, TimeStamps {}
|
|||||||
this.sid = counter.seq;
|
this.sid = counter.seq;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
class AccountClass extends FindOrCreate{
|
class AccountClass extends BaseModule{
|
||||||
@prop({required: true})
|
@prop({required: true})
|
||||||
public plat!: string;
|
public plat!: string;
|
||||||
@prop()
|
@prop()
|
||||||
@ -67,4 +62,4 @@ class AccountClass extends FindOrCreate{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Account = getModelForClass(AccountClass, {existingConnection: AccountClass['db']});
|
export const Account = getModelForClass(AccountClass, {existingConnection: AccountClass.db});
|
||||||
|
34
src/models/Base.ts
Normal file
34
src/models/Base.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { FindOrCreate } from '@typegoose/typegoose/lib/defaultClasses'
|
||||||
|
import { checkJson } from '../decorators/nojson'
|
||||||
|
import { plugin } from '@typegoose/typegoose'
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import findOrCreate from 'mongoose-findorcreate'
|
||||||
|
import { Connection } from 'mongoose'
|
||||||
|
|
||||||
|
const jsonExcludeKeys = ['updatedAt', '__v']
|
||||||
|
const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
||||||
|
|
||||||
|
|
||||||
|
@plugin(findOrCreate)
|
||||||
|
export abstract class BaseModule extends FindOrCreate {
|
||||||
|
static db: Connection
|
||||||
|
|
||||||
|
public updateFromReq(data: any) {
|
||||||
|
for (let key in data) {
|
||||||
|
if (saveExcludeKeys.indexOf(key) == -1) {
|
||||||
|
this[key] = data[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public toJson() {
|
||||||
|
let result: any = {}
|
||||||
|
for (let key in this) {
|
||||||
|
if (checkJson(this, key+'' ) && jsonExcludeKeys.indexOf(key) == -1) {
|
||||||
|
result[key] = this[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
@ -2,20 +2,15 @@ import {
|
|||||||
getModelForClass,
|
getModelForClass,
|
||||||
index,
|
index,
|
||||||
modelOptions,
|
modelOptions,
|
||||||
plugin,
|
|
||||||
prop,
|
prop,
|
||||||
ReturnModelType
|
ReturnModelType
|
||||||
} from '@typegoose/typegoose'
|
} from '@typegoose/typegoose'
|
||||||
import { dbconn } from 'decorators/dbconn'
|
import { dbconn } from 'decorators/dbconn'
|
||||||
// @ts-ignore
|
|
||||||
import findOrCreate from 'mongoose-findorcreate'
|
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||||
import {
|
|
||||||
Base,
|
|
||||||
FindOrCreate,
|
|
||||||
TimeStamps
|
|
||||||
} from '@typegoose/typegoose/lib/defaultClasses'
|
|
||||||
|
|
||||||
import { genRandomString, sha512 } from 'utils/security.util'
|
import { genRandomString, sha512 } from 'utils/security.util'
|
||||||
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成密码的salt和hash
|
* 生成密码的salt和hash
|
||||||
@ -44,12 +39,12 @@ export function verifyPass(userpassword: string, passwordDb: string, salt: strin
|
|||||||
export interface AdminClass extends Base, TimeStamps {
|
export interface AdminClass extends Base, TimeStamps {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@index({ username: 1 }, { unique: true })
|
@index({ username: 1 }, { unique: true })
|
||||||
@modelOptions({ schemaOptions: { collection: 'admin_user', timestamps: true } })
|
@modelOptions({ schemaOptions: { collection: 'admin_user', timestamps: true } })
|
||||||
@plugin(findOrCreate)
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
class AdminClass extends FindOrCreate {
|
class AdminClass extends BaseModule {
|
||||||
@prop({ maxlength: 20, minlength: 5, required: true })
|
@prop({ maxlength: 20, minlength: 5, required: true })
|
||||||
public username: string
|
public username: string
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
} from "@typegoose/typegoose";
|
} from "@typegoose/typegoose";
|
||||||
import {AdminClass} from "./Admin";
|
import {AdminClass} from "./Admin";
|
||||||
import {Severity} from "@typegoose/typegoose/lib/internal/constants";
|
import {Severity} from "@typegoose/typegoose/lib/internal/constants";
|
||||||
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理员操作记录
|
* 管理员操作记录
|
||||||
@ -15,7 +16,7 @@ import {Severity} from "@typegoose/typegoose/lib/internal/constants";
|
|||||||
@dbconn()
|
@dbconn()
|
||||||
@modelOptions({schemaOptions: {collection: "admin_log", timestamps: true},
|
@modelOptions({schemaOptions: {collection: "admin_log", timestamps: true},
|
||||||
options: {allowMixed: Severity.ALLOW}})
|
options: {allowMixed: Severity.ALLOW}})
|
||||||
class AdminLogClass {
|
class AdminLogClass extends BaseModule{
|
||||||
@prop({ ref: 'AdminClass' })
|
@prop({ ref: 'AdminClass' })
|
||||||
public admin: Ref<AdminClass>;
|
public admin: Ref<AdminClass>;
|
||||||
@prop()
|
@prop()
|
||||||
|
@ -1,19 +1,10 @@
|
|||||||
import {
|
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
|
||||||
getModelForClass,
|
import { dbconn } from 'decorators/dbconn'
|
||||||
index,
|
import { BaseModule } from '../Base'
|
||||||
modelOptions,
|
|
||||||
plugin,
|
|
||||||
prop
|
|
||||||
} from '@typegoose/typegoose';
|
|
||||||
import {dbconn} from 'decorators/dbconn';
|
|
||||||
// @ts-ignore
|
|
||||||
import findOrCreate from 'mongoose-findorcreate';
|
|
||||||
import {FindOrCreate} from "@typegoose/typegoose/lib/defaultClasses";
|
|
||||||
|
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@plugin(findOrCreate)
|
|
||||||
@modelOptions({schemaOptions: {collection: "admin_role", _id: false, timestamps: true}})
|
@modelOptions({schemaOptions: {collection: "admin_role", _id: false, timestamps: true}})
|
||||||
export class AdminRoleClass extends FindOrCreate{
|
export class AdminRoleClass extends BaseModule{
|
||||||
@prop()
|
@prop()
|
||||||
public _id: string;
|
public _id: string;
|
||||||
@prop()
|
@prop()
|
||||||
@ -50,4 +41,4 @@ export class AdminRoleClass extends FindOrCreate{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const AdminRole = getModelForClass(AdminRoleClass, {existingConnection: AdminRoleClass['db']});
|
export const AdminRole = getModelForClass(AdminRoleClass, {existingConnection: AdminRoleClass.db});
|
||||||
|
@ -1,18 +1,15 @@
|
|||||||
import {
|
import {
|
||||||
getModelForClass, index,
|
getModelForClass,
|
||||||
|
index,
|
||||||
modelOptions,
|
modelOptions,
|
||||||
plugin,
|
|
||||||
prop
|
prop
|
||||||
} from '@typegoose/typegoose'
|
} from '@typegoose/typegoose'
|
||||||
import { dbconn } from 'decorators/dbconn'
|
import { dbconn } from 'decorators/dbconn'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import findOrCreate from 'mongoose-findorcreate'
|
import findOrCreate from 'mongoose-findorcreate'
|
||||||
import {
|
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||||
Base,
|
|
||||||
FindOrCreate,
|
|
||||||
TimeStamps
|
|
||||||
} from '@typegoose/typegoose/lib/defaultClasses'
|
|
||||||
import { checkJson, noJson } from '../../decorators/nojson'
|
import { checkJson, noJson } from '../../decorators/nojson'
|
||||||
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
const jsonExcludeKeys = ['updatedAt', '__v']
|
const jsonExcludeKeys = ['updatedAt', '__v']
|
||||||
const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
||||||
@ -50,10 +47,9 @@ interface ArticleClass extends Base, TimeStamps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@plugin(findOrCreate)
|
|
||||||
@index({'tags': 1}, {unique: false})
|
@index({'tags': 1}, {unique: false})
|
||||||
@modelOptions({ schemaOptions: { collection: 'articles', timestamps: true } })
|
@modelOptions({ schemaOptions: { collection: 'articles', timestamps: true } })
|
||||||
class ArticleClass extends FindOrCreate {
|
class ArticleClass extends BaseModule {
|
||||||
/**
|
/**
|
||||||
* 标题
|
* 标题
|
||||||
* @type {string}
|
* @type {string}
|
||||||
|
12
src/models/shop/Coupon.ts
Normal file
12
src/models/shop/Coupon.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { getModelForClass, modelOptions } from '@typegoose/typegoose'
|
||||||
|
import { dbconn } from '../../decorators/dbconn'
|
||||||
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
|
|
||||||
|
@dbconn()
|
||||||
|
@modelOptions({ schemaOptions: { collection: 'shop_coupon', timestamps: true } })
|
||||||
|
class CouponClass extends BaseModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Coupon = getModelForClass(CouponClass, { existingConnection: CouponClass.db })
|
@ -1,23 +1,12 @@
|
|||||||
import { FindOrCreate } from '@typegoose/typegoose/lib/defaultClasses'
|
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
import findOrCreate from 'mongoose-findorcreate'
|
|
||||||
import {
|
|
||||||
getModelForClass,
|
|
||||||
index,
|
|
||||||
modelOptions,
|
|
||||||
plugin, post, prop
|
|
||||||
} from '@typegoose/typegoose'
|
|
||||||
import { dbconn } from '../../decorators/dbconn'
|
import { dbconn } from '../../decorators/dbconn'
|
||||||
import { checkJson, noJson } from '../../decorators/nojson'
|
import { noJson } from '../../decorators/nojson'
|
||||||
|
import { BaseModule } from '../Base'
|
||||||
|
|
||||||
const jsonExcludeKeys = ['updatedAt', '__v']
|
|
||||||
const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
|
||||||
|
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@plugin(findOrCreate)
|
|
||||||
@modelOptions({ schemaOptions: { collection: 'shop', timestamps: true } })
|
@modelOptions({ schemaOptions: { collection: 'shop', timestamps: true } })
|
||||||
class ShopClass extends FindOrCreate {
|
class ShopClass extends BaseModule {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
public name!: string
|
public name!: string
|
||||||
/**
|
/**
|
||||||
@ -92,24 +81,6 @@ class ShopClass extends FindOrCreate {
|
|||||||
public extData: string
|
public extData: string
|
||||||
|
|
||||||
|
|
||||||
public updateFromReq(data: any) {
|
|
||||||
for (let key in data) {
|
|
||||||
if (saveExcludeKeys.indexOf(key) == -1) {
|
|
||||||
this[key] = data[key]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public toJson() {
|
|
||||||
let result: any = {}
|
|
||||||
for (let key in this) {
|
|
||||||
if (checkJson(this, key+'' ) && jsonExcludeKeys.indexOf(key) == -1) {
|
|
||||||
result[key] = this[key]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
public static parseQueryParam(params) {
|
public static parseQueryParam(params) {
|
||||||
let {key, timeBegin, timeEnd} = params
|
let {key, timeBegin, timeEnd} = params
|
||||||
let opt: any = {deleted: false, show: true}
|
let opt: any = {deleted: false, show: true}
|
||||||
@ -130,4 +101,4 @@ class ShopClass extends FindOrCreate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const Shop = getModelForClass(ShopClass, { existingConnection: ShopClass['db'] })
|
export const Shop = getModelForClass(ShopClass, { existingConnection: ShopClass.db })
|
||||||
|
@ -72,7 +72,8 @@ const zAuthPlugin: FastifyPluginAsync = async function (
|
|||||||
return
|
return
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return reply.send({ code: 401, msg: 'need auth' })
|
// return reply.send({ code: 401, msg: 'need auth' })
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user