public bool BlackJadeExchange(MsgInformationEx MsgDTO, object[] param) { var ratio = BlackJadeExchangeRec.RealTimeRatio(MsgDTO.FromGroup); var count = WaiterSvc.WaitForNum(MsgDTO.FromGroup, MsgDTO.FromQQ, $"当前墨玉汇率为:{ratio}金币 = 1墨玉,请输入兑换墨玉数量!(单次限购100枚墨玉)", bjCount => bjCount > 0 && bjCount <= 100, MsgDTO.BindAi); if (count <= 0) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var consumeTotal = count * ratio; var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < consumeTotal) { MsgSender.PushMsg(MsgDTO, $"你的金币余额不足!({consumeTotal.CurencyFormat()}/{osPerson.Golds.CurencyFormat()})"); return(false); } var asset = ArchAsset.Get(MsgDTO.FromQQ); asset.BlackJade += count; osPerson.Golds -= consumeTotal; asset.Update(); osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"兑换成功!你当前剩余墨玉 {asset.BlackJade}枚,金币 {osPerson.Golds.CurencyFormat()}!"); return(true); }
/// <summary> /// 获取指定群组的实时汇率 /// </summary> /// <param name="GroupNum"></param> /// <returns></returns> public static int RealTimeRatio(long GroupNum) { var rec = MongoService <BlackJadeExchangeRec> .GetOnly(p => p.GroupNum == GroupNum); if (rec == null) { rec = new BlackJadeExchangeRec() { GroupNum = GroupNum }; MongoService <BlackJadeExchangeRec> .Insert(rec); } if (rec.DateHour == DateTime.Now.ToString("yyyy-MM-dd:HH")) { return(rec.Ratio); } rec.DateHour = DateTime.Now.ToString("yyyy-MM-dd:HH"); rec.Ratio = Rander.RandRange(20, 350); MongoService <BlackJadeExchangeRec> .Update(rec); return(rec.Ratio); }