/********************************************************************************
|
|
** 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 获取所有仓库
|
/// <summary>
|
/// 获取所有仓库
|
/// </summary>
|
/// <returns></returns>
|
/// <History>[Hanhe(lt)] created 2018/11/2</History>
|
public List<TN_AB_STOCKEntity> GetStock()
|
{
|
if (SysCache.Stock == null || SysCache.Stock.Count == 0)
|
SysCache.Stock = BLLCreator.Create<TN_WMS_STOCKBLL>().GetStockList(); ;
|
return SysCache.Stock;
|
}
|
public string GetStockName(string code)
|
{
|
if (SysCache.Stock == null || SysCache.Stock.Count == 0)
|
SysCache.Stock = BLLCreator.Create<TN_WMS_STOCKBLL>().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 获取所有库区
|
/// <summary>
|
/// 获取所有库区
|
/// </summary>
|
/// <returns></returns>
|
/// <History>[Hanhe(lt)] created 2018/11/2</History>
|
public List<AutoBomStockAreaEntity> GetStockArea()
|
{
|
if (SysCache.Area == null || SysCache.Area.Count == 0)
|
SysCache.Area = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetArea(1);
|
return SysCache.Area;
|
}
|
#endregion
|
|
#region 获取所有库区
|
/// <summary>
|
/// 获取所有库区
|
/// </summary>
|
/// <returns></returns>
|
/// <History>[Hanhe(lt)] created 2018/11/2</History>
|
public List<AutoBomStockAreaEntity> GetStockAreas()
|
{
|
if (SysCache.Area == null || SysCache.Area.Count == 0)
|
SysCache.Area = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetStockAreas();
|
return SysCache.Area;
|
}
|
#endregion
|
|
#region 获取autobom中的编码
|
/// <summary>
|
/// 获取autobom中的编码
|
/// </summary>
|
/// <param name="tokenId">tokenId</param>
|
/// <param name="ruleName">编码名称</param>
|
/// <returns></returns>
|
/// <History>[Hanhe(lt)] created 2018/11/2</History>
|
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 获取策略值
|
/// <summary>
|
/// 获取策略值
|
/// </summary>
|
/// <param name="stockCode">仓库编号</param>
|
/// <param name="code">策略编码</param>
|
/// <returns></returns>
|
/// <History>[Hanhe(DBS)] created 2018-11-27</History>
|
public string GetStrategy(string stockCode, string code)
|
{
|
if (SysCache.SysStrategy == null || !SysCache.SysStrategy.Any())
|
{
|
SysCache.SysStrategy = BLLCreator.Create<DapperBLL<TN_WM_B_STRATEGY_VALUEEntity>>().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是否合法
|
/// <summary>
|
/// 验证TokenId是否合法
|
/// </summary>
|
/// <param name="tokenId"></param>
|
/// <returns></returns>
|
public OperateResult Validate(string tokenId)
|
{
|
return OperateResult.Succeed();
|
}
|
#endregion
|
|
#region 根据TokenID获取用户信息
|
/// <summary>
|
/// 根据TokenID获取用户信息
|
/// </summary>
|
/// <param name="tokenId"></param>
|
/// <param name="isProving"></param>
|
/// <returns></returns>
|
/// <History>[Hanhe(DBS)] created 2018-10-27</History>
|
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并带出用户实体
|
/// <summary>
|
/// 验证tokenId并带出用户实体
|
/// </summary>
|
/// <param name="validateToken"></param>
|
/// <returns></returns>
|
/// <History>[Hanhe(zh)] created 2018-12-10</History>
|
public OperateResult ValidateToken(Func<RedisUserEntity, OperateResult> 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<RedisUserEntity>());
|
}
|
catch (Exception ex)
|
{
|
return OperateResult.Error(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 验证tokenId并带出用户实体
|
/// </summary>
|
/// <param name="validateToken"></param>
|
/// <returns></returns>
|
public string ValidateToken(Func<RedisUserEntity, string> 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<RedisUserEntity>());
|
}
|
catch (Exception ex)
|
{
|
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
|
}
|
}
|
|
/// <summary>
|
/// tokenId传入(一般post时使用)
|
/// </summary>
|
/// <param name="validateToken"></param>
|
/// <returns></returns>
|
public OperateResult ValidateToken(string tokenId, Func<RedisUserEntity, OperateResult> validateToken)
|
{
|
try
|
{
|
var tokenInfo = GetTokenInfo(tokenId);
|
if (!tokenInfo.Success)
|
return tokenInfo;
|
return validateToken(tokenInfo.GetData<RedisUserEntity>());
|
}
|
catch (Exception ex)
|
{
|
return OperateResult.Error(ex.Message);
|
}
|
}
|
/// <summary>
|
/// tokenId传入(一般post时使用)
|
/// </summary>
|
/// <param name="validateToken"></param>
|
/// <returns></returns>
|
public string ValidateToken(string tokenId, Func<RedisUserEntity, string> validateToken)
|
{
|
try
|
{
|
var tokenInfo = GetTokenInfo(tokenId);
|
if (!tokenInfo.Success)
|
return JsonConvert.SerializeObject(tokenInfo);
|
return validateToken(tokenInfo.GetData<RedisUserEntity>());
|
}
|
catch (Exception ex)
|
{
|
return JsonConvert.SerializeObject(OperateResult.Error(ex.Message));
|
}
|
}
|
#endregion
|
|
#region webapi request转换成传统request
|
/// <summary>
|
/// webapi request转换成传统request
|
/// </summary>
|
/// <History>[Hanhe(zh)] created 2018-12-10</History>
|
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
|
|
/// <summary>
|
/// 依据键获取请求头中值数据
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="key"></param>
|
/// <returns></returns>
|
public string GetHeader(string key)
|
{
|
IEnumerable<string> keys = null;
|
if (!Request.Headers.TryGetValues(key, out keys))
|
return null;
|
|
return keys.First();
|
}
|
}
|
}
|