public async Task <Base_UserDecimal> wxlogins(Login login)
        {
            var url = "https://api.weixin.qq.com/sns/jscode2session?appid=wxa0e02c3ef617fc0c&secret=2f0cb4e82542d5453456108f7b8e615e&js_code=" + login.code + "&grant_type=authorization_code";
            var s   = await Client_Post(url);

            //await GetUsers(s);
            if (s != null)
            {
                var res = await _db.GetIQueryable <Base_UserDecimal>().FirstOrDefaultAsync(p => p.Openid == s);

                if (res == null)
                {
                    Base_UserDecimal base_UserDecimal = new Base_UserDecimal
                    {
                        Openid = s,
                        Name   = login.NickName,
                        data3  = 0,
                        data4  = login.Img,//头像
                        data2  = "2"
                    };
                    InitEntity(base_UserDecimal);
                    int i = await _db.InsertAsync(base_UserDecimal);

                    if (i > 0)
                    {
                        Menu_Servise menu_Servised = new Menu_Servise
                        {
                            // 客户
                            MenuID = "1235",
                            UserID = base_UserDecimal.Id
                        };
                        InitEntity(menu_Servised);
                        await _db.InsertAsync(menu_Servised);
                    }
                    return(base_UserDecimal);
                }
                //else
                //{
                //    if (res.data2 == "3")
                //    {

                //        using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
                //        {
                //            var c = redis.GetDatabase(0);
                //            await c.HashSetAsync(res.Id, "", "", When.Always, CommandFlags.None);
                //        }
                //    }
                return(res);
                // }
            }
            else
            {
                Base_UserDecimal base_UserDecimal = new Base_UserDecimal();
                return(base_UserDecimal);
            }
        }
 public async Task <Object> RemoveUser(Base_UserDecimal base_)
 {
     try
     {
         // result.CloseStatusDescription
         websMiddleware.webUser[base_.Id].Abort();
         websMiddleware.webUser.Remove(base_.Id);
         return(JsonConvert.DeserializeObject("移除成功"));
     }
     catch (Exception)
     {
         throw;
     }
 }
        public async Task SaveData(Base_UserDecimal data)
        {
            if (data.Id.IsNullOrEmpty())
            {
                InitEntity(data);

                await _base_UserDecimalBus.AddDataAsync(data);
            }
            else
            {
                if (data.data2 == "3")
                {
                    var p = await _db.GetIQueryable <Menu_Servise>().FirstOrDefaultAsync(p => p.UserID == data.Id);

                    if (p != null)
                    {
                        await _db.DeleteAsync(p);
                    }


                    Menu_Servise menu_Servised = new Menu_Servise
                    {
                        // 客户
                        MenuID = "1234",
                        UserID = data.Id
                    };
                    InitEntity(menu_Servised);
                    await _db.InsertAsync(menu_Servised);
                }

                else
                {
                    var ps = await _db.GetIQueryable <Menu_Servise>().FirstOrDefaultAsync(p => p.UserID == data.Id);

                    ps.MenuID = "1235";
                    await _db.UpdateAsync(ps);
                }
                await _base_UserDecimalBus.UpdateDataAsync(data);
            }
        }
 public async Task CloseUser(Base_UserDecimal base_)
 {
     websMiddleware.webUser[base_.Id].Abort();
     websMiddleware.webUser.Remove(base_.Id);
 }
        public async Task <Base_UserDecimal> GetAllKefu(Base_UserDecimal UserDecimal)
        {
            var           message = "您好请问您有什么疑问呢?";
            var           sd      = JsonConvert.SerializeObject(message);
            var           aa      = Encoding.Default.GetBytes(sd);
            List <string> test    = new List <string>();

            List <Base_UserDecimal> vs = new List <Base_UserDecimal>();

            if (websMiddleware.webUser.Keys.Count != 0)
            {
                //  test.Add(webServise.webUser.Keys.ToString());
                foreach (var item in websMiddleware.webUser.Keys)
                {
                    test.Add(item);
                }
            }

            for (int i = 0; i < test.Count; i++)
            {
                var users = await _db.GetIQueryable <Base_UserDecimal>().FirstOrDefaultAsync(p => p.Id == test[i] && p.data2 == "3");

                if (users != null)
                {
                    vs.Add(users);
                }
            }

            if (vs.Count == 0)
            {
                Base_UserDecimal ts = new Base_UserDecimal();
                var q = await _db.GetIQueryable <Base_UserDecimal>().Where(p => p.data2 == "3").ToListAsync();

                var t = q.Min(s => s.data3);
                if (t.Equals(0))
                {
                    var s = _db.GetIQueryable <Base_UserDecimal>().FirstOrDefault(p => p.data2 == "3");
                    s.data3 = s.data3 + 1;
                    await _db.UpdateAsync(s);

                    if (!string.IsNullOrWhiteSpace(UserDecimal.UserId))
                    {
                        if (websMiddleware.webUser[UserDecimal.UserId].State == WebSocketState.Open)
                        {
                            await websMiddleware.webUser[UserDecimal.UserId].SendAsync(new ArraySegment <byte>(aa, 0, aa.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                        }
                    }
                    return(s);
                }
                else
                {
                    var s = _db.GetIQueryable <Base_UserDecimal>().FirstOrDefault(p => p.data2 == "3");
                    s.data3 = s.data3 + 1;
                    await _db.UpdateAsync(s);

                    if (!string.IsNullOrWhiteSpace(UserDecimal.UserId))
                    {
                        if (websMiddleware.webUser[UserDecimal.UserId].State == WebSocketState.Open)
                        {
                            await websMiddleware.webUser[UserDecimal.UserId].SendAsync(new ArraySegment <byte>(aa, 0, aa.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                        }
                    }
                    return(s);
                }
            }
            else
            {
                var t      = vs.Min(s => s.data3);
                var res    = vs.FirstOrDefault(s => s.data3 == t);
                var result = _db.GetIQueryable <Base_UserDecimal>().FirstOrDefault(r => r.Id == res.Id);
                result.data3 = result.data3 + 1;


                if (!string.IsNullOrWhiteSpace(UserDecimal.UserId))
                {
                    if (websMiddleware.webUser[UserDecimal.UserId].State == WebSocketState.Open)
                    {
                        await websMiddleware.webUser[UserDecimal.UserId].SendAsync(new ArraySegment <byte>(aa, 0, aa.Length), WebSocketMessageType.Text, true, CancellationToken.None);
                    }
                }
                await _db.UpdateAsync(result);

                return
                    (res);
            }
        }
        public async Task <string> GetUsersd(Base_UserDecimal UserDecimal)
        {
            //获取在线客服
            try
            {
                List <Base_UserDecimal> vs = new List <Base_UserDecimal>();

                // webServise.webUser.Add("1306422215759106048", webSocket);
                List <string> test = new List <string>();
                if (websMiddleware.webUser.Keys.Count != 0)
                {
                    //  test.Add(webServise.webUser.Keys.ToString());
                    foreach (var item in websMiddleware.webUser.Keys)
                    {
                        test.Add(item);
                    }
                }

                for (int i = 0; i < test.Count; i++)
                {
                    var users = await _db.GetIQueryable <Base_UserDecimal>().FirstOrDefaultAsync(p => p.Id == test[i] && p.data2 == "3");

                    if (users != null)
                    {
                        vs.Add(users);
                    }
                }
                //foreach (var item in webServise.webUser)
                //{
                //    var usid = item.Key;
                //    var users = await _db.GetIQueryable<Base_UserDecimal>().FirstOrDefaultAsync(p => p.Id == usid && p.data2 == "3");
                //    if (users != null)
                //    {
                //        vs.Add(users);
                //    }
                //   }


                using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
                {
                    var c = redis.GetDatabase(0);
                    if (vs.Count == 0)
                    {
                        var users = await _db.GetIQueryable <Base_UserDecimal>().FirstOrDefaultAsync(p => p.Id != null && p.data2 == "3");

                        await c.HashSetAsync(users.Id, UserDecimal.Id, DateTime.Now.ToString(), When.Always, CommandFlags.None);

                        var resd = new
                        {
                            have = "1",
                            Id   = users.Id,
                            msg  = users.Name
                        };

                        return(resd.ToJson());
                    }



                    List <Demolist> vs1 = new List <Demolist>();

                    //获取这个客服
                    foreach (var item in vs)
                    {
                        var count = c.HashGetAll(item.Id);
                        //获取这个客服下的客户数量
                        List <Object> demolist = new List <Object>();
                        if (count.Length == 0)
                        {
                            await c.HashSetAsync(item.Id, UserDecimal.Id, DateTime.Now.ToString(), When.Always, CommandFlags.None);

                            var resd = new
                            {
                                have = "1",
                                Id   = item.Id,
                                msg  = item.Name
                            };
                            return(resd.ToJson());
                        }
                        else
                        {
                            foreach (var items in count)
                            {
                                var pw = items.ToString();
                                //  var hashmodel = JsonConvert.DeserializeObject(pw);
                                if (items != null)
                                {
                                    demolist.Add(items);
                                }
                            }
                            //客户对应的数量

                            vs1.Add(new Demolist
                            {
                                Name  = item.Name,
                                Id    = item.Id,
                                Count = demolist.Count
                            });
                        }
                    }


                    var pd = vs1.Min(t => t.Count);
                    var p  = vs1.FirstOrDefault(s => s.Count == pd);
                    await c.HashSetAsync(p.Id, UserDecimal.Id, DateTime.Now.ToString(), When.Always, CommandFlags.None);

                    var res = new
                    {
                        have = "1",
                        Id   = p.Id,
                        msg  = p.Name
                    };

                    return(res.ToJson());
                }



                //   await c.HashSetAsync(message.ReceiveId, message.SendId, message.SendId, When.Always, CommandFlags.None);
            }
            catch (Exception ex)
            {
                throw;
            }
        }