将一些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')
|
||||
@router('get /shop/:id')
|
||||
async detail(req: any) {
|
||||
|
@ -3,24 +3,19 @@ import {
|
||||
getModelForClass,
|
||||
index,
|
||||
modelOptions,
|
||||
plugin,
|
||||
pre,
|
||||
prop
|
||||
} from '@typegoose/typegoose';
|
||||
import {dbconn} from 'decorators/dbconn';
|
||||
} from '@typegoose/typegoose'
|
||||
import { dbconn } from 'decorators/dbconn'
|
||||
// @ts-ignore
|
||||
import findOrCreate from 'mongoose-findorcreate';
|
||||
import {
|
||||
Base,
|
||||
FindOrCreate,
|
||||
TimeStamps
|
||||
} from "@typegoose/typegoose/lib/defaultClasses";
|
||||
import {IDCounter} from "./IDCounter";
|
||||
import findOrCreate from 'mongoose-findorcreate'
|
||||
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||
import { IDCounter } from './IDCounter'
|
||||
import { BaseModule } from './Base'
|
||||
|
||||
interface AccountClass extends Base, TimeStamps {}
|
||||
@dbconn()
|
||||
@index({ plat: 1, app: 1, openId: 1}, { unique: true })
|
||||
@plugin(findOrCreate)
|
||||
@modelOptions({schemaOptions: {collection: "account", timestamps: true}})
|
||||
@pre<AccountClass>('save', async function() {
|
||||
if (!this.sid) {
|
||||
@ -28,7 +23,7 @@ interface AccountClass extends Base, TimeStamps {}
|
||||
this.sid = counter.seq;
|
||||
}
|
||||
})
|
||||
class AccountClass extends FindOrCreate{
|
||||
class AccountClass extends BaseModule{
|
||||
@prop({required: true})
|
||||
public plat!: string;
|
||||
@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,
|
||||
index,
|
||||
modelOptions,
|
||||
plugin,
|
||||
prop,
|
||||
ReturnModelType
|
||||
} from '@typegoose/typegoose'
|
||||
import { dbconn } from 'decorators/dbconn'
|
||||
// @ts-ignore
|
||||
import findOrCreate from 'mongoose-findorcreate'
|
||||
import {
|
||||
Base,
|
||||
FindOrCreate,
|
||||
TimeStamps
|
||||
} from '@typegoose/typegoose/lib/defaultClasses'
|
||||
|
||||
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||
|
||||
import { genRandomString, sha512 } from 'utils/security.util'
|
||||
import { BaseModule } from '../Base'
|
||||
|
||||
/**
|
||||
* 生成密码的salt和hash
|
||||
@ -44,12 +39,12 @@ export function verifyPass(userpassword: string, passwordDb: string, salt: strin
|
||||
export interface AdminClass extends Base, TimeStamps {
|
||||
}
|
||||
|
||||
|
||||
@dbconn()
|
||||
@index({ username: 1 }, { unique: true })
|
||||
@modelOptions({ schemaOptions: { collection: 'admin_user', timestamps: true } })
|
||||
@plugin(findOrCreate)
|
||||
// @ts-ignore
|
||||
class AdminClass extends FindOrCreate {
|
||||
class AdminClass extends BaseModule {
|
||||
@prop({ maxlength: 20, minlength: 5, required: true })
|
||||
public username: string
|
||||
@prop({ required: true })
|
||||
|
@ -8,6 +8,7 @@ import {
|
||||
} from "@typegoose/typegoose";
|
||||
import {AdminClass} from "./Admin";
|
||||
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()
|
||||
@modelOptions({schemaOptions: {collection: "admin_log", timestamps: true},
|
||||
options: {allowMixed: Severity.ALLOW}})
|
||||
class AdminLogClass {
|
||||
class AdminLogClass extends BaseModule{
|
||||
@prop({ ref: 'AdminClass' })
|
||||
public admin: Ref<AdminClass>;
|
||||
@prop()
|
||||
|
@ -1,19 +1,10 @@
|
||||
import {
|
||||
getModelForClass,
|
||||
index,
|
||||
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";
|
||||
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
|
||||
import { dbconn } from 'decorators/dbconn'
|
||||
import { BaseModule } from '../Base'
|
||||
|
||||
@dbconn()
|
||||
@plugin(findOrCreate)
|
||||
@modelOptions({schemaOptions: {collection: "admin_role", _id: false, timestamps: true}})
|
||||
export class AdminRoleClass extends FindOrCreate{
|
||||
export class AdminRoleClass extends BaseModule{
|
||||
@prop()
|
||||
public _id: string;
|
||||
@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 {
|
||||
getModelForClass, index,
|
||||
getModelForClass,
|
||||
index,
|
||||
modelOptions,
|
||||
plugin,
|
||||
prop
|
||||
} from '@typegoose/typegoose'
|
||||
import { dbconn } from 'decorators/dbconn'
|
||||
// @ts-ignore
|
||||
import findOrCreate from 'mongoose-findorcreate'
|
||||
import {
|
||||
Base,
|
||||
FindOrCreate,
|
||||
TimeStamps
|
||||
} from '@typegoose/typegoose/lib/defaultClasses'
|
||||
import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'
|
||||
import { checkJson, noJson } from '../../decorators/nojson'
|
||||
import { BaseModule } from '../Base'
|
||||
|
||||
const jsonExcludeKeys = ['updatedAt', '__v']
|
||||
const saveExcludeKeys = ['createdAt', 'updatedAt', '__v', '_id']
|
||||
@ -50,10 +47,9 @@ interface ArticleClass extends Base, TimeStamps {
|
||||
}
|
||||
|
||||
@dbconn()
|
||||
@plugin(findOrCreate)
|
||||
@index({'tags': 1}, {unique: false})
|
||||
@modelOptions({ schemaOptions: { collection: 'articles', timestamps: true } })
|
||||
class ArticleClass extends FindOrCreate {
|
||||
class ArticleClass extends BaseModule {
|
||||
/**
|
||||
* 标题
|
||||
* @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'
|
||||
|
||||
// @ts-ignore
|
||||
import findOrCreate from 'mongoose-findorcreate'
|
||||
import {
|
||||
getModelForClass,
|
||||
index,
|
||||
modelOptions,
|
||||
plugin, post, prop
|
||||
} from '@typegoose/typegoose'
|
||||
import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
|
||||
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()
|
||||
@plugin(findOrCreate)
|
||||
@modelOptions({ schemaOptions: { collection: 'shop', timestamps: true } })
|
||||
class ShopClass extends FindOrCreate {
|
||||
class ShopClass extends BaseModule {
|
||||
@prop({ required: true })
|
||||
public name!: string
|
||||
/**
|
||||
@ -92,24 +81,6 @@ class ShopClass extends FindOrCreate {
|
||||
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) {
|
||||
let {key, timeBegin, timeEnd} = params
|
||||
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
|
||||
|
||||
} 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