Exemplo n.º 1
0
        public IHttpActionResult InsertBag(RBCreateBag bag)
        {
            var rt = ISoftSmart.Core.IoC.IoCFactory.Instance.CurrentContainer.Resolve <IRedBag>();//使用接口

            bag.CreateTime = DateTime.Now;
            var         Code            = string.Empty;
            var         ResponseMessage = string.Empty;
            RBCreateBag Result          = null;

            bag.CreateTime = DateTime.Now;
            var db = RedisManager.Instance.GetDatabase();

            if (StackExchangeRedisExtensions.HasKey(db, CacheKey.BagKey))
            {
                lock (_locker)
                {
                    var bagcache = StackExchangeRedisExtensions.Get <List <RBCreateBag> >(db, CacheKey.BagKey);
                    bagcache.Add(bag);
                    StackExchangeRedisExtensions.Set(db, CacheKey.BagKey, bagcache, 240);
                    var res = rt.InsertBag(bag);
                    if (res > 0)
                    {
                        Code            = "SCCESS";
                        ResponseMessage = "金豆发放成功!";
                    }
                    else
                    {
                        Code            = "ERROR";
                        ResponseMessage = "金豆发放失败!";
                    }
                }
            }
            else
            {
                StackExchangeRedisExtensions.Set(db, CacheKey.BagKey, bag);
                var res = rt.InsertBag(bag);
                if (res > 0)
                {
                    Code            = "SCCESS";
                    ResponseMessage = "金豆发放成功!";
                }
                else
                {
                    Code            = "ERROR";
                    ResponseMessage = "金豆发放失败!";
                }
            }
            return(Ok(new APIResponse <RBCreateBag>
            {
                Code = Code,
                ResponseMessage = ResponseMessage,
                Result = Result
            }));
        }
Exemplo n.º 2
0
        public IHttpActionResult Index()
        {
            #region IOC
            // ISoftSmart.Core.IoC.IoCFactory.Instance.CurrentContainer.RegisterType(typeof(ITestUsers), typeof(UserExtents));//注册接口
            //var rt = ISoftSmart.Core.IoC.IoCFactory.Instance.CurrentContainer.Resolve<ITestUsers>();//使用接口
            //var tt = rt.Test2();//执行SQL返回JSON
            #endregion
            #region Redis
            //var db = RedisManager.Instance.GetDatabase();
            ////var result2 =  (int)RedisManager.Instance.GetDatabase().StringGet("abc123zzl");
            ////StackExchangeRedisExtensions.Set(db, "t", "testtttt");//操作字符
            //var usr = new UserInfo()
            //{
            //    Age = 1,
            //    ID = "2",
            //    Name = "22222"
            //};
            //List<UserInfo> list = new List<UserInfo>();
            //list.Add(usr);//生成一个list
            //StackExchangeRedisExtensions.Set(db, "t", list);//设置值
            //var getDbVal = StackExchangeRedisExtensions.Get<List<UserInfo>>(db, "t");
            //var usr1 = new UserInfo()
            //{
            //    Age = 1,
            //    ID = "33332",
            //    Name = "2222333的2"
            //};
            //getDbVal.Add(usr1);
            //StackExchangeRedisExtensions.Set(db, "t", getDbVal);//设置值
            ////StackExchangeRedisExtensions.Append(db, "t", usr);
            //var getDbVal1 = StackExchangeRedisExtensions.Get(db, "t");
            //var getkey = StackExchangeRedisExtensions.HasKey(db, "t1");
            ////StackExchangeRedisExtensions.Remove(db, "t");

            #endregion
            #region Redis队列
            //RedisQueueManager.Push()
            #endregion

            //var rt = IoCFactory.Instance.CurrentContainer.Resolve<IRedBag>();//注册对象
            //var bag = IoCFactory.Instance.CurrentContainer.Resolve<RBCreateBag>();//注册对象
            //bag = rt.GetBag(bag);


            var db = RedisManager.Instance.GetDatabase();
            if (StackExchangeRedisExtensions.HasKey(db, CacheKey.BagKey))
            {
                var bagcaches = StackExchangeRedisExtensions.Get <RBCreateBag>(db, CacheKey.BagKey);
                return(Ok(new APIResponse <RBCreateBag>
                {
                    Code = "SUCCESS",
                    ResponseMessage = "获取列表成功!",
                    Result = bagcaches
                }));
            }
            else
            {
                var rt  = IoCFactory.Instance.CurrentContainer.Resolve <IRedBag>();     //注册对象
                var bag = IoCFactory.Instance.CurrentContainer.Resolve <RBCreateBag>(); //注册对象
                bag.BagStatus = 0;
                bag           = rt.GetBag(bag);
                if (bag != null)
                {
                    StackExchangeRedisExtensions.Set(db, CacheKey.BagKey, bag);
                    var bagcaches = StackExchangeRedisExtensions.Get <RBCreateBag>(db, CacheKey.BagKey);
                    return(Ok(new APIResponse <RBCreateBag>
                    {
                        Code = "SUCCESS",
                        ResponseMessage = "获取列表成功!",
                        Result = bagcaches
                    }));
                }
                else
                {
                    return(Ok(new APIResponse <RBCreateBag>
                    {
                        Code = "ERROR",
                        ResponseMessage = "红包抢完了!",
                    }));
                }
            }
        }
Exemplo n.º 3
0
        public IHttpActionResult OpenBag(RBCreateBag bag)
        {
            var rt = ISoftSmart.Core.IoC.IoCFactory.Instance.CurrentContainer.Resolve <IRedBag>();//使用接口
            //bag.CreateTime = DateTime.Now;
            //var res = await Task.Run(() =>rt.GetBag(bag));
            var         Code            = string.Empty;
            var         ResponseMessage = string.Empty;
            RBCreateBag Result          = null;

            //Task.Run(() =>
            //{
            bag.CreateTime = DateTime.Now;
            var db = RedisManager.Instance.GetDatabase();

            if (StackExchangeRedisExtensions.HasKey(db, CacheKey.BagKey))
            {
                lock (_locker)
                {
                    var bagcache = StackExchangeRedisExtensions.Get <RBCreateBag>(db, CacheKey.BagKey);
                    if (bagcache.BagNum > 0)
                    {
                        decimal curAmount  = 0;
                        var     openResult = GenerateBag(bagcache, out curAmount);
                        Code            = "SUCCESS";
                        ResponseMessage = "抢到" + curAmount + "元!";
                        Result          = openResult;
                        RedisQueueManager.Push <RBCreateBag>(CacheKey.OpenBagKey, bagcache);
                        StackExchangeRedisExtensions.Set(db, CacheKey.BagKey, bagcache);
                    }
                    else
                    {
                        Code            = "ERROR";
                        ResponseMessage = "红包抢完了!";
                        bag.BagStatus   = 1;
                        //RedisQueueManager.DoQueue<int>((s) =>
                        //{
                        //    rt.ChangeBagStatus(bag);
                        //}, CacheKey.OpenBagKey);
                        rt.ChangeBagStatus(bag);
                        StackExchangeRedisExtensions.Remove(db, CacheKey.BagKey);
                    }
                }
            }
            else
            {
                StackExchangeRedisExtensions.Set(db, CacheKey.BagKey, bag);
            }
            return(Ok(new APIResponse <RBCreateBag>
            {
                Code = Code,
                ResponseMessage = ResponseMessage,
                Result = Result
            }));
            //});
            //return Ok(new APIResponse<RBCreateBag>
            //{
            //    Code = Code,
            //    ResponseMessage = ResponseMessage,
            //    Result = Result
            //});
        }