Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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;
            }
        }