diff --git a/game-server/app/servers/activity/handler/growthFundHandler.ts b/game-server/app/servers/activity/handler/growthFundHandler.ts index 798cd3267..3cade670e 100644 --- a/game-server/app/servers/activity/handler/growthFundHandler.ts +++ b/game-server/app/servers/activity/handler/growthFundHandler.ts @@ -1,9 +1,8 @@ import { Application, BackendSession } from 'pinus'; import { resResult } from '../../../pubUtils/util'; import { STATUS } from '../../../consts'; -import { getPlayerGrowthFundData, growthFundActivity } from '../../../services/growthFundService'; +import { getPlayerGrowthFundData } from '../../../services/growthFundService'; import { GrowthFundItem } from '../../../domain/activityField/growthFundField'; -import { addItems, createHeroes } from '../../../services/rewardService'; import { ActivityGrowthFundModel } from '../../../db/ActivityGrowthFund'; import { addReward, stringToRewardParam } from '../../../services/giftPackageService'; import { RewardParam } from '../../../domain/activityField/rewardField'; diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index fdf83d9f9..33d607e7b 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -14,7 +14,7 @@ import { uniq, indexOf, findIndex } from 'underscore'; import { HeroModel, HeroType } from '../db/Hero'; import { Figure } from '../domain/dbGeneral'; import { Rank } from './rankService'; -import { checkActivityTask, pushTaskUpdate } from './taskService'; +import { checkActivityTask, pushActivityUpdate, pushTaskUpdate } from './taskService'; import { CreateHeroParam } from '../domain/roleField/hero'; export async function handleCost(roleId: string, sid: string, goods: Array) { @@ -333,7 +333,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string let resultHeroes: HeroType[] = [], resultItems: ItemInter[] = []; if (newHeroInfo.length > 0) { - let { heroes, role, figureInfo, calHeroResults, calAllHeroResults, taskPushMessage } = await pubCreateHeroes(roleId, roleName, serverId, newHeroInfo, funcs); + let { heroes, role, figureInfo, calHeroResults, calAllHeroResults, taskPushMessage, activityTaskPushMessage } = await pubCreateHeroes(roleId, roleName, serverId, newHeroInfo, funcs); let r = new Rank(REDIS_KEY.HERO_NUM_RANK, { serverId }); await r.setRankWithRoleInfo(roleId, role.heroNum, role.heroNumUpdatedAt, role); @@ -348,6 +348,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string } pushTaskUpdate(roleId, sid, null, taskPushMessage); + pushActivityUpdate(roleId, sid, null, activityTaskPushMessage); resultHeroes = heroes; } diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 2f44d0f07..a0659d905 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -39,464 +39,464 @@ import { createHero as pubCreateHero } from '@pubUtils/itemUtils'; */ export default class GMUsers extends Service { - /** - * 根据类型等搜索玩家 - */ - public async getuserlist(field: string = 'all', value: string = '') { - const {ctx} = this; + /** + * 根据类型等搜索玩家 + */ + public async getuserlist(field: string = 'all', value: string = '') { + const { ctx } = this; - let arr = new Array(), flag = 0; - if(value == '') field = 'all'; - let valueArr = value.split(','); - for(let i of valueArr) { - 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 ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } - - let users = await UserModel.findUserByField(field, valueArr); - - if(users) { - let list = new Array(); - for(let user of users) { - let role = await RoleModel.findAllByUid(user.uid); - let sms = await smsModel.findByTel(user.tel); - - list.push({...user, role, isFixed: sms?sms.isFixed: false, code: sms?sms.code:""}); - } - - return ctx.service.utils.resResult(STATUS.SUCCESS, {list}) - } else { - console.error('userlist not found'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } - } - - 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(COUNTER.ROLE) || -1; - const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId }); - if (role) { - return ctx.service.utils.resResult(STATUS.SUCCESS); - } else { - console.error('create role error'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } - } - - public async addAuth(uid:number, auth: number) { - console.log('enter Auth addAuth'); - const ctx = this.ctx; - - const user = await UserModel.addAuth(uid, auth); - if (user) { - return ctx.service.utils.resResult(STATUS.SUCCESS); - } else { - console.error('add auth error'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } - } - - public checkTelNo(telNo: string) { - if (!isString(telNo)) { - return { status: 1, data: '参数类型错误' }; - } - if (telNo.length !== 11) { - return { status: 1, data: '手机号长度错误' }; - } - return { status: 0, data: '手机号合法' }; - } - - public async fixSms(tel: string) { - console.log('enter Auth fix sms'); - const ctx = this.ctx; - const checkTel = this.checkTelNo(tel); - if(checkTel.status == 1) { - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, checkTel.data); - } - const sms = await smsModel.fixSms(tel); - if (sms) { - return ctx.service.utils.resResult(STATUS.SUCCESS); - } else { - console.error('fix sms error'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } - } - - public async deleteRole(roleId: string) { - console.log('enter Auth deleteRole'); - const ctx = this.ctx; - await ActionPointModel.deleteAccount(roleId); - await BattleDropModel.deleteAccount(roleId); - await BattleRecordModel.deleteAccount(roleId); - await BattleSweepRecordModel.deleteAccount(roleId); - await DailyRecordModel.deleteAccount(roleId); - await EquipModel.deleteAccount(roleId); - await EventRecordModel.deleteAccount(roleId); - await ExpeditionPointModel.deleteAccount(roleId); - await ExpeditionRecordModel.deleteAccount(roleId); - await ExpeditionWarRecordModel.deleteAccount(roleId); - await HangUpSpdUpRecModel.deleteAccount(roleId); - await HangUpRecordModel.deleteAccount(roleId); - await HeroModel.deleteAccount(roleId); - await RoleModel.deleteAccount(roleId); - await SearchRecordModel.deleteAccount(roleId); - await TowerTaskRecModel.deleteAccount(roleId); - await TowerRecordModel.deleteAccount(roleId); - await PvpDefenseModel.deleteAccount(roleId); - await ItemModel.deleteAccount(roleId); - await SchoolModel.deleteAccount(roleId); - await FriendShipModel.deleteAccount(roleId); - await FriendApplyModel.deleteAccount(roleId); - await FriendRelationModel.deleteAccount(roleId); - - return ctx.service.utils.resResult(STATUS.SUCCESS); - } - - - - /** - * 根据类型等搜索玩家 - */ - public async getrolelist(field: string = 'all', value: string = '') { - const {ctx} = this; - - let arr = new Array(), flag = 0; - let valueArr = value.split(','); - if(value == '') field = 'all'; - for(let i of valueArr) { - 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 ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } - - let roles = await RoleModel.findRoleByField(field, valueArr); - - 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 defense = await PvpDefenseModel.findByRoleId(role.roleId); - - let {roleId, roleName, serverId, lv, vLv, gold, coin} = role; - let {uid, tel} = role.userInfo; - result.push({ - key: roleId, roleId, roleName, serverId, lv, vLv, uid, tel, heroCount, equipCount, itemCount, gold, coin, - hasDefense: defense?'是':'否', defCe: defense?defense.defCe:0 - }); - } - return ctx.service.utils.resResult(STATUS.SUCCESS, { list: result }); - } else { - console.error('role list not found'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } - } - - public async createHero(uids: Array, _hid: string, _hlv: string) { - const {ctx} = this; - console.log('gm createHero', uids, _hid, _hlv); - let hlv = parseInt(_hlv); - if( isNaN(hlv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - let hids = (_hid as string).split('&').map(cur => parseInt(cur)); - for(let hid of hids) { - if(isNaN(hid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } - - let heroInfos = new Array(); - for(let roleId of uids) { - let role = await RoleModel.findByRoleId(roleId); - if(role) { - for(let hid of hids) { - let hero = await HeroModel.findByHidAndRole(hid, roleId); - if(hero) continue; - let dicHero = gameData.hero.get(hid); - if(!dicHero) continue; - const heroInfo = { - roleId, roleName: role.roleName, hid, serverId: role.serverId, - lv: hlv, exp: getHeroExpByLv(hlv - 1)||0 - } - heroInfos.push(heroInfo); - } - } else { - return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, '未找到角色' + roleId) - } - } - - try { - for(let heroInfo of heroInfos) { - await pubCreateHero(heroInfo.roleId, heroInfo.roleName, heroInfo.serverId, heroInfo); - } - return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); - } catch(e) { - console.error(e.stack) - return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, e.stack); - } - } - - public async createEquip(uids: Array, _eid: string, _ecount: string, _ehid: string) { - const {ctx} = this; - console.log('gm createEquip', uids, _eid, _ecount, _ehid); - let eids = (_eid as string).split('&').map(cur => parseInt(cur)); - let ecount = parseInt(_ecount); - let ehid = parseInt(_ehid); - if( isNaN(ecount) || isNaN(ehid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let eid of eids) { - if(isNaN(eid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } - let flag = 0, msg = '创建失败'; - for(let roleId of uids) { - let role = await RoleModel.findByRoleId(roleId); - if(role) { - for(let eid of eids) { - for(let i = 0; i , _itemid: string, _itemcount: string) { - const {ctx} = this; - console.log('gm createItem', uids, _itemid, _itemcount); - let itemids = (_itemid as string).split('&').map(cur => parseInt(cur)); - for(let itemid of itemids) { - if(isNaN(itemid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } - let itemcount = parseInt(_itemcount); - if( isNaN(itemcount)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - - let flag = 0, msg = '创建失败'; - for(let itemid of itemids) { - let dicGoods = gameData.goods.get(itemid); - let itidObj = ITID.get(dicGoods.itid); - - if(!dicGoods) { - flag = 1, msg = "未找到道具" + itemid; - } else if(!itidObj){ - flag = 1, msg = "未找到道具" + itemid; - } else { - for(let roleId of uids) { - let role = await RoleModel.findByRoleId(roleId); - if(role) { - await ctx.service.utils.addBags(roleId, role.roleName, {id: itemid, itemName: dicGoods.name, count: itemcount, type: itidObj.type, hid: 0}); + let arr = new Array(), flag = 0; + if (value == '') field = 'all'; + let valueArr = value.split(','); + for (let i of valueArr) { + if (field == 'uid') { + let d = parseInt(i); + if (isNaN(d)) { + flag = 1; break; } else { - flag = 1, msg = '未找到角色' + roleId; + arr.push(d); } + } else if (field == 'username' || field == 'tel') { + arr.push(i); + } else if (field == 'all') { + break; + } else { + flag = 1; break; } } + + if (flag) { + return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + } + + let users = await UserModel.findUserByField(field, valueArr); + + if (users) { + let list = new Array(); + for (let user of users) { + let role = await RoleModel.findAllByUid(user.uid); + let sms = await smsModel.findByTel(user.tel); + + list.push({ ...user, role, isFixed: sms ? sms.isFixed : false, code: sms ? sms.code : "" }); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS, { list }) + } else { + console.error('userlist not found'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } } - if (flag) { - return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, msg); - } else { + 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(COUNTER.ROLE) || -1; + const role = await RoleModel.createRole(uid, serverId, { roleId, code, roleName, seqId }); + if (role) { + return ctx.service.utils.resResult(STATUS.SUCCESS); + } else { + console.error('create role error'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } + } + + public async addAuth(uid: number, auth: number) { + console.log('enter Auth addAuth'); + const ctx = this.ctx; + + const user = await UserModel.addAuth(uid, auth); + if (user) { + return ctx.service.utils.resResult(STATUS.SUCCESS); + } else { + console.error('add auth error'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } + } + + public checkTelNo(telNo: string) { + if (!isString(telNo)) { + return { status: 1, data: '参数类型错误' }; + } + if (telNo.length !== 11) { + return { status: 1, data: '手机号长度错误' }; + } + return { status: 0, data: '手机号合法' }; + } + + public async fixSms(tel: string) { + console.log('enter Auth fix sms'); + const ctx = this.ctx; + const checkTel = this.checkTelNo(tel); + if (checkTel.status == 1) { + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR, checkTel.data); + } + const sms = await smsModel.fixSms(tel); + if (sms) { + return ctx.service.utils.resResult(STATUS.SUCCESS); + } else { + console.error('fix sms error'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } + } + + public async deleteRole(roleId: string) { + console.log('enter Auth deleteRole'); + const ctx = this.ctx; + await ActionPointModel.deleteAccount(roleId); + await BattleDropModel.deleteAccount(roleId); + await BattleRecordModel.deleteAccount(roleId); + await BattleSweepRecordModel.deleteAccount(roleId); + await DailyRecordModel.deleteAccount(roleId); + await EquipModel.deleteAccount(roleId); + await EventRecordModel.deleteAccount(roleId); + await ExpeditionPointModel.deleteAccount(roleId); + await ExpeditionRecordModel.deleteAccount(roleId); + await ExpeditionWarRecordModel.deleteAccount(roleId); + await HangUpSpdUpRecModel.deleteAccount(roleId); + await HangUpRecordModel.deleteAccount(roleId); + await HeroModel.deleteAccount(roleId); + await RoleModel.deleteAccount(roleId); + await SearchRecordModel.deleteAccount(roleId); + await TowerTaskRecModel.deleteAccount(roleId); + await TowerRecordModel.deleteAccount(roleId); + await PvpDefenseModel.deleteAccount(roleId); + await ItemModel.deleteAccount(roleId); + await SchoolModel.deleteAccount(roleId); + await FriendShipModel.deleteAccount(roleId); + await FriendApplyModel.deleteAccount(roleId); + await FriendRelationModel.deleteAccount(roleId); + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } + + + + /** + * 根据类型等搜索玩家 + */ + public async getrolelist(field: string = 'all', value: string = '') { + const { ctx } = this; + + let arr = new Array(), flag = 0; + let valueArr = value.split(','); + if (value == '') field = 'all'; + for (let i of valueArr) { + 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 ctx.service.utils.resResult(STATUS.WRONG_PARMS); + } + + let roles = await RoleModel.findRoleByField(field, valueArr); + + 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 defense = await PvpDefenseModel.findByRoleId(role.roleId); + + let { roleId, roleName, serverId, lv, vLv, gold, coin } = role; + let { uid, tel } = role.userInfo; + result.push({ + key: roleId, roleId, roleName, serverId, lv, vLv, uid, tel, heroCount, equipCount, itemCount, gold, coin, + hasDefense: defense ? '是' : '否', defCe: defense ? defense.defCe : 0 + }); + } + return ctx.service.utils.resResult(STATUS.SUCCESS, { list: result }); + } else { + console.error('role list not found'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } + } + + public async createHero(uids: Array, _hid: string, _hlv: string) { + const { ctx } = this; + console.log('gm createHero', uids, _hid, _hlv); + let hlv = parseInt(_hlv); + if (isNaN(hlv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + let hids = (_hid as string).split('&').map(cur => parseInt(cur)); + for (let hid of hids) { + if (isNaN(hid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + } + + let heroInfos = new Array(); + for (let roleId of uids) { + let role = await RoleModel.findByRoleId(roleId); + if (role) { + for (let hid of hids) { + let hero = await HeroModel.findByHidAndRole(hid, roleId); + if (hero) continue; + let dicHero = gameData.hero.get(hid); + if (!dicHero) continue; + const heroInfo = { + roleId, roleName: role.roleName, hid, serverId: role.serverId, + lv: hlv, exp: getHeroExpByLv(hlv - 1) || 0 + } + heroInfos.push(heroInfo); + } + } else { + return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, '未找到角色' + roleId) + } + } + + try { + for (let heroInfo of heroInfos) { + await pubCreateHero(heroInfo.roleId, heroInfo.roleName, heroInfo.serverId, heroInfo); + } + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); + } catch (e) { + console.error(e.stack) + return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, e.stack); + } + } + + public async createEquip(uids: Array, _eid: string, _ecount: string, _ehid: string) { + const { ctx } = this; + console.log('gm createEquip', uids, _eid, _ecount, _ehid); + let eids = (_eid as string).split('&').map(cur => parseInt(cur)); + let ecount = parseInt(_ecount); + let ehid = parseInt(_ehid); + if (isNaN(ecount) || isNaN(ehid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let eid of eids) { + if (isNaN(eid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + } + let flag = 0, msg = '创建失败'; + for (let roleId of uids) { + let role = await RoleModel.findByRoleId(roleId); + if (role) { + for (let eid of eids) { + for (let i = 0; i < ecount; i++) { + + let dicEquip = gameData.goods.get(eid); + if (!dicEquip) { + flag = 1, msg = "未找到装备" + eid; + break; + } + await ctx.service.utils.addEquips(roleId, role.roleName, { id: eid, ...dicEquip, hid: ehid }); + } + } + } else { + flag = 1, msg = '未找到角色' + roleId; + } + } + + if (flag) { + return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, msg); + } else { + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); + } + } + + public async createItem(uids: Array, _itemid: string, _itemcount: string) { + const { ctx } = this; + console.log('gm createItem', uids, _itemid, _itemcount); + let itemids = (_itemid as string).split('&').map(cur => parseInt(cur)); + for (let itemid of itemids) { + if (isNaN(itemid)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + } + let itemcount = parseInt(_itemcount); + if (isNaN(itemcount)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + + let flag = 0, msg = '创建失败'; + for (let itemid of itemids) { + let dicGoods = gameData.goods.get(itemid); + let itidObj = ITID.get(dicGoods.itid); + + if (!dicGoods) { + flag = 1, msg = "未找到道具" + itemid; + } else if (!itidObj) { + flag = 1, msg = "未找到道具" + itemid; + } else { + for (let roleId of uids) { + let role = await RoleModel.findByRoleId(roleId); + if (role) { + await ctx.service.utils.addBags(roleId, role.roleName, { id: itemid, itemName: dicGoods.name, count: itemcount, type: itidObj.type, hid: 0 }); + } else { + flag = 1, msg = '未找到角色' + roleId; + } + } + } + } + + if (flag) { + return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, msg); + } else { + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); + } + } + + public async addGold(uids: Array, _count: string) { + const { ctx } = this; + console.log('gm addGold', uids, _count); + let count = parseInt(_count); + if (isNaN(count)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let roleId of uids) { + await RoleModel.addGoldFree(roleId, count); + } + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); } - } - public async addGold(uids: Array, _count: string) { - const {ctx} = this; - console.log('gm addGold', uids, _count); - let count = parseInt(_count); - if(isNaN(count)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let roleId of uids) { - await RoleModel.addGoldFree(roleId, count); + public async addCoin(uids: Array, _count: string) { + const { ctx } = this; + console.log('gm addCoin', uids, _count); + let count = parseInt(_count); + if (isNaN(count)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let roleId of uids) { + await RoleModel.addCoin(roleId, count); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); + } + public async addSkins(uids: Array, _id: string) { + const { ctx } = this; + console.log('gm addSkin', uids, _id); + let id = parseInt(_id); + if (isNaN(id)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let roleId of uids) { + await ctx.service.utils.addSkins(roleId, id); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); } - return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); - } + public async levelUp(uids: Array, _lv: string) { + const { ctx } = this; + console.log('gm levelUp', uids, _lv); + let lv = parseInt(_lv); + if (isNaN(lv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let roleId of uids) { + let exp = getExpByLv(lv - 1); + await RoleModel.levelup(roleId, lv, exp ? exp.sum : 0); + } - public async addCoin(uids: Array, _count: string) { - const {ctx} = this; - console.log('gm addCoin', uids, _count); - let count = parseInt(_count); - if(isNaN(count)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let roleId of uids) { - await RoleModel.addCoin(roleId, count); + return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); } - return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); - } - public async addSkins(uids: Array, _id: string) { - const {ctx} = this; - console.log('gm addSkin', uids, _id); - let id = parseInt(_id); - if(isNaN(id)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let roleId of uids) { - await ctx.service.utils.addSkins(roleId, id); + public async getPvpDefense(roleId: string) { + const { ctx } = this; + let result = await PvpDefenseModel.findByRoleId(roleId); + return ctx.service.utils.resResult(STATUS.SUCCESS, { + hasDefense: !!result, defense: result + }) } - return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); - } + // public async getHeroList(roleId: string) { + // const {ctx} = this; + // let herolist = await HeroModel.findByRole(roleId); + // let defense = await PvpDefenseModel.findByRoleId(roleId); - public async levelUp(uids: Array, _lv: string) { - const {ctx} = this; - console.log('gm levelUp', uids, _lv); - let lv = parseInt(_lv); - if(isNaN(lv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let roleId of uids) { - let exp = getExpByLv(lv - 1); - await RoleModel.levelup(roleId, lv, exp?exp.sum:0); + // let result = Array(); + // for(let hero of herolist) { + // if(defense) { + // let {heroes = []} = defense; + // let curHero = heroes.find(cur => cur.actorId == hero.hid); + // if(!curHero) { + // result.push(hero); + // } + // } else{ + // result.push(hero); + // } + // } + + // return ctx.service.utils.resResult(STATUS.SUCCESS, { + // heroes: result + // }) + // } + + public async saveHeroToDefense(roleId: string, _roleName: string, hid: number) { + const { ctx } = this; + let hero = await HeroModel.findByHidAndRole(hid, roleId); + let role = await RoleModel.findByRoleId(roleId); + if (!hero || !role) { + return ctx.service.utils.resResult(STATUS.GM_HERO_NOT_FOUND); + } + let { lv, ce, attr: heroAttrs } = hero; + let { attr: roleAttrs } = role; + + + let dicHero = gameData.hero.get(hid); + + let attribute = new Attribute(); + attribute.setByDbData(roleAttrs, heroAttrs); + + let heroInfo = { + actorId: dicHero.heroId, + actorName: dicHero.name, + attribute, lv, + ce + }; + + let defense = await PvpDefenseModel.findByRoleId(roleId); + if (!defense) { + // defense = await PvpDefenseModel.createPvpDefense({roleId, roleName, heroes: [], defCe:ce}); + } else { + defense = await PvpDefenseModel.addHeroToDefense(roleId, heroInfo, ce); + } + return ctx.service.utils.resResult(STATUS.SUCCESS, { + defense + }); } - return ctx.service.utils.resResult(STATUS.SUCCESS, { uids }); - } - public async getPvpDefense(roleId: string) { - const {ctx} = this; - let result = await PvpDefenseModel.findByRoleId(roleId); - return ctx.service.utils.resResult(STATUS.SUCCESS, { - hasDefense: !!result, defense: result - }) - } + public async removeHeroFromDefense(roleId: string, hid: number) { + const { ctx } = this; -// public async getHeroList(roleId: string) { -// const {ctx} = this; -// let herolist = await HeroModel.findByRole(roleId); -// let defense = await PvpDefenseModel.findByRoleId(roleId); - -// let result = Array(); -// for(let hero of herolist) { -// if(defense) { -// let {heroes = []} = defense; -// let curHero = heroes.find(cur => cur.actorId == hero.hid); -// if(!curHero) { -// result.push(hero); -// } -// } else{ -// result.push(hero); -// } -// } - -// return ctx.service.utils.resResult(STATUS.SUCCESS, { -// heroes: result -// }) -// } - - public async saveHeroToDefense(roleId: string, _roleName: string, hid: number) { - const {ctx} = this; - let hero = await HeroModel.findByHidAndRole(hid, roleId); - let role = await RoleModel.findByRoleId(roleId); - if(!hero || !role) { - return ctx.service.utils.resResult(STATUS.GM_HERO_NOT_FOUND); - } - let { lv, ce, attr: heroAttrs } = hero; - let { attr: roleAttrs } = role; - - - let dicHero = gameData.hero.get(hid); - - let attribute = new Attribute(); - attribute.setByDbData(roleAttrs, heroAttrs); - - let heroInfo = { - actorId: dicHero.heroId, - actorName: dicHero.name, - attribute, lv, - ce - }; - - let defense = await PvpDefenseModel.findByRoleId(roleId); - if(!defense) { - // defense = await PvpDefenseModel.createPvpDefense({roleId, roleName, heroes: [], defCe:ce}); - } else { - defense = await PvpDefenseModel.addHeroToDefense(roleId, heroInfo, ce); - } - return ctx.service.utils.resResult(STATUS.SUCCESS, { - defense - }); - } - - - public async removeHeroFromDefense(roleId: string, hid: number) { - const {ctx} = this; - - let defense = await PvpDefenseModel.findByRoleId(roleId); - if(!defense) { + let defense = await PvpDefenseModel.findByRoleId(roleId); + if (!defense) { return ctx.service.utils.resResult(STATUS.GM_PVP_DEFENSE_NOT_FOUND); - } - let {heroes} = defense; + } + let { heroes } = defense; let curHero = heroes.find(cur => cur.actorId == hid); - if(!curHero) { + if (!curHero) { return ctx.service.utils.resResult(STATUS.GM_PVP_DEFENSE_HERO_NOT_FOUND); } defense = await PvpDefenseModel.removeHeroFromDefense(roleId, hid, curHero.ce); - return ctx.service.utils.resResult(STATUS.SUCCESS, { - defense - }); - } - - /** - * 根据类型等搜索玩家 - */ - public async getHeroList(field: string, value: (string|number)) { - const {ctx} = this; - - let heroes = await HeroModel.findByField(field, value); - - if(heroes) { - - return ctx.service.utils.resResult(STATUS.SUCCESS, { list: heroes }); - } else { - console.error('role list not found'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + return ctx.service.utils.resResult(STATUS.SUCCESS, { + defense + }); } + + /** + * 根据类型等搜索玩家 + */ + public async getHeroList(field: string, value: (string | number)) { + const { ctx } = this; + + let heroes = await HeroModel.findByField(field, value); + + if (heroes) { + + return ctx.service.utils.resResult(STATUS.SUCCESS, { list: heroes }); + } else { + console.error('role list not found'); + return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); + } } @@ -532,7 +532,7 @@ export default class GMUsers extends Service { let seqId = parseInt(seqIdStr); console.log(seqId); let equip = await EquipModel.findbySeqId(seqId); - if(equip.hid > 0) { + if (equip.hid > 0) { let hero = await HeroModel.findByHidAndRole(equip.hid, roleId); let index = hero.ePlace.findIndex(cur => cur.id == equip.ePlaceId); if (index < 0) continue; @@ -557,14 +557,14 @@ export default class GMUsers extends Service { let id = parseInt(idStr); let cur = map.get(roleId); - if(!cur) { + if (!cur) { cur = new Array(); map.set(roleId, cur); } cur.push(id); } - for(let [roleId, ids] of map) { + for (let [roleId, ids] of map) { await ItemModel.deletebyRoleAndIds(roleId, ids); } @@ -582,45 +582,45 @@ export default class GMUsers extends Service { let id = parseInt(idStr); let cur = map.get(roleId); - if(!cur) { + if (!cur) { cur = new Array(); map.set(roleId, cur); } cur.push(id); } - for(let [roleId, ids] of map) { + for (let [roleId, ids] of map) { await ItemModel.updateCountByRoleAndIds(roleId, ids, count); } return ctx.service.utils.resResult(STATUS.SUCCESS); } - public async setHeroLv(roleIdAndHids: string[], _hlv: string) { + public async setHeroLv(roleIdAndHids: string[], _hlv: string) { - try { - console.log('gm setHeroLv', roleIdAndHids, _hlv); - const ctx = this.ctx; - let hlv = parseInt(_hlv); - if( isNaN(hlv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + try { + console.log('gm setHeroLv', roleIdAndHids, _hlv); + const ctx = this.ctx; + let hlv = parseInt(_hlv); + if (isNaN(hlv)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - for(let roleIdAndHid of roleIdAndHids) { - let [roleId, hidStr] = roleIdAndHid.split('|'); - if(isNaN(parseInt(hidStr))) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); + for (let roleIdAndHid of roleIdAndHids) { + let [roleId, hidStr] = roleIdAndHid.split('|'); + if (isNaN(parseInt(hidStr))) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - let hid = parseInt(hidStr); + let hid = parseInt(hidStr); - let hero = await HeroModel.findByHidAndRole(hid, roleId); - console.log(hid, roleId, !!hero); - if(!hero) continue; - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, roleId, hero, {lv: hlv}); + let hero = await HeroModel.findByHidAndRole(hid, roleId); + console.log(hid, roleId, !!hero); + if (!hero) continue; + await calPlayerCeAndSave(HERO_SYSTEM_TYPE.LVUP, roleId, hero, { lv: hlv }); + } + + return ctx.service.utils.resResult(STATUS.SUCCESS); + } catch (e) { + console.error(e.stack) } - - return ctx.service.utils.resResult(STATUS.SUCCESS); - } catch(e) { - console.error(e.stack) } - } /** * 根据类型等搜索装备 diff --git a/shared/pubUtils/itemUtils.ts b/shared/pubUtils/itemUtils.ts index 1aaf8d52c..4a5765e62 100644 --- a/shared/pubUtils/itemUtils.ts +++ b/shared/pubUtils/itemUtils.ts @@ -231,8 +231,8 @@ function unlockSingleFigure(dbFigures: Figure[], id: number, unlockDirect = fals } export async function createHero(roleId: string, roleName: string, serverId: number, heroInfo: CreateHeroParam, funcs?: number[]) { - let { role, figureInfo, heroes, calHeroResults, calAllHeroResults, taskPushMessage } = await createHeroes(roleId, roleName, serverId, [heroInfo], funcs) - return { hero: heroes[0], role, figureInfo, calHeroResult: calHeroResults[0], calAllHeroResult: calAllHeroResults[0], taskPushMessage } + let { role, figureInfo, heroes, calHeroResults, calAllHeroResults, taskPushMessage, activityTaskPushMessage } = await createHeroes(roleId, roleName, serverId, [heroInfo], funcs) + return { hero: heroes[0], role, figureInfo, calHeroResult: calHeroResults[0], calAllHeroResult: calAllHeroResults[0], taskPushMessage, activityTaskPushMessage } } export async function createHeroes(roleId: string, roleName: string, serverId: number, heroInfos: CreateHeroParam[], funcs?: number[]) { @@ -268,9 +268,10 @@ export async function createHeroes(roleId: string, roleName: string, serverId: n let m4 = await checkTaskWithHeroes(roleId, TASK_TYPE.HERO_LV, heroes, funcs); let taskPushMessage = m1.concat(m2, m3, m4); //成长任务 - await accomplishTask(serverId, roleId, TASK_TYPE.HERO_NUM, heroNum) - await accomplishTask(serverId, roleId, TASK_TYPE.HERO_QUALITY, heroNum, { heroes }) - return { role, figureInfo, heroes, calHeroResults, calAllHeroResults, taskPushMessage } + let mm1 = await accomplishTask(serverId, roleId, TASK_TYPE.HERO_NUM, heroNum) + let mm2 = await accomplishTask(serverId, roleId, TASK_TYPE.HERO_QUALITY, heroNum, { heroes }) + let activityTaskPushMessage = mm1.concat(mm2); + return { role, figureInfo, heroes, calHeroResults, calAllHeroResults, taskPushMessage, activityTaskPushMessage } } export function transPiece(hid: number) {