//写入更新记录 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); }
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)); }
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)); }
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)); }