Пример #1
0
        /// <summary>
        /// 持久化Redis Token
        /// </summary>
        /// <param name="userID">The user identifier.</param>
        /// <param name="rememberPassword">if set to <c>true</c> [remember password].</param>
        /// <returns></returns>
        /// 时间:2018/1/17
        /// 修改:李允智
        private string GenerateAndStoreToken(string userID, bool rememberPassword)
        {
            var    redis = this.RedisProvider.GetDatabase();
            string token = EncryptHelper.EncryptMD5(Guid.NewGuid().ToString());
            string key   = RedisKeys.GetTokenCacheKey(token);

            redis.StringSet(key, userID);
            if (!rememberPassword)
            {
                redis.KeyExpire(key, DateTime.Now.AddDays(7));
            }
            else
            {
                redis.KeyExpire(key, DateTime.Now.AddDays(30));
            }

            //用户信息是写到Redis里的
            string userToken = TOKEN_KEY + userID;
            var    user      = redis.JsonGet <UserModel>(userToken);

            if (user == null)
            {
                UserModel _user = new UserModel();
                _user.UserName = userID;
                _user.Avatar   = DashboardConfig.DefaultAvatar;
                _user.Sex      = SexType.female;
                _user.NickName = userID;
                redis.StringSetAsync(userToken, JsonConvert.SerializeObject(_user));
            }
            return(token);
        }
Пример #2
0
 public HttpResponseMessage GetRechargeOrder([FromBody] CC_Order order)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCRechargeOrder(order.CustomerID);
         var result = db.SelectListQueue <CC_Order>(key);
         if (result.CustomerID.IsNullStr())
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_Order>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #3
0
 public HttpResponseMessage GetOrderSend([FromBody] CC_OrderSend OrderSend)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCOrderSend(OrderSend.CustomerID);
         var result = db.SelectListQueue <CC_OrderSend>(key);
         if (result.CustomerID.IsNullStr() || result.ConfigData == null || result.OrderSendData == null)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_OrderSend>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #4
0
 public HttpResponseMessage GetConnection([FromBody] CC_Connection connection)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCConnectionKey(connection.CustomerID);
         var result = db.SelectString <CC_Connection>(key);
         if (result.Customer_Name.IsNullStr() || result.ConnectionStr.IsNullStr())
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_Connection>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #5
0
 public HttpResponseMessage GetBasicSetting([FromBody] CC_BasicSetting basicSetting)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCBasicSetting(basicSetting.CustomerId);
         var result = db.SelectString <CC_BasicSetting>(key);
         if (result.CustomerId.IsNullStr() || result.SettingList.Count <= 0)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_BasicSetting>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #6
0
        /// <summary>
        /// 添加一条消息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task Add(AddMessageModel model)
        {
            long messageID;

            using (var uw = this.CreateUnitOfWork())
            {
                var entity = new Message
                {
                    CommentID  = model.Comment,
                    CreateDate = DateTime.Now,
                    FromUserID = model.FromUser,
                    TopicID    = model.Topic,
                    ToUserID   = model.ToUser,
                    Type       = model.Type
                };

                await uw.InsertAsync(entity);

                messageID = entity.ID;
            }

            var    redis = this.RedisProvider.GetDatabase();
            string key   = RedisKeys.GetUserMessageCacheKey(model.ToUser);

            await redis.SetAddAsync(key, messageID);
        }
        public async Task <bool> AddServer(Server server)
        {
            var database    = _connectionMultiplexer.GetDatabase();
            var redisResult = await database.ScriptEvaluateAsync(
                _addServerScript,
                parameters : new
            {
                serverKey        = RedisKeys.Servers(server.Secret),
                serversByCodeKey = RedisKeys.ServersByCode,
                publicServersByPlayerCountKey = RedisKeys.PublicServersByPlayerCount,
                hostUserId                = (RedisValue)server.Host.UserId,
                hostUserName              = (RedisValue)server.Host.UserName,
                remoteEndPoint            = (RedisValue)server.RemoteEndPoint.ToString(),
                secret                    = (RedisValue)server.Secret,
                code                      = (RedisValue)server.Code,
                isPublic                  = (RedisValue)server.IsPublic,
                discoveryPolicy           = (RedisValue)(int)server.DiscoveryPolicy,
                invitePolicy              = (RedisValue)(int)server.InvitePolicy,
                beatmapDifficultyMask     = (RedisValue)(int)server.BeatmapDifficultyMask,
                gameplayModifiersMask     = (RedisValue)(int)server.GameplayModifiersMask,
                songPackBloomFilterTop    = (RedisValue)server.SongPackBloomFilterTop,
                songPackBloomFilterBottom = (RedisValue)server.SongPackBloomFilterBottom,
                currentPlayerCount        = (RedisValue)server.CurrentPlayerCount,
                maximumPlayerCount        = (RedisValue)server.MaximumPlayerCount,
                random                    = (RedisValue)server.Random,
                publicKey                 = (RedisValue)server.PublicKey
            },
                flags : CommandFlags.DemandMaster
                );

            return((bool)redisResult);
        }
Пример #8
0
 public HttpResponseMessage GetRole([FromBody] CC_Role role)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCMenuRoleKey(role.CustomerID, role.RoleID);
         var result = db.SelectString <CC_Role>(key);
         if (result.RoleID.IsNullStr() || result.MenuList.Count <= 0)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_Role>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #9
0
        public async Task <List <string> > GetLogsAsync(string id, int page, int count)
        {
            var key = RedisKeys.SentryList(SentryEnum.Log, id);

            var l = await _redis.ListLengthAsync(key);

            if (l < 1)
            {
                return(new List <string>());
            }

            var s = l - count * page;

            if (s < 1)
            {
                return(new List <string>());
            }

            var e = l - count * (page - 1);

            if (e < 0)
            {
                e = 0;
            }

            var r = await _redis.ListRangeAsync(
                key,
                l - count *page,
                l - count *(page - 1)
                );

            return(r.Select(x => x.ToString()).ToList());
        }
 public HttpResponseMessage GetSuperRetailTraderOrder([FromBody] CC_Order Order)
 {
     try
     {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCSuperRetailTraderOrder(Order.CustomerID);
         var result = db.SelectListQueue <CC_Order>(key);  //队列按照先进先出的原则,左边进右边出
         if (result.CustomerID.IsNullStr() || result.LogSession == null || result.OrderInfo == null)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
             {
                 Code = ResponseCode.DataNotFound,
                 Message = "success"
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel <CC_Order>
         {
             Code = ResponseCode.Success,
             Message = "success",
             Result = result
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #11
0
        /// <summary>
        /// 查询未读消息数目
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public long QueryUnreadCount(long userID)
        {
            var    redis = this.RedisProvider.GetDatabase();
            string key   = RedisKeys.GetUserMessageCacheKey(userID);

            return(redis.SetLength(key));
        }
Пример #12
0
 public void LogOut()
 {
     if (this.SecurityManager.Token != null)
     {
         var    database = this.RedisProvider.GetDatabase();
         string key      = RedisKeys.GetTokenCacheKey(SecurityManager.Token);
         database.KeyDelete(key);
     }
 }
        public Task AddAssetPairPriceAsync(AssetPairPrice assetPair)
        {
            var tasks = new List <Task>
            {
                _database.HashSetAsync(RedisKeys.GetMarketProfileKey(assetPair.AssetPair), assetPair.ToHashEntries()),
                _database.SetAddAsync(RedisKeys.GetAssetPairsKey(), assetPair.AssetPair)
            };

            return(Task.WhenAll(tasks));
        }
Пример #14
0
        public CancellationTokenSource StartLogs(DockerClient client,
                                                 string id,
                                                 Action <string, string, long> backCall = null)
        {
            var cancellationTokenSource = new CancellationTokenSource();
            var progress = new Progress <string>();
            var queue    = new ConcurrentQueue <string>();
            var key      = RedisKeys.SentryList(SentryEnum.Log, id);

            // 重置这个redis
            _redis.KeyDelete(key);

            progress.ProgressChanged += (obj, message) =>
            {
                queue.Enqueue(message);
            };

            _ = Task.Run(async() =>  // 每 5ms 存储一次
            {
                while (true)
                {
                    if (queue.TryDequeue(out var message))
                    {
                        var rule = "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{9}Z";
                        var time = Regex.Matches(message, rule)[0].Value;
                        var v    = message.Split(new[] { time }, StringSplitOptions.None)[1]
                                   .Replace("\u001b[40m\u001b[1m\u001b[33mwarn\u001b[39m\u001b[22m\u001b[49m:", "[warn]")
                                   .Replace("\u001B[41m\u001B[30mfail\u001B[39m\u001B[22m\u001B[49m", "[fail]");
                        var l = _redis.ListRightPush(key, new { time, log = v });
                        if (backCall != null)
                        {
                            backCall(id, v, l);
                        }
                    }
                    await Task.Delay(5);
                }
            }, cancellationTokenSource.Token);

            _ = client.Containers.GetContainerLogsAsync(
                id,
                new ContainerLogsParameters
            {
                // as the error said, you have to choose one stream either stdout or stderr. If you don't input any of these option to be true, it would panic.
                ShowStdout = true,
                ShowStderr = true,
                Timestamps = true,
                Follow     = true
            },
                cancellationTokenSource.Token,
                progress
                );

            return(cancellationTokenSource);
        }
Пример #15
0
        private static void PushEntities()
        {
            Console.WriteLine($"How much Entities to push in queue: ");
            var targets = _TargetService.InitializeTargets(Int32.Parse(Console.ReadLine()));

            foreach (var target in targets)
            {
                var targetJson = JsonConvert.SerializeObject(target);

                _RedisService.RightPush(RedisKeys.ListTargetsKey(), targetJson);
            }
        }
Пример #16
0
        public HttpResponseMessage SetCouponList([FromBody] CC_Coupon couponData)
        {
            try
            {
                var db  = new RedisOperation(_RedisDB);
                var key = RedisKeys.CCCouponKey(couponData.CustomerId, couponData.CouponTypeId);
                //
                var coupons = new List <CC_Coupon>();
                for (var i = 0; i < couponData.CouponLenth; i++)
                {
                    coupons.Add(couponData.DeepClone());
                }
                //
                var total = couponData.CouponLenth;
                var limit = 100;
                var start = 0;

                //
                do
                {
                    //
                    var models = coupons.Skip(start).Take(limit).ToList();

                    //
                    db.InsertListQueueBatch <CC_Coupon>(key, models);

                    //
                    if (start < (total - limit))
                    {
                        start = start + limit;
                    }
                    else
                    {
                        start = total;
                    }
                }while (start < total);
                return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
                {
                    Code = ResponseCode.Success,
                    Message = "success"
                }));
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
                {
                    Code = ResponseCode.Fail,
                    Message = "fail:" + ex.Message
                }));
            }
        }
        public void UpdateCurrentPlayerCount(string secret, int currentPlayerCount)
        {
            var database = _connectionMultiplexer.GetDatabase();

            database.ScriptEvaluate(
                _updateCurrentPlayerCountScript,
                parameters: new
            {
                serverKey          = RedisKeys.Servers(secret),
                currentPlayerCount = (RedisValue)currentPlayerCount
            },
                flags: CommandFlags.DemandMaster | CommandFlags.FireAndForget
                );
        }
        public async Task <Server> GetServer(string secret)
        {
            var database    = _connectionMultiplexer.GetDatabase();
            var hashEntries = await database.HashGetAllAsync(RedisKeys.Servers(secret));

            if (!hashEntries.Any())
            {
                return(null);
            }
            var server = GetServerFromHashEntries(hashEntries);

            server.Secret = secret;
            return(server);
        }
        public async Task <bool> RemoveServer(string secret)
        {
            var database    = _connectionMultiplexer.GetDatabase();
            var redisResult = await database.ScriptEvaluateAsync(
                _removeServerScript,
                parameters : new
            {
                serverKey        = RedisKeys.Servers(secret),
                serversByCodeKey = RedisKeys.ServersByCode,
                publicServersByPlayerCountKey = RedisKeys.PublicServersByPlayerCount,
                secret = (RedisValue)secret
            },
                flags : CommandFlags.DemandMaster
                );

            return((bool)redisResult);
        }
Пример #20
0
        /// <summary>
        /// 加载用户信息
        /// </summary>
        /// 时间:2018/1/17
        /// 修改:李允智
        private void LoadUser()
        {
            this.InitToken();
            if (string.IsNullOrWhiteSpace(this.Token))
            {
                return;
            }

            var    redis    = this.RedisProvider.GetDatabase();
            string tokenKey = RedisKeys.GetTokenCacheKey(this.Token);
            var    id       = redis.StringGet(tokenKey);

            if (id.HasValue)
            {
                var oaAuthService = this.ServiceProvider.GetService <OAAuthService>();
                _user = oaAuthService.Get(id.ToString());
            }
        }
Пример #21
0
 public HttpResponseMessage SetActivityVipId([FromBody] ActivityVipMapping data)
 {
     try {
         var db     = new RedisOperation(_RedisDB);
         var key    = RedisKeys.CCActivity(data.CustomerId, data.ActivityId);
         var result = db.InsertSet(key, data.VipId);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex) {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #22
0
        private string GenerateAndStoreToken(long userID, bool rememberPassword)
        {
            var    database = this.RedisProvider.GetDatabase();
            string token    = EncryptHelper.EncryptMD5(Guid.NewGuid().ToString());
            string key      = RedisKeys.GetTokenCacheKey(token);

            database.StringSet(key, userID.ToString());
            if (!rememberPassword)
            {
                database.KeyExpire(key, DateTime.Now.AddDays(7));
            }
            else
            {
                database.KeyExpire(key, DateTime.Now.AddDays(30));
            }

            return(token);
        }
Пример #23
0
        /// <summary>
        /// 将消息标记为已读
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="idList"></param>
        /// <returns></returns>
        public async Task MarkAsRead(long userID, long[] idList)
        {
            if (idList.Length == 0)
            {
                return;
            }

            using (var uw = this.CreateUnitOfWork())
            {
                await uw.CreateRepository <IMessageRepository>().MarkAsRead(userID, idList);
            }

            var redis = this.RedisProvider.GetDatabase();

            RedisValue[] values = idList.Select(t => (RedisValue)t).ToArray();
            string       key    = RedisKeys.GetUserMessageCacheKey(userID);

            await redis.SetRemoveAsync(key, values);
        }
Пример #24
0
        private void LoadUser()
        {
            this.InitToken();
            if (string.IsNullOrWhiteSpace(this.Token))
            {
                return;
            }

            var    redis    = this.RedisProvider.GetDatabase();
            string tokenKey = RedisKeys.GetTokenCacheKey(this.Token);
            var    id       = redis.StringGet(tokenKey);

            if (id.HasValue)
            {
                _userID = Convert.ToInt64(id);

                var userService = this.ServiceProvider.GetService <UserService>();

                _user = userService.Get(Convert.ToInt64(id));
            }
        }
Пример #25
0
 public HttpResponseMessage SetOrderSend([FromBody] CC_OrderSend OrderSend)
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCOrderSend(OrderSend.CustomerID);
         db.InsertListQueue(key, OrderSend);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #26
0
 public HttpResponseMessage DeleteContactList([FromBody] CC_Contact Contact)
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCContactKey(Contact.CustomerId);
         db.Delete(key);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #27
0
 public HttpResponseMessage DeleteSalesCardOrderList([FromBody] CC_Order order)
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCSalesCardOrder(order.CustomerID);
         db.Delete(key);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #28
0
 public HttpResponseMessage DelRole([FromBody] CC_Role role)
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCMenuRoleKey(role.CustomerID, role.RoleID);
         db.DeleteString(key);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #29
0
 public HttpResponseMessage SetOrderReward([FromBody] CC_OrderReward OrderReward)  //调用的地方传过来的是json字符串,默认就转化过来了
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCOrderReward(OrderReward.CustomerID); //获取相关的键
         db.InsertListQueue(key, OrderReward);                      //插入数据
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }
Пример #30
0
 public HttpResponseMessage SetVipMappingCoupon([FromBody] CC_VipMappingCoupon VipMappingCoupon)
 {
     try
     {
         var db  = new RedisOperation(_RedisDB);
         var key = RedisKeys.CCVipMappingCouponKey(VipMappingCoupon.CustomerId);
         db.InsertListQueue(key, VipMappingCoupon);
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Success,
             Message = "success"
         }));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseModel
         {
             Code = ResponseCode.Fail,
             Message = "fail:" + ex.Message
         }));
     }
 }