/// <summary> /// 获取我的拍卖列表 /// </summary> /// <param name="managerId"></param> /// <param name="zoneName"></param> /// <returns></returns> public AuctionItemResponse GetMyAuctionList(Guid managerId, string zoneName) { var response = new AuctionItemResponse(); response.Data = new AuctionItemEntity(); try { var manager = NbManagerMgr.GetById(managerId, zoneName); if (manager == null) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.AdMissManager)); } if (!IsOpen(managerId, zoneName, manager)) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNotOpen)); } //已经挂牌了多少个 var number = TransferMainMgr.GetTransferNumber(managerId); //最多可以挂牌多少个 var gambleCountMax = CacheFactory.VipdicCache.GetEffectValue(manager.VipLevel, EnumVipEffect.TransferNumber); response.Data.MyTransferList = GetMyTransfer(managerId); response.Data.MaxTransferNumber = gambleCountMax; response.Data.HaveTransferNumber = number; var goldBarEntity = ScoutingGoldbarMgr.GetById(managerId, zoneName); if (goldBarEntity != null) { response.Data.MyGoldBar = goldBarEntity.GoldBarNumber; } } catch (Exception ex) { SystemlogMgr.Error("获取我的拍卖列表", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
/// <summary> /// 开始拍卖 /// </summary> /// <param name="managerId"></param> /// <param name="zoneName"></param> /// <param name="itemId"></param> /// <param name="price"></param> /// <param name="transferDuration"></param> public AuctionItemResponse AuctionItem(Guid managerId, string zoneName, Guid itemId, int price, int transferDuration) { var response = new AuctionItemResponse(); response.Data = new AuctionItemEntity(); try { DateTime date = DateTime.Now; var manager = NbManagerMgr.GetById(managerId, zoneName); if (manager == null) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.AdMissManager)); } if (!IsOpen(managerId, zoneName, manager)) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNotOpen)); } //已经挂牌了多少个 var number = TransferMainMgr.GetTransferNumber(managerId); //最多可以挂牌多少个 var gambleCountMax = CacheFactory.VipdicCache.GetEffectValue(manager.VipLevel, EnumVipEffect.TransferNumber); if (gambleCountMax <= number) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNumberMax)); } var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.Transfer, zoneName); if (package == null) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbNoPackage)); } if (price < 2) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.StartPriceSmall)); } var item = package.GetItem(itemId); if (item == null) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.ItemNotExists)); } if (!item.IsDeal) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NotDeal)); } var strength = item.GetStrength(); if (strength > 1) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NotDeal)); } var iteminfo = CacheFactory.ItemsdicCache.GetItem(item.ItemCode); if (iteminfo == null) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.ItemNotExists)); } //默认86400秒 24小时 TransferMainEntity entity = new TransferMainEntity(ShareUtil.GenerateComb(), _domainId, item.ItemCode, iteminfo.ItemName, new byte[0], manager.Name, managerId, zoneName, price, "", "", 0, Guid.Empty, date, date.AddDays(1), 0, 0, 0, date, date); var messageCode = package.Delete(itemId); if (messageCode != MessageCode.Success) { return(ResponseHelper.Create <AuctionItemResponse>(messageCode)); } if (!package.Save()) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbUpdateFail)); } if (!TransferMainMgr.Insert(entity)) { messageCode = package.AddItem(item.ItemCode); if (messageCode != MessageCode.Success) { SystemlogMgr.Error("拍卖返还物品失败", "拍卖返还物品失败,managerId:" + managerId + ",zoneName:" + zoneName + "物品ID:" + item.ItemCode); } return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbUpdateFail)); } package.Shadow.Save(); entity.TransferDurationTick = ShareUtil.GetTimeTick(entity.TransferDuration); entity.TransferDurationTick = ShareUtil.GetTimeTick(entity.TransferDuration); var modId = ShareUtil.GetTableMod(entity.TransferId); entity.ModId = modId; _tenTransferList.Add(entity); Sort(); response.Data.MyTransferList = GetMyTransfer(managerId); response.Data.MaxTransferNumber = gambleCountMax; response.Data.HaveTransferNumber = number + 1; var goldBarEntity = ScoutingGoldbarMgr.GetById(managerId, zoneName); if (goldBarEntity != null) { response.Data.MyGoldBar = goldBarEntity.GoldBarNumber; } } catch (Exception ex) { SystemlogMgr.Error("开始拍卖", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
/// <summary> /// 获取拍卖列表 /// </summary> /// <param name="managerId"></param> /// <param name="zoneName"></param> /// <param name="rankRule"></param> /// <param name="itemName"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <returns></returns> public AuctionItemResponse GetTransferList(Guid managerId, string zoneName, int rankRule, string itemName, int pageSize, int pageIndex) { AuctionItemResponse response = new AuctionItemResponse(); response.Data = new AuctionItemEntity(); try { if (pageSize <= 0) { return(response); } if (!IsOpen(managerId, zoneName)) { return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNotOpen)); } var list = new List <TransferMainEntity>(); var modId = ShareUtil.GetTableMod(managerId); bool isOrderBy = false; if (_tenTransferList != null && _tenTransferList.Count > 0) { var modList = _tenTransferList.FindAll(r => r.ModId == modId); if (modList.Count > 0) { isOrderBy = true; list.AddRange(modList); } } switch (rankRule) { case 2: //价格正序 list.AddRange(_transferPriceList); if (isOrderBy) { list = list.OrderBy(r => r.Price).ToList(); } break; case 3: //价格到序 list.AddRange(_transferPriceDescList); if (isOrderBy) { list = list.OrderByDescending(r => r.Price).ToList(); } break; default: //默认排序 时间倒序 list.AddRange(_transferTimeList); break; } if (itemName.Trim().Length > 0) { if (list.Count > 0) { list = list.Where(r => r.ItemName.IndexOf(itemName) > -1).ToList(); } } response.Data.TotalPageNumber = list.Count / pageSize; if (list.Count % pageSize != 0) { response.Data.TotalPageNumber = response.Data.TotalPageNumber + 1; } var resultList = new List <TransferMainEntity>(); if (list.Count > 0) { int index = pageSize * (pageIndex - 1); if (list.Count > index) { resultList = list.Skip(index).Take(pageSize).ToList(); } } response.Data.MyTransferList = resultList; var goldBarEntity = ScoutingGoldbarMgr.GetById(managerId, zoneName); if (goldBarEntity != null) { response.Data.MyGoldBar = goldBarEntity.GoldBarNumber; } } catch (Exception ex) { SystemlogMgr.Error("获取拍卖列表", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }