using APT.BaseData.Domain.ApiModel.Platform; using APT.BaseData.Domain.Entities.OP; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Linq; namespace CMS.OP.WebApi.Controllers.Api { [Route("api/OP/OPBillingRule")] public partial class BillingRuleController : AuthorizeApiController { /// /// 更新或新增数据 /// /// 对象实体 /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_OP_BILLING_RULE entity) { return SafeExecute(() => { if (entity.Nav_Versions == null || entity.Nav_Versions.Count != 1) return new ResultModel { IsSucceed = false, Msg = "计费规则版本必须且只能写一个" }; var version = entity.Nav_Versions.FirstOrDefault(); entity.Nav_Versions = null; version.RULE_ID = entity.ID; this.UnifiedCommit(() => { AddEntityNoCommit(entity); AddEntityNoCommit(version); }); entity.VERSION_ID = version.ID; UnifiedCommit(() => { UpdateEntityNoCommit(entity); }); return new ResultModel { IsSucceed = true }; }); } /// /// 获得当前版本 /// /// 过滤实体 /// [HttpPost, Route("GetVersion")] public JsonActionResult GetVersion([FromBody] KeywordFilter filter) { return SafeExecute(() => { var ruleId = Guid.Parse(filter.FilterGroup.Rules.FirstOrDefault().Value?.ToString()); var version = GetEntity(x => x.ID == ruleId, "Nav_Version")?.Nav_Version; return version; }); } /// /// 升级版本 /// /// 对象实体 /// [HttpPost, Route("UpdateVersion")] public JsonActionResult UpdateVersion([FromBody] T_OP_BILLING_RULE_VERSION entity) { return SafeExecute(() => { entity.ID = Guid.NewGuid(); UnifiedCommit(() => { AddEntityNoCommit(entity); }); var rule = this.GetEntity(x => x.ID == entity.RULE_ID); rule.VERSION_ID = entity.ID; UnifiedCommit(() => { UpdateEntityNoCommit(rule); }); return true; }); } /// /// 根据主键删除数据 /// /// 主键ID /// [HttpGet, Route("FullDelete")] public JsonActionResult FullDelete(string id) { return SafeExecute(() => { var ruleId = Guid.Parse(id); var rule = GetEntity(id); rule.VERSION_ID = null; var version = GetEntities(x => x.RULE_ID == ruleId, new BaseFilter()); var ids = version.Select(x => x.ID)?.ToList(); UpdateEntity(rule); if (ids != null) BantchDeleteEntity(ids); DeleteEntity(id); return true; }); } } }