/********************************************************************************
** auth: DBS
** date: 2018/11/13 19:16:00
** desc: 尚未编写描述
** Ver.: V1.0.0
*********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using HH.Redis.ReisModel;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Sys;
using Newtonsoft.Json;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.BLL.Basic;
using HH.WMS.Entitys.Basic;
using HH.WMS.Common;
using HH.WMS.BLL;
using System.Configuration;
using System.Net.Http;
namespace HH.WMS.WebApi.Areas.Common.Controllers
{
public class BaseController : ApiController
{
#region 获取所有仓库
///
/// 获取所有仓库
///
///
/// [Hanhe(lt)] created 2018/11/2
public List GetStock()
{
if (SysCache.Stock == null || SysCache.Stock.Count == 0)
SysCache.Stock = BLLCreator.Create().GetStockList(); ;
return SysCache.Stock;
}
public string GetStockName(string code)
{
if (SysCache.Stock == null || SysCache.Stock.Count == 0)
SysCache.Stock = BLLCreator.Create().GetStockList(); ;
if (SysCache.Stock.Count > 0)
{
TN_AB_STOCKEntity entity = SysCache.Stock.Find(x => x.CN_S_STOCK_CODE.Equals(code));
if (entity != null)
return entity.CN_S_STOCK_NAME;
}
return "";
}
#endregion
#region 获取所有库区
///
/// 获取所有库区
///
///
/// [Hanhe(lt)] created 2018/11/2
public List GetStockArea()
{
if (SysCache.Area == null || SysCache.Area.Count == 0)
SysCache.Area = BLLCreator.Create().GetArea(1);
return SysCache.Area;
}
#endregion
#region 获取所有库区
///
/// 获取所有库区
///
///
/// [Hanhe(lt)] created 2018/11/2
public List GetStockAreas()
{
if (SysCache.Area == null || SysCache.Area.Count == 0)
SysCache.Area = BLLCreator.Create().GetStockAreas();
return SysCache.Area;
}
#endregion
#region 获取autobom中的编码
///
/// 获取autobom中的编码
///
/// tokenId
/// 编码名称
///
/// [Hanhe(lt)] created 2018/11/2
public OperateResult GetCode(RedisUserEntity redisMsgEntity, string ruleName)
{
//RedisMsgEntity redisMsgEntity = HH.Redis.RedisHelper.GetUserInfo(tokenId.Replace(' ', '+'), false);
var postData = new
{
appCode = ConfigurationManager.AppSettings["appCode"],//"AutoWMS",
ruleName = ruleName,
orgId = redisMsgEntity.CN_S_ORGCODE,
orgFlag = redisMsgEntity.CN_S_ORGFLAG
};
string no = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", JsonConvert.SerializeObject(postData));
if (string.IsNullOrEmpty(no) || no.Equals("null"))
return OperateResult.Error("未获取到" + ruleName + "号!");
return OperateResult.Succeed("", no);
}
#endregion
#region 获取策略值
///
/// 获取策略值
///
/// 仓库编号
/// 策略编码
///
/// [Hanhe(DBS)] created 2018-11-27
public string GetStrategy(string stockCode, string code)
{
if (SysCache.SysStrategy == null || !SysCache.SysStrategy.Any())
{
SysCache.SysStrategy = BLLCreator.Create>().GetList();
}
TN_WM_B_STRATEGY_VALUEEntity model = SysCache.SysStrategy.Find(x => x.CN_S_STOCK_CODE.Equals(stockCode) && x.CN_S_CODE.Equals(code));
if (model == null)
return "";
else
return model.CN_S_VALUE;
}
#endregion
#region 验证TokenId是否合法
///
/// 验证TokenId是否合法
///
///
///
public OperateResult Validate(string tokenId)
{
return OperateResult.Succeed();
}
#endregion
#region 根据TokenID获取用户信息
///
/// 根据TokenID获取用户信息
///
///
///
///
/// [Hanhe(DBS)] created 2018-10-27
public OperateResult GetTokenInfo(string tokenId, bool isProving = false)
{
if (string.IsNullOrEmpty(tokenId))
{
return OperateResult.Error("tokenId不能为空!", null);
}
RedisMsgEntity redisMsgEntity = HH.Redis.RedisHelper.GetUserInfo(tokenId.Replace(' ', '+'), isProving);
if (redisMsgEntity.Success)
{
return OperateResult.Succeed("", JsonConvert.SerializeObject(redisMsgEntity.userInfo));
}
else
{
return OperateResult.Error(redisMsgEntity.Msg, null);
}
}
#endregion
#region 验证tokenId并带出用户实体
///
/// 验证tokenId并带出用户实体
///
///
///
/// [Hanhe(zh)] created 2018-12-10
public OperateResult ValidateToken(Func validateToken)
{
try
{
string tokenId = GetHeader("tokenId");// Request.Headers.["tokenId"]; //Requests.QueryString["tokenId"];
if (string.IsNullOrEmpty(tokenId))
tokenId = Requests.QueryString["tokenId"];
var tokenInfo = GetTokenInfo(tokenId);
if (!tokenInfo.Success)
return tokenInfo;
return validateToken(tokenInfo.GetData());
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
///
/// 验证tokenId并带出用户实体
///
///
///
public string ValidateToken(Func validateToken)
{
try
{
string tokenId = GetHeader("tokenId"); //Requests.QueryString["tokenId"];
if (string.IsNullOrEmpty(tokenId))
tokenId = Requests.QueryString["tokenId"];
var tokenInfo = GetTokenInfo(tokenId);
if (!tokenInfo.Success)
return JsonConvert.SerializeObject(tokenInfo);
return validateToken(tokenInfo.GetData());
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
///
/// tokenId传入(一般post时使用)
///
///
///
public OperateResult ValidateToken(string tokenId, Func validateToken)
{
try
{
var tokenInfo = GetTokenInfo(tokenId);
if (!tokenInfo.Success)
return tokenInfo;
return validateToken(tokenInfo.GetData());
}
catch (Exception ex)
{
return OperateResult.Error(ex.Message);
}
}
///
/// tokenId传入(一般post时使用)
///
///
///
public string ValidateToken(string tokenId, Func validateToken)
{
try
{
var tokenInfo = GetTokenInfo(tokenId);
if (!tokenInfo.Success)
return JsonConvert.SerializeObject(tokenInfo);
return validateToken(tokenInfo.GetData());
}
catch (Exception ex)
{
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
}
}
#endregion
#region webapi request转换成传统request
///
/// webapi request转换成传统request
///
/// [Hanhe(zh)] created 2018-12-10
private HttpRequestBase _request;
protected HttpRequestBase Requests
{
get
{
if (this._request == null)
{
this._request = GetRequest();
}
return this._request;
}
}
protected HttpRequestBase GetRequest()
{
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
HttpRequestBase request = context.Request;
return request;
}
#endregion
///
/// 依据键获取请求头中值数据
///
///
///
///
public string GetHeader(string key)
{
IEnumerable keys = null;
if (!Request.Headers.TryGetValues(key, out keys))
return null;
return keys.First();
}
}
}