后台:军团管理

This commit is contained in:
luying
2021-12-15 19:54:43 +08:00
parent 05e410d28f
commit 15b9d9f97a
19 changed files with 318 additions and 39 deletions

View File

@@ -2,6 +2,7 @@ import 'reflect-metadata'
import * as mongoose from 'mongoose';
import { Application, IBoot } from 'egg';
import { loadGmDb } from '@db/index';
import { connectRedis } from '@pubUtils/redis';
export default class FooBoot implements IBoot {
private readonly app: Application;
@@ -16,6 +17,7 @@ export default class FooBoot implements IBoot {
// this is the last chance to modify the config.
await this.connectDB(this.app)
await this.connectGMDB(this.app);
await this.connectRedis(this.app);
this.app.config.realEnv = this.app.config.env;
if(this.app.config.env == 'local') {
@@ -78,6 +80,13 @@ export default class FooBoot implements IBoot {
}
}
public async connectRedis(app: Application) {
const { url, pw } = app.config.redis
if (url) {
const redisClient = connectRedis(url, pw);
app.context.redisClient = redisClient;
}
}
//#endregion
}

View File

@@ -120,8 +120,14 @@ export default class UserController extends Controller {
public async getItemList() {
const { ctx } = this;
const { field, value } = ctx.request.body;
ctx.body = await ctx.service.users.getItemList(field, value);
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.users.getItemList(page, pageSize, sortField, sortOrder, form);
}
public async getGuildList() {
const { ctx } = this;
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
ctx.body = await ctx.service.users.getGuildList(page, pageSize, sortField, sortOrder, form);
}
public async deleteEquip() {

View File

@@ -41,6 +41,7 @@ export default (app: Application) => {
// router.post('/api/users/removeherofromdefense',tokenParser, controller.users.removeHeroFromDefense);
router.post('/api/users/getequiplist', tokenParser, controller.users.getEquipList);
router.post('/api/users/getitemlist', tokenParser, controller.users.getItemList);
router.post('/api/users/getguildlist', controller.users.getGuildList);
router.post('/api/users/deleteequip', tokenParser, controller.users.deleteEquip);
router.post('/api/users/deleteitem', tokenParser, controller.users.deleteItem);
router.post('/api/users/setitemcount', tokenParser, controller.users.setItemCount);

View File

@@ -6,7 +6,7 @@ import { PvpDefenseModel } from '@db/PvpDefense';
import { Service } from 'egg';
import Counter from '@db/Counter';
import { STATUS, HERO_SYSTEM_TYPE } from '@consts';
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, REDIS_KEY } from '@consts';
import { ITID, COUNTER } from '@consts';
import { ItemModel } from '@db/Item';
import { gameData, getExpByLv } from '@pubUtils/data';
@@ -21,9 +21,11 @@ import { CreateHeroes, deletRole } from '@pubUtils/roleUtil';
import { RScriptRecordModel } from '@db/RScriptRecord';
import { DicWar } from '@pubUtils/dictionary/DicWar';
import { SkinModel } from '@db/Skin';
import { SearchEquipParam, SearchHeroParam, SearchUserParam, SearchGiftCodeParam, SearchGiftCodeDetailParam } from '@domain/backEndField/search';
import { SearchEquipParam, SearchHeroParam, SearchUserParam, SearchGiftCodeParam, SearchGiftCodeDetailParam, SearchItemParam, SearchGuildParam } from '@domain/backEndField/search';
import { CreateGiftCode, UpdateGiftCode } from '@domain/backEndField/params';
import { isNumber } from 'util';
import { GuildModel } from '@db/Guild';
import { RedisClient } from 'redis';
// import { resResult } from '@pubUtils/util';
@@ -200,7 +202,7 @@ export default class GMUsers extends Service {
weapons.push({ id: eid, hid: ehid });
}
}
await addEquips(roleId, role.roleName, weapons);
await addEquips(roleId, role.roleName, weapons, ITEM_CHANGE_REASON.DEBUG);
} else {
flag = 1, msg = '未找到角色' + roleId;
}
@@ -241,7 +243,7 @@ export default class GMUsers extends Service {
for (let roleId of uids) {
let role = await RoleModel.findByRoleId(roleId);
if (role) {
await addBags(roleId, role.roleName, datas);
await addBags(roleId, role.roleName, datas, ITEM_CHANGE_REASON.DEBUG);
} else {
flag = 1, msg = '未找到角色' + roleId;
}
@@ -591,17 +593,10 @@ export default class GMUsers extends Service {
public async getEquipList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchEquipParam) {
const { ctx } = this;
const heroes = await EquipModel.findByCondition(page, pageSize, sortField, sortOrder, form);
const equips = await EquipModel.findByCondition(page, pageSize, sortField, sortOrder, form);
const total = await EquipModel.countByCondition( form )
let roleMap = new Map<string, CeAttrDataRole[]>();
for(let { roleId } of heroes) {
if(!roleMap.has(roleId)) {
let role = await RoleModel.findByRoleId(roleId, 'attr');
roleMap.set(roleId, role.attr);
}
}
let list = heroes.map(cur => {
let list = equips.map(cur => {
return {...cur, env: ctx.app.config.realEnv}
})
@@ -612,20 +607,37 @@ export default class GMUsers extends Service {
/**
* 根据类型等搜索道具
*/
public async getItemList(field: string, value: (string | number)) {
public async getItemList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchItemParam) {
const { ctx } = this;
let items = await ItemModel.findByField(field, value);
const items = await ItemModel.findByCondition(page, pageSize, sortField, sortOrder, form);
const total = await ItemModel.countByCondition( form )
if (items) {
let list = items.map(cur => {
return {...cur, env: ctx.app.config.realEnv}
})
return ctx.service.utils.resResult(STATUS.SUCCESS, { list: items });
} else {
console.error('role list not found');
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR);
}
return ctx.service.utils.resResult(STATUS.SUCCESS, { list, total })
}
public async getGuildList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchGuildParam) {
const { ctx } = this;
let redisClient: RedisClient = ctx.app.context.redisClient;
const guilds = await GuildModel.findByCondition(page, pageSize, sortField, sortOrder, form);
const total = await GuildModel.countByCondition( form )
let list = [];
for(let guild of guilds) {
let rank = await redisClient.zrevrankAsync(`${REDIS_KEY.GUILD_LV_RANK}:${guild.serverId}`, guild.code);
list.push({ ...guild, rank: rank == undefined? '未上榜': rank + 1, env: ctx.app.config.realEnv })
}
return ctx.service.utils.resResult(STATUS.SUCCESS, { list, total })
}
public async getGiftCodeList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchGiftCodeParam = {}) {
const { ctx } = this;

View File

@@ -11,6 +11,10 @@ export default (appInfo: EggAppInfo) => {
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: 'r-8vbl8okinxn1zhkwh2.redis.zhangbei.rds.aliyuncs.com', // 内网
pw: 'zyz_alpha_2021'
};
// the return config will combines to EggAppConfig
return {
...defaultConfig(appInfo),

View File

@@ -29,6 +29,10 @@ export default (appInfo: EggAppInfo) => {
url: 'mongodb://dbop:zyzGm2021@dds-8vb9964bb4cc7f241.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb9964bb4cc7f242.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?replicaSet=mgset-507933150', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: 'r-8vb4i2kgl91886fkxd.redis.zhangbei.rds.aliyuncs.com', // 内网
pw: 'zyz_2020'
};
config.security = {
csrf: {

View File

@@ -10,6 +10,10 @@ export default (appInfo: EggAppInfo) => {
url: 'mongodb://dbop:zyzDev2021@dds-8vb5c74ba4263da41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5c74ba4263da43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?readPreference=secondary&replicaSet=mgset-506991391', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: 'r-8vb418l8kkju9sis8k.redis.zhangbei.rds.aliyuncs.com', // 内网
pw: 'zyz_dev_2021'
};
// the return config will combines to EggAppConfig
return {

View File

@@ -10,6 +10,10 @@ export default (appInfo: EggAppInfo) => {
url: 'mongodb://root:Bantus123@dds-8vb74337eab84d641.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb74337eab84d642.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-504694158', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: 'r-8vbekkbb3z8ru2ckuj.redis.zhangbei.rds.aliyuncs.com', // 内网
pw: 'zyz_isbn_2021'
};
// the return config will combines to EggAppConfig
return {

View File

@@ -18,6 +18,10 @@ export default (appInfo: EggAppInfo) => {
url: 'mongodb://127.0.0.1:27017/zyzgm', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: '127.0.0.1', // 内网
pw: ''
};
config.proxy = {};
// the return config will combines to EggAppConfig

View File

@@ -0,0 +1,28 @@
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
import defaultConfig from './config.default';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial<EggAppConfig>;
config.mongoose = {
url: 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.redis = {
url: 'r-8vb4i2kgl91886fkxd.redis.zhangbei.rds.aliyuncs.com', // 内网
pw: 'zyz_2020'
};
config.xtransit = {
server: 'ws://172.26.117.35:9092',
appId: 3,
appSecret: 'a48ad5ca44e2d02cbd7f4c0326fa3101',
error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ],
};
// the return config will combines to EggAppConfig
return {
...defaultConfig(appInfo),
...config
};
};