//写入更新记录
 public RedPacketResult update()
 {
     fx();
     if (this.isCreate)
     {
         object o = new object();
         lock (o)
         {
             //获取当前领取的数量
             string Num = RedisHelper.Get(PrefixKeyHelper.GetRedPacketIncrement() + redpacket.Id);
             if (Num == null || Num.ToInt() < redpacket.num)
             {
                 //自增红包数
                 RedisHelper.Increment(PrefixKeyHelper.GetRedPacketIncrement() + redpacket.Id);
                 //更新红包缓存数据
                 RedisHelper.Set(PrefixKeyHelper.GetRedPacketPK() + redpacket.Id, redpacket.Serialize());
                 //创建已领取红包记录Model
                 Create();
                 //写入待更新红包表数据库队列
                 RedisHelper.LPush(PrefixKeyHelper.GetWaitWriteRedPacket() + redpacket.Id, redpacket.Serialize());
                 //写入红包领取记录缓存队列
                 RedisHelper.LPush(PrefixKeyHelper.GetWaitWriteHadGetRedPacket() + redpacket.Id, hadGetRedPacket.Serialize());
                 result.Status = (int)MRC.Data.Enum.EnumGetRedPacketStatus.GetOK;
             }
             else
             {
                 result.Status = (int)MRC.Data.Enum.EnumGetRedPacketStatus.Over;
             }
         }
         result.Money   = oneMoney;
         result.Message = "OK";
     }
     return(result);
 }
Exemple #2
0
        public ActionResult Add(decimal Money = 0, int Num = 0, int RedPacketType = 0, int WalletType = 0)
        {
            Result result = new Result();

            if (Money == 0 || Num == 0 || RedPacketType == 0)
            {
                result.Msg = "请输入完整信息";
                return(Json(result));
            }
            RedPacket redpacket = new RedPacket();

            redpacket.Id              = Guid.NewGuid().ToString();
            redpacket.uuid            = this.CurrentSession.UserId;
            redpacket.CreateTime      = DateTime.Now;
            redpacket.EndTime         = DateTime.Now.AddDays(1);
            redpacket.totalMoney      = Money;
            redpacket.LessMoney       = Money;
            redpacket.num             = Num;
            redpacket.LessNum         = Num;
            redpacket.builderStrategy = RedPacketType;
            redpacket.walletType      = WalletType;
            redpacket.getuuids        = "";
            redpacket.appointUuid     = "";
            redpacket.remark          = "";
            redpacket.token           = "";
            _redPacketService.Add(redpacket);
            result.Status = Data.Enum.ResultStatus.OK;
            result.Msg    = "添加成功";
            RedisHelper.Set(PrefixKeyHelper.GetRedPacketPK() + redpacket.Id, redpacket.Serialize());
            return(Json(result));
        }
Exemple #3
0
        public ActionResult GetHadList(string ID)
        {
            var data = RedisHelper.LRang(PrefixKeyHelper.GetWaitWriteHadGetRedPacket() + ID, 0, -1);
            List <HadGetRedPacket> datalist = new List <HadGetRedPacket>();

            foreach (var item in data)
            {
                datalist.Add(JsonHelper.Deserialize <HadGetRedPacket>(item));
            }
            Result <List <HadGetRedPacket> > result = Result.CreateResult <List <HadGetRedPacket> >(MRC.Data.Enum.ResultStatus.OK, datalist);

            return(Json(result));
        }
Exemple #4
0
        public ActionResult GetRedPacket(string ID)
        {
            Result result        = new Result();
            var    redpacketStr2 = RedisHelper.Get(PrefixKeyHelper.GetRedPacketPK() + ID);

            if (redpacketStr2.IsNullOrEmpty())
            {
                result.Msg = "红包已失效";
                return(Json(result));
            }
            RedPacket       redpacketTest = JsonHelper.Deserialize <RedPacket>(redpacketStr2);
            RedPacketResult builderResult = new RedPacketResult();

            for (int i = 0; i < redpacketTest.num; i++)
            {
                var       redpacketStr = RedisHelper.Get(PrefixKeyHelper.GetRedPacketPK() + ID);
                RedPacket redpacket    = JsonHelper.Deserialize <RedPacket>(redpacketStr);
                if (redpacket.builderStrategy == (int)Data.Enum.EnumRedPacketType.FixedAverage)
                {
                    BuilderRedPacketsForEqual builder = new BuilderRedPacketsForEqual(redpacket, this.CurrentSession.UserId);
                    builderResult = builder.update();
                }
                else if (redpacket.builderStrategy == (int)Data.Enum.EnumRedPacketType.Radom)
                {
                    BuilderRedPacketsForRadom builder = new BuilderRedPacketsForRadom(redpacket, this.CurrentSession.UserId);
                    builderResult = builder.update();
                }
                else
                {
                }
            }


            if (builderResult.Status == (int)(int)Data.Enum.EnumGetRedPacketStatus.GetOK)
            {
                result.Msg    = "领取成功";
                result.Status = Data.Enum.ResultStatus.OK;
            }
            else if (builderResult.Status == (int)(int)Data.Enum.EnumGetRedPacketStatus.Error)
            {
                result.Msg    = builderResult.Message;
                result.Status = Data.Enum.ResultStatus.Failed;
            }
            else if (builderResult.Status == (int)(int)Data.Enum.EnumGetRedPacketStatus.Over)
            {
                result.Msg    = "红包已领完";
                result.Status = Data.Enum.ResultStatus.Failed;
            }
            return(Json(result));
        }