using Common.Models.UnqTables; using CsharpHttpHelper; using Newtonsoft.Json; using Server.MyClass.Class; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; using Common.DbExtends.Extends; using Common.Models.Enums; using Common.Models.JsonModels; namespace Server.Controllers.OpenManagement { public class OpenController:DefaultController { public class Slider { public bool sliderSuccessed { get; set; } public int y { get; set; } public string src { get; set; } public bool sliderVisible { get; set; } public int sliderMx { get; set; } } /// /// 登录接口 /// /// [HttpPost, ErrorFilter] public WebResult Login() { var Username = GetString("Username",true); var Password = GetString("Password",true); var user = Db.Queryable().Where(f=>f.Username == Username).First(); if (user == null || Password != user.Password) { return PutData("登录失败,用户名或密码错误!"); } if (Client.OnlineUsers.ContainsKey(user.Id)) { if (!Client.OnlineUsers.TryRemove(user.Id, out var oldUser)) { return PutError; } } var session = new UserSession(user); session.IsCreator = user.IsCreator; if (!Client.OnlineUsers.TryAdd(user.Id, session)) { return PutError; } return PutData(session); } /// /// 背景图 /// private static readonly List bgs = new List() { "/imgs/clouds.jpg", "/imgs/leafs.jpg", "/imgs/moon.jpg", "/imgs/mountains.jpg", "/imgs/rocks.jpg" }; /// /// 登录接口 /// /// [HttpPost, ErrorFilter] public WebResult GetCaptch() { Random random = new Random(); var slider = new Slider() { sliderSuccessed = false, sliderMx = random.Next(130, 230), y = random.Next(10,99), sliderVisible = true, src = bgs[random.Next(0,bgs.Count - 1)] }; var base64Str = HttpExtend.StringToBase64String(JsonConvert.SerializeObject(slider)); var Id = Guid.NewGuid().ToString("N"); Client.Cache.Add(Id, slider, 60*2); return PutData(new {Id = Id, Data = base64Str }); } /// /// 登录接口 /// /// [HttpPost, ErrorFilter] public WebResult CheckCaptch() { var Id = GetString("Id", true); var time = GetDouble("Time", true); var X = GetInt("X", true); try { var target = Client.Cache.Get(Id); var min = target.sliderMx - 10; var max = target.sliderMx + 10; time = time / 1000; if (X > min && X < max) { if (time < 0.5) { return PutData("哎呀,手速太快啦"); } else if (time > 5) { return PutData("哎呀,手速太慢啦"); } else { return PutSuccess; } } else { return PutData("出现错误"); } } catch (Exception ) { return PutError; } } /// /// 退出登录 /// [HttpPost, ErrorFilter] public WebResult Logout() { if (Session != null) { if (!Client.OnlineUsers.TryRemove(Session.Uid, out _)) { return PutError; } } return PutSuccess; } /// /// 获取网站信息 /// /// [HttpPost, ErrorFilter] public WebResult GetWebInfo() { return PutData(Db.GetMapValue("WebInfo", () => null)); } } }