diff --git a/game-server/app/servers/gm/handler/gmOrderHandler.ts b/game-server/app/servers/gm/handler/gmOrderHandler.ts index 538bf373a..ca39cfeb6 100644 --- a/game-server/app/servers/gm/handler/gmOrderHandler.ts +++ b/game-server/app/servers/gm/handler/gmOrderHandler.ts @@ -1,12 +1,12 @@ import { Application, BackendSession, pinus } from 'pinus'; import { genCode, getRandSingleEelm, resResult } from '../../../pubUtils/util'; import { STATUS } from '../../../consts/statusCode'; -import { PAY_TYPE } from '../../../consts'; +import { ORDER_STATE, PAY_TYPE } from '../../../consts'; import _ = require('underscore'); import { dicRMB } from '../../../pubUtils/dictionary/DicRMB'; import { getActivityById } from '../../../services/activity/activityService'; import { UserOrderModel } from '../../../db/UserOrder'; -import { settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService'; +import { settleOrder, settleOrderAli, settleOrderFromHandler, settleOrderWx } from '../../../services/orderService'; import { getActivityProducts, getParamStr } from '../../../services/gmService'; import { ActivityGroupModel } from '../../../db/ActivityGroup'; import { Receiver } from '../../../db/GMMail'; @@ -123,4 +123,60 @@ export class GmOrderHandler { return findResultErrCode; } } + + + /** + * @description 补单 + * @param {BackendSession} session + * @memberof orderHandler + */ + async reCallOrder(msg: { localOrderID: string }, session: BackendSession) { + + let sid = session.get('sid'); + const { localOrderID } = msg; + + if (!localOrderID || !_.isString(localOrderID)) { + return resResult(STATUS.WRONG_PARMS); + } + let orderInfo = await UserOrderModel.findOrder(localOrderID); + 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) + if (!productInfo) { + console.log(orderInfo.productID) + return resResult(STATUS.NO_PRODUCT_ID); + } + + let order = await UserOrderModel.findOrder(localOrderID); + + let result = await settleOrder(order, order.serverId, sid); + await UserOrderModel.saveOrderID(order.roleId, order.localOrderID, '', JSON.stringify(result)); + + orderInfo = await UserOrderModel.findOrder(localOrderID); + + //订单成功 + console.log('结算完成', localOrderID) + let res: any = {}; + try { + res = orderInfo.rewardResult? JSON.parse(orderInfo.rewardResult): {}; + } catch(e) { + console.log('order rewardResult', e); + } + 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 + }); + } } \ No newline at end of file diff --git a/game-server/app/services/activity/limitPackageService.ts b/game-server/app/services/activity/limitPackageService.ts index 4b3e09042..eb8782592 100644 --- a/game-server/app/services/activity/limitPackageService.ts +++ b/game-server/app/services/activity/limitPackageService.ts @@ -125,9 +125,9 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s if (!item) { return STATUS.ACTIVITY_NO_PRODUCT; } - if (item.countMax > 0 && item.buyCount >= item.countMax) { - return STATUS.ACTIVITY_MAX_COUNT; - } + // if (item.countMax > 0 && item.buyCount >= item.countMax) { + // return STATUS.ACTIVITY_MAX_COUNT; + // } let rewardArray = stringToRewardParam(item.reward) let result = await addReward(roleId, roleName, sid, serverId, rewardArray, ITEM_CHANGE_REASON.BUY_LIMIT_PACKAGE); diff --git a/shared/resource/jsons/dic_api.json b/shared/resource/jsons/dic_api.json index 5a42ecc2a..7c749afd8 100644 --- a/shared/resource/jsons/dic_api.json +++ b/shared/resource/jsons/dic_api.json @@ -873,5 +873,12 @@ "name": "更新活动组", "module": "activity", "type": "update" + }, + { + "id": 126, + "api": "gm.gmOrderHandler.reCallOrder", + "name": "补单", + "module": "order", + "type": "update" } ] \ No newline at end of file