后台添加权限管理

This commit is contained in:
luying
2020-09-22 11:10:45 +08:00
parent bcbed5959f
commit 780562979e
13 changed files with 494 additions and 31 deletions
+3 -1
View File
@@ -9,5 +9,7 @@ export const AUTH_SMS_CNT_PER_DAY = 8;
export const COUNTER = {
UID: 'uid',
GMUID: 'gmuid'
GMUID: 'gmuid',
API: 'api',
GM_GROUP: 'gmgroup'
};
+41
View File
@@ -0,0 +1,41 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
import { COUNTER } from './../consts/consts';
import { CounterModel } from './Counter';
/**
* 接口字段接口
*/
@index({ apiId: 1 })
@index({ api: 1 })
export default class Api extends BaseModel {
@prop({ required: true })
apiId: number;
@prop({ required: true })
api: string;
@prop({ required: true })
name: string;
public static async getApi(api: string, lean = true) {
let result = await ApiModel.findOne({api}).select('apiId api name').lean(lean);
return result;
}
public static async getAllApi(lean = true) {
const api = await ApiModel.find().sort({apiId: 1}).lean(lean);
return api;
}
public static async createApi(api:string, name: string, lean = true) {
const apiId = await CounterModel.getNewCounter(COUNTER.API);
const result = await ApiModel.findOneAndUpdate({apiId}, {$set:{api, name}}, {upsert: true, new: true}).lean(lean);
return result;
}
}
export const ApiModel = getModelForClass(Api);
+5 -3
View File
@@ -1,9 +1,11 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
@index({ roleId: 1, hid: 1, eid: 1 })
@index({ seqId: 1 })
/**
* 战斗记录接口
*/
@index({ roleId: 1, battleId: 1 })
@index({ battleCode: 1 })
export default class BattleRecord extends BaseModel {
@prop({ required: true })
+72
View File
@@ -0,0 +1,72 @@
import { COUNTER } from './../consts/consts';
import { CounterModel } from './Counter';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
/**
* GM用户组接口
*/
@index({ id: 1 })
@index({ group: 1 })
export default class GMGroup extends BaseModel {
@prop({ required: true })
id: number;
@prop({ required: true })
group: string;
@prop({ required: true })
name: string;
@prop({ required: true })
desc: string;
@prop({ required: true })
apis: Array<number>;
public static async createGroup(group: string, name: string, desc: string, lean = true) {
const id = await CounterModel.getNewCounter(COUNTER.GM_GROUP);
const result = await GMGroupModel.findOneAndUpdate({id}, {group, desc, name, apis: []}, {upsert: true, new: true}).select('uid username name').lean(lean);
return result;
}
public static async getAllGroup(lean = true) {
const list = await GMGroupModel.find().lean(lean);
return list;
}
public static async getGroup(group: string, lean = true) {
const result = await GMGroupModel.findOne({ group }).lean(lean);
return result;
}
public static async getGroupById(id: number, lean = true) {
const result = await GMGroupModel.findOne({ id }).lean(lean);
return result;
}
public static async saveApiToGroup(id: number, apis: Array<number>, lean = true) {
let group = await GMGroupModel.getGroupById(id);
if(group) {
let originApi = group.apis||[];
let addArr = new Array(), removeArr = new Array();
for(let i = 0; i < apis.length; i++) {
let api = apis[i];
if(originApi.indexOf(api) == -1) addArr.push(api);
}
for(let i = 0; i < originApi.length; i++) {
let api = originApi[i];
if(apis.indexOf(api) == -1) removeArr.push(api);
}
await GMGroupModel.findOneAndUpdate({ id }, { $push: {apis: {$each: addArr}} }).lean(lean);
const result = await GMGroupModel.findOneAndUpdate({ id }, { $pull: {apis: {$in: removeArr}} }).lean(lean);
return result;
}
}
}
export const GMGroupModel = getModelForClass(GMGroup);
+12 -11
View File
@@ -7,9 +7,8 @@ const SALT_WORK_FACTOR = 5
/**
* 用户字段接口
* GM账号字段接口
*/
@index({ tel: 1 })
@index({ uid: 1 })
export default class GMUser extends BaseModel {
@@ -31,9 +30,6 @@ export default class GMUser extends BaseModel {
@prop({ required: true })
token: string;
@prop({ required: true, default: '' })
group: string;
private static async encryptPass(password: string, salt?: string) {
console.log(salt)
if(!salt) {
@@ -44,18 +40,23 @@ export default class GMUser extends BaseModel {
return {npassword, salt};
}
public static async getGmAccountList(lean = true) {
const user = await GMUserModel.find().select('uid username name token').lean(lean);
return user;
}
public static async getGmAccountByToken(token: string, lean = true) {
const user = await GMUserModel.findOne({token}).select('uid username name token group').lean(lean);
const user = await GMUserModel.findOne({token}).select('uid username name token').lean(lean);
return user;
}
public static async getGmAccountByUid(uid: number, lean = true) {
const user = await GMUserModel.findOne({uid}).select('uid username name token group').lean(lean);
const user = await GMUserModel.findOne({uid}).select('uid username name token').lean(lean);
return user;
}
public static async getGmAccountByUsername(username: string, lean = true) {
const user = await GMUserModel.findOne({username}).select('uid username name token group').lean(lean);
const user = await GMUserModel.findOne({username}).select('uid username name token').lean(lean);
return user;
}
@@ -66,17 +67,17 @@ export default class GMUser extends BaseModel {
console.log(salt)
let { npassword } = await this.encryptPass(password, salt);
console.log(username, npassword)
const checkUser = await GMUserModel.findOne({username, password: npassword}).select('uid username name token group').lean(lean);
const checkUser = await GMUserModel.findOne({username, password: npassword}).select('uid username name token').lean(lean);
return checkUser;
} else {
return null
}
}
public static async createGmAccount(username: string, password: string, name: string, token: string, group: string, lean = true) {
public static async createGmAccount(username: string, password: string, name: string, token: string, lean = true) {
const uid = await CounterModel.getNewCounter(COUNTER.GMUID);
let r = await this.encryptPass(password);
const user = await GMUserModel.findOneAndUpdate({username}, {uid, password: r.npassword, salt: r.salt, name, token, group}, {upsert: true, new: true}).select('uid username name group').lean(lean);
const user = await GMUserModel.findOneAndUpdate({username}, {uid, password: r.npassword, salt: r.salt, name, token}, {upsert: true, new: true}).select('uid username name').lean(lean);
return user;
}
+35
View File
@@ -0,0 +1,35 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
/**
* GM账号和用户组关系接口
*/
@index({ uid: 1, serverId: 1, groupId: 1 })
export default class GMUserGroup extends BaseModel {
@prop({ required: true })
uid: number;
@prop({ required: true })
serverId: number;
@prop({ required: true })
groupId: number;
public static async getUserGroupByUid(uid: number, serverId: number, lean = true) {
const user = await GMUserGroupModel.find({uid, serverId}).lean(lean);
return user;
}
public static async removeUserGroup(uid: number, serverId: number, groups: Array<number>, lean = true) {
const user = await GMUserGroupModel.deleteMany({uid, serverId, groupId: {$in: groups}}).lean(lean);
return user;
}
public static async addUserGroup(uid: number, serverId: number, groupId: number, lean = true) {
const result = await GMUserGroupModel.findOneAndUpdate({uid, serverId, groupId}, {}, {new:true, upsert:true}).lean(lean);
return result;
}
}
export const GMUserGroupModel = getModelForClass(GMUserGroup);
+1 -1
View File
@@ -2,7 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
@index({ roleId: 1, hid: 1, eid: 1 })
@index({ roleId: 1, hid: 1, itemid: 1 })
@index({ seqId: 1 })
export default class Item extends BaseModel {
@prop({ required: true })