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; using Tiger.Api.DbCache; 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(Cache.CodeRule[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(Cache.CodeRule.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(Cache.CodeRule.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(Cache.CodeRule.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(Cache.CodeRule.Verify(action.Data?.Code, predicate.Compile())); } catch (Exception ex) { response = action.GetResponse().CatchExceptionWithLog(ex); } return Ok(response); } } }