Beispiel #1
0
        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);
        }