支付回调
This commit is contained in:
@@ -125,6 +125,7 @@ app.configure(ALL_ENVS, 'systimer', function () {
|
||||
app.afterStart(async () => {
|
||||
await redisService.initAllRank();
|
||||
await timeTaskService.init();
|
||||
redisService.redisSubScribe();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -163,6 +164,8 @@ function initMongodb(app: _pinus.Application) {
|
||||
function initRedis(app: _pinus.Application) {
|
||||
const redisClient = connectRedis(app.get('database').redis, app.get('database').redispw);
|
||||
app.set('redis', redisClient);
|
||||
const redisClientPub = connectRedis(app.get('database').redis, app.get('database').redispw);
|
||||
app.set('redisPub', redisClientPub); // 发布订阅机
|
||||
redLockService.initRedlock(redisClient);
|
||||
redlockCacheService.init();
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ export class GachaHandler {
|
||||
}
|
||||
// 给东西
|
||||
// console.log('****', heroInfo)
|
||||
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
let { heroes, resultHeroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
await addItems(roleId, roleName, sid, items);
|
||||
// 更新数据
|
||||
userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, {
|
||||
@@ -102,7 +102,7 @@ export class GachaHandler {
|
||||
await checkTask(roleId, sid, TASK_TYPE.GASHA, count, true, {});
|
||||
//活动统计
|
||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GASHA, count)
|
||||
for (let hero of heroes) {
|
||||
for (let hero of resultHeroes) {
|
||||
activityData.push({ hid: hero.hid, quality: hero.quality });
|
||||
}
|
||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GACHA_QUALITY_COUNT, count, { heroes: activityData })
|
||||
@@ -115,7 +115,9 @@ export class GachaHandler {
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
gachaId, activityId,
|
||||
freeCount, refFreeTime: resultRefFreeTime, count: userGacha.count, point: userGacha.point, floor, hope,
|
||||
heroes, result: resultList
|
||||
heroes: resultHeroes,
|
||||
addHeros: heroes,
|
||||
result: resultList
|
||||
});
|
||||
}
|
||||
|
||||
@@ -203,9 +205,9 @@ export class GachaHandler {
|
||||
for (let i = 0; i < count; i++) {
|
||||
heroInfo.push({ hid: hero, count: 1 })
|
||||
}
|
||||
let { heroes, goods } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
let { heroes, resultHeroes, goods } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
let resultList: GachaResult[] = [];
|
||||
for (let h of heroes) {
|
||||
for (let h of resultHeroes) {
|
||||
let result = new GachaResult(contentId);
|
||||
result.setHero(h.hid);
|
||||
resultList.push(result);
|
||||
@@ -232,7 +234,8 @@ export class GachaHandler {
|
||||
point: userGacha.point,
|
||||
turntable: userGacha.turntable,
|
||||
result: resultList,
|
||||
heroes
|
||||
addHeros: heroes,
|
||||
heroes: resultHeroes
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ export class NewHeroGachaHandler {
|
||||
await ActivityNewHeroGachaModel.addRecord(serverId, activityId, roleId, hid, floorCount, JSON.stringify(resultList), hasGetFloor);
|
||||
|
||||
// 给东西
|
||||
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
let { heroes, resultHeroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
|
||||
await addItems(roleId, roleName, sid, items);
|
||||
//固定奖励
|
||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.commonReward);
|
||||
@@ -103,7 +103,7 @@ export class NewHeroGachaHandler {
|
||||
let commonResult = await addReward(roleId, roleName, sid, serverId, newRewardParamArr)
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
hid, activityId, count, randomReward: { heroes, result: resultList }, commonReward: commonResult
|
||||
hid, activityId, count, randomReward: { heroes: resultHeroes, result: resultList }, commonReward: commonResult
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,10 +7,8 @@ import _ = require('underscore');
|
||||
import { applyOrderWX, checkOrderWX } from '../../../services/pay/weixinPay';
|
||||
import { applyOrderALI, checkOrderALI } from '../../../services/pay/aliPay';
|
||||
import { applyOrder37 } from '../../../services/pay/37Pay';
|
||||
import { makeOrder } from '../../../services/orderService';
|
||||
import { makeOrder, settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService';
|
||||
import { addRechargeMoney } from '../../../services/activity/rechargeMoneyService';
|
||||
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
||||
import { ServerlistModel } from '../../../db/Serverlist';
|
||||
import { addVipRechargeMoney } from '../../../services/activity/vipRechargeMoneyService';
|
||||
import { checkActivityTask } from '../../../services/taskService';
|
||||
import { getActivityById } from '../../../services/activity/activityService';
|
||||
@@ -91,6 +89,7 @@ export class orderHandler {
|
||||
break;
|
||||
}
|
||||
|
||||
case PAY_TYPE.TEST:
|
||||
case PAY_TYPE.APPLE:
|
||||
{
|
||||
break;
|
||||
@@ -123,9 +122,6 @@ export class orderHandler {
|
||||
if (!orderInfo) {
|
||||
return resResult(STATUS.NO_ORDER);
|
||||
}
|
||||
if (orderInfo.state == ORDER_STATE.RESULT_SUCCESS) {
|
||||
return resResult(STATUS.DUPLICATE_ORDER);
|
||||
}
|
||||
|
||||
//商品价格信息
|
||||
let productInfo = dicRMB.get(orderInfo.productID)
|
||||
@@ -134,89 +130,53 @@ export class orderHandler {
|
||||
return resResult(STATUS.NO_PRODUCT_ID);
|
||||
}
|
||||
|
||||
let productType = productInfo.type;//类型
|
||||
let price = orderInfo.price;//下单时的价格
|
||||
let payType = orderInfo.payType;//支付类型
|
||||
let roleId = orderInfo.roleId;//角色
|
||||
|
||||
orderInfo = await UserOrderModel.check(roleId, localOrderID);
|
||||
if (!orderInfo) {
|
||||
return resResult(STATUS.DUPLICATE_ORDER);
|
||||
}
|
||||
switch (payType) {
|
||||
switch (orderInfo.payType) {
|
||||
case PAY_TYPE.TEST:
|
||||
case PAY_TYPE.THREE_SEVEN:
|
||||
case PAY_TYPE.APPLE:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case PAY_TYPE.WX:
|
||||
{
|
||||
let weixinResult = await checkOrderWX(localOrderID);
|
||||
if (weixinResult.code == 0) {
|
||||
console.log('微信订单查询失败')
|
||||
return resResult(STATUS.ORDER_ERROR);
|
||||
}
|
||||
if (parseInt(weixinResult.data.total_fee) / 100 != price) {
|
||||
console.log('订单价格错误')
|
||||
return resResult(STATUS.PRICE_ERROR);
|
||||
}
|
||||
if (weixinResult.data.trade_state != "SUCCESS" ||
|
||||
weixinResult.data.result_code != "SUCCESS" ||
|
||||
weixinResult.data.return_code != "SUCCESS") {
|
||||
return resResult(STATUS.NO_PAY);
|
||||
let res = await settleOrderWx(orderInfo, serverId, sid);
|
||||
if(res.code != 0) {
|
||||
return resResult(res);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PAY_TYPE.ALI:
|
||||
{
|
||||
let aliResult = await checkOrderALI(localOrderID);
|
||||
if (aliResult.code == 0) {
|
||||
console.log('支付宝订单查询失败')
|
||||
return resResult(STATUS.ORDER_ERROR);
|
||||
let res = await settleOrderAli(orderInfo, serverId, sid);
|
||||
if(res.code != 0) {
|
||||
return resResult(res);
|
||||
}
|
||||
if (parseInt(aliResult.data.total_amount) != price) {
|
||||
console.log('订单价格错误')
|
||||
return resResult(STATUS.PRICE_ERROR);
|
||||
}
|
||||
if (aliResult.data.trade_status != "TRADE_SUCCESS") {
|
||||
return resResult(STATUS.NO_PAY);
|
||||
}
|
||||
let aliOrderID = aliResult.data.trade_no;
|
||||
await UserOrderModel.saveOrderID(roleId, localOrderID, aliOrderID);
|
||||
break;
|
||||
}
|
||||
|
||||
case PAY_TYPE.APPLE:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
console.log('未知支付类型');
|
||||
return resResult(STATUS.NO_PAY_TYPE);
|
||||
}
|
||||
|
||||
//订单成功
|
||||
orderInfo = await UserOrderModel.success(roleId, localOrderID);
|
||||
if (orderInfo) {
|
||||
|
||||
//结算奖励
|
||||
let result = await makeOrder(localOrderID, sid, orderInfo);
|
||||
if (result.code !== 0) {//结算失败
|
||||
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
|
||||
return resResult(result);
|
||||
}
|
||||
//推送
|
||||
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
|
||||
data: result.data,
|
||||
price: price,
|
||||
}), [{ uid: roleId, sid: sid }]);
|
||||
//活动统计
|
||||
await addRechargeMoney(roleId, serverId, price);
|
||||
await addVipRechargeMoney(roleId, serverId, price);
|
||||
//成长任务
|
||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ACTIVITY_RMB, price, { activityId: orderInfo.activityId })
|
||||
|
||||
|
||||
console.log('结算完成', localOrderID)
|
||||
return resResult(STATUS.SUCCESS, result.data);
|
||||
console.log('结算完成', localOrderID)
|
||||
let res: any = {};
|
||||
try {
|
||||
res = JSON.parse(orderInfo.rewardResult)
|
||||
} catch(e) {
|
||||
console.log('order rewardResult', e);
|
||||
}
|
||||
|
||||
return resResult(STATUS.DUPLICATE_ORDER);
|
||||
if(res.code && res.code != 0) {
|
||||
return resResult(STATUS.APPLY_ORDER_ERROR);
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
...res,
|
||||
price: orderInfo.price,
|
||||
state: orderInfo.state,
|
||||
localOrderID: orderInfo.localOrderID
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -268,28 +228,13 @@ export class orderHandler {
|
||||
await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message);
|
||||
|
||||
//订单成功
|
||||
let orderInfo = await UserOrderModel.success(roleId, localOrderID);
|
||||
if (orderInfo) {
|
||||
//结算奖励
|
||||
let result = await makeOrder(localOrderID, sid, orderInfo);
|
||||
if (result.code !== 0) {//结算失败
|
||||
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
|
||||
return resResult(result);
|
||||
}
|
||||
//推送
|
||||
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
|
||||
data: result.data,
|
||||
price: price,
|
||||
}), [{ uid: roleId, sid: sid }]);
|
||||
//活动统计
|
||||
await addRechargeMoney(roleId, serverId, price);
|
||||
await addVipRechargeMoney(roleId, serverId, price);
|
||||
//成长任务
|
||||
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ACTIVITY_RMB, price, { activityId })
|
||||
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
|
||||
return resResult(STATUS.SUCCESS, result.data);
|
||||
let orderInfo = await UserOrderModel.findOrder(localOrderID);
|
||||
if(!orderInfo) {
|
||||
return resResult(STATUS.NO_ORDER);
|
||||
}
|
||||
|
||||
return resResult(STATUS.NO_ORDER, {});
|
||||
let result = await settleOrder(orderInfo, serverId, sid);
|
||||
orderInfo = await UserOrderModel.success(roleId, localOrderID, result);
|
||||
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
|
||||
return resResult(STATUS.SUCCESS, JSON.parse(result));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Application, ChannelService, HandlerService, } from 'pinus';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
import { settleOrderFromRedisPub } from '../../../services/orderService';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -21,4 +22,8 @@ export class OrderRemote {
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
|
||||
public async settleOrderFromRedisPub(message: string) {
|
||||
await settleOrderFromRedisPub(message);
|
||||
}
|
||||
}
|
||||
@@ -49,10 +49,10 @@ export class HeroHandler {
|
||||
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: pieceCount }]);
|
||||
if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||
// createHero
|
||||
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1 });
|
||||
let { heroes, resultHeroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1 });
|
||||
|
||||
pushComposeOrangeHero(roleId, roleName, serverId, heroes[0]);
|
||||
return resResult(STATUS.SUCCESS, { curHero: heroes[0] });
|
||||
pushComposeOrangeHero(roleId, roleName, serverId, resultHeroes[0]);
|
||||
return resResult(STATUS.SUCCESS, { curHero: resultHeroes[0], addHeros: heroes });
|
||||
}
|
||||
|
||||
// 武将升级
|
||||
@@ -710,8 +710,8 @@ export class HeroHandler {
|
||||
}
|
||||
let hero = await HeroModel.findByHidAndRole(hid, roleId);
|
||||
if(!hero) {
|
||||
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1, ...params });
|
||||
hero = heroes[0];
|
||||
let { resultHeroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1, ...params });
|
||||
hero = resultHeroes[0];
|
||||
}
|
||||
hero = await HeroModel.updateHeroInfo(roleId, hid, params);
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { RoleModel, RoleUpdate } from './../../../db/Role';
|
||||
import { HeroModel, HeroUpdate } from '../../../db/Hero';
|
||||
import { resResult, decodeIdCntArrayStr, parseGoodStr, genCode } from '../../../pubUtils/util';
|
||||
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
|
||||
import { handleCost, addItems, createHeroes } from '../../../services/rewardService';
|
||||
import { handleCost, addItems } from '../../../services/rewardService';
|
||||
import { getTitle, getTeraph, gameData, getScollByStar, getFriendLvByExp, getHeroExpByLv, getExpByLv } from '../../../pubUtils/data';
|
||||
import { SCHOOL, SCROLL, EXTERIOR, SCRIPT } from '../../../pubUtils/dicParam';
|
||||
import { getAtrrNameById } from '../../../consts/constModules/abilityConst'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { UserOrderModelType } from '../db/UserOrder';
|
||||
import { ACTIVITY_TYPE, STATUS } from '../consts';
|
||||
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
|
||||
import { ACTIVITY_TYPE, ORDER_STATE, STATUS, TASK_TYPE } from '../consts';
|
||||
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
|
||||
import { makeYuanbaoShopReward } from './activity/yuanbaoService';
|
||||
import { RoleModel } from '../db/Role';
|
||||
@@ -19,17 +19,20 @@ import { ActivityMonopolyModel, ActivityMonopolyModelType } from '../db/Activity
|
||||
import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../db/ActivityMonopolyLand';
|
||||
import { pinus } from 'pinus';
|
||||
import { resResult } from '../pubUtils/util';
|
||||
|
||||
|
||||
|
||||
import { checkOrderWX } from './pay/weixinPay';
|
||||
import { addRechargeMoney } from './activity/rechargeMoneyService';
|
||||
import { addVipRechargeMoney } from './activity/vipRechargeMoneyService';
|
||||
import { checkActivityTask } from './taskService';
|
||||
import { checkOrderALI } from './pay/aliPay';
|
||||
import { getRoleOnlineInfo } from './redisService';
|
||||
import { PayCallback37Data } from '../domain/sdk';
|
||||
|
||||
|
||||
/**
|
||||
* 结算账单
|
||||
* @param localOrderID 本地订单号
|
||||
*/
|
||||
export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) {
|
||||
// let orderInfo = await UserOrderModel.findOrder(localOrderID);
|
||||
export async function makeOrder(orderInfo: UserOrderModelType, sid: string) {
|
||||
|
||||
//商品价格信息
|
||||
let productInfo = dicRMB.get(orderInfo.productID)
|
||||
@@ -144,4 +147,118 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
|
||||
}), [{ uid: roleId, sid }]);
|
||||
|
||||
return rewardResult
|
||||
}
|
||||
|
||||
export async function settleOrder(order: UserOrderModelType, serverId: number, sid?: string) {
|
||||
if(!sid) {
|
||||
let onlineUser = await getRoleOnlineInfo(order.roleId);
|
||||
sid = onlineUser.sid;
|
||||
}
|
||||
//结算奖励
|
||||
let result = await makeOrder(order, sid);
|
||||
if (result.code !== 0) {//结算失败
|
||||
console.log(`支付失败..... ${JSON.stringify(result)}`)
|
||||
return resResult(result);
|
||||
}
|
||||
//推送
|
||||
console.log('*****', order.roleId, sid)
|
||||
if(!!sid) {
|
||||
pinus.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
|
||||
...result.data,
|
||||
price: order.price,
|
||||
state: order.state,
|
||||
localOrderID: order.localOrderID
|
||||
}), [{ uid: order.roleId, sid }]);
|
||||
}
|
||||
//活动统计
|
||||
await addRechargeMoney(order.roleId, serverId, order.price);
|
||||
await addVipRechargeMoney(order.roleId, serverId, order.price);
|
||||
//成长任务
|
||||
await checkActivityTask(serverId, sid, order.roleId, TASK_TYPE.ACTIVITY_RMB, order.price, { activityId: order.activityId })
|
||||
|
||||
return result.data;
|
||||
}
|
||||
|
||||
export async function settleOrderWx(order: UserOrderModelType, serverId: number, sid: string) {
|
||||
|
||||
if (order.state == ORDER_STATE.RESULT_SUCCESS) {
|
||||
return STATUS.DUPLICATE_ORDER;
|
||||
}
|
||||
order = await UserOrderModel.check(order.roleId, order.localOrderID);
|
||||
if (!order) {
|
||||
return STATUS.DUPLICATE_ORDER;
|
||||
}
|
||||
|
||||
let weixinResult = await checkOrderWX(order.localOrderID);
|
||||
if (weixinResult.code == 0) {
|
||||
console.log('微信订单查询失败')
|
||||
return STATUS.ORDER_ERROR;
|
||||
}
|
||||
if (parseInt(weixinResult.data.total_fee) / 100 != order.price) {
|
||||
console.log('订单价格错误')
|
||||
return STATUS.PRICE_ERROR;
|
||||
}
|
||||
if (weixinResult.data.trade_state != "SUCCESS" ||
|
||||
weixinResult.data.result_code != "SUCCESS" ||
|
||||
weixinResult.data.return_code != "SUCCESS") {
|
||||
return STATUS.NO_PAY;
|
||||
}
|
||||
|
||||
let result = await settleOrder(order, serverId, sid);
|
||||
order = await UserOrderModel.success(order.roleId, order.localOrderID, result);
|
||||
|
||||
return STATUS.SUCCESS
|
||||
}
|
||||
|
||||
export async function settleOrderAli(order: UserOrderModelType, serverId: number, sid: string) {
|
||||
if (order.state == ORDER_STATE.RESULT_SUCCESS) {
|
||||
return STATUS.DUPLICATE_ORDER;
|
||||
}
|
||||
let aliResult = await checkOrderALI(order.localOrderID);
|
||||
if (aliResult.code == 0) {
|
||||
console.log('支付宝订单查询失败')
|
||||
return STATUS.ORDER_ERROR;
|
||||
}
|
||||
if (parseInt(aliResult.data.total_amount) != order.price) {
|
||||
console.log('订单价格错误')
|
||||
return STATUS.PRICE_ERROR;
|
||||
}
|
||||
if (aliResult.data.trade_status != "TRADE_SUCCESS") {
|
||||
return STATUS.NO_PAY;
|
||||
}
|
||||
let aliOrderID = aliResult.data.trade_no;
|
||||
let result = await settleOrder(order, serverId, sid);
|
||||
await UserOrderModel.saveOrderID(order.roleId, order.localOrderID, aliOrderID, result);
|
||||
|
||||
return STATUS.SUCCESS
|
||||
}
|
||||
|
||||
export async function settleOrderFromRedisPub(message: string) {
|
||||
let params: PayCallback37Data;
|
||||
try {
|
||||
params = JSON.parse(message);
|
||||
} catch(e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let order = await UserOrderModel.findOrder(params.order_no);
|
||||
if(!order || order.state != ORDER_STATE.CHECK_ORDER) {
|
||||
console.log('订单状态错误');
|
||||
return false;
|
||||
}
|
||||
if(order.roleId != params.actor_id) {
|
||||
console.log('订单玩家错误');
|
||||
return false;
|
||||
}
|
||||
if(order.price.toFixed(2) != params.money.toFixed(2)) {
|
||||
console.log('订单金额错误');
|
||||
return false;
|
||||
}
|
||||
|
||||
let aliOrderID = params.order_id;
|
||||
|
||||
let result = await settleOrder(order, params.sid);
|
||||
await UserOrderModel.saveOrderID(order.roleId, order.localOrderID, aliOrderID, JSON.stringify(result));
|
||||
|
||||
return true
|
||||
}
|
||||
@@ -9,6 +9,9 @@ import { comBtlRanges } from '../pubUtils/data';
|
||||
import { setRankRedisFromDb } from './rankService';
|
||||
import { ServerlistModel } from '../db/Serverlist';
|
||||
import moment = require('moment');
|
||||
import { getRedisSubChannel } from '../pubUtils/sdkUtil';
|
||||
import { getRandSingleEelm } from '../pubUtils/util';
|
||||
|
||||
/**
|
||||
* 在服务重新启动时,将信息存入redis
|
||||
*/
|
||||
@@ -466,4 +469,30 @@ export async function removeConnectors(servers: string[]) {
|
||||
let hasServer = await redisClient().hgetAsync(REDIS_KEY.SYS_SERVER, server);
|
||||
if(!!hasServer) await redisClient().hdelAsync(REDIS_KEY.SYS_SERVER, server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*************** 将connector服插入redis *******/
|
||||
|
||||
|
||||
/*************** 订阅短链接redis *******/
|
||||
|
||||
export function redisClientPub() {
|
||||
const client: Redis.RedisClient = pinus.app.get('redisPub');
|
||||
return client;
|
||||
}
|
||||
|
||||
export async function redisSubScribe() {
|
||||
let env = pinus.app.get('env');
|
||||
if(env == 'development') env = 'local'; // 本地处理
|
||||
let payChannel = getRedisSubChannel(REDIS_KEY.PAY_CHANNEL, env);
|
||||
console.log('*****', payChannel)
|
||||
await redisClientPub().subscribeAsync(payChannel);
|
||||
redisClientPub().on('message', (channel, message) => {
|
||||
if(channel == payChannel) {
|
||||
let orders = pinus.app.getServersByType('order');
|
||||
let server = getRandSingleEelm(orders);
|
||||
pinus.app.rpc.order.orderRemote.settleOrderFromRedisPub.toServer(server.id, message);
|
||||
}
|
||||
});
|
||||
}
|
||||
/*************** 订阅短链接redis *******/
|
||||
@@ -15,7 +15,7 @@ import { HeroModel, HeroType, HeroUpdate } from '../db/Hero';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { Rank } from './rankService';
|
||||
import { checkActivityTask, checkTaskWithHero, pushActivityUpdate, pushTaskUpdate } from './taskService';
|
||||
import { CreateHeroParam } from '../domain/roleField/hero';
|
||||
import { CreateHeroParam, HeroShowParam } from '../domain/roleField/hero';
|
||||
import { HeroSkin } from '../db/Hero';
|
||||
import { errlogger } from '../util/logger';
|
||||
import { BAG } from '../pubUtils/dicParam';
|
||||
@@ -476,13 +476,14 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
|
||||
}
|
||||
}
|
||||
|
||||
let resultHeroes: HeroType[] = [], resultItems: RewardInter[] = [];
|
||||
let resultHeroes: HeroType[] = [], resultItems: RewardInter[] = [], heroes: HeroShowParam[] = [];
|
||||
if (infos.size > 0) {
|
||||
let createHero = new CreateHeroes(roleId, roleName, serverId);
|
||||
await createHero.createWithHeroInfo(infos);
|
||||
await createHero.clearTask(await getActivities())
|
||||
await createHero.pushMessage(pinus, sid);
|
||||
await createHero.updateRedisRank(Rank);
|
||||
heroes = createHero.getShowHeroes();
|
||||
resultHeroes = createHero.getResultHeroes();
|
||||
}
|
||||
|
||||
@@ -490,7 +491,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
|
||||
let goods = await addItems(roleId, roleName, sid, pieces);
|
||||
resultItems = goods;
|
||||
}
|
||||
return { heroes: resultHeroes, goods: resultItems }
|
||||
return { heroes, resultHeroes, goods: resultItems }
|
||||
}
|
||||
|
||||
export async function createHero(roleId: string, roleName: string, sid: string, serverId: number, heroInfo: CreateHeroParam) {
|
||||
|
||||
Reference in New Issue
Block a user