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
|
{
|
/// <summary>
|
/// GetCodeRule(ApiAction(Data:RULE_CODE))
|
/// 根据条码规则代码返回条码规则对象
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> GetCodeRule([FromBody] ApiAction action)
|
{
|
ApiAction response;
|
try
|
{
|
response = action.GetResponse(DI.Resolve<IDbCacheBus>().GetCodeRuleCache()[action.Data?.ToString() ?? ""]);
|
}
|
catch (System.Exception ex)
|
{
|
response = action.GetResponse().CatchExceptionWithLog(ex);
|
}
|
return Ok(response);
|
}
|
|
/// <summary>
|
/// GetCodeRuleType(ApiAction(Data:RULE_TYPE))
|
/// 根据规则类型返回条码规则对象列表
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> GetCodeRuleType([FromBody] ApiAction action)
|
{
|
ApiAction response;
|
try
|
{
|
response = action.GetResponse(DI.Resolve<IDbCacheBus>().GetCodeRuleCache().Rules.Where(q => q.RULE_TYPE == (action.Data?.ToInt32() ?? -1)).ToList());
|
}
|
catch (Exception ex)
|
{
|
response = action.GetResponse().CatchExceptionWithLog(ex);
|
}
|
return Ok(response);
|
}
|
|
/// <summary>
|
/// TryGenerateCode(ApiAction(Data:{ RuleCode : "ruleCode", Args : ["arg1", "arg2"] }))
|
/// 尝试生成条码,不保存到数据库
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> TryGenerateCode([FromBody] ApiAction<GenerateCodeEntity> action)
|
{
|
ApiAction response;
|
try
|
{
|
response = action.GetResponse(DI.Resolve<IDbCacheBus>().GetCodeRuleCache().TryGenerate(action.Data?.RuleCode, action.Data?.Args));
|
}
|
catch (Exception ex)
|
{
|
response = action.GetResponse().CatchExceptionWithLog(ex);
|
}
|
return Ok(response);
|
}
|
|
/// <summary>
|
/// GenerateCode(ApiAction(Data:{ RuleCode : "ruleCode", Args : ["arg1", "arg2"] }))
|
/// 生成条码
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> GenerateCode([FromBody] ApiAction<GenerateCodeEntity> action)
|
{
|
ApiAction response;
|
try
|
{
|
response = action.GetResponse(DI.Resolve<IDbCacheBus>().GetCodeRuleCache().Generate(action.Data?.RuleCode, action.Data?.Args));
|
}
|
catch (Exception ex)
|
{
|
response = action.GetResponse().CatchExceptionWithLog(ex);
|
}
|
return Ok(response);
|
}
|
|
/// <summary>
|
/// VerifyCode(ApiAction(Data:{ Code : "code", RuleCode : "ruleCode", RuleType : 0 }))
|
/// 根据规则类型返回条码规则对象列表
|
/// </summary>
|
/// <param name="action"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public async Task<IActionResult> VerifyCode([FromBody] ApiAction<VerifyCodeEntity> action)
|
{
|
ApiAction response;
|
try
|
{
|
Expression<Func<BAS_CODE_RULE, bool>> 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<IDbCacheBus>().GetCodeRuleCache().Verify(action.Data?.Code, predicate.Compile()));
|
}
|
catch (Exception ex)
|
{
|
response = action.GetResponse().CatchExceptionWithLog(ex);
|
}
|
return Ok(response);
|
}
|
}
|
}
|