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; } } }