yz_server/Server/Controllers/OpenManagement/OpenController.cs

160 lines
4.6 KiB
C#

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; }
}
/// <summary>
/// 登录接口
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult Login()
{
var Username = GetString("Username",true);
var Password = GetString("Password",true);
var user = Db.Queryable<Staff>().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);
}
/// <summary>
/// 背景图
/// </summary>
private static readonly List<string> bgs = new List<string>() { "/imgs/clouds.jpg", "/imgs/leafs.jpg", "/imgs/moon.jpg", "/imgs/mountains.jpg", "/imgs/rocks.jpg" };
/// <summary>
/// 登录接口
/// </summary>
/// <returns></returns>
[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 });
}
/// <summary>
/// 登录接口
/// </summary>
/// <returns></returns>
[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<Slider>(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;
}
}
/// <summary>
/// 退出登录
/// </summary>
[HttpPost, ErrorFilter]
public WebResult Logout()
{
if (Session != null)
{
if (!Client.OnlineUsers.TryRemove(Session.Uid, out _))
{
return PutError;
}
}
return PutSuccess;
}
/// <summary>
/// 获取网站信息
/// </summary>
/// <returns></returns>
[HttpPost, ErrorFilter]
public WebResult GetWebInfo()
{
return PutData(Db.GetMapValue<WebInfo>("WebInfo", () => null));
}
}
}