using Rhea.Common;
using Microsoft.AspNetCore.Mvc;
using System;
using Tiger.IBusiness;
using System.Linq;
using System.Threading.Tasks;
using Tiger.Model;
using System.Linq.Expressions;
namespace Tiger.Api.Controllers.Base
{
public partial class CacheController : ControllerBase
{
///
/// GetCodeRule(ApiAction(Data:RULE_CODE))
/// 根据条码规则代码返回条码规则对象
///
///
///
[HttpPost]
public async Task GetCodeRule([FromBody] ApiAction action)
{
ApiAction response;
try
{
response = action.GetResponse(DI.Resolve().GetCodeRuleCache()[action.Data?.ToString() ?? ""]);
}
catch (System.Exception ex)
{
response = action.GetResponse().CatchExceptionWithLog(ex);
}
return Ok(response);
}
///
/// GetCodeRuleType(ApiAction(Data:RULE_TYPE))
/// 根据规则类型返回条码规则对象列表
///
///
///
[HttpPost]
public async Task GetCodeRuleType([FromBody] ApiAction action)
{
ApiAction response;
try
{
response = action.GetResponse(DI.Resolve().GetCodeRuleCache().Rules.Where(q => q.RULE_TYPE == (action.Data?.ToInt32() ?? -1)).ToList());
}
catch (Exception ex)
{
response = action.GetResponse().CatchExceptionWithLog(ex);
}
return Ok(response);
}
///
/// TryGenerateCode(ApiAction(Data:{ RuleCode : "ruleCode", Args : ["arg1", "arg2"] }))
/// 尝试生成条码,不保存到数据库
///
///
///
[HttpPost]
public async Task TryGenerateCode([FromBody] ApiAction action)
{
ApiAction response;
try
{
response = action.GetResponse(DI.Resolve().GetCodeRuleCache().TryGenerate(action.Data?.RuleCode, action.Data?.Args));
}
catch (Exception ex)
{
response = action.GetResponse().CatchExceptionWithLog(ex);
}
return Ok(response);
}
///
/// GenerateCode(ApiAction(Data:{ RuleCode : "ruleCode", Args : ["arg1", "arg2"] }))
/// 生成条码
///
///
///
[HttpPost]
public async Task GenerateCode([FromBody] ApiAction action)
{
ApiAction response;
try
{
response = action.GetResponse(DI.Resolve().GetCodeRuleCache().Generate(action.Data?.RuleCode, action.Data?.Args));
}
catch (Exception ex)
{
response = action.GetResponse().CatchExceptionWithLog(ex);
}
return Ok(response);
}
///
/// VerifyCode(ApiAction(Data:{ Code : "code", RuleCode : "ruleCode", RuleType : 0 }))
/// 根据规则类型返回条码规则对象列表
///
///
///
[HttpPost]
public async Task VerifyCode([FromBody] ApiAction action)
{
ApiAction response;
try
{
Expression> predicate = q => true;
if (!(action.Data?.RuleCode).IsNullOrEmpty())
{
predicate = predicate.And(q => q.RULE_CODE == action.Data.RuleCode);
}
if (!(action.Data?.RuleType).IsNullOrEmpty())
{
predicate = predicate.And(q => q.RULE_TYPE == action.Data.RuleType);
}
response = action.GetResponse(DI.Resolve().GetCodeRuleCache().Verify(action.Data?.Code, predicate.Compile()));
}
catch (Exception ex)
{
response = action.GetResponse().CatchExceptionWithLog(ex);
}
return Ok(response);
}
}
}