/// <summary> /// 出售物品 /// </summary> /// <param name="account"></param> /// <param name="role"></param> /// <param name="sid"></param> /// <param name="bytes"></param> /// <returns></returns> private static async Task <BaseResponseData> SellItem() { SellItemResult result = new SellItemResult(); if (User.bytes == null) { result.Result = GameEnum.WsResult.ParamsError; return(result); } var data = await InitHelpers.GetPse().DeserializeAsync <SellItemReq>(User.bytes); if (data == null) { result.Result = GameEnum.WsResult.ParamsError; return(result); } var id = data.ItemId; var count = data.Count; if (count <= 0) { result.Result = GameEnum.WsResult.PositiveInteger; return(result); } return(await BagController.Instance.SellItemsAsync(id, count)); }
/// <summary> /// 出售商品 /// </summary> /// <param name="sm"></param> /// <param name="roleId"></param> /// <param name="itemId"></param> /// <param name="count"></param> /// <returns></returns> public async Task <SellItemResult> SellItemsAsync(int itemId, long count) { try { SellItemResult result = new SellItemResult(); var bgInfo = LogicServer.User.bag; var roleId = LogicServer.User.role.Id; var item = GetItemById(itemId); if (item == null) { result.Result = GameEnum.WsResult.NotItemConfig; return(result); } var money = item.Sell; if (!await RemoveItemsAsync(itemId, count)) { result.Result = GameEnum.WsResult.RemoveItemErr; return(result); } long financeMoney = 0; bgInfo.Items.TryGetValue(money.CurrencyID, out Model.Data.General.Item itemMoney); checked { try { financeMoney += (money.Count * count); itemMoney.CurCount += (money.Count * count); } catch (OverflowException ex) { throw new Exception(ex.Message); } } await BagDataHelper.Instance.UpdateBagByRoleId(bgInfo, LogicServer.User.role.Id); await MsgSender.Instance.UpdateGold(money.CurrencyID); FinanceLogData loginfo = new FinanceLogData() { Count = financeMoney, EventName = item.Name, MoneyType = money.CurrencyID, Type = (int)GameEnum.FinanceLog.SellItem }; await FinanceLogController.Instance.UpdateFinanceLog(roleId, loginfo); //财务日志变动消息 await MsgSender.Instance.FinanceLogUpdate(loginfo); var retBg = LogicServer.User.bag; var retRoInfo = LogicServer.User.role; result.BagInfo.CurUsedCell = retBg.CurUsedCell; result.BagInfo.MaxCellNumber = retBg.MaxCellNumber; foreach (var i in retBg.Items) { result.BagInfo.Items.Add(i.Key, new LoadRoleBagInfo() { CurCount = i.Value.CurCount, OnSpace = i.Value.OnSpace }); } result.ShenJia = retRoInfo.SocialStatus; return(result); } catch (Exception ex) { //日志 throw ex; } }