/// <summary> /// 当完成交易 /// </summary> /// <param name="ed"></param> public void OnExchange(int roleid1, int roleid2, List <GoodsData> gdList1, List <GoodsData> gdList2, int zuanshi1, int zuanshi2) { long price1 = zuanshi1 > 0 ? zuanshi1 : 0; // roleid1 的支出 long price2 = zuanshi2 > 0 ? zuanshi2 : 0; // roleid2 的支出 Func <List <GoodsData>, Dictionary <int, int>, long> _GetGoodsPrice = (gdList, priceDict) => { long totalPrice = 0; if (gdList != null && priceDict != null) { gdList.ForEach(_g => totalPrice += priceDict.ContainsKey(_g.GoodsID) ? priceDict[_g.GoodsID] * _g.GCount : 0); } return(totalPrice); }; price1 += _GetGoodsPrice(gdList1, this.GoodsPriceDict); price2 += _GetGoodsPrice(gdList2, this.GoodsPriceDict); DateTime now = TimeUtil.NowDateTime(); TradeBlackObject obj1 = LoadTradeBlackObject(roleid1); if (obj1 != null) { lock (obj1) { TradeBlackHourItem item = GetBlackHourItem(obj1, now); item.TradeTimes++; item.TradeOutPrice += price1; item.TradeInPrice += price2; if (!item.TradeRoles.Contains(roleid2)) { item.TradeRoles.Add(roleid2); item.TradeDistinctRoleCount++; } TradeBlackHourItem itemCopy = item.SimpleClone(); SaveTradeBlackObject(itemCopy); } } TradeBlackObject obj2 = LoadTradeBlackObject(roleid2); if (obj2 != null) { lock (obj2) { TradeBlackHourItem item = GetBlackHourItem(obj2, now); item.TradeTimes++; item.TradeInPrice += price1; item.TradeOutPrice += price2; if (!item.TradeRoles.Contains(roleid1)) { item.TradeRoles.Add(roleid1); item.TradeDistinctRoleCount++; } TradeBlackHourItem itemCopy = item.SimpleClone(); SaveTradeBlackObject(itemCopy); } } CheckBanTrade(roleid1); CheckBanTrade(roleid2); }
public void OnExchange(int roleid1, int roleid2, List <GoodsData> gdList1, List <GoodsData> gdList2, int zuanshi1, int zuanshi2) { long price = (long)((zuanshi1 > 0) ? zuanshi1 : 0); long price2 = (long)((zuanshi2 > 0) ? zuanshi2 : 0); Func <List <GoodsData>, Dictionary <int, int>, long> _GetGoodsPrice = delegate(List <GoodsData> gdList, Dictionary <int, int> priceDict) { long totalPrice = 0L; if (gdList != null && priceDict != null) { gdList.ForEach(delegate(GoodsData _g) { totalPrice += (long)(priceDict.ContainsKey(_g.GoodsID) ? (priceDict[_g.GoodsID] * _g.GCount) : 0); }); } return(totalPrice); }; price += _GetGoodsPrice(gdList1, this.GoodsPriceDict); price2 += _GetGoodsPrice(gdList2, this.GoodsPriceDict); DateTime now = TimeUtil.NowDateTime(); TradeBlackObject obj = this.LoadTradeBlackObject(roleid1, true); if (obj != null) { lock (obj) { TradeBlackHourItem item = this.GetBlackHourItem(obj, now); item.TradeTimes++; item.TradeOutPrice += price; item.TradeInPrice += price2; if (!item.TradeRoles.Contains(roleid2)) { item.TradeRoles.Add(roleid2); item.TradeDistinctRoleCount++; } TradeBlackHourItem itemCopy = item.SimpleClone(); this.SaveTradeBlackObject(itemCopy); } } TradeBlackObject obj2 = this.LoadTradeBlackObject(roleid2, true); if (obj2 != null) { lock (obj2) { TradeBlackHourItem item = this.GetBlackHourItem(obj2, now); item.TradeTimes++; item.TradeInPrice += price; item.TradeOutPrice += price2; if (!item.TradeRoles.Contains(roleid1)) { item.TradeRoles.Add(roleid1); item.TradeDistinctRoleCount++; } TradeBlackHourItem itemCopy = item.SimpleClone(); this.SaveTradeBlackObject(itemCopy); } } this.CheckBanTrade(roleid1); this.CheckBanTrade(roleid2); }