112 lines
3.8 KiB
C#
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;
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|