160 lines
4.6 KiB
C#
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));
|
|
}
|
|
|
|
}
|
|
}
|