mh_sms/APT.MicroApi/APT.OP.WebApi/Controllers/Api/BillingRuleController.cs
2024-04-12 16:50:28 +08:00

112 lines
3.8 KiB
C#

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<T_OP_BILLING_RULE>
{
/// <summary>
/// 更新或新增数据
/// </summary>
/// <param name="entity">对象实体</param>
/// <returns></returns>
[HttpPost, Route("FullUpdate")]
public JsonActionResult<ResultModel> 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 };
});
}
/// <summary>
/// 获得当前版本
/// </summary>
/// <param name="filter">过滤实体</param>
/// <returns></returns>
[HttpPost, Route("GetVersion")]
public JsonActionResult<T_OP_BILLING_RULE_VERSION> GetVersion([FromBody] KeywordFilter filter)
{
return SafeExecute(() =>
{
var ruleId = Guid.Parse(filter.FilterGroup.Rules.FirstOrDefault().Value?.ToString());
var version = GetEntity<T_OP_BILLING_RULE>(x => x.ID == ruleId, "Nav_Version")?.Nav_Version;
return version;
});
}
/// <summary>
/// 升级版本
/// </summary>
/// <param name="entity">对象实体</param>
/// <returns></returns>
[HttpPost, Route("UpdateVersion")]
public JsonActionResult<bool> UpdateVersion([FromBody] T_OP_BILLING_RULE_VERSION entity)
{
return SafeExecute(() =>
{
entity.ID = Guid.NewGuid();
UnifiedCommit(() =>
{
AddEntityNoCommit(entity);
});
var rule = this.GetEntity<T_OP_BILLING_RULE>(x => x.ID == entity.RULE_ID);
rule.VERSION_ID = entity.ID;
UnifiedCommit(() =>
{
UpdateEntityNoCommit(rule);
});
return true;
});
}
/// <summary>
/// 根据主键删除数据
/// </summary>
/// <param name="id">主键ID</param>
/// <returns></returns>
[HttpGet, Route("FullDelete")]
public JsonActionResult<bool> FullDelete(string id)
{
return SafeExecute(() =>
{
var ruleId = Guid.Parse(id);
var rule = GetEntity<T_OP_BILLING_RULE>(id);
rule.VERSION_ID = null;
var version = GetEntities<T_OP_BILLING_RULE_VERSION>(x => x.RULE_ID == ruleId, new BaseFilter());
var ids = version.Select(x => x.ID)?.ToList();
UpdateEntity(rule);
if (ids != null)
BantchDeleteEntity<T_OP_BILLING_RULE_VERSION>(ids);
DeleteEntity<T_OP_BILLING_RULE>(id);
return true;
});
}
}
}