546 lines
22 KiB
C#
546 lines
22 KiB
C#
using Models;
|
||
using Models.ModelItems;
|
||
using Services.Api;
|
||
using Services.Manager;
|
||
using Services.Tool;
|
||
using StackExchange.Redis;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Security.Cryptography;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Web;
|
||
using System.Web.Mvc;
|
||
using System.Web.UI.WebControls;
|
||
using static Services.Tool.HttpRequestHelp;
|
||
using static System.Runtime.CompilerServices.RuntimeHelpers;
|
||
|
||
namespace UI.Controllers
|
||
{
|
||
//给第三方调用的Api
|
||
public class OtherApiController : Controller
|
||
{
|
||
|
||
[HttpPost]
|
||
[Route("OTApi/SynAuthority")]
|
||
public ActionResult Synchronization()
|
||
{
|
||
ApiController api = new ApiController();
|
||
return api.Clear2();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 登录
|
||
/// </summary>
|
||
/// <param name="Uid"></param>
|
||
/// <param name="Pwd"></param>
|
||
/// <param name="appid"></param>
|
||
/// <param name="Ip"></param>
|
||
/// <param name="moreLogin">是否多点登录</param>
|
||
/// <param name="UserAgent"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OTApi/Login")]
|
||
public ActionResult Index(string Uid, string Pwd, int appid, string Ip = "", bool moreLogin = false, string UserAgent = "")
|
||
{
|
||
var resdata = new ReturnResult<dynamic>();
|
||
try
|
||
{
|
||
Ip = Ip == "" ? IPHelper.GetIP() : Ip;
|
||
var res = OTApi.GetUserLoginByApi(Uid, Pwd, appid);
|
||
DbLog log = new DbLog() { Uid = Uid, Ip = Ip, Client = UserAgent == "" ? HttpContext.Request.UserAgent : UserAgent };
|
||
var Message = res.Message;
|
||
Task.Run(() =>
|
||
{
|
||
Data loc = HttpRequestHelp.GetIp($@"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={log.Ip}&co=&resource_id=6006&oe=utf8");
|
||
if (loc != null && loc.status == 0)
|
||
{
|
||
if (loc.data.Count > 0)
|
||
{
|
||
log.location = loc.data[0].location;
|
||
}
|
||
}
|
||
DbLogServer.WriteDbLog($"{Uid}请求应用 {Message[3]}({appid}) 授权" + (res.Status == 200 ? "请求成功~" : "请求失败~"), 0, log);
|
||
if (res.Status == 200)
|
||
DBlog.WirtDB(Message[2], Message[0], appid);
|
||
res.Message = "请求成功~";
|
||
});
|
||
resdata.Status = res.Status;
|
||
if (res.Status == 200)
|
||
{
|
||
var token = (Uid + Pwd + DateTime.Now);
|
||
var md5 = new MD5CryptoServiceProvider();
|
||
token = (BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(token)), 4, 8)).Replace("-", "");
|
||
if (moreLogin == true)
|
||
{
|
||
StackChangeRedisHelper.StringSet(token, new UserInfo() { Pwd = Pwd, Uid = Uid }, TimeSpan.FromMinutes(20));
|
||
}
|
||
resdata.Data = new
|
||
{
|
||
Userinfo = new
|
||
{
|
||
Uid = Uid,
|
||
HeadImg = Message[1]
|
||
},
|
||
HotelData = res.Data,
|
||
Token = moreLogin ? token : string.Empty
|
||
};
|
||
resdata.Message = "请求成功~";
|
||
}
|
||
else
|
||
resdata.Message = res.Message;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resdata.Data = "";
|
||
resdata.Status = 500;
|
||
resdata.Message = ex.Message;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
return Json(resdata);
|
||
}
|
||
[HttpPost]
|
||
[Route("OTApi/Apps")]
|
||
public ActionResult Apps(string Uid, int appid = 0, string Ip = "", string UserAgent = "")
|
||
{
|
||
var resdata = new ReturnResult<dynamic>();
|
||
var app = new ApplicationDomain() { AppName = "全部", Id = appid };
|
||
if (appid != 0)
|
||
{
|
||
app = Services.Cache.CacheHelp.cacheSysApp.FirstOrDefault(x => x.Id == appid);
|
||
}
|
||
try
|
||
{
|
||
DbLog log = new DbLog() { Uid = Uid, Ip = Ip == "" ? IPHelper.GetIP() : Ip, Client = UserAgent == "" ? HttpContext.Request.UserAgent : UserAgent };
|
||
var user = Services.Cache.CacheHelp.cacheSysUserInfo.FirstOrDefault(x => x.Uid == Uid);
|
||
if (user == null || app == null)
|
||
{
|
||
new ApplicationDomain() { AppName = "全部", Id = appid };
|
||
resdata.Status = 100;
|
||
resdata.Message = "用户或app不存在~";
|
||
resdata.Data = string.Empty;
|
||
}
|
||
else
|
||
{
|
||
//返回 查询的app 正常的权限
|
||
resdata.Data = AppServer.GetAppInfo(appid, 0, 1, false);
|
||
resdata.Status = 200;
|
||
}
|
||
Task.Run(() =>
|
||
{
|
||
Data loc = HttpRequestHelp.GetIp($@"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={log.Ip}&co=&resource_id=6006&oe=utf8");
|
||
if (loc.status == 0)
|
||
{
|
||
if (loc.data.Count > 0)
|
||
{
|
||
log.location = loc.data[0].location;
|
||
}
|
||
}
|
||
DbLogServer.WriteDbLog($"{Uid}查询 {app.AppName} App信息 {(resdata.Status == 200 ? "成功" : "失败")}", 0, log);
|
||
});
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resdata.Status = 500;
|
||
resdata.Data = "";
|
||
resdata.Message = ex.Message;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
return Json(resdata);
|
||
}
|
||
/// <summary>
|
||
/// 全局登录 退出登录 通过链接点入无法登录
|
||
/// </summary>
|
||
/// <param name="Token"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OTApi/OutLogin")]
|
||
public ActionResult OutLogin(string Token, string Ip, bool IsNew = false)
|
||
{
|
||
var resdata = new ReturnResult<dynamic>();
|
||
try
|
||
{
|
||
var userinfo = StackChangeRedisHelper.StringGet<UserInfo>(Token);
|
||
if (IsNew)
|
||
{
|
||
Ip = Ip == "" ? IPHelper.GetIP() : Ip;
|
||
if (userinfo == default(UserInfo))
|
||
{
|
||
resdata.Status = 100;
|
||
resdata.Data = "";
|
||
return Json(resdata);
|
||
}
|
||
var token = (userinfo.Uid + userinfo.Pwd + DateTime.Now);
|
||
var md5 = new MD5CryptoServiceProvider();
|
||
token = (BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(token)), 4, 8)).Replace("-", "");
|
||
StackChangeRedisHelper.StringSet(token, userinfo);
|
||
resdata.Data = new { Token = token };
|
||
resdata.Status = 200;
|
||
}
|
||
StackChangeRedisHelper.StringSet(Token, userinfo, TimeSpan.FromSeconds(10));
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resdata.Data = "";
|
||
resdata.Status = 500;
|
||
resdata.Message = ex.Message;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
return Json(resdata);
|
||
}
|
||
/// <summary>
|
||
/// 全局登录 登录 通过链接点入登录 返回用户信息
|
||
/// </summary>
|
||
/// <param name="Token"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OTApi/MoreLogin")]
|
||
public ActionResult MoreLogin(string Token, int appid, string Ip = "", string UserAgent = "", bool IsData = true)
|
||
{
|
||
var resdata = new ReturnResult<dynamic>();
|
||
try
|
||
{
|
||
Logs.WriteTimingUDPLog($"传入token {Token}");
|
||
Ip = Ip == "" ? IPHelper.GetIP() : Ip;
|
||
var userinfo = StackChangeRedisHelper.StringGet<UserInfo>(Token);
|
||
StackChangeRedisHelper.RemoveKey(Token);
|
||
if (userinfo == default(UserInfo))
|
||
{
|
||
if (IsData == false)
|
||
{
|
||
resdata.Status = 200;
|
||
resdata.Message = "清除成功~";
|
||
return Json(resdata);
|
||
}
|
||
resdata.Status = 100;
|
||
resdata.Message = "无效凭证~";
|
||
return Json(resdata);
|
||
}
|
||
var res = OTApi.GetUserLoginByApi(userinfo.Uid, userinfo.Pwd, appid);
|
||
DbLog log = new DbLog() { Uid = userinfo.Uid, Ip = Ip == "" ? IPHelper.GetIP() : Ip, Client = UserAgent == "" ? HttpContext.Request.UserAgent : UserAgent };
|
||
var Message = res.Message;
|
||
Task.Run(() =>
|
||
{
|
||
Data loc = HttpRequestHelp.GetIp($@"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={log.Ip}&co=&resource_id=6006&oe=utf8");
|
||
if (loc.status == 0)
|
||
{
|
||
if (loc.data.Count > 0)
|
||
{
|
||
log.location = loc.data[0].location;
|
||
}
|
||
}
|
||
DbLogServer.WriteDbLog($"{userinfo.Uid}请求应用 {Message[3]}({appid}) 授权" + (res.Status == 200 ? "请求成功~" : "请求失败~"), 0, log);
|
||
if (res.Status == 200)
|
||
DBlog.WirtDB(Message[2], Message[0], appid);
|
||
res.Message = "请求成功~";
|
||
//AppServer.AddDown(appid, 1);
|
||
});
|
||
resdata.Status = res.Status;
|
||
if (res.Status == 200)
|
||
{
|
||
resdata.Data = new
|
||
{
|
||
Userinfo = new
|
||
{
|
||
Uid = userinfo.Uid,
|
||
HeadImg = Message[1]
|
||
},
|
||
HotelData = res.Data
|
||
};
|
||
resdata.Message = "请求成功~";
|
||
}
|
||
else
|
||
resdata.Message = res.Message;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resdata.Data = null;
|
||
resdata.Status = 500;
|
||
resdata.Message = ex.Message;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
return Json(resdata);
|
||
}
|
||
[HttpPost]
|
||
#region 下载量统计
|
||
[Route("OTApi/AppDownSum")]
|
||
public ActionResult DownSum(int appid = 0, string Token = "", string Ip = "", string UserAgent = "", int sum = 1)
|
||
{
|
||
var resdata = new ReturnResult<dynamic>();
|
||
var app = new ApplicationDomain() { AppName = "全部", Id = appid };
|
||
if (appid != 0)
|
||
{
|
||
app = Services.Cache.CacheHelp.cacheSysApp.FirstOrDefault(x => x.Id == appid);
|
||
}
|
||
try
|
||
{
|
||
DbLog log = new DbLog() { Ip = Ip == "" ? IPHelper.GetIP() : Ip, Client = UserAgent == "" ? HttpContext.Request.UserAgent : UserAgent };
|
||
var userinfo = StackChangeRedisHelper.StringGet<UserInfo>(Token);
|
||
string Uid = userinfo.Uid;
|
||
if (userinfo == null)
|
||
{
|
||
resdata.Status = 100;
|
||
resdata.Message = "TOKEN_ERROR~";
|
||
resdata.Data = string.Empty;
|
||
Uid = "非法用户";
|
||
}
|
||
else
|
||
{
|
||
Uid = userinfo.Uid;
|
||
|
||
var user = Services.Cache.CacheHelp.cacheSysUserInfo.FirstOrDefault(x => x.Uid == Uid);
|
||
if (user == null || app == null)
|
||
{
|
||
resdata.Status = 100;
|
||
resdata.Message = "用户或app不存在~";
|
||
resdata.Data = string.Empty;
|
||
}
|
||
else
|
||
{
|
||
//返回 查询的app
|
||
resdata.Data = AppServer.AddDown(appid, sum);
|
||
resdata.Status = 200;
|
||
}
|
||
}
|
||
log.Uid = Uid;
|
||
Task.Run(() =>
|
||
{
|
||
Data loc = HttpRequestHelp.GetIp($@"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query={log.Ip}&co=&resource_id=6006&oe=utf8");
|
||
if (loc.status == 0)
|
||
{
|
||
if (loc.data.Count > 0)
|
||
{
|
||
log.location = loc.data[0].location;
|
||
}
|
||
}
|
||
DbLogServer.WriteDbLog($"{Uid}点击跳转了 {app.AppName} App统计数量{(resdata.Status == 200 ? "成功" : "失败")}", 0, log);
|
||
});
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
resdata.Status = 500;
|
||
resdata.Data = "";
|
||
resdata.Message = ex.Message;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
return Json(resdata);
|
||
}
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 同步数据
|
||
/// </summary>
|
||
/// <param name="Pwd"></param>
|
||
/// <param name="stepid"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OuterSyncApi/SyncData")]
|
||
public ActionResult OuterSyncApi(string Pwd, int stepid = 0)
|
||
{
|
||
DbLogServer.WriteDbLog($"从巫工数据库同步数据到mysql数据库");
|
||
|
||
if (Pwd == "fs%sd")
|
||
{
|
||
var res = SyncAllFromOutterDB.SYNC_DATA.SYNC_DATA_ALL(stepid);
|
||
string erMsg = SyncAllFromOutterDB.GlobalSyncLockTest.recentErrMsg;
|
||
//return Json(res);
|
||
if (res)
|
||
{
|
||
return Json(new
|
||
{
|
||
messages = "同步成功",
|
||
Status = true
|
||
});
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
messages = erMsg,
|
||
Status = false
|
||
});
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
messages = "同步密码错误",
|
||
Status = false
|
||
});
|
||
}
|
||
|
||
}
|
||
[HttpPost]
|
||
[Route("OuterSyncApi/GetRoomTypeAndRoomInfo")]
|
||
public ActionResult GetRoomTypeAndRoomInfo(string HotelCode)
|
||
{
|
||
ReturnInfo ri = new ReturnInfo();
|
||
try
|
||
{
|
||
DbLog dlog = new DbLog
|
||
{
|
||
location = "",
|
||
Ip = "::1",
|
||
Client = "",
|
||
CreateTime = DateTime.Now,
|
||
Uid = "宝镜",
|
||
Type = 0,
|
||
Content = "宝镜获取酒店" + HotelCode + "的房型和房间信息"
|
||
};
|
||
SqlSugarBase.Db.Insertable(dlog).ExecuteCommand();
|
||
TBL_HOTEL_BASIC_INFO hotel = SqlSugarBase.RcuDb.Queryable<TBL_HOTEL_BASIC_INFO>().First(it => it.PROJECT_NUMBER == HotelCode && it.IsDel != 1);
|
||
if (hotel != null)
|
||
{
|
||
List<TBL_ROOM_TYPE_LIST> roomList = SqlSugarBase.RcuDb.Queryable<TBL_ROOM_TYPE_LIST>().Where(it => it.HOTEL_OLD_ID == hotel.IDOLD && it.IsDel != 1).ToList();
|
||
if (roomList.Count > 0)
|
||
{
|
||
dlog = new DbLog
|
||
{
|
||
location = "",
|
||
Ip = "::1",
|
||
Client = "",
|
||
CreateTime = DateTime.Now,
|
||
Uid = "宝镜",
|
||
Type = 0,
|
||
Content = "宝镜获取酒店" + HotelCode + "的房型和房间信息,成功"
|
||
};
|
||
SqlSugarBase.Db.Insertable(dlog).ExecuteCommand();
|
||
ri.ErrMsg = "成功";
|
||
ri.ErrCode = 0;
|
||
ri.HotelCode = HotelCode;
|
||
ri.RoomTypeCnt = roomList.Count;
|
||
ri.RoomNoCnt = 0;
|
||
ri.HotelNane = hotel.HOTEL_NAME_CN;
|
||
foreach (var item in roomList)
|
||
{
|
||
RoomTypeAllinfo rmt = new RoomTypeAllinfo();
|
||
rmt.RoomTypeID = item.ROOM_TYPE_OLD_ID;
|
||
rmt.RoomTypeName = item.ROOM_TYPE_NAME;
|
||
//房间集合
|
||
List<TBL_ROOM_BASIC_INFO> roominfo = SqlSugarBase.RcuDb.Queryable<TBL_ROOM_BASIC_INFO>().Where(it => it.ROOM_TYPE_OLD_ID == item.ROOM_TYPE_OLD_ID && it.IsDel != 1).ToList();
|
||
if (roominfo.Count > 0)
|
||
{
|
||
rmt.RoomCnt = roominfo.Count;
|
||
foreach (var items in roominfo)
|
||
{
|
||
RoomAllInfo rmtinfo = new RoomAllInfo();
|
||
rmtinfo.RoomNoID = items.ROOM_OLD_ID;
|
||
rmtinfo.RoomNumber = items.ROOM_NUMBER;
|
||
rmt.RoomList.Add(rmtinfo);
|
||
ri.RoomNoCnt++;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
rmt.RoomCnt = 0;
|
||
rmt.RoomList = null;
|
||
}
|
||
|
||
ri.RoomTypelist.Add(rmt);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
dlog = new DbLog
|
||
{
|
||
location = "",
|
||
Ip = "::1",
|
||
Client = "",
|
||
CreateTime = DateTime.Now,
|
||
Uid = "宝镜",
|
||
Type = 0,
|
||
Content = "宝镜获取酒店" + HotelCode + "的房型和房间信息,成功"
|
||
};
|
||
SqlSugarBase.Db.Insertable(dlog).ExecuteCommand();
|
||
ri.ErrMsg = "成功";
|
||
ri.ErrCode = 0;
|
||
ri.HotelCode = HotelCode;
|
||
ri.RoomTypeCnt = 0;
|
||
ri.RoomNoCnt = 0;
|
||
ri.RoomTypelist = null;
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
dlog = new DbLog
|
||
{
|
||
location = "",
|
||
Ip = "::1",
|
||
Client = "",
|
||
CreateTime = DateTime.Now,
|
||
Uid = "宝镜",
|
||
Type = 0,
|
||
Content = "宝镜获取酒店" + HotelCode + "的房型和房间信息,未查询到指定code的酒店"
|
||
};
|
||
SqlSugarBase.Db.Insertable(dlog).ExecuteCommand();
|
||
ri.ErrMsg = "未查询到指定code的酒店";
|
||
ri.ErrCode = 4040;
|
||
ri.HotelCode = HotelCode;
|
||
ri.RoomTypeCnt = 0;
|
||
ri.RoomNoCnt = 0;
|
||
ri.RoomTypelist = null;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
DbLog dlog = new DbLog
|
||
{
|
||
location = "",
|
||
Ip = "::1",
|
||
Client = "",
|
||
CreateTime = DateTime.Now,
|
||
Uid = "宝镜",
|
||
Type = 0,
|
||
Content = "宝镜获取酒店" + HotelCode + "的房型和房间信息,服务器繁忙,请稍后再查询"
|
||
};
|
||
SqlSugarBase.Db.Insertable(dlog).ExecuteCommand();
|
||
ri.ErrMsg = "服务器繁忙,请稍后再查询";
|
||
ri.ErrCode = 5050;
|
||
ri.HotelCode = HotelCode;
|
||
ri.RoomTypeCnt = 0;
|
||
ri.RoomNoCnt = 0;
|
||
ri.RoomTypelist = null;
|
||
LogHelp.WriteExceptionLog(ex);
|
||
}
|
||
|
||
//房型集合
|
||
return Json(ri, JsonRequestBehavior.AllowGet);
|
||
}
|
||
}
|
||
|
||
public class ReturnInfo
|
||
{
|
||
public ReturnInfo()
|
||
{
|
||
RoomTypelist = new List<RoomTypeAllinfo>();
|
||
}
|
||
public int ErrCode { get; set; }
|
||
public string ErrMsg { get; set; }
|
||
public string HotelCode { get; set; }
|
||
public string HotelNane { get; set; }
|
||
public int RoomTypeCnt { get; set; }
|
||
public int RoomNoCnt { get; set; }
|
||
public List<RoomTypeAllinfo> RoomTypelist { get; set; }
|
||
|
||
}
|
||
public class RoomTypeAllinfo
|
||
{
|
||
public RoomTypeAllinfo()
|
||
{
|
||
RoomList = new List<RoomAllInfo>();
|
||
}
|
||
public string RoomTypeName { get; set; }
|
||
public int RoomTypeID { get; set; }
|
||
public int RoomCnt { get; set; }
|
||
public List<RoomAllInfo> RoomList { get; set; }
|
||
}
|
||
public class RoomAllInfo
|
||
{
|
||
public int RoomNoID { get; set; }
|
||
public string RoomNumber { get; set; }
|
||
}
|
||
} |