using System;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Results;
using EShang.Common.Model;
using HZQR.Common;
using Newtonsoft.Json;
namespace EShangApiMain.Controllers
{
///
/// 基础接口
///
public class BaseController : ApiController
{
///
/// 事务管理器
///
public SuperMap.RealEstate.ServiceModel.Transaction transaction = new SuperMap.RealEstate.ServiceModel.Transaction();
///
/// 重写返回方法(用于释放事物)
///
///
///
///
protected override OkNegotiatedContentResult Ok(T content)
{
if (transaction.IsOpen)
{
transaction.Commit();
}
transaction.Release();
transaction.Dispose();
return base.Ok(content);
}
///
/// 获取int类型的header参数
///
/// 参数名称
/// 参数值
///
public int? GetIntHeader(string name, int? value)
{
//从header获取ProvinceCode的值
if (value == null && Request.Headers.Contains(name))
{
string[] Headervalue = (string[])Request.Headers.GetValues(name);
if (Headervalue.Length > 0 && Headervalue[0].ToString() != "")
{
value = Headervalue[0].TryParseToInt();
}
}
return value;
}
///
/// 获取string类型的header参数
///
/// 参数名称
/// 参数值
///
public string GetStringHeader(string name, string value)
{
//从header获取ProvinceCode的值
if (string.IsNullOrWhiteSpace(value) && Request.Headers.Contains(name))
{
string[] Headervalue = (string[])Request.Headers.GetValues(name);
if (Headervalue.Length > 0 && Headervalue[0].ToString() != "")
{
value = Headervalue[0];
}
}
return value;
}
///
/// 获取请求头对象
///
///
protected HeaderModel GetHeaderModel()
{
var header = new HeaderModel
{
Userpattern = GetIntHeader("Userpattern", null),
Serverpartcodes = GetStringHeader("Serverpartcodes", ""),
Provincecode = GetStringHeader("Provincecode", ""),
Serverpartshopids = GetStringHeader("Serverpartshopids", ""),
Token = JsonConvert.DeserializeObject(GetStringHeader("Token", "").ToDecrypt())
};
if (!header.Userpattern.HasValue)
{
throw new Exception("数据模式不能为空");
}
if (header.Token == null)
{
throw new Exception("Token不能为空");
}
if (!header.Token.UserID.HasValue)
{
throw new Exception("Token中缺少用户信息");
}
return header;
}
///
/// 接口请求用户信息
///
///
protected AccessToken GetAccessToken()
{
var token = GetStringHeader("Token", "");
var userInfo = JsonConvert.DeserializeObject(token.ToDecrypt());//已解码,直接返回用户信息
return userInfo == null ? new AccessToken() : userInfo;
}
}
}