• R-MS


    //1.获取秒杀商品信息的接口
            public ProductInfo GetProduct(int productId)
            {
                ProductInfo productInfo = new ProductInfo();
                productInfo.PId = 1;
                productInfo.PName = "Iphone11 Pro Max";
                productInfo.PImg = @"";
                productInfo.SalePrice = 12999;
                productInfo.KillPrice = 9999;
                productInfo.KillBeginTime = DateTime.Now.AddMinutes(-30);//开始时间减30分钟
                productInfo.KillEndTime = DateTime.Now.AddMinutes(1);
                productInfo.KillCount = 150;
                //把秒杀的库存写入Redis里
                SetRedisValue("KillCount" + productInfo.PId, "150");
                return productInfo;
            }
            //2.秒杀下单
            public int KillAddOrder(OrderInfo info)
            {
                //res的返回值表示
                //1.下单成功
                //2.库存不足
                //3.三分钟内只能点一次
                int res = 0;
                //同一个用户在规定时间内只能点一次
                var UserKillTime = GetRedisValue("UserId" + info.UserId);
                if (!string.IsNullOrEmpty(UserKillTime))
                {
                    //此处表示用户不是第一次下单
                    DateTime dateTime = Convert.ToDateTime(UserKillTime);
                    var tmpValue = DateTime.Now - dateTime;
                    if (tmpValue.TotalMilliseconds < 3)
                    {
                        //用户三分钟内只能点一次
                        res = 3;
                        return res;
                    }
                    SetRedisValue("UserId" + info.UserId, DateTime.Now.ToString());
                }
                else
                {
                    //此处表示用户是第一次点击
                    SetRedisValue("UserId" + info.UserId, DateTime.Now.ToString());
                    //判断商品库存够不够
                    var count = Convert.ToInt32(GetRedisValue("KillCount-" + info.PId));
                    if (count > 0)
                    {
                        count = count - 1;
                        SetRedisValue("KillCount-" + info.PId, count.ToString());
                    }
                    else
                    {
                        res = 2;
                        return res;
                    }
                }
                return res;
            }
            /// <summary>
            /// 写入redis的值
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            private void SetRedisValue(string key, string value)
            {
                RedisClient redisClient = new RedisClient("127.0.0.1");
                redisClient.Set<string>(key, value);
            }
            /// <summary>
            /// 读取redis的值
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            private string GetRedisValue(string key)
            {
                RedisClient redisClient = new RedisClient("127.0.0.1");
                return redisClient.Get<string>(key);
            }
        }

  • 相关阅读:
    Yii Listview 更新及搜索
    Yii框架CGridView columns中使用数组或变量传值
    冲刺七天---05
    冲刺七天---04
    爱心图书剧本描述
    冲刺七天----03
    冲刺七天---02
    冲刺七天---01
    PSP周总结03
    psp周总结02
  • 原文地址:https://www.cnblogs.com/gc1229/p/13197242.html
Copyright © 2020-2023  润新知