添加后台连接用的后端

This commit is contained in:
luying
2020-09-22 11:09:15 +08:00
parent 6e891ec756
commit bcbed5959f
48 changed files with 14845 additions and 2076 deletions
+50
View File
@@ -0,0 +1,50 @@
import { GMUserModel } from '@db/GMUser';
import { Service } from 'egg';
/**
* Test Service
*/
export default class GMUsers extends Service {
/**
* 后台账号登录
*/
public async login(username: string, password: string) {
// const {ctx} = this;
let user = await GMUserModel.login(username, password);
if(user) {
return {
"status": "ok",
"data": user
}
} else {
return {
"status": "error",
"data": "账号或密码错误"
}
}
}
/**
* 创建后台账号
*/
public async createGmAccount(name: string, username: string, password: string, group: string) {
const {ctx} = this;
let token = ctx.service.utils.genCode(256);
let user = await GMUserModel.getGmAccountByUsername(username);
if(user) {
return {
"status": "error",
"data": "该账号已使用"
}
} else {
user = await GMUserModel.createGmAccount(username, password, name, token, group);
return {
"status": "ok",
"data": user
};
}
}
}
+15
View File
@@ -0,0 +1,15 @@
import { Service } from 'egg';
/**
* Test Service
*/
export default class Test extends Service {
/**
* sayHi to you
* @param name - your name
*/
public async sayHi(name: string) {
return `hi, ${name}`;
}
}
+94
View File
@@ -0,0 +1,94 @@
import { Service } from 'egg';
const csprng = require('csprng');
const fs = require('fs');
const path = require('path');
var gamedata = {};
function initData () {
fs.readdirSync(__dirname + '/../resource')
.filter(function(file) {
return (file.indexOf(".") !== 0) && (file !== "index.js");
})
//筛选有文件名且不是index进行遍历
.forEach(function(file) {
var name = file.split('.')[0];
try {
gamedata[name] = JSON.parse(
fs.readFileSync(path.resolve(__dirname, "../resource/" + file))
);
} catch(e) {
console.error('【文件缺少】:' + file);
gamedata[name] = [];
}
});
}
initData();
/**
* Utils Service
*/
export default class Utils extends Service {
/**
* 生成 len 长度的随机字符串
* @param len 长度
* @param radix 基数
*/
public generateStr(len: number, radix = 36) {
return `${csprng(len, radix)}`;
}
public genCode(len) {
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
const charArr = chars.split('');
let code = '';
for (let i = 0; i < len; i++) {
code += charArr[Math.floor(Math.random() * charArr.length)];
}
return code;
}
/**
* 生成指定长度的随机数
* @param len 随机数长度
*/
public generateNum(len: number) {
let code = '';
for (let i = 0; i < len; i++) {
code += parseInt(`${Math.random() * 10}`);
}
return code;
}
public exceptionResult(status) {
const { code, simStr } = status;
return { status: code, data: simStr };
}
public getGamedata(key) {
return gamedata[key];
}
public getHeroById(hid) {
let heros = gamedata['dic_zyz_hero']||[];
return heros.find(cur => {
return cur.heroId == hid;
});
}
public getWarById(warid) {
let warInfo = gamedata['dic_zyz_gk']||[];
return warInfo.find(cur => {
return cur.war_id == warid
});
}
public getGoodById(gid) {
console.log(gid)
let goodsInfo = gamedata['goods']||[];
return goodsInfo.find(cur => {
return cur.good_id == gid
});
}
}
+285
View File
@@ -0,0 +1,285 @@
import { UserModel } from '@db/User';
import { RoleModel } from '@db/Role';
import { HeroModel } from '@db/Hero';
import { EquipModel } from '@db/Equip';
import { ItemModel } from '@db/Item';
import { CounterModel } from '@db/Counter';
import { Service } from 'egg';
import Counter from '@db/Counter';
/**
* Test Service
*/
export default class GMUsers extends Service {
/**
* 根据类型等搜索玩家
*/
public async getuserlist(field, value) {
// const {ctx} = this;
let arr = new Array(), flag = 0;
value = value.split(',');
for(let i of value) {
if(field == 'uid') {
let d = parseInt(i);
if(isNaN(d)) {
flag = 1; break;
} else {
arr.push(d);
}
} else if(field == 'username'||field == 'tel') {
arr.push(i);
} else if (field == 'all') {
break;
} else {
flag = 1; break;
}
}
if(flag) {
return {
"status": "error",
"data": "参数错误"
}
}
let users = await UserModel.findUserByField(field, value);
if(users) {
let list = new Array();
for(let user of users) {
let role = await RoleModel.findByUid(user.uid, 1);
list.push({...user, hasRole: role?true: false, role});
}
return {
"status": "ok",
"data": list
}
} else {
return {
"status": "error",
"data": "未找到玩家"
}
}
}
public async createRole(uid:number, serverId: number, roleName: string) {
console.log('enter Auth createRole');
const ctx = this.ctx;
const roleId = ctx.service.utils.genCode(10);
const code = ctx.service.utils.genCode(6);
const seqId = await Counter.getNewCounter('role') || -1;
const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId });
if (role) {
return { status: "ok", data: { roleId: role.roleId } };
}
return {
"status": "error",
"data": "创建失败"
};
}
/**
* 根据类型等搜索玩家
*/
public async getrolelist(field, value) {
// const {ctx} = this;
let arr = new Array(), flag = 0;
value = value.split(',');
for(let i of value) {
if(field == 'uid') {
let d = parseInt(i);
if(isNaN(d)) {
flag = 1; break;
} else {
arr.push(d);
}
field = 'userInfo.uid';
} else if(field == 'roleName') {
arr.push(i);
} else if (field == 'tel') {
arr.push(i);
field = 'userInfo.tel';
} else if (field == 'all') {
break;
} else {
flag = 1; break;
}
}
if(flag) {
return {
"status": "error",
"data": "参数错误"
}
}
let roles = await RoleModel.findRoleByField(field, value);
if(roles) {
let result = new Array();
for(let role of roles) {
let heroCount = await HeroModel.count({roleId: role.roleId}).lean();
let equipCount = await EquipModel.count({roleId: role.roleId}).lean();
let itemCount = await ItemModel.count({roleId: role.roleId}).lean();
let {roleId, roleName, serverId, lv, vLv} = role;
let {uid, tel} = role.userInfo;
result.push({
key: roleId, roleId, roleName, serverId, lv, vLv, uid, tel, heroCount, equipCount, itemCount
});
}
return {
"status": "ok",
"data": result
}
} else {
return {
"status": "error",
"data": "未找到玩家"
}
}
}
public async createHero(uids: Array<string>, hid: number, hlv: number) {
const {ctx} = this;
console.log('gm createHero', uids, hid, hlv);
let flag = 0, msg = '创建失败';
for(let roleId of uids) {
let role = await RoleModel.findByRoleId(roleId);
if(role) {
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if(hero) {
flag = 1, msg = "角色" + roleId + "已拥有武将" + hid;
break;
}
const seqId = await CounterModel.getNewCounter('hid')||-1;
let dicHero = ctx.service.utils.getHeroById(hid);
if(!dicHero) {
flag = 1, msg = "未找到武将" + hid;
break;
}
const heroInfo = {
roleId,
roleName: role.roleName,
hid: hid,
hName: dicHero.name,
seqId,
lv: hlv
}
await HeroModel.createHero(heroInfo);
} else {
flag = 1, msg = '未找到角色' + roleId;
}
}
if (flag) {
return {
"status": "error",
"data": msg
}
} else {
return {
"status": "ok",
"data": uids
};
}
}
public async createEquip(uids: Array<string>, eid: number, elv: number, ecount: number, ehid: number) {
const {ctx} = this;
console.log('gm createEquip');
let flag = 0, msg = '创建失败';
for(let roleId of uids) {
let role = await RoleModel.findByRoleId(roleId);
if(role) {
for(let i = 0; i <ecount; i++) {
let dicEquip = ctx.service.utils.getGoodById(eid);
if(!dicEquip) {
flag = 1, msg = "未找到装备" + eid;
break;
}
const seqId = await CounterModel.getNewCounter('eid')||-1;
const equipInfo = {
roleId,
roleName: role.roleName,
eid,
eName: dicEquip.name,
seqId,
type: 1,
lv: elv
}
const equip = await EquipModel.createEquip(equipInfo);
if(ehid > 0 && equip) {
await HeroModel.addEquip(roleId, ehid, equip._id);
}
}
} else {
flag = 1, msg = '未找到角色' + roleId;
}
}
if (flag) {
return {
"status": "error",
"data": msg
}
} else {
return {
"status": "ok",
"data": uids
};
}
}
public async createItem(uids: Array<string>, itemid: number, itemcount: number) {
console.log('gm createEquip');
let flag = 0;
for(let roleId of uids) {
let role = await RoleModel.findByRoleId(roleId);
if(role) {
let item = await ItemModel.findbyItemid(itemid, roleId);
if(item) {
await ItemModel.changeItemCount(item.seqId, itemcount);
} else {
const seqId = await CounterModel.getNewCounter('itemid')||-1;
const itemInfo = {
roleId,
roleName: role.roleName,
itemid,
itemName: '包子',
seqId,
type: 1,
count: itemcount
}
await ItemModel.createItem(itemInfo);
}
} else {
flag = 1;
}
}
if (flag) {
return {
"status": "error",
"data": "创建失败"
}
} else {
return {
"status": "ok",
"data": uids
};
}
}
}