feat: 新增财务应收应付接口并补充 Swagger 接口名称
- 新增 Finance 模块应收应付分页查询及订单费用联查 - 为 DataPerm、Xhs 等缺失接口补充中文 summary 接口名称 - 优化微信公众号验签 Swagger 命名并补充路由集成测试 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
11520d014b
commit
0a5bd75618
@ -0,0 +1,43 @@
|
|||||||
|
namespace Oms.Application.Dtos.Finance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 应收应付分页查询入参。
|
||||||
|
/// </summary>
|
||||||
|
public class ReceivablePayablePaginatedInput
|
||||||
|
{
|
||||||
|
public int Page { get; set; } = 1;
|
||||||
|
|
||||||
|
public int PageSize { get; set; } = 20;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 运单号 / 客户单号 / 跟踪号关键词。
|
||||||
|
/// </summary>
|
||||||
|
public string? Keyword { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 费用类型:receivable / payable,空或 all 表示全部。
|
||||||
|
/// </summary>
|
||||||
|
public string? FeeType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 费用项关键词。
|
||||||
|
/// </summary>
|
||||||
|
public string? CostItem { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计费阶段:forecast / inbound / outbound。
|
||||||
|
/// </summary>
|
||||||
|
public string? ChargingStage { get; set; }
|
||||||
|
|
||||||
|
public int? CustomerId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 订单创建时间起。
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 订单创建时间止。
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EndTime { get; set; }
|
||||||
|
}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
namespace Oms.Application.Dtos.Finance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 应收应付分页出参(不含主键与审计字段)。
|
||||||
|
/// </summary>
|
||||||
|
public class ReceivablePayablePaginatedOutput
|
||||||
|
{
|
||||||
|
public string ServiceNo { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? ClientNo { get; set; }
|
||||||
|
|
||||||
|
public string? TrackNo { get; set; }
|
||||||
|
|
||||||
|
public string? CustomerCode { get; set; }
|
||||||
|
|
||||||
|
public string OrderStatus { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? OrderStatusName { get; set; }
|
||||||
|
|
||||||
|
public byte IsPaid { get; set; }
|
||||||
|
|
||||||
|
public DateTime? PayTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime? ReceiveTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime? ShipTime { get; set; }
|
||||||
|
|
||||||
|
public string? ProductCode { get; set; }
|
||||||
|
|
||||||
|
public string? ChannelCode { get; set; }
|
||||||
|
|
||||||
|
public string? ConsigneeCountryName { get; set; }
|
||||||
|
|
||||||
|
public string FeeType { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? FeeTypeName { get; set; }
|
||||||
|
|
||||||
|
public string CostItem { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public decimal Amount { get; set; }
|
||||||
|
|
||||||
|
public string Currency { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string? DownstreamProvider { get; set; }
|
||||||
|
|
||||||
|
public string? PriceNo { get; set; }
|
||||||
|
|
||||||
|
public DateTime? PriceEffectiveTime { get; set; }
|
||||||
|
|
||||||
|
public string? ChargingStage { get; set; }
|
||||||
|
|
||||||
|
public string? ChargingStageName { get; set; }
|
||||||
|
}
|
||||||
@ -22,12 +22,6 @@ public class AutoTriggerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:自动触发规则列表查询条件。</param>
|
/// <param name="input">入参:自动触发规则列表查询条件。</param>
|
||||||
/// <returns>自动触发规则分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>自动触发规则分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/auto-trigger/list")]
|
[HttpGet("/channel/auto-trigger/list")]
|
||||||
public async Task<OmsPageResult<AutoTriggerOutput>> GetListAsync([FromQuery] AutoTriggerListInput input)
|
public async Task<OmsPageResult<AutoTriggerOutput>> GetListAsync([FromQuery] AutoTriggerListInput input)
|
||||||
{
|
{
|
||||||
@ -49,12 +43,6 @@ public class AutoTriggerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:自动触发规则保存参数。</param>
|
/// <param name="input">入参:自动触发规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增自动触发规则。</returns>
|
/// <returns>无返回体,仅完成新增自动触发规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/auto-trigger/create")]
|
[HttpPost("/channel/auto-trigger/create")]
|
||||||
public async Task CreateAsync(AutoTriggerSaveInput input)
|
public async Task CreateAsync(AutoTriggerSaveInput input)
|
||||||
{
|
{
|
||||||
@ -75,12 +63,6 @@ public class AutoTriggerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:自动触发规则保存参数。</param>
|
/// <param name="input">入参:自动触发规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新自动触发规则。</returns>
|
/// <returns>无返回体,仅完成更新自动触发规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/auto-trigger/update")]
|
[HttpPost("/channel/auto-trigger/update")]
|
||||||
public async Task UpdateAsync(AutoTriggerSaveInput input)
|
public async Task UpdateAsync(AutoTriggerSaveInput input)
|
||||||
{
|
{
|
||||||
@ -99,12 +81,6 @@ public class AutoTriggerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除自动触发规则。</returns>
|
/// <returns>无返回体,仅完成删除自动触发规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/auto-trigger/delete")]
|
[HttpPost("/channel/auto-trigger/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -117,12 +93,6 @@ public class AutoTriggerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键和状态值。</param>
|
/// <param name="input">入参:目标主键和状态值。</param>
|
||||||
/// <returns>无返回体,仅完成切换自动触发规则状态。</returns>
|
/// <returns>无返回体,仅完成切换自动触发规则状态。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 更新启停状态。
|
|
||||||
/// 3. 保存状态变更结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/auto-trigger/toggleStatus")]
|
[HttpPost("/channel/auto-trigger/toggleStatus")]
|
||||||
public async Task ToggleStatusAsync(ToggleStatusInput input)
|
public async Task ToggleStatusAsync(ToggleStatusInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -26,12 +26,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区列表查询条件。</param>
|
/// <param name="input">入参:KPI分区列表查询条件。</param>
|
||||||
/// <returns>KPI分区分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>KPI分区分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/list")]
|
[HttpPost("/channel/kpi-area/list")]
|
||||||
public async Task<OmsPageResult<KpiAreaOutput>> GetListAsync(KpiAreaListInput input)
|
public async Task<OmsPageResult<KpiAreaOutput>> GetListAsync(KpiAreaListInput input)
|
||||||
{
|
{
|
||||||
@ -56,12 +50,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区保存参数。</param>
|
/// <param name="input">入参:KPI分区保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增KPI分区。</returns>
|
/// <returns>无返回体,仅完成新增KPI分区。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/create")]
|
[HttpPost("/channel/kpi-area/create")]
|
||||||
public async Task CreateAsync(KpiAreaSaveInput input)
|
public async Task CreateAsync(KpiAreaSaveInput input)
|
||||||
{
|
{
|
||||||
@ -81,12 +69,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区保存参数。</param>
|
/// <param name="input">入参:KPI分区保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新KPI分区。</returns>
|
/// <returns>无返回体,仅完成更新KPI分区。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/update")]
|
[HttpPost("/channel/kpi-area/update")]
|
||||||
public async Task UpdateAsync(KpiAreaSaveInput input)
|
public async Task UpdateAsync(KpiAreaSaveInput input)
|
||||||
{
|
{
|
||||||
@ -104,12 +86,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除KPI分区。</returns>
|
/// <returns>无返回体,仅完成删除KPI分区。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/delete")]
|
[HttpPost("/channel/kpi-area/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -122,12 +98,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区明细列表查询条件。</param>
|
/// <param name="input">入参:KPI分区明细列表查询条件。</param>
|
||||||
/// <returns>KPI分区明细分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>KPI分区明细分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/info/list")]
|
[HttpPost("/channel/kpi-area/info/list")]
|
||||||
public async Task<OmsPageResult<KpiAreaInfoOutput>> GetInfoListAsync(KpiAreaInfoListInput input)
|
public async Task<OmsPageResult<KpiAreaInfoOutput>> GetInfoListAsync(KpiAreaInfoListInput input)
|
||||||
{
|
{
|
||||||
@ -148,12 +118,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区明细保存参数。</param>
|
/// <param name="input">入参:KPI分区明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增KPI分区明细。</returns>
|
/// <returns>无返回体,仅完成新增KPI分区明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/info/add")]
|
[HttpPost("/channel/kpi-area/info/add")]
|
||||||
public async Task AddInfoAsync(KpiAreaInfoSaveInput input)
|
public async Task AddInfoAsync(KpiAreaInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -175,12 +139,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:KPI分区明细保存参数。</param>
|
/// <param name="input">入参:KPI分区明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新KPI分区明细。</returns>
|
/// <returns>无返回体,仅完成更新KPI分区明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/info/update")]
|
[HttpPost("/channel/kpi-area/info/update")]
|
||||||
public async Task UpdateInfoAsync(KpiAreaInfoSaveInput input)
|
public async Task UpdateInfoAsync(KpiAreaInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -201,12 +159,6 @@ public class KpiAreaService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除KPI分区明细。</returns>
|
/// <returns>无返回体,仅完成删除KPI分区明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/kpi-area/info/delete")]
|
[HttpPost("/channel/kpi-area/info/delete")]
|
||||||
public async Task DeleteInfoAsync(IdInput input)
|
public async Task DeleteInfoAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -20,12 +20,6 @@ public class LabelTemplateService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:标签模板保存参数。</param>
|
/// <param name="input">入参:标签模板保存参数。</param>
|
||||||
/// <returns>标签模板保存结果。</returns>
|
/// <returns>标签模板保存结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/label-template/save")]
|
[HttpPost("/channel/label-template/save")]
|
||||||
public async Task<LabelTemplateSaveOutput> SaveAsync(LabelTemplateSaveInput input)
|
public async Task<LabelTemplateSaveOutput> SaveAsync(LabelTemplateSaveInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -33,12 +33,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品列表查询条件。</param>
|
/// <param name="input">入参:销售产品列表查询条件。</param>
|
||||||
/// <returns>销售产品分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>销售产品分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/list")]
|
[HttpGet("/channel/sales-product/list")]
|
||||||
public async Task<OmsPageResult<SalesProductListOutput>> GetListAsync([FromQuery] SalesProductListInput input)
|
public async Task<OmsPageResult<SalesProductListOutput>> GetListAsync([FromQuery] SalesProductListInput input)
|
||||||
{
|
{
|
||||||
@ -63,12 +57,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">入参:目标主键。</param>
|
/// <param name="id">入参:目标主键。</param>
|
||||||
/// <returns>销售产品详情。</returns>
|
/// <returns>销售产品详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/detail")]
|
[HttpGet("/channel/sales-product/detail")]
|
||||||
public async Task<SalesProductDetailOutput> GetDetailAsync([FromQuery] int id)
|
public async Task<SalesProductDetailOutput> GetDetailAsync([FromQuery] int id)
|
||||||
{
|
{
|
||||||
@ -83,12 +71,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品保存参数。</param>
|
/// <param name="input">入参:销售产品保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增销售产品。</returns>
|
/// <returns>无返回体,仅完成新增销售产品。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/create")]
|
[HttpPost("/channel/sales-product/create")]
|
||||||
public async Task CreateAsync(SalesProductSaveInput input)
|
public async Task CreateAsync(SalesProductSaveInput input)
|
||||||
{
|
{
|
||||||
@ -103,12 +85,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品保存参数。</param>
|
/// <param name="input">入参:销售产品保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新销售产品。</returns>
|
/// <returns>无返回体,仅完成更新销售产品。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/update")]
|
[HttpPost("/channel/sales-product/update")]
|
||||||
public async Task UpdateAsync(SalesProductSaveInput input)
|
public async Task UpdateAsync(SalesProductSaveInput input)
|
||||||
{
|
{
|
||||||
@ -123,12 +99,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除销售产品。</returns>
|
/// <returns>无返回体,仅完成删除销售产品。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/delete")]
|
[HttpPost("/channel/sales-product/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -141,12 +111,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品保存参数。</param>
|
/// <param name="input">入参:销售产品保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成保存销售产品配置。</returns>
|
/// <returns>无返回体,仅完成保存销售产品配置。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
[HttpPost("/channel/sales-product/config/save")]
|
[HttpPost("/channel/sales-product/config/save")]
|
||||||
public async Task SaveConfigAsync(SalesProductSaveInput input)
|
public async Task SaveConfigAsync(SalesProductSaveInput input)
|
||||||
@ -162,12 +126,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="salesProductId">入参:销售产品主键。</param>
|
/// <param name="salesProductId">入参:销售产品主键。</param>
|
||||||
/// <returns>销售产品价格项列表结果。</returns>
|
/// <returns>销售产品价格项列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/price/list")]
|
[HttpGet("/channel/sales-product/price/list")]
|
||||||
public async Task<OmsItemsResult<SalesProductPriceListOutput>> GetPriceListAsync([FromQuery] int salesProductId)
|
public async Task<OmsItemsResult<SalesProductPriceListOutput>> GetPriceListAsync([FromQuery] int salesProductId)
|
||||||
{
|
{
|
||||||
@ -183,12 +141,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品价格项保存参数。</param>
|
/// <param name="input">入参:销售产品价格项保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增销售产品价格项。</returns>
|
/// <returns>无返回体,仅完成新增销售产品价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/price/create")]
|
[HttpPost("/channel/sales-product/price/create")]
|
||||||
public async Task CreatePriceAsync(SalesProductPriceSaveInput input)
|
public async Task CreatePriceAsync(SalesProductPriceSaveInput input)
|
||||||
{
|
{
|
||||||
@ -214,12 +166,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品价格项保存参数。</param>
|
/// <param name="input">入参:销售产品价格项保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新销售产品价格项。</returns>
|
/// <returns>无返回体,仅完成更新销售产品价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/price/update")]
|
[HttpPost("/channel/sales-product/price/update")]
|
||||||
public async Task UpdatePriceAsync(SalesProductPriceSaveInput input)
|
public async Task UpdatePriceAsync(SalesProductPriceSaveInput input)
|
||||||
{
|
{
|
||||||
@ -247,12 +193,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除销售产品价格项。</returns>
|
/// <returns>无返回体,仅完成删除销售产品价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/price/delete")]
|
[HttpPost("/channel/sales-product/price/delete")]
|
||||||
public async Task DeletePriceAsync(IdInput input)
|
public async Task DeletePriceAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -265,12 +205,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键和状态值。</param>
|
/// <param name="input">入参:目标主键和状态值。</param>
|
||||||
/// <returns>无返回体,仅完成切换销售产品价格项状态。</returns>
|
/// <returns>无返回体,仅完成切换销售产品价格项状态。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 更新启停状态。
|
|
||||||
/// 3. 保存状态变更结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/price/toggleStatus")]
|
[HttpPost("/channel/sales-product/price/toggleStatus")]
|
||||||
public async Task TogglePriceStatusAsync(ToggleStatusInput input)
|
public async Task TogglePriceStatusAsync(ToggleStatusInput input)
|
||||||
{
|
{
|
||||||
@ -283,12 +217,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品价格项批量保存参数。</param>
|
/// <param name="input">入参:销售产品价格项批量保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成批量保存销售产品价格项。</returns>
|
/// <returns>无返回体,仅完成批量保存销售产品价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/price/save")]
|
[HttpPost("/channel/sales-product/price/save")]
|
||||||
public async Task SavePriceAsync(SalesProductPriceSaveAllInput input)
|
public async Task SavePriceAsync(SalesProductPriceSaveAllInput input)
|
||||||
{
|
{
|
||||||
@ -330,12 +258,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="salesProductId">入参:销售产品主键。</param>
|
/// <param name="salesProductId">入参:销售产品主键。</param>
|
||||||
/// <returns>销售产品分配配置。</returns>
|
/// <returns>销售产品分配配置。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/allocation/get")]
|
[HttpGet("/channel/sales-product/allocation/get")]
|
||||||
public Task<SalesProductAllocationOutput> GetAllocationAsync([FromQuery] int salesProductId)
|
public Task<SalesProductAllocationOutput> GetAllocationAsync([FromQuery] int salesProductId)
|
||||||
{
|
{
|
||||||
@ -347,12 +269,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品分配配置保存参数。</param>
|
/// <param name="input">入参:销售产品分配配置保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成保存销售产品分配配置。</returns>
|
/// <returns>无返回体,仅完成保存销售产品分配配置。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/allocation/save")]
|
[HttpPost("/channel/sales-product/allocation/save")]
|
||||||
public async Task SaveAllocationAsync(SalesProductAllocationSaveInput input)
|
public async Task SaveAllocationAsync(SalesProductAllocationSaveInput input)
|
||||||
{
|
{
|
||||||
@ -382,12 +298,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品发布列表查询条件。</param>
|
/// <param name="input">入参:销售产品发布列表查询条件。</param>
|
||||||
/// <returns>销售产品发布价格分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>销售产品发布价格分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/publish/price/list")]
|
[HttpGet("/channel/sales-product/publish/price/list")]
|
||||||
public Task<OmsPageResult<SalesProductPublishRecordOutput>> GetPricePublishListAsync([FromQuery] SalesProductPublishListInput input)
|
public Task<OmsPageResult<SalesProductPublishRecordOutput>> GetPricePublishListAsync([FromQuery] SalesProductPublishListInput input)
|
||||||
{
|
{
|
||||||
@ -399,12 +309,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品发布列表查询条件。</param>
|
/// <param name="input">入参:销售产品发布列表查询条件。</param>
|
||||||
/// <returns>销售产品发布规则分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>销售产品发布规则分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/sales-product/publish/rules/list")]
|
[HttpGet("/channel/sales-product/publish/rules/list")]
|
||||||
public Task<OmsPageResult<SalesProductPublishRecordOutput>> GetRulesPublishListAsync([FromQuery] SalesProductPublishListInput input)
|
public Task<OmsPageResult<SalesProductPublishRecordOutput>> GetRulesPublishListAsync([FromQuery] SalesProductPublishListInput input)
|
||||||
{
|
{
|
||||||
@ -428,12 +332,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品发布参数。</param>
|
/// <param name="input">入参:销售产品发布参数。</param>
|
||||||
/// <returns>无返回体,仅完成销售产品发布处理。</returns>
|
/// <returns>无返回体,仅完成销售产品发布处理。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验目标对象和发布前提条件。
|
|
||||||
/// 2. 生成、切换或回退发布版本数据。
|
|
||||||
/// 3. 保存发布结果并返回处理信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/publish")]
|
[HttpPost("/channel/sales-product/publish")]
|
||||||
public async Task PublishAsync(SalesProductPublishInput input)
|
public async Task PublishAsync(SalesProductPublishInput input)
|
||||||
{
|
{
|
||||||
@ -445,12 +343,6 @@ public partial class SalesProductService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:销售产品发布回滚参数。</param>
|
/// <param name="input">入参:销售产品发布回滚参数。</param>
|
||||||
/// <returns>无返回体,仅完成回滚销售产品发布版本。</returns>
|
/// <returns>无返回体,仅完成回滚销售产品发布版本。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验目标对象和发布前提条件。
|
|
||||||
/// 2. 生成、切换或回退发布版本数据。
|
|
||||||
/// 3. 保存发布结果并返回处理信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/sales-product/publish/rollback")]
|
[HttpPost("/channel/sales-product/publish/rollback")]
|
||||||
public Task RollbackAsync(SalesProductRollbackInput input)
|
public Task RollbackAsync(SalesProductRollbackInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,12 +28,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道列表查询条件。</param>
|
/// <param name="input">入参:服务渠道列表查询条件。</param>
|
||||||
/// <returns>服务渠道分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>服务渠道分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/list")]
|
[HttpGet("/channel/service-channel/list")]
|
||||||
public async Task<OmsPageResult<ServiceChannelListOutput>> GetListAsync([FromQuery] ServiceChannelListInput input)
|
public async Task<OmsPageResult<ServiceChannelListOutput>> GetListAsync([FromQuery] ServiceChannelListInput input)
|
||||||
{
|
{
|
||||||
@ -59,12 +53,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">入参:目标主键。</param>
|
/// <param name="id">入参:目标主键。</param>
|
||||||
/// <returns>服务渠道详情。</returns>
|
/// <returns>服务渠道详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/detail")]
|
[HttpGet("/channel/service-channel/detail")]
|
||||||
public async Task<ServiceChannelDetailOutput> GetDetailAsync([FromQuery] int id)
|
public async Task<ServiceChannelDetailOutput> GetDetailAsync([FromQuery] int id)
|
||||||
{
|
{
|
||||||
@ -79,12 +67,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道保存参数。</param>
|
/// <param name="input">入参:服务渠道保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增服务渠道。</returns>
|
/// <returns>无返回体,仅完成新增服务渠道。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/create")]
|
[HttpPost("/channel/service-channel/create")]
|
||||||
public async Task CreateAsync(ServiceChannelSaveInput input)
|
public async Task CreateAsync(ServiceChannelSaveInput input)
|
||||||
{
|
{
|
||||||
@ -99,12 +81,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道保存参数。</param>
|
/// <param name="input">入参:服务渠道保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新服务渠道。</returns>
|
/// <returns>无返回体,仅完成更新服务渠道。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/update")]
|
[HttpPost("/channel/service-channel/update")]
|
||||||
public async Task UpdateAsync(ServiceChannelSaveInput input)
|
public async Task UpdateAsync(ServiceChannelSaveInput input)
|
||||||
{
|
{
|
||||||
@ -119,12 +95,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除服务渠道。</returns>
|
/// <returns>无返回体,仅完成删除服务渠道。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/delete")]
|
[HttpPost("/channel/service-channel/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -137,12 +107,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:分组名称、应用 ID、API 服务商 ID 等筛选条件。</param>
|
/// <param name="input">入参:分组名称、应用 ID、API 服务商 ID 等筛选条件。</param>
|
||||||
/// <returns>服务渠道分组列表,供下拉与左侧树筛选使用。</returns>
|
/// <returns>服务渠道分组列表,供下拉与左侧树筛选使用。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 按 keyword、appId、apiServiceProviderId 构造筛选条件。
|
|
||||||
/// 2. 查询未删除分组并按 id 倒序返回。
|
|
||||||
/// 3. 无数据时返回空数组。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/group/list")]
|
[HttpGet("/channel/service-channel/group/list")]
|
||||||
public async Task<List<ServiceChannelGroupListOutput>> GetGroupListAsync([FromQuery] ServiceChannelGroupListInput input)
|
public async Task<List<ServiceChannelGroupListOutput>> GetGroupListAsync([FromQuery] ServiceChannelGroupListInput input)
|
||||||
{
|
{
|
||||||
@ -158,12 +122,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道分组保存参数。</param>
|
/// <param name="input">入参:服务渠道分组保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增服务渠道分组。</returns>
|
/// <returns>无返回体,仅完成新增服务渠道分组。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验分组名称、应用ID、API服务商ID等基础字段。
|
|
||||||
/// 2. 检查分组名称唯一性,避免重复配置。
|
|
||||||
/// 3. 保存分组主数据供服务渠道绑定。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/group/create")]
|
[HttpPost("/channel/service-channel/group/create")]
|
||||||
public async Task CreateGroupAsync(ServiceChannelGroupSaveInput input)
|
public async Task CreateGroupAsync(ServiceChannelGroupSaveInput input)
|
||||||
{
|
{
|
||||||
@ -181,12 +139,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道分组保存参数。</param>
|
/// <param name="input">入参:服务渠道分组保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新服务渠道分组。</returns>
|
/// <returns>无返回体,仅完成更新服务渠道分组。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标分组是否存在。
|
|
||||||
/// 2. 检查名称唯一性并更新分组主数据。
|
|
||||||
/// 3. 保留既有渠道关联,只更新分组属性。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/group/update")]
|
[HttpPost("/channel/service-channel/group/update")]
|
||||||
public async Task UpdateGroupAsync(ServiceChannelGroupSaveInput input)
|
public async Task UpdateGroupAsync(ServiceChannelGroupSaveInput input)
|
||||||
{
|
{
|
||||||
@ -203,12 +155,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标分组主键。</param>
|
/// <param name="input">入参:目标分组主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除服务渠道分组。</returns>
|
/// <returns>无返回体,仅完成删除服务渠道分组。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标分组是否存在。
|
|
||||||
/// 2. 检查分组下是否仍有关联渠道。
|
|
||||||
/// 3. 无关联时执行删除,保留框架软删语义。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/group/delete")]
|
[HttpPost("/channel/service-channel/group/delete")]
|
||||||
public async Task DeleteGroupAsync(IdInput input)
|
public async Task DeleteGroupAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -226,12 +172,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道保存参数。</param>
|
/// <param name="input">入参:服务渠道保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成保存服务渠道配置。</returns>
|
/// <returns>无返回体,仅完成保存服务渠道配置。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
[HttpPost("/channel/service-channel/config/save")]
|
[HttpPost("/channel/service-channel/config/save")]
|
||||||
public async Task SaveConfigAsync(ServiceChannelSaveInput input)
|
public async Task SaveConfigAsync(ServiceChannelSaveInput input)
|
||||||
@ -247,12 +187,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="serviceChannelId">入参:serviceChannelId。</param>
|
/// <param name="serviceChannelId">入参:serviceChannelId。</param>
|
||||||
/// <returns>服务渠道价格项列表结果。</returns>
|
/// <returns>服务渠道价格项列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/price/list")]
|
[HttpGet("/channel/service-channel/price/list")]
|
||||||
public async Task<OmsItemsResult<ServiceChannelPriceListOutput>> GetPriceListAsync([FromQuery] int serviceChannelId)
|
public async Task<OmsItemsResult<ServiceChannelPriceListOutput>> GetPriceListAsync([FromQuery] int serviceChannelId)
|
||||||
{
|
{
|
||||||
@ -268,12 +202,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道价格项保存参数。</param>
|
/// <param name="input">入参:服务渠道价格项保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增服务渠道价格项。</returns>
|
/// <returns>无返回体,仅完成新增服务渠道价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/price/create")]
|
[HttpPost("/channel/service-channel/price/create")]
|
||||||
public async Task CreatePriceAsync(ServiceChannelPriceSaveInput input)
|
public async Task CreatePriceAsync(ServiceChannelPriceSaveInput input)
|
||||||
{
|
{
|
||||||
@ -299,12 +227,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道价格项保存参数。</param>
|
/// <param name="input">入参:服务渠道价格项保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新服务渠道价格项。</returns>
|
/// <returns>无返回体,仅完成更新服务渠道价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/price/update")]
|
[HttpPost("/channel/service-channel/price/update")]
|
||||||
public async Task UpdatePriceAsync(ServiceChannelPriceSaveInput input)
|
public async Task UpdatePriceAsync(ServiceChannelPriceSaveInput input)
|
||||||
{
|
{
|
||||||
@ -332,12 +254,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除服务渠道价格项。</returns>
|
/// <returns>无返回体,仅完成删除服务渠道价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/price/delete")]
|
[HttpPost("/channel/service-channel/price/delete")]
|
||||||
public async Task DeletePriceAsync(IdInput input)
|
public async Task DeletePriceAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -350,12 +266,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键和状态值。</param>
|
/// <param name="input">入参:目标主键和状态值。</param>
|
||||||
/// <returns>无返回体,仅完成切换服务渠道价格项状态。</returns>
|
/// <returns>无返回体,仅完成切换服务渠道价格项状态。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 更新启停状态。
|
|
||||||
/// 3. 保存状态变更结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/price/toggleStatus")]
|
[HttpPost("/channel/service-channel/price/toggleStatus")]
|
||||||
public async Task TogglePriceStatusAsync(ToggleStatusInput input)
|
public async Task TogglePriceStatusAsync(ToggleStatusInput input)
|
||||||
{
|
{
|
||||||
@ -368,12 +278,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道价格项批量保存参数。</param>
|
/// <param name="input">入参:服务渠道价格项批量保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成批量保存服务渠道价格项。</returns>
|
/// <returns>无返回体,仅完成批量保存服务渠道价格项。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/price/save")]
|
[HttpPost("/channel/service-channel/price/save")]
|
||||||
public async Task SavePriceAsync(ServiceChannelPriceSaveAllInput input)
|
public async Task SavePriceAsync(ServiceChannelPriceSaveAllInput input)
|
||||||
{
|
{
|
||||||
@ -415,12 +319,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道发布列表查询条件。</param>
|
/// <param name="input">入参:服务渠道发布列表查询条件。</param>
|
||||||
/// <returns>服务渠道发布价格分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>服务渠道发布价格分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/publish/price/list")]
|
[HttpGet("/channel/service-channel/publish/price/list")]
|
||||||
public Task<OmsPageResult<ServiceChannelPublishRecordOutput>> GetPricePublishListAsync([FromQuery] ServiceChannelPublishListInput input)
|
public Task<OmsPageResult<ServiceChannelPublishRecordOutput>> GetPricePublishListAsync([FromQuery] ServiceChannelPublishListInput input)
|
||||||
{
|
{
|
||||||
@ -444,12 +342,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道发布列表查询条件。</param>
|
/// <param name="input">入参:服务渠道发布列表查询条件。</param>
|
||||||
/// <returns>服务渠道发布规则分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>服务渠道发布规则分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/channel/service-channel/publish/rules/list")]
|
[HttpGet("/channel/service-channel/publish/rules/list")]
|
||||||
public Task<OmsPageResult<ServiceChannelPublishRecordOutput>> GetRulesPublishListAsync([FromQuery] ServiceChannelPublishListInput input)
|
public Task<OmsPageResult<ServiceChannelPublishRecordOutput>> GetRulesPublishListAsync([FromQuery] ServiceChannelPublishListInput input)
|
||||||
{
|
{
|
||||||
@ -461,12 +353,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道发布参数。</param>
|
/// <param name="input">入参:服务渠道发布参数。</param>
|
||||||
/// <returns>无返回体,仅完成服务渠道发布处理。</returns>
|
/// <returns>无返回体,仅完成服务渠道发布处理。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验目标对象和发布前提条件。
|
|
||||||
/// 2. 生成、切换或回退发布版本数据。
|
|
||||||
/// 3. 保存发布结果并返回处理信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/publish")]
|
[HttpPost("/channel/service-channel/publish")]
|
||||||
public async Task PublishAsync(ServiceChannelPublishInput input)
|
public async Task PublishAsync(ServiceChannelPublishInput input)
|
||||||
{
|
{
|
||||||
@ -478,12 +364,6 @@ public partial class ServiceChannelService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:服务渠道发布回滚参数。</param>
|
/// <param name="input">入参:服务渠道发布回滚参数。</param>
|
||||||
/// <returns>无返回体,仅完成回滚服务渠道发布版本。</returns>
|
/// <returns>无返回体,仅完成回滚服务渠道发布版本。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验目标对象和发布前提条件。
|
|
||||||
/// 2. 生成、切换或回退发布版本数据。
|
|
||||||
/// 3. 保存发布结果并返回处理信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/service-channel/publish/rollback")]
|
[HttpPost("/channel/service-channel/publish/rollback")]
|
||||||
public Task RollbackAsync(ServiceChannelRollbackInput input)
|
public Task RollbackAsync(ServiceChannelRollbackInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -22,12 +22,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则列表查询条件。</param>
|
/// <param name="input">入参:计重进位规则列表查询条件。</param>
|
||||||
/// <returns>计重进位规则分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>计重进位规则分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/list")]
|
[HttpPost("/channel/weight-rounding/list")]
|
||||||
public async Task<OmsPageResult<WeightRoundingOutput>> GetListAsync(WeightRoundingListInput input)
|
public async Task<OmsPageResult<WeightRoundingOutput>> GetListAsync(WeightRoundingListInput input)
|
||||||
{
|
{
|
||||||
@ -52,12 +46,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则保存参数。</param>
|
/// <param name="input">入参:计重进位规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增计重进位规则。</returns>
|
/// <returns>无返回体,仅完成新增计重进位规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/create")]
|
[HttpPost("/channel/weight-rounding/create")]
|
||||||
public async Task CreateAsync(WeightRoundingSaveInput input)
|
public async Task CreateAsync(WeightRoundingSaveInput input)
|
||||||
{
|
{
|
||||||
@ -74,12 +62,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则保存参数。</param>
|
/// <param name="input">入参:计重进位规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新计重进位规则。</returns>
|
/// <returns>无返回体,仅完成更新计重进位规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/update")]
|
[HttpPost("/channel/weight-rounding/update")]
|
||||||
public async Task UpdateAsync(WeightRoundingSaveInput input)
|
public async Task UpdateAsync(WeightRoundingSaveInput input)
|
||||||
{
|
{
|
||||||
@ -95,12 +77,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除计重进位规则。</returns>
|
/// <returns>无返回体,仅完成删除计重进位规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/delete")]
|
[HttpPost("/channel/weight-rounding/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -113,12 +89,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则明细列表查询条件。</param>
|
/// <param name="input">入参:计重进位规则明细列表查询条件。</param>
|
||||||
/// <returns>计重进位规则明细分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>计重进位规则明细分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/info/list")]
|
[HttpPost("/channel/weight-rounding/info/list")]
|
||||||
public async Task<OmsPageResult<WeightRoundingInfoOutput>> GetInfoListAsync(WeightRoundingInfoListInput input)
|
public async Task<OmsPageResult<WeightRoundingInfoOutput>> GetInfoListAsync(WeightRoundingInfoListInput input)
|
||||||
{
|
{
|
||||||
@ -139,12 +109,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则明细保存参数。</param>
|
/// <param name="input">入参:计重进位规则明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增计重进位规则明细。</returns>
|
/// <returns>无返回体,仅完成新增计重进位规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/info/add")]
|
[HttpPost("/channel/weight-rounding/info/add")]
|
||||||
public async Task AddInfoAsync(WeightRoundingInfoSaveInput input)
|
public async Task AddInfoAsync(WeightRoundingInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -165,12 +129,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重进位规则明细保存参数。</param>
|
/// <param name="input">入参:计重进位规则明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新计重进位规则明细。</returns>
|
/// <returns>无返回体,仅完成更新计重进位规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/info/update")]
|
[HttpPost("/channel/weight-rounding/info/update")]
|
||||||
public async Task UpdateInfoAsync(WeightRoundingInfoSaveInput input)
|
public async Task UpdateInfoAsync(WeightRoundingInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -190,12 +148,6 @@ public class WeightRoundingService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除计重进位规则明细。</returns>
|
/// <returns>无返回体,仅完成删除计重进位规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rounding/info/delete")]
|
[HttpPost("/channel/weight-rounding/info/delete")]
|
||||||
public async Task DeleteInfoAsync(IdInput input)
|
public async Task DeleteInfoAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -22,12 +22,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则列表查询条件。</param>
|
/// <param name="input">入参:计重规则列表查询条件。</param>
|
||||||
/// <returns>计重规则分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>计重规则分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/list")]
|
[HttpPost("/channel/weight-rule/list")]
|
||||||
public async Task<OmsPageResult<WeightRuleOutput>> GetListAsync(WeightRuleListInput input)
|
public async Task<OmsPageResult<WeightRuleOutput>> GetListAsync(WeightRuleListInput input)
|
||||||
{
|
{
|
||||||
@ -52,12 +46,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则保存参数。</param>
|
/// <param name="input">入参:计重规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增计重规则。</returns>
|
/// <returns>无返回体,仅完成新增计重规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/create")]
|
[HttpPost("/channel/weight-rule/create")]
|
||||||
public async Task CreateAsync(WeightRuleSaveInput input)
|
public async Task CreateAsync(WeightRuleSaveInput input)
|
||||||
{
|
{
|
||||||
@ -74,12 +62,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则保存参数。</param>
|
/// <param name="input">入参:计重规则保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新计重规则。</returns>
|
/// <returns>无返回体,仅完成更新计重规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/update")]
|
[HttpPost("/channel/weight-rule/update")]
|
||||||
public async Task UpdateAsync(WeightRuleSaveInput input)
|
public async Task UpdateAsync(WeightRuleSaveInput input)
|
||||||
{
|
{
|
||||||
@ -95,12 +77,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除计重规则。</returns>
|
/// <returns>无返回体,仅完成删除计重规则。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/delete")]
|
[HttpPost("/channel/weight-rule/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -113,12 +89,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则明细列表查询条件。</param>
|
/// <param name="input">入参:计重规则明细列表查询条件。</param>
|
||||||
/// <returns>计重规则明细分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>计重规则明细分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/info/list")]
|
[HttpPost("/channel/weight-rule/info/list")]
|
||||||
public async Task<OmsPageResult<WeightRuleInfoOutput>> GetInfoListAsync(WeightRuleInfoListInput input)
|
public async Task<OmsPageResult<WeightRuleInfoOutput>> GetInfoListAsync(WeightRuleInfoListInput input)
|
||||||
{
|
{
|
||||||
@ -139,12 +109,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则明细保存参数。</param>
|
/// <param name="input">入参:计重规则明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增计重规则明细。</returns>
|
/// <returns>无返回体,仅完成新增计重规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/info/add")]
|
[HttpPost("/channel/weight-rule/info/add")]
|
||||||
public async Task AddInfoAsync(WeightRuleInfoSaveInput input)
|
public async Task AddInfoAsync(WeightRuleInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -164,12 +128,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:计重规则明细保存参数。</param>
|
/// <param name="input">入参:计重规则明细保存参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新计重规则明细。</returns>
|
/// <returns>无返回体,仅完成更新计重规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/info/update")]
|
[HttpPost("/channel/weight-rule/info/update")]
|
||||||
public async Task UpdateInfoAsync(WeightRuleInfoSaveInput input)
|
public async Task UpdateInfoAsync(WeightRuleInfoSaveInput input)
|
||||||
{
|
{
|
||||||
@ -188,12 +146,6 @@ public class WeightRuleService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除计重规则明细。</returns>
|
/// <returns>无返回体,仅完成删除计重规则明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/channel/weight-rule/info/delete")]
|
[HttpPost("/channel/weight-rule/info/delete")]
|
||||||
public async Task DeleteInfoAsync(IdInput input)
|
public async Task DeleteInfoAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -40,12 +40,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:客户分页查询条件。</param>
|
/// <param name="input">入参:客户分页查询条件。</param>
|
||||||
/// <returns>客户分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>客户分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/customer/list")]
|
[HttpGet("/customer/list")]
|
||||||
public async Task<OmsPageResult<CustomerPaginatedOutput>> GetPaginatedListAsync([FromQuery] CustomerPaginatedInput input)
|
public async Task<OmsPageResult<CustomerPaginatedOutput>> GetPaginatedListAsync([FromQuery] CustomerPaginatedInput input)
|
||||||
{
|
{
|
||||||
@ -83,12 +77,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">入参:目标主键。</param>
|
/// <param name="id">入参:目标主键。</param>
|
||||||
/// <returns>客户详情。</returns>
|
/// <returns>客户详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/customer/get")]
|
[HttpGet("/customer/get")]
|
||||||
public async Task<CustomerOutput> GetByIdAsync([FromQuery] int id)
|
public async Task<CustomerOutput> GetByIdAsync([FromQuery] int id)
|
||||||
{
|
{
|
||||||
@ -107,12 +95,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:客户创建参数。</param>
|
/// <param name="input">入参:客户创建参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增客户。</returns>
|
/// <returns>无返回体,仅完成新增客户。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/customer/create")]
|
[HttpPost("/customer/create")]
|
||||||
public async Task CreateAsync(CreateCustomerInput input)
|
public async Task CreateAsync(CreateCustomerInput input)
|
||||||
{
|
{
|
||||||
@ -181,12 +163,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:客户更新参数。</param>
|
/// <param name="input">入参:客户更新参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新客户。</returns>
|
/// <returns>无返回体,仅完成更新客户。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/customer/update")]
|
[HttpPost("/customer/update")]
|
||||||
public async Task UpdateAsync(UpdateCustomerInput input)
|
public async Task UpdateAsync(UpdateCustomerInput input)
|
||||||
{
|
{
|
||||||
@ -221,12 +197,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除客户。</returns>
|
/// <returns>无返回体,仅完成删除客户。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/customer/delete")]
|
[HttpPost("/customer/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -239,12 +209,6 @@ public class CustomerService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:客户密码重置参数。</param>
|
/// <param name="input">入参:客户密码重置参数。</param>
|
||||||
/// <returns>无返回体,仅完成重置客户密码。</returns>
|
/// <returns>无返回体,仅完成重置客户密码。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/customer/reset-password")]
|
[HttpPost("/customer/reset-password")]
|
||||||
public async Task ResetPasswordAsync(ResetCustomerPasswordInput input)
|
public async Task ResetPasswordAsync(ResetCustomerPasswordInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,6 +10,9 @@ namespace Oms.Application.Services.DataPerm;
|
|||||||
|
|
||||||
public partial class DataPermService
|
public partial class DataPermService
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询数据权限模板
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/template/list")]
|
[HttpGet("/rbac/data-perm/template/list")]
|
||||||
public Task<DataPermPagedResult<DataPermTemplateListItemDto>> GetTemplateListAsync(
|
public Task<DataPermPagedResult<DataPermTemplateListItemDto>> GetTemplateListAsync(
|
||||||
[FromQuery] string? keyword,
|
[FromQuery] string? keyword,
|
||||||
@ -22,12 +25,18 @@ public partial class DataPermService
|
|||||||
OmsDocHelper.NormalizePageSize(pageSize),
|
OmsDocHelper.NormalizePageSize(pageSize),
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询数据权限模板详情
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/template/get")]
|
[HttpGet("/rbac/data-perm/template/get")]
|
||||||
public Task<DataPermTemplateDetailDto> GetTemplateDetailAsync(
|
public Task<DataPermTemplateDetailDto> GetTemplateDetailAsync(
|
||||||
[FromQuery] string id,
|
[FromQuery] string id,
|
||||||
CancellationToken cancellationToken = default) =>
|
CancellationToken cancellationToken = default) =>
|
||||||
Store.GetTemplateDetailAsync(ParseGuid(id, "id"), cancellationToken);
|
Store.GetTemplateDetailAsync(ParseGuid(id, "id"), cancellationToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建数据权限模板
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/rbac/data-perm/template/create")]
|
[HttpPost("/rbac/data-perm/template/create")]
|
||||||
public Task<DataPermTemplateDetailDto> CreateTemplateAsync(
|
public Task<DataPermTemplateDetailDto> CreateTemplateAsync(
|
||||||
[FromBody] DataPermTemplateSaveInput input,
|
[FromBody] DataPermTemplateSaveInput input,
|
||||||
@ -37,6 +46,9 @@ public partial class DataPermService
|
|||||||
return Store.CreateTemplateAsync(input, GetCurrentMapId(), cancellationToken);
|
return Store.CreateTemplateAsync(input, GetCurrentMapId(), cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新数据权限模板
|
||||||
|
/// </summary>
|
||||||
[HttpPut("/rbac/data-perm/template/update")]
|
[HttpPut("/rbac/data-perm/template/update")]
|
||||||
public Task<DataPermTemplateDetailDto> UpdateTemplateAsync(
|
public Task<DataPermTemplateDetailDto> UpdateTemplateAsync(
|
||||||
[FromQuery] string id,
|
[FromQuery] string id,
|
||||||
@ -47,10 +59,16 @@ public partial class DataPermService
|
|||||||
return Store.UpdateTemplateAsync(ParseGuid(id, "id"), input, GetCurrentMapId(), cancellationToken);
|
return Store.UpdateTemplateAsync(ParseGuid(id, "id"), input, GetCurrentMapId(), cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除数据权限模板
|
||||||
|
/// </summary>
|
||||||
[HttpDelete("/rbac/data-perm/template/delete")]
|
[HttpDelete("/rbac/data-perm/template/delete")]
|
||||||
public Task DeleteTemplateAsync([FromQuery] string id, CancellationToken cancellationToken = default) =>
|
public Task DeleteTemplateAsync([FromQuery] string id, CancellationToken cancellationToken = default) =>
|
||||||
Store.DeleteTemplateAsync(ParseGuid(id, "id"), cancellationToken);
|
Store.DeleteTemplateAsync(ParseGuid(id, "id"), cancellationToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 应用数据权限模板
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/rbac/data-perm/template/apply")]
|
[HttpPost("/rbac/data-perm/template/apply")]
|
||||||
public async Task<TemplateApplyResultDto> ApplyTemplateAsync(
|
public async Task<TemplateApplyResultDto> ApplyTemplateAsync(
|
||||||
[FromBody] TemplateApplyInput input,
|
[FromBody] TemplateApplyInput input,
|
||||||
|
|||||||
@ -14,6 +14,9 @@ using Oms.Domain.SystemAggregate.Repositories;
|
|||||||
|
|
||||||
namespace Oms.Application.Services.DataPerm;
|
namespace Oms.Application.Services.DataPerm;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数据权限服务
|
||||||
|
/// </summary>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[ApiExplorerSettings(GroupName = "RBAC-DataPerm")]
|
[ApiExplorerSettings(GroupName = "RBAC-DataPerm")]
|
||||||
public partial class DataPermService : ApplicationService
|
public partial class DataPermService : ApplicationService
|
||||||
@ -26,6 +29,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
private IKpiAreaRepository KpiAreaRepository => LazyServiceProvider.GetRequiredService<IKpiAreaRepository>();
|
private IKpiAreaRepository KpiAreaRepository => LazyServiceProvider.GetRequiredService<IKpiAreaRepository>();
|
||||||
private IWarehouseAddressRepository WarehouseRepository => LazyServiceProvider.GetRequiredService<IWarehouseAddressRepository>();
|
private IWarehouseAddressRepository WarehouseRepository => LazyServiceProvider.GetRequiredService<IWarehouseAddressRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取数据权限元数据
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/meta")]
|
[HttpGet("/rbac/data-perm/meta")]
|
||||||
public async Task<DataPermMetaDto> GetMetaAsync(CancellationToken cancellationToken = default)
|
public async Task<DataPermMetaDto> GetMetaAsync(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -45,6 +51,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询业务选项
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/biz-options")]
|
[HttpGet("/rbac/data-perm/biz-options")]
|
||||||
public async Task<DataPermPagedResult<BizOptionItemDto>> GetBizOptionsAsync(
|
public async Task<DataPermPagedResult<BizOptionItemDto>> GetBizOptionsAsync(
|
||||||
[FromQuery] string bizType,
|
[FromQuery] string bizType,
|
||||||
@ -72,6 +81,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询用户数据权限
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/get-by-user")]
|
[HttpGet("/rbac/data-perm/get-by-user")]
|
||||||
public async Task<UserDataPermDto> GetByUserAsync([FromQuery] string userId, CancellationToken cancellationToken = default)
|
public async Task<UserDataPermDto> GetByUserAsync([FromQuery] string userId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -84,6 +96,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
return await Store.GetUserDataPermAsync(id, cancellationToken);
|
return await Store.GetUserDataPermAsync(id, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询用户生效数据范围
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/get-effective-by-user")]
|
[HttpGet("/rbac/data-perm/get-effective-by-user")]
|
||||||
public async Task<EffectiveDataScopeDto> GetEffectiveByUserAsync(
|
public async Task<EffectiveDataScopeDto> GetEffectiveByUserAsync(
|
||||||
[FromQuery] string userId,
|
[FromQuery] string userId,
|
||||||
@ -122,6 +137,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存用户数据权限
|
||||||
|
/// </summary>
|
||||||
[HttpPut("/rbac/data-perm/save-user")]
|
[HttpPut("/rbac/data-perm/save-user")]
|
||||||
public async Task<UserDataPermDto> SaveUserAsync(
|
public async Task<UserDataPermDto> SaveUserAsync(
|
||||||
[FromQuery] string userId,
|
[FromQuery] string userId,
|
||||||
@ -153,12 +171,18 @@ public partial class DataPermService : ApplicationService
|
|||||||
return await Store.GetUserDataPermAsync(targetUserId, cancellationToken);
|
return await Store.GetUserDataPermAsync(targetUserId, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询角色数据权限
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/get-by-role")]
|
[HttpGet("/rbac/data-perm/get-by-role")]
|
||||||
public Task<RoleDataPermDto> GetByRoleAsync([FromQuery] string roleId, CancellationToken cancellationToken = default)
|
public Task<RoleDataPermDto> GetByRoleAsync([FromQuery] string roleId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
return Store.GetRoleDataPermAsync(ParseGuid(roleId, "roleId"), cancellationToken);
|
return Store.GetRoleDataPermAsync(ParseGuid(roleId, "roleId"), cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存角色数据权限
|
||||||
|
/// </summary>
|
||||||
[HttpPut("/rbac/data-perm/save-role")]
|
[HttpPut("/rbac/data-perm/save-role")]
|
||||||
public async Task<RoleDataPermDto> SaveRoleAsync(
|
public async Task<RoleDataPermDto> SaveRoleAsync(
|
||||||
[FromQuery] string roleId,
|
[FromQuery] string roleId,
|
||||||
@ -180,6 +204,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
return await Store.GetRoleDataPermAsync(targetRoleId, cancellationToken);
|
return await Store.GetRoleDataPermAsync(targetRoleId, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询字段脱敏配置
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/field-mask/list")]
|
[HttpGet("/rbac/data-perm/field-mask/list")]
|
||||||
public async Task<object> GetFieldMaskListAsync([FromQuery] string dataResourceCode, CancellationToken cancellationToken = default)
|
public async Task<object> GetFieldMaskListAsync([FromQuery] string dataResourceCode, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -188,6 +215,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
return new { items };
|
return new { items };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存字段脱敏配置
|
||||||
|
/// </summary>
|
||||||
[HttpPut("/rbac/data-perm/field-mask/save")]
|
[HttpPut("/rbac/data-perm/field-mask/save")]
|
||||||
public Task SaveFieldMaskAsync([FromBody] FieldMaskSaveInput input, CancellationToken cancellationToken = default)
|
public Task SaveFieldMaskAsync([FromBody] FieldMaskSaveInput input, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
@ -195,6 +225,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
return Store.SaveFieldMasksAsync(code, input.Items, cancellationToken);
|
return Store.SaveFieldMasksAsync(code, input.Items, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询变更日志
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/change-log/list")]
|
[HttpGet("/rbac/data-perm/change-log/list")]
|
||||||
public Task<DataPermPagedResult<ChangeLogItemDto>> GetChangeLogListAsync(
|
public Task<DataPermPagedResult<ChangeLogItemDto>> GetChangeLogListAsync(
|
||||||
[FromQuery] string? targetType,
|
[FromQuery] string? targetType,
|
||||||
@ -211,6 +244,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
cancellationToken);
|
cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询访问日志
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/rbac/data-perm/access-log/list")]
|
[HttpGet("/rbac/data-perm/access-log/list")]
|
||||||
public Task<DataPermPagedResult<AccessLogItemDto>> GetAccessLogListAsync(
|
public Task<DataPermPagedResult<AccessLogItemDto>> GetAccessLogListAsync(
|
||||||
[FromQuery] int page = 1,
|
[FromQuery] int page = 1,
|
||||||
@ -223,6 +259,9 @@ public partial class DataPermService : ApplicationService
|
|||||||
cancellationToken);
|
cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除用户权限缓存
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/rbac/data-perm/invalidate-cache")]
|
[HttpPost("/rbac/data-perm/invalidate-cache")]
|
||||||
public async Task InvalidateCacheAsync([FromQuery] string userId, CancellationToken cancellationToken = default)
|
public async Task InvalidateCacheAsync([FromQuery] string userId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
|
|||||||
153
src/Oms.Application/Services/Finance/FinanceService.cs
Normal file
153
src/Oms.Application/Services/Finance/FinanceService.cs
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
using Fake.Application;
|
||||||
|
using Fake.Users;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Oms.Application.DataPerm;
|
||||||
|
using Oms.Application.Dtos.Finance;
|
||||||
|
using Oms.Application.Dtos.Shared;
|
||||||
|
using Oms.Application.Shared;
|
||||||
|
using Oms.Domain.CustomersAggregate.Repositories;
|
||||||
|
using Oms.Domain.OrdersAggregate;
|
||||||
|
using Oms.Domain.OrdersAggregate.Consts;
|
||||||
|
using Oms.Domain.OrdersAggregate.Repositories;
|
||||||
|
|
||||||
|
namespace Oms.Application.Services.Finance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 财务相关 API<50>。
|
||||||
|
/// </summary>
|
||||||
|
[ApiExplorerSettings(GroupName = "OMS-Finance")]
|
||||||
|
public class FinanceService : ApplicationService
|
||||||
|
{
|
||||||
|
private IOrderRepository OrderRepository =>
|
||||||
|
LazyServiceProvider.GetRequiredService<IOrderRepository>();
|
||||||
|
|
||||||
|
private ICustomerRepository CustomerRepository =>
|
||||||
|
LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
private EffectiveScopeBuilder DataScopeBuilder =>
|
||||||
|
LazyServiceProvider.GetRequiredService<EffectiveScopeBuilder>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询应收应付(订单费用联查订单)<E58D95>。
|
||||||
|
/// </summary>
|
||||||
|
[HttpGet("/finance/receivable-payable/list")]
|
||||||
|
public async Task<OmsPageResult<ReceivablePayablePaginatedOutput>> GetReceivablePayableListAsync(
|
||||||
|
[FromQuery] ReceivablePayablePaginatedInput input)
|
||||||
|
{
|
||||||
|
var customerId = await OmsSessionHelper.ResolveListCustomerIdAsync(
|
||||||
|
CustomerRepository,
|
||||||
|
CurrentUser,
|
||||||
|
input.CustomerId);
|
||||||
|
var filter = BuildFilter(input, customerId);
|
||||||
|
await ApplyInternalOrderDataScopeAsync(filter);
|
||||||
|
|
||||||
|
var pageIndex = OmsDocHelper.NormalizePage(input.Page);
|
||||||
|
var pageSize = OmsDocHelper.NormalizePageSize(input.PageSize);
|
||||||
|
var (rows, total) = await OrderRepository.GetReceivablePayablePagedListAsync(
|
||||||
|
pageIndex,
|
||||||
|
pageSize,
|
||||||
|
filter);
|
||||||
|
|
||||||
|
var customerIds = rows
|
||||||
|
.Select(x => x.Order.CustomerId)
|
||||||
|
.Where(x => x.HasValue)
|
||||||
|
.Select(x => x!.Value)
|
||||||
|
.Distinct()
|
||||||
|
.ToArray();
|
||||||
|
var customers = customerIds.Length == 0
|
||||||
|
? []
|
||||||
|
: await CustomerRepository.GetListAsync(x => customerIds.Contains(x.Id));
|
||||||
|
var customerMap = customers.ToDictionary(x => x.Id);
|
||||||
|
|
||||||
|
var items = rows.Select(row =>
|
||||||
|
{
|
||||||
|
string? customerCode = null;
|
||||||
|
if (row.Order.CustomerId.HasValue
|
||||||
|
&& customerMap.TryGetValue(row.Order.CustomerId.Value, out var customer))
|
||||||
|
{
|
||||||
|
customerCode = customer.CustomerCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ReceivablePayablePaginatedOutput
|
||||||
|
{
|
||||||
|
ServiceNo = row.Order.ServiceNo,
|
||||||
|
ClientNo = row.Order.ClientNo,
|
||||||
|
TrackNo = row.Order.TrackNo,
|
||||||
|
CustomerCode = customerCode,
|
||||||
|
OrderStatus = row.Order.OrderStatus,
|
||||||
|
OrderStatusName = OmsDocHelper.GetOrderStatusName(row.Order.OrderStatus),
|
||||||
|
IsPaid = row.Order.IsPaid,
|
||||||
|
PayTime = row.Order.PayTime,
|
||||||
|
ReceiveTime = row.Order.ReceiveTime,
|
||||||
|
ShipTime = row.Order.ShipTime,
|
||||||
|
ProductCode = row.Order.ProductCode,
|
||||||
|
ChannelCode = row.Order.ChannelCode,
|
||||||
|
ConsigneeCountryName = row.Order.ConsigneeCountryName,
|
||||||
|
FeeType = row.Fee.Type,
|
||||||
|
FeeTypeName = GetFeeTypeName(row.Fee.Type),
|
||||||
|
CostItem = row.Fee.CostItem,
|
||||||
|
Amount = row.Fee.Amount,
|
||||||
|
Currency = row.Fee.Currency,
|
||||||
|
DownstreamProvider = row.Fee.DownstreamProvider,
|
||||||
|
PriceNo = row.Fee.PriceNo,
|
||||||
|
PriceEffectiveTime = row.Fee.PriceEffectiveTime,
|
||||||
|
ChargingStage = row.Fee.ChargingStage,
|
||||||
|
ChargingStageName = GetChargingStageName(row.Fee.ChargingStage)
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
return new OmsPageResult<ReceivablePayablePaginatedOutput>
|
||||||
|
{
|
||||||
|
Items = items,
|
||||||
|
Total = total
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OrderReceivablePayableFilter BuildFilter(
|
||||||
|
ReceivablePayablePaginatedInput input,
|
||||||
|
int? customerId) =>
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Keyword = input.Keyword,
|
||||||
|
CustomerId = customerId,
|
||||||
|
CreateTimeStart = input.StartTime,
|
||||||
|
CreateTimeEnd = input.EndTime,
|
||||||
|
FeeType = input.FeeType,
|
||||||
|
CostItem = input.CostItem,
|
||||||
|
ChargingStage = input.ChargingStage
|
||||||
|
};
|
||||||
|
|
||||||
|
private async Task ApplyInternalOrderDataScopeAsync(OrderReceivablePayableFilter filter)
|
||||||
|
{
|
||||||
|
if (OmsSessionHelper.IsCustomerLogin(CurrentUser))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var userGuidRaw = CurrentUser.FindClaimValueOrNull(global::System.Security.Claims.ClaimTypes.NameIdentifier);
|
||||||
|
if (string.IsNullOrWhiteSpace(userGuidRaw) || !Guid.TryParse(userGuidRaw, out var userGuid))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var context = await DataScopeBuilder.BuildAsync(userGuid, DataScopeApplier.OrderResourceCode);
|
||||||
|
DataScopeApplier.ApplyToOrderListFilter(filter, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetFeeTypeName(string feeType) =>
|
||||||
|
feeType switch
|
||||||
|
{
|
||||||
|
OrderFeeTypeCodes.Receivable => "应收",
|
||||||
|
OrderFeeTypeCodes.Payable => "应付",
|
||||||
|
_ => feeType
|
||||||
|
};
|
||||||
|
|
||||||
|
private static string? GetChargingStageName(string? chargingStage) =>
|
||||||
|
chargingStage switch
|
||||||
|
{
|
||||||
|
OrderFeeChargingStageCodes.Forecast => "预报",
|
||||||
|
OrderFeeChargingStageCodes.Inbound => "入库",
|
||||||
|
OrderFeeChargingStageCodes.Outbound => "出库",
|
||||||
|
_ => chargingStage
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -78,12 +78,6 @@ public class InboundRecordService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:入库记录创建参数。</param>
|
/// <param name="input">入参:入库记录创建参数。</param>
|
||||||
/// <returns>入库记录结果。</returns>
|
/// <returns>入库记录结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/operation/inbound/create")]
|
[HttpPost("/operation/inbound/create")]
|
||||||
public async Task<InboundRecordOutput> CreateAsync(CreateInboundRecordInput input)
|
public async Task<InboundRecordOutput> CreateAsync(CreateInboundRecordInput input)
|
||||||
{
|
{
|
||||||
@ -145,12 +139,6 @@ public class InboundRecordService : ApplicationService
|
|||||||
/// <param name="limit">入参:返回记录条数上限。</param>
|
/// <param name="limit">入参:返回记录条数上限。</param>
|
||||||
/// <param name="warehouseId">入参:warehouseId。</param>
|
/// <param name="warehouseId">入参:warehouseId。</param>
|
||||||
/// <returns>入库记录列表结果。</returns>
|
/// <returns>入库记录列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/operation/inbound/recent-list")]
|
[HttpGet("/operation/inbound/recent-list")]
|
||||||
public async Task<OmsItemsResult<InboundRecordOutput>> GetRecentListAsync([FromQuery] int limit = 20, [FromQuery] int? warehouseId = null)
|
public async Task<OmsItemsResult<InboundRecordOutput>> GetRecentListAsync([FromQuery] int limit = 20, [FromQuery] int? warehouseId = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -24,12 +24,6 @@ public class LabelPrintService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:面单打印参数。</param>
|
/// <param name="input">入参:面单打印参数。</param>
|
||||||
/// <returns>面单打印记录。</returns>
|
/// <returns>面单打印记录。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验模板、目标单据等前置依赖数据。
|
|
||||||
/// 2. 执行打印逻辑并记录打印结果。
|
|
||||||
/// 3. 返回打印结果信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/operation/print-label/print")]
|
[HttpPost("/operation/print-label/print")]
|
||||||
public async Task<LabelPrintRecordOutput> PrintAsync(PrintLabelInput input)
|
public async Task<LabelPrintRecordOutput> PrintAsync(PrintLabelInput input)
|
||||||
{
|
{
|
||||||
@ -98,12 +92,6 @@ public class LabelPrintService : ApplicationService
|
|||||||
/// <param name="limit">入参:返回记录条数上限。</param>
|
/// <param name="limit">入参:返回记录条数上限。</param>
|
||||||
/// <param name="labelTemplateId">入参:标签模板主键,可选。</param>
|
/// <param name="labelTemplateId">入参:标签模板主键,可选。</param>
|
||||||
/// <returns>面单打印记录列表结果。</returns>
|
/// <returns>面单打印记录列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/operation/print-label/recent-list")]
|
[HttpGet("/operation/print-label/recent-list")]
|
||||||
public async Task<OmsItemsResult<LabelPrintRecordOutput>> GetRecentListAsync([FromQuery] int limit = 20, [FromQuery] int? labelTemplateId = null)
|
public async Task<OmsItemsResult<LabelPrintRecordOutput>> GetRecentListAsync([FromQuery] int limit = 20, [FromQuery] int? labelTemplateId = null)
|
||||||
{
|
{
|
||||||
@ -141,12 +129,6 @@ public class LabelPrintService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="templateType">入参:模板类型,可选。</param>
|
/// <param name="templateType">入参:模板类型,可选。</param>
|
||||||
/// <returns>标签模板列表结果。</returns>
|
/// <returns>标签模板列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/operation/print-label/template-list")]
|
[HttpGet("/operation/print-label/template-list")]
|
||||||
public async Task<OmsItemsResult<LabelTemplateDropdownOutput>> GetTemplateDropdownListAsync([FromQuery] string? templateType = null)
|
public async Task<OmsItemsResult<LabelTemplateDropdownOutput>> GetTemplateDropdownListAsync([FromQuery] string? templateType = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -40,12 +40,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单分页查询条件。</param>
|
/// <param name="input">入参:订单分页查询条件。</param>
|
||||||
/// <returns>订单分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>订单分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/list")]
|
[HttpPost("/order/list")]
|
||||||
public async Task<OmsPageResult<OrderOutput>> GetPaginatedListAsync([FromBody] OrderPaginatedInput input)
|
public async Task<OmsPageResult<OrderOutput>> GetPaginatedListAsync([FromBody] OrderPaginatedInput input)
|
||||||
{
|
{
|
||||||
@ -91,12 +85,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">入参:目标主键。</param>
|
/// <param name="id">入参:目标主键。</param>
|
||||||
/// <returns>订单详情。</returns>
|
/// <returns>订单详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/order/detail")]
|
[HttpGet("/order/detail")]
|
||||||
public async Task<OrderOutput> GetDetailAsync([FromQuery] int id)
|
public async Task<OrderOutput> GetDetailAsync([FromQuery] int id)
|
||||||
{
|
{
|
||||||
@ -109,12 +97,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>无返回体,仅完成订单支付处理。</returns>
|
/// <returns>无返回体,仅完成订单支付处理。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/pay")]
|
[HttpPost("/order/pay")]
|
||||||
public async Task PayAsync(OrderActionInput input)
|
public async Task PayAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -168,12 +150,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>无返回体,仅完成订单预报处理。</returns>
|
/// <returns>无返回体,仅完成订单预报处理。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/pre-declare")]
|
[HttpPost("/order/pre-declare")]
|
||||||
public async Task PreDeclareAsync(OrderActionInput input)
|
public async Task PreDeclareAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -187,12 +163,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>无返回体,仅完成订单拦截处理。</returns>
|
/// <returns>无返回体,仅完成订单拦截处理。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/intercept")]
|
[HttpPost("/order/intercept")]
|
||||||
public async Task InterceptAsync(OrderActionInput input)
|
public async Task InterceptAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -206,12 +176,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>无返回体,仅完成取消订单拦截。</returns>
|
/// <returns>无返回体,仅完成取消订单拦截。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/cancel-intercept")]
|
[HttpPost("/order/cancel-intercept")]
|
||||||
public async Task CancelInterceptAsync(OrderActionInput input)
|
public async Task CancelInterceptAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -225,12 +189,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>无返回体,仅完成删除订单。</returns>
|
/// <returns>无返回体,仅完成删除订单。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/delete")]
|
[HttpPost("/order/delete")]
|
||||||
public async Task DeleteAsync(OrderActionInput input)
|
public async Task DeleteAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -250,12 +208,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单操作参数。</param>
|
/// <param name="input">入参:订单操作参数。</param>
|
||||||
/// <returns>订单打印结果。</returns>
|
/// <returns>订单打印结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验模板、目标单据等前置依赖数据。
|
|
||||||
/// 2. 执行打印逻辑并记录打印结果。
|
|
||||||
/// 3. 返回打印结果信息。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/print")]
|
[HttpPost("/order/print")]
|
||||||
public async Task<OrderPrintOutput> PrintAsync(OrderActionInput input)
|
public async Task<OrderPrintOutput> PrintAsync(OrderActionInput input)
|
||||||
{
|
{
|
||||||
@ -269,12 +221,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单导出筛选条件。</param>
|
/// <param name="input">入参:订单导出筛选条件。</param>
|
||||||
/// <returns>订单导出结果。</returns>
|
/// <returns>订单导出结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据筛选条件查询待导出数据或定位模板资源。
|
|
||||||
/// 2. 生成文件内容或组装下载响应。
|
|
||||||
/// 3. 以文件形式返回结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/export")]
|
[HttpPost("/order/export")]
|
||||||
public async Task<OrderExportOutput> ExportAsync([FromBody] OrderExportInput input)
|
public async Task<OrderExportOutput> ExportAsync([FromBody] OrderExportInput input)
|
||||||
{
|
{
|
||||||
@ -302,12 +248,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单运费试算参数。</param>
|
/// <param name="input">入参:订单运费试算参数。</param>
|
||||||
/// <returns>订单运费试算列表结果。</returns>
|
/// <returns>订单运费试算列表结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 按 bindTime 解析销售产品最新生效卖价/规则快照(与 parcel/create 同源)。
|
|
||||||
/// 2. 计重、分区匹配后基于卖价快照计算预报阶段应收费用。
|
|
||||||
/// 3. 返回试算金额及 rulesVersion、priceVersion。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/price-check")]
|
[HttpPost("/order/price-check")]
|
||||||
public async Task<OrderPriceCheckResultOutput> PriceCheckAsync(OrderPriceCheckInput input)
|
public async Task<OrderPriceCheckResultOutput> PriceCheckAsync(OrderPriceCheckInput input)
|
||||||
{
|
{
|
||||||
@ -319,12 +259,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单模板列表查询条件。</param>
|
/// <param name="input">入参:订单模板列表查询条件。</param>
|
||||||
/// <returns>订单模板分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>订单模板分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/order/template/list")]
|
[HttpGet("/order/template/list")]
|
||||||
public async Task<OmsPageResult<OrderTemplateOutput>> GetTemplateListAsync([FromQuery] OrderTemplateListInput input)
|
public async Task<OmsPageResult<OrderTemplateOutput>> GetTemplateListAsync([FromQuery] OrderTemplateListInput input)
|
||||||
{
|
{
|
||||||
@ -337,12 +271,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="templateId">入参:模板主键。</param>
|
/// <param name="templateId">入参:模板主键。</param>
|
||||||
/// <returns>文件流响应。</returns>
|
/// <returns>文件流响应。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据筛选条件查询待导出数据或定位模板资源。
|
|
||||||
/// 2. 生成文件内容或组装下载响应。
|
|
||||||
/// 3. 以文件形式返回结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/order/template/download")]
|
[HttpGet("/order/template/download")]
|
||||||
public async Task<FileContentResult> DownloadTemplateAsync([FromQuery] int templateId)
|
public async Task<FileContentResult> DownloadTemplateAsync([FromQuery] int templateId)
|
||||||
{
|
{
|
||||||
@ -354,12 +282,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单导入参数。</param>
|
/// <param name="input">入参:订单导入参数。</param>
|
||||||
/// <returns>订单导入结果。</returns>
|
/// <returns>订单导入结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验上传文件及导入参数。
|
|
||||||
/// 2. 解析文件内容并执行导入流程。
|
|
||||||
/// 3. 汇总成功失败结果后返回。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/upload")]
|
[HttpPost("/order/upload")]
|
||||||
public async Task<OrderUploadOutput> UploadAsync([FromForm] OrderUploadInput input)
|
public async Task<OrderUploadOutput> UploadAsync([FromForm] OrderUploadInput input)
|
||||||
{
|
{
|
||||||
@ -371,12 +293,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单任务列表查询条件。</param>
|
/// <param name="input">入参:订单任务列表查询条件。</param>
|
||||||
/// <returns>订单任务分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>订单任务分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/order/task/list")]
|
[HttpGet("/order/task/list")]
|
||||||
public async Task<OmsPageResult<OrderTaskOutput>> GetTaskListAsync([FromQuery] OrderTaskListInput input)
|
public async Task<OmsPageResult<OrderTaskOutput>> GetTaskListAsync([FromQuery] OrderTaskListInput input)
|
||||||
{
|
{
|
||||||
@ -388,12 +304,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="taskId">入参:任务主键。</param>
|
/// <param name="taskId">入参:任务主键。</param>
|
||||||
/// <returns>订单任务详情。</returns>
|
/// <returns>订单任务详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/order/task/detail")]
|
[HttpGet("/order/task/detail")]
|
||||||
public async Task<OrderTaskDetailOutput> GetTaskDetailAsync([FromQuery] int taskId)
|
public async Task<OrderTaskDetailOutput> GetTaskDetailAsync([FromQuery] int taskId)
|
||||||
{
|
{
|
||||||
@ -405,12 +315,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:订单包裹创建参数。</param>
|
/// <param name="input">入参:订单包裹创建参数。</param>
|
||||||
/// <returns>订单包裹创建结果。</returns>
|
/// <returns>订单包裹创建结果。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/parcel/create")]
|
[HttpPost("/order/parcel/create")]
|
||||||
public async Task<OrderParcelCreateOutput> CreateParcelAsync(OrderParcelCreateInput input)
|
public async Task<OrderParcelCreateOutput> CreateParcelAsync(OrderParcelCreateInput input)
|
||||||
{
|
{
|
||||||
@ -422,12 +326,6 @@ public partial class OrderService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:批量创建小包请求集合,每条记录沿用单票创建结构。</param>
|
/// <param name="input">入参:批量创建小包请求集合,每条记录沿用单票创建结构。</param>
|
||||||
/// <returns>批量处理结果,包含批次号、成功失败数量与逐条执行明细。</returns>
|
/// <returns>批量处理结果,包含批次号、成功失败数量与逐条执行明细。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验批量请求非空后逐条复用单票创建逻辑。
|
|
||||||
/// 2. 单条失败不会中断整批处理,允许部分成功部分失败。
|
|
||||||
/// 3. 返回逐条执行结果,方便调用方定位失败原因并重试。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/order/parcel/batch-create")]
|
[HttpPost("/order/parcel/batch-create")]
|
||||||
public async Task<OrderParcelBatchCreateOutput> BatchCreateParcelAsync(OrderParcelBatchCreateInput input)
|
public async Task<OrderParcelBatchCreateOutput> BatchCreateParcelAsync(OrderParcelBatchCreateInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -68,12 +68,6 @@ public class RechargeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:充值审核通过参数。</param>
|
/// <param name="input">入参:充值审核通过参数。</param>
|
||||||
/// <returns>无返回体,仅完成审核通过充值记录。</returns>
|
/// <returns>无返回体,仅完成审核通过充值记录。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/recharge/recharge-record/approve")]
|
[HttpPost("/recharge/recharge-record/approve")]
|
||||||
public async Task ApproveAsync(ApproveRechargeInput input)
|
public async Task ApproveAsync(ApproveRechargeInput input)
|
||||||
{
|
{
|
||||||
@ -112,12 +106,6 @@ public class RechargeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:充值审核驳回参数。</param>
|
/// <param name="input">入参:充值审核驳回参数。</param>
|
||||||
/// <returns>无返回体,仅完成驳回充值记录。</returns>
|
/// <returns>无返回体,仅完成驳回充值记录。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象及当前状态。
|
|
||||||
/// 2. 执行业务状态流转或敏感字段更新。
|
|
||||||
/// 3. 写入审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/recharge/recharge-record/reject")]
|
[HttpPost("/recharge/recharge-record/reject")]
|
||||||
public async Task RejectAsync(RejectRechargeInput input)
|
public async Task RejectAsync(RejectRechargeInput input)
|
||||||
{
|
{
|
||||||
@ -140,12 +128,6 @@ public class RechargeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:充值记录分页查询条件。</param>
|
/// <param name="input">入参:充值记录分页查询条件。</param>
|
||||||
/// <returns>充值记录分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>充值记录分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/recharge/recharge-record/list")]
|
[HttpGet("/recharge/recharge-record/list")]
|
||||||
public async Task<OmsPageResult<RechargeRecordPaginatedOutput>> GetPaginatedListAsync([FromQuery] RechargeRecordPaginatedInput input)
|
public async Task<OmsPageResult<RechargeRecordPaginatedOutput>> GetPaginatedListAsync([FromQuery] RechargeRecordPaginatedInput input)
|
||||||
{
|
{
|
||||||
@ -199,12 +181,6 @@ public class RechargeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:充值记录导出筛选条件。</param>
|
/// <param name="input">入参:充值记录导出筛选条件。</param>
|
||||||
/// <returns>文件流响应。</returns>
|
/// <returns>文件流响应。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据筛选条件查询待导出数据或定位模板资源。
|
|
||||||
/// 2. 生成文件内容或组装下载响应。
|
|
||||||
/// 3. 以文件形式返回结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/recharge/export")]
|
[HttpGet("/recharge/export")]
|
||||||
public async Task<FileContentResult> ExportAsync([FromQuery] RechargeExportInput input)
|
public async Task<FileContentResult> ExportAsync([FromQuery] RechargeExportInput input)
|
||||||
{
|
{
|
||||||
@ -329,12 +305,6 @@ public class RechargeService : ApplicationService
|
|||||||
/// <param name="startTime">入参:充值时间开始值。</param>
|
/// <param name="startTime">入参:充值时间开始值。</param>
|
||||||
/// <param name="endTime">入参:充值时间结束值。</param>
|
/// <param name="endTime">入参:充值时间结束值。</param>
|
||||||
/// <returns>出参:可直接交给 SqlSugar 仓储执行的充值记录筛选表达式。</returns>
|
/// <returns>出参:可直接交给 SqlSugar 仓储执行的充值记录筛选表达式。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 将可选筛选条件先转换成布尔开关和值;
|
|
||||||
/// 2. 根据时间区间是否存在拆分表达式;
|
|
||||||
/// 3. 避免在 SQL 翻译阶段混用 Nullable 时间判空和比较,降低生成异常 SQL 的风险。
|
|
||||||
/// </remarks>
|
|
||||||
private static Expression<Func<RechargeRecord, bool>> BuildRechargePredicate(
|
private static Expression<Func<RechargeRecord, bool>> BuildRechargePredicate(
|
||||||
int? customerId,
|
int? customerId,
|
||||||
RechargeStatus? rechargeStatus,
|
RechargeStatus? rechargeStatus,
|
||||||
|
|||||||
@ -17,12 +17,6 @@ public class CountryService : ApplicationService
|
|||||||
/// 查询国家列表。
|
/// 查询国家列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>国家列表,返回全部有效国家主数据。</returns>
|
/// <returns>国家列表,返回全部有效国家主数据。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询全部国家主数据。
|
|
||||||
/// 2. 按国家代码和英文名稳定排序。
|
|
||||||
/// 3. 返回页面选择器可直接消费的静态结果集。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/system/country/list")]
|
[HttpGet("/system/country/list")]
|
||||||
public async Task<List<CountryOutput>> GetListAsync()
|
public async Task<List<CountryOutput>> GetListAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -22,12 +22,6 @@ public class DictService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:字典分页查询条件。</param>
|
/// <param name="input">入参:字典分页查询条件。</param>
|
||||||
/// <returns>字典分页结果,包含字典列表与总记录数。</returns>
|
/// <returns>字典分页结果,包含字典列表与总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据字典类型和关键词拼装筛选条件。
|
|
||||||
/// 2. 按排序值升序、主键降序返回分页结果。
|
|
||||||
/// 3. 供系统配置页直接展示和编辑。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/system/dict/list")]
|
[HttpGet("/system/dict/list")]
|
||||||
public async Task<OmsPageResult<DictOutput>> GetListAsync([FromQuery] DictListInput input)
|
public async Task<OmsPageResult<DictOutput>> GetListAsync([FromQuery] DictListInput input)
|
||||||
{
|
{
|
||||||
@ -53,12 +47,6 @@ public class DictService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:字典新增参数。</param>
|
/// <param name="input">入参:字典新增参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增字典。</returns>
|
/// <returns>无返回体,仅完成新增字典。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验类型、编码、名称等基础字段。
|
|
||||||
/// 2. 检查同类型下编码唯一性。
|
|
||||||
/// 3. 写入字典主数据供系统配置复用。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/dict/create")]
|
[HttpPost("/system/dict/create")]
|
||||||
public async Task CreateAsync(DictCreateInput input)
|
public async Task CreateAsync(DictCreateInput input)
|
||||||
{
|
{
|
||||||
@ -77,12 +65,6 @@ public class DictService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:字典更新参数。</param>
|
/// <param name="input">入参:字典更新参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新字典。</returns>
|
/// <returns>无返回体,仅完成更新字典。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标字典是否存在。
|
|
||||||
/// 2. 检查更新后的类型与编码组合唯一性。
|
|
||||||
/// 3. 保存排序、编码和名称等最新配置。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/dict/update")]
|
[HttpPost("/system/dict/update")]
|
||||||
public async Task UpdateAsync(DictUpdateInput input)
|
public async Task UpdateAsync(DictUpdateInput input)
|
||||||
{
|
{
|
||||||
@ -100,12 +82,6 @@ public class DictService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除字典。</returns>
|
/// <returns>无返回体,仅完成删除字典。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标字典是否存在。
|
|
||||||
/// 2. 走框架删除通道保留软删语义。
|
|
||||||
/// 3. 让下游列表自动隐藏已删除记录。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/dict/delete")]
|
[HttpPost("/system/dict/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -32,12 +32,6 @@ public class NoticeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:通知分页查询条件。</param>
|
/// <param name="input">入参:通知分页查询条件。</param>
|
||||||
/// <returns>通知分页结果,包含通知主体、接收范围与已读统计。</returns>
|
/// <returns>通知分页结果,包含通知主体、接收范围与已读统计。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据通知类型、接收对象和关键词过滤通知。
|
|
||||||
/// 2. 聚合已读明细,计算每条通知的已读数。
|
|
||||||
/// 3. 返回接收范围、弹窗标记与统计字段供管理端展示。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/system/notice/list")]
|
[HttpGet("/system/notice/list")]
|
||||||
public async Task<OmsPageResult<NoticeOutput>> GetListAsync([FromQuery] NoticeListInput input)
|
public async Task<OmsPageResult<NoticeOutput>> GetListAsync([FromQuery] NoticeListInput input)
|
||||||
{
|
{
|
||||||
@ -75,12 +69,6 @@ public class NoticeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:通知新增参数。</param>
|
/// <param name="input">入参:通知新增参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增通知。</returns>
|
/// <returns>无返回体,仅完成新增通知。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验通知类型、接收对象和接收范围。
|
|
||||||
/// 2. 验证用户或客户接收主体真实存在。
|
|
||||||
/// 3. 保存公告或站内信主体,已读状态由确认接口单独落库。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/notice/create")]
|
[HttpPost("/system/notice/create")]
|
||||||
public async Task CreateAsync(NoticeCreateInput input)
|
public async Task CreateAsync(NoticeCreateInput input)
|
||||||
{
|
{
|
||||||
@ -102,12 +90,6 @@ public class NoticeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:通知更新参数。</param>
|
/// <param name="input">入参:通知更新参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新通知。</returns>
|
/// <returns>无返回体,仅完成更新通知。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标通知是否存在。
|
|
||||||
/// 2. 更新主体内容与接收范围。
|
|
||||||
/// 3. 清理不在新接收范围内的历史已读明细。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/notice/update")]
|
[HttpPost("/system/notice/update")]
|
||||||
public async Task UpdateAsync(NoticeUpdateInput input)
|
public async Task UpdateAsync(NoticeUpdateInput input)
|
||||||
{
|
{
|
||||||
@ -135,12 +117,6 @@ public class NoticeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除通知。</returns>
|
/// <returns>无返回体,仅完成删除通知。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标通知是否存在。
|
|
||||||
/// 2. 走框架删除通道保留软删语义。
|
|
||||||
/// 3. 让通知与已读统计在常规查询中自动不可见。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/notice/delete")]
|
[HttpPost("/system/notice/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -153,12 +129,6 @@ public class NoticeService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标通知主键。</param>
|
/// <param name="input">入参:目标通知主键。</param>
|
||||||
/// <returns>无返回体,仅完成当前主体的已读确认。</returns>
|
/// <returns>无返回体,仅完成当前主体的已读确认。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据当前登录主体解析 user/customer 接收身份。
|
|
||||||
/// 2. 校验当前主体在通知接收范围内。
|
|
||||||
/// 3. 按通知、接收类型、接收ID 幂等写入已读明细。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/notice/read-confirm")]
|
[HttpPost("/system/notice/read-confirm")]
|
||||||
public async Task ReadConfirmAsync(IdInput input)
|
public async Task ReadConfirmAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -42,6 +42,9 @@ public class SystemBatchEmailService : ApplicationService
|
|||||||
Total = total
|
Total = total
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查询邮件模板列表
|
||||||
|
/// </summary>
|
||||||
[HttpGet("/system/batch-email/templates/list")]
|
[HttpGet("/system/batch-email/templates/list")]
|
||||||
public async Task<List<BatchEmailTemplateOutput>> GetTemplateListAsync()
|
public async Task<List<BatchEmailTemplateOutput>> GetTemplateListAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -26,12 +26,6 @@ public class WarehouseService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:仓库分页查询条件。</param>
|
/// <param name="input">入参:仓库分页查询条件。</param>
|
||||||
/// <returns>仓库分页结果,包含列表数据和总记录数。</returns>
|
/// <returns>仓库分页结果,包含列表数据和总记录数。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据查询条件构造筛选规则。
|
|
||||||
/// 2. 查询目标数据并补齐关联展示字段。
|
|
||||||
/// 3. 按接口约定返回列表结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/system/warehouse/list")]
|
[HttpGet("/system/warehouse/list")]
|
||||||
public async Task<OmsPageResult<WarehousePaginatedOutput>> GetPaginatedListAsync([FromQuery] WarehousePaginatedInput input)
|
public async Task<OmsPageResult<WarehousePaginatedOutput>> GetPaginatedListAsync([FromQuery] WarehousePaginatedInput input)
|
||||||
{
|
{
|
||||||
@ -66,12 +60,6 @@ public class WarehouseService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">入参:目标主键。</param>
|
/// <param name="id">入参:目标主键。</param>
|
||||||
/// <returns>仓库详情。</returns>
|
/// <returns>仓库详情。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 根据标识查询目标对象。
|
|
||||||
/// 2. 目标不存在时抛出业务异常。
|
|
||||||
/// 3. 映射并返回详情结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpGet("/system/warehouse/detail")]
|
[HttpGet("/system/warehouse/detail")]
|
||||||
public async Task<WarehouseOutput> GetByIdAsync([FromQuery] int id)
|
public async Task<WarehouseOutput> GetByIdAsync([FromQuery] int id)
|
||||||
{
|
{
|
||||||
@ -90,12 +78,6 @@ public class WarehouseService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:仓库创建参数。</param>
|
/// <param name="input">入参:仓库创建参数。</param>
|
||||||
/// <returns>无返回体,仅完成新增仓库。</returns>
|
/// <returns>无返回体,仅完成新增仓库。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 校验入参与关联对象、唯一性等前置条件。
|
|
||||||
/// 2. 组装目标实体及相关明细数据。
|
|
||||||
/// 3. 写入审计字段并持久化结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/warehouse/create")]
|
[HttpPost("/system/warehouse/create")]
|
||||||
public async Task CreateAsync(CreateWarehouseInput input)
|
public async Task CreateAsync(CreateWarehouseInput input)
|
||||||
{
|
{
|
||||||
@ -125,12 +107,6 @@ public class WarehouseService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:仓库更新参数。</param>
|
/// <param name="input">入参:仓库更新参数。</param>
|
||||||
/// <returns>无返回体,仅完成更新仓库。</returns>
|
/// <returns>无返回体,仅完成更新仓库。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 按入参更新主体数据和关联配置。
|
|
||||||
/// 3. 写入更新审计字段并保存结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/warehouse/update")]
|
[HttpPost("/system/warehouse/update")]
|
||||||
public async Task UpdateAsync(UpdateWarehouseInput input)
|
public async Task UpdateAsync(UpdateWarehouseInput input)
|
||||||
{
|
{
|
||||||
@ -158,12 +134,6 @@ public class WarehouseService : ApplicationService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input">入参:目标主键。</param>
|
/// <param name="input">入参:目标主键。</param>
|
||||||
/// <returns>无返回体,仅完成删除仓库。</returns>
|
/// <returns>无返回体,仅完成删除仓库。</returns>
|
||||||
/// <remarks>
|
|
||||||
/// 核心业务逻辑:
|
|
||||||
/// 1. 查询并校验目标对象。
|
|
||||||
/// 2. 执行软删除或删除关联明细。
|
|
||||||
/// 3. 持久化删除结果。
|
|
||||||
/// </remarks>
|
|
||||||
[HttpPost("/system/warehouse/delete")]
|
[HttpPost("/system/warehouse/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -19,6 +19,9 @@ public class XhsAgentService : ApplicationService
|
|||||||
private IXhsHumanConfigRepository HumanConfigRepository => LazyServiceProvider.GetRequiredService<IXhsHumanConfigRepository>();
|
private IXhsHumanConfigRepository HumanConfigRepository => LazyServiceProvider.GetRequiredService<IXhsHumanConfigRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 注册小红书Agent
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/agent/register")]
|
[HttpPost("/xhs/agent/register")]
|
||||||
public async Task<XhsAgentRegisterOutput> RegisterAsync(XhsAgentRegisterInput input)
|
public async Task<XhsAgentRegisterOutput> RegisterAsync(XhsAgentRegisterInput input)
|
||||||
{
|
{
|
||||||
@ -69,6 +72,9 @@ public class XhsAgentService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Agent心跳上报
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/agent/heartbeat")]
|
[HttpPost("/xhs/agent/heartbeat")]
|
||||||
public async Task<XhsAgentHeartbeatOutput> HeartbeatAsync(XhsAgentHeartbeatInput input)
|
public async Task<XhsAgentHeartbeatOutput> HeartbeatAsync(XhsAgentHeartbeatInput input)
|
||||||
{
|
{
|
||||||
@ -91,6 +97,9 @@ public class XhsAgentService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询Agent列表
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/agent/list")]
|
[HttpPost("/xhs/agent/list")]
|
||||||
public async Task<OmsPageResult<XhsAgentOutput>> ListAsync(XhsAgentListInput input)
|
public async Task<OmsPageResult<XhsAgentOutput>> ListAsync(XhsAgentListInput input)
|
||||||
{
|
{
|
||||||
@ -116,6 +125,9 @@ public class XhsAgentService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 控制Agent设备
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/agent/control")]
|
[HttpPost("/xhs/agent/control")]
|
||||||
public async Task<XhsAgentControlOutput> ControlAsync(XhsAgentControlInput input)
|
public async Task<XhsAgentControlOutput> ControlAsync(XhsAgentControlInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,6 +17,9 @@ public class XhsAiService : ApplicationService
|
|||||||
private IXhsAiProviderRepository AiProviderRepository => LazyServiceProvider.GetRequiredService<IXhsAiProviderRepository>();
|
private IXhsAiProviderRepository AiProviderRepository => LazyServiceProvider.GetRequiredService<IXhsAiProviderRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询AI服务商列表
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/ai/provider/list")]
|
[HttpPost("/xhs/ai/provider/list")]
|
||||||
public async Task<OmsItemsResult<XhsAiProviderOutput>> ListProvidersAsync()
|
public async Task<OmsItemsResult<XhsAiProviderOutput>> ListProvidersAsync()
|
||||||
{
|
{
|
||||||
@ -28,6 +31,9 @@ public class XhsAiService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存AI服务商配置
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/ai/provider/save")]
|
[HttpPost("/xhs/ai/provider/save")]
|
||||||
public async Task<XhsAiProviderOutput> SaveProviderAsync(XhsAiProviderSaveInput input)
|
public async Task<XhsAiProviderOutput> SaveProviderAsync(XhsAiProviderSaveInput input)
|
||||||
{
|
{
|
||||||
@ -78,6 +84,9 @@ public class XhsAiService : ApplicationService
|
|||||||
return MapProvider(entity, maskSecret: true);
|
return MapProvider(entity, maskSecret: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AI对话
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/ai/chat")]
|
[HttpPost("/xhs/ai/chat")]
|
||||||
public async Task<XhsAiChatOutput> ChatAsync(XhsAiChatInput input)
|
public async Task<XhsAiChatOutput> ChatAsync(XhsAiChatInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -21,6 +21,9 @@ public class XhsAnalysisService : ApplicationService
|
|||||||
private IXhsAgentRepository AgentRepository => LazyServiceProvider.GetRequiredService<IXhsAgentRepository>();
|
private IXhsAgentRepository AgentRepository => LazyServiceProvider.GetRequiredService<IXhsAgentRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 启动分析会话
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/analysis/start")]
|
[HttpPost("/xhs/analysis/start")]
|
||||||
public async Task<XhsAnalysisStartOutput> StartAsync(XhsAnalysisStartInput input)
|
public async Task<XhsAnalysisStartOutput> StartAsync(XhsAnalysisStartInput input)
|
||||||
{
|
{
|
||||||
@ -28,6 +31,9 @@ public class XhsAnalysisService : ApplicationService
|
|||||||
return await StartSessionAsync(customerId, input);
|
return await StartSessionAsync(customerId, input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询分析会话
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/analysis/list")]
|
[HttpPost("/xhs/analysis/list")]
|
||||||
public async Task<OmsPageResult<XhsAnalysisSessionOutput>> ListAsync(XhsAnalysisListInput input)
|
public async Task<OmsPageResult<XhsAnalysisSessionOutput>> ListAsync(XhsAnalysisListInput input)
|
||||||
{
|
{
|
||||||
@ -52,6 +58,9 @@ public class XhsAnalysisService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询分析会话详情
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/analysis/detail")]
|
[HttpPost("/xhs/analysis/detail")]
|
||||||
public async Task<XhsAnalysisDetailOutput> DetailAsync(XhsAnalysisDetailInput input)
|
public async Task<XhsAnalysisDetailOutput> DetailAsync(XhsAnalysisDetailInput input)
|
||||||
{
|
{
|
||||||
@ -83,6 +92,9 @@ public class XhsAnalysisService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 执行AI分析
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/analysis/run-ai")]
|
[HttpPost("/xhs/analysis/run-ai")]
|
||||||
public async Task<XhsAnalysisRunAiOutput> RunAiAsync(XhsAnalysisRunAiInput input)
|
public async Task<XhsAnalysisRunAiOutput> RunAiAsync(XhsAnalysisRunAiInput input)
|
||||||
{
|
{
|
||||||
@ -130,6 +142,9 @@ public class XhsAnalysisService : ApplicationService
|
|||||||
return new XhsAnalysisRunAiOutput { Markdown = markdown };
|
return new XhsAnalysisRunAiOutput { Markdown = markdown };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建互动任务
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/analysis/interact")]
|
[HttpPost("/xhs/analysis/interact")]
|
||||||
public async Task<XhsAnalysisInteractOutput> InteractAsync(XhsAnalysisInteractInput input)
|
public async Task<XhsAnalysisInteractOutput> InteractAsync(XhsAnalysisInteractInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,6 +15,9 @@ public class XhsCreationService : ApplicationService
|
|||||||
private IXhsPublishRecordRepository PublishRecordRepository => LazyServiceProvider.GetRequiredService<IXhsPublishRecordRepository>();
|
private IXhsPublishRecordRepository PublishRecordRepository => LazyServiceProvider.GetRequiredService<IXhsPublishRecordRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 发布创作内容
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/creation/publish")]
|
[HttpPost("/xhs/creation/publish")]
|
||||||
public async Task<XhsCreationPublishOutput> PublishAsync(XhsCreationPublishInput input)
|
public async Task<XhsCreationPublishOutput> PublishAsync(XhsCreationPublishInput input)
|
||||||
{
|
{
|
||||||
@ -56,6 +59,9 @@ public class XhsCreationService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AI生成创作内容
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/creation/generate")]
|
[HttpPost("/xhs/creation/generate")]
|
||||||
public async Task<XhsCreationGenerateOutput> GenerateAsync(XhsCreationGenerateInput input)
|
public async Task<XhsCreationGenerateOutput> GenerateAsync(XhsCreationGenerateInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,6 +15,9 @@ public class XhsHumanConfigService : ApplicationService
|
|||||||
private IXhsAgentRepository AgentRepository => LazyServiceProvider.GetRequiredService<IXhsAgentRepository>();
|
private IXhsAgentRepository AgentRepository => LazyServiceProvider.GetRequiredService<IXhsAgentRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询人机行为配置
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/human-config/get")]
|
[HttpPost("/xhs/human-config/get")]
|
||||||
public async Task<XhsHumanConfigOutput> GetAsync()
|
public async Task<XhsHumanConfigOutput> GetAsync()
|
||||||
{
|
{
|
||||||
@ -23,6 +26,9 @@ public class XhsHumanConfigService : ApplicationService
|
|||||||
return MapOutput(config);
|
return MapOutput(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存人机行为配置
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/human-config/save")]
|
[HttpPost("/xhs/human-config/save")]
|
||||||
public async Task<XhsHumanConfigOutput> SaveAsync(XhsHumanConfigSaveInput input)
|
public async Task<XhsHumanConfigOutput> SaveAsync(XhsHumanConfigSaveInput input)
|
||||||
{
|
{
|
||||||
@ -35,6 +41,9 @@ public class XhsHumanConfigService : ApplicationService
|
|||||||
return MapOutput(config);
|
return MapOutput(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 拉取人机行为配置
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/human-config/pull")]
|
[HttpPost("/xhs/human-config/pull")]
|
||||||
public async Task<XhsHumanConfigPullOutput> PullAsync(XhsHumanConfigPullInput input)
|
public async Task<XhsHumanConfigPullOutput> PullAsync(XhsHumanConfigPullInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,6 +17,9 @@ public class XhsMediaService : ApplicationService
|
|||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
private IWebHostEnvironment WebHostEnvironment => LazyServiceProvider.GetRequiredService<IWebHostEnvironment>();
|
private IWebHostEnvironment WebHostEnvironment => LazyServiceProvider.GetRequiredService<IWebHostEnvironment>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上传媒体文件
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/media/upload")]
|
[HttpPost("/xhs/media/upload")]
|
||||||
public async Task<XhsMediaUploadOutput> UploadAsync(IFormFile file)
|
public async Task<XhsMediaUploadOutput> UploadAsync(IFormFile file)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,6 +17,9 @@ public class XhsPublishService : ApplicationService
|
|||||||
private IXhsTaskRepository TaskRepository => LazyServiceProvider.GetRequiredService<IXhsTaskRepository>();
|
private IXhsTaskRepository TaskRepository => LazyServiceProvider.GetRequiredService<IXhsTaskRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询发布记录
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/publish/list")]
|
[HttpPost("/xhs/publish/list")]
|
||||||
public async Task<OmsPageResult<XhsPublishRecordOutput>> ListAsync(XhsPublishListInput input)
|
public async Task<OmsPageResult<XhsPublishRecordOutput>> ListAsync(XhsPublishListInput input)
|
||||||
{
|
{
|
||||||
@ -37,6 +40,9 @@ public class XhsPublishService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取消定时发布
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/publish/cancel")]
|
[HttpPost("/xhs/publish/cancel")]
|
||||||
public async Task CancelAsync(XhsPublishCancelInput input)
|
public async Task CancelAsync(XhsPublishCancelInput input)
|
||||||
{
|
{
|
||||||
@ -62,6 +68,9 @@ public class XhsPublishService : ApplicationService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重试失败发布
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/publish/retry")]
|
[HttpPost("/xhs/publish/retry")]
|
||||||
public async Task<XhsCreationPublishOutput> RetryAsync(XhsPublishRetryInput input)
|
public async Task<XhsCreationPublishOutput> RetryAsync(XhsPublishRetryInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,6 +16,9 @@ public class XhsSkillService : ApplicationService
|
|||||||
private IXhsSkillRepository SkillRepository => LazyServiceProvider.GetRequiredService<IXhsSkillRepository>();
|
private IXhsSkillRepository SkillRepository => LazyServiceProvider.GetRequiredService<IXhsSkillRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询技能列表
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/skill/list")]
|
[HttpPost("/xhs/skill/list")]
|
||||||
public async Task<OmsItemsResult<XhsSkillOutput>> ListAsync(XhsSkillListInput input)
|
public async Task<OmsItemsResult<XhsSkillOutput>> ListAsync(XhsSkillListInput input)
|
||||||
{
|
{
|
||||||
@ -31,6 +34,9 @@ public class XhsSkillService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存技能
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/skill/save")]
|
[HttpPost("/xhs/skill/save")]
|
||||||
public async Task<XhsSkillOutput> SaveAsync(XhsSkillSaveInput input)
|
public async Task<XhsSkillOutput> SaveAsync(XhsSkillSaveInput input)
|
||||||
{
|
{
|
||||||
@ -71,6 +77,9 @@ public class XhsSkillService : ApplicationService
|
|||||||
return MapSkill(entity);
|
return MapSkill(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除技能
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/skill/delete")]
|
[HttpPost("/xhs/skill/delete")]
|
||||||
public async Task DeleteAsync(IdInput input)
|
public async Task DeleteAsync(IdInput input)
|
||||||
{
|
{
|
||||||
@ -84,6 +93,9 @@ public class XhsSkillService : ApplicationService
|
|||||||
await SkillRepository.DeleteAsync(entity);
|
await SkillRepository.DeleteAsync(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 运行技能
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/skill/run")]
|
[HttpPost("/xhs/skill/run")]
|
||||||
public async Task<XhsSkillRunOutput> RunAsync(XhsSkillRunInput input)
|
public async Task<XhsSkillRunOutput> RunAsync(XhsSkillRunInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -20,6 +20,9 @@ public class XhsTaskService : ApplicationService
|
|||||||
private IXhsAnalysisSessionRepository AnalysisSessionRepository => LazyServiceProvider.GetRequiredService<IXhsAnalysisSessionRepository>();
|
private IXhsAnalysisSessionRepository AnalysisSessionRepository => LazyServiceProvider.GetRequiredService<IXhsAnalysisSessionRepository>();
|
||||||
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
private ICustomerRepository CustomerRepository => LazyServiceProvider.GetRequiredService<ICustomerRepository>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 领取待执行任务
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/task/claim")]
|
[HttpPost("/xhs/task/claim")]
|
||||||
public async Task<XhsTaskClaimOutput> ClaimAsync(XhsTaskClaimInput input)
|
public async Task<XhsTaskClaimOutput> ClaimAsync(XhsTaskClaimInput input)
|
||||||
{
|
{
|
||||||
@ -42,6 +45,9 @@ public class XhsTaskService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 上报任务执行结果
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/task/report")]
|
[HttpPost("/xhs/task/report")]
|
||||||
public async Task<XhsTaskReportOutput> ReportAsync(XhsTaskReportInput input)
|
public async Task<XhsTaskReportOutput> ReportAsync(XhsTaskReportInput input)
|
||||||
{
|
{
|
||||||
@ -83,6 +89,9 @@ public class XhsTaskService : ApplicationService
|
|||||||
return new XhsTaskReportOutput();
|
return new XhsTaskReportOutput();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 分页查询任务列表
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/task/list")]
|
[HttpPost("/xhs/task/list")]
|
||||||
public async Task<OmsPageResult<XhsTaskOutput>> ListAsync(XhsTaskListInput input)
|
public async Task<OmsPageResult<XhsTaskOutput>> ListAsync(XhsTaskListInput input)
|
||||||
{
|
{
|
||||||
@ -104,6 +113,9 @@ public class XhsTaskService : ApplicationService
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 取消任务
|
||||||
|
/// </summary>
|
||||||
[HttpPost("/xhs/task/cancel")]
|
[HttpPost("/xhs/task/cancel")]
|
||||||
public async Task<XhsTaskReportOutput> CancelAsync(XhsTaskCancelInput input)
|
public async Task<XhsTaskReportOutput> CancelAsync(XhsTaskCancelInput input)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
namespace Oms.Domain.OrdersAggregate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 应收应付(订单费用)列表筛选条件。
|
||||||
|
/// </summary>
|
||||||
|
public class OrderReceivablePayableFilter : OrderListFilter
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 费用类型:receivable / payable,空或 all 表示全部。
|
||||||
|
/// </summary>
|
||||||
|
public string? FeeType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 费用项关键词。
|
||||||
|
/// </summary>
|
||||||
|
public string? CostItem { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计费阶段:forecast / inbound / outbound。
|
||||||
|
/// </summary>
|
||||||
|
public string? ChargingStage { get; set; }
|
||||||
|
}
|
||||||
13
src/Oms.Domain/OrdersAggregate/OrderReceivablePayableRow.cs
Normal file
13
src/Oms.Domain/OrdersAggregate/OrderReceivablePayableRow.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using Oms.Domain.OrdersAggregate.Entities;
|
||||||
|
|
||||||
|
namespace Oms.Domain.OrdersAggregate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 订单费用与订单联查行。
|
||||||
|
/// </summary>
|
||||||
|
public class OrderReceivablePayableRow
|
||||||
|
{
|
||||||
|
public OrderFee Fee { get; set; } = null!;
|
||||||
|
|
||||||
|
public Order Order { get; set; } = null!;
|
||||||
|
}
|
||||||
@ -63,5 +63,11 @@ public interface IOrderRepository : IRepository<Order>
|
|||||||
|
|
||||||
Task<List<OrderFee>> GetFeesByOrderIdsAsync(IEnumerable<int> orderIds, CancellationToken cancellationToken = default);
|
Task<List<OrderFee>> GetFeesByOrderIdsAsync(IEnumerable<int> orderIds, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
Task<(List<OrderReceivablePayableRow> Items, int Total)> GetReceivablePayablePagedListAsync(
|
||||||
|
int pageIndex,
|
||||||
|
int pageSize,
|
||||||
|
OrderReceivablePayableFilter filter,
|
||||||
|
CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
Task<List<OrderStatusCountRow>> GetStatusCountsAsync(int? customerId, CancellationToken cancellationToken = default);
|
Task<List<OrderStatusCountRow>> GetStatusCountsAsync(int? customerId, CancellationToken cancellationToken = default);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -340,6 +340,68 @@ public class OrderRepository : OmsSqlSugarRepository<Order>, IOrderRepository, I
|
|||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<(List<OrderReceivablePayableRow> Items, int Total)> GetReceivablePayablePagedListAsync(
|
||||||
|
int pageIndex,
|
||||||
|
int pageSize,
|
||||||
|
OrderReceivablePayableFilter filter,
|
||||||
|
CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
var db = await GetDbContextAsync(cancellationToken);
|
||||||
|
var orderIdsQuery = ApplyListFilter(db.Queryable<Order>(), filter).Select(x => x.Id);
|
||||||
|
|
||||||
|
var feeQuery = db.Queryable<OrderFee>()
|
||||||
|
.Where(fee => !fee.IsDeleted)
|
||||||
|
.In(fee => fee.OrderId, orderIdsQuery);
|
||||||
|
|
||||||
|
var feeType = filter.FeeType?.Trim();
|
||||||
|
if (!string.IsNullOrWhiteSpace(feeType)
|
||||||
|
&& !string.Equals(feeType, "all", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
feeQuery = feeQuery.Where(fee => fee.Type == feeType);
|
||||||
|
}
|
||||||
|
|
||||||
|
var costItem = filter.CostItem?.Trim();
|
||||||
|
if (!string.IsNullOrWhiteSpace(costItem))
|
||||||
|
{
|
||||||
|
feeQuery = feeQuery.Where(fee => fee.CostItem.Contains(costItem));
|
||||||
|
}
|
||||||
|
|
||||||
|
var chargingStage = filter.ChargingStage?.Trim();
|
||||||
|
if (!string.IsNullOrWhiteSpace(chargingStage)
|
||||||
|
&& !string.Equals(chargingStage, "all", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
feeQuery = feeQuery.Where(fee => fee.ChargingStage == chargingStage);
|
||||||
|
}
|
||||||
|
|
||||||
|
var total = await feeQuery.CountAsync(cancellationToken);
|
||||||
|
var fees = await feeQuery
|
||||||
|
.OrderBy(fee => fee.CreateTime, OrderByType.Desc)
|
||||||
|
.OrderBy(fee => fee.Id, OrderByType.Desc)
|
||||||
|
.ToPageListAsync(pageIndex, pageSize, cancellationToken);
|
||||||
|
|
||||||
|
if (fees.Count == 0)
|
||||||
|
{
|
||||||
|
return ([], total);
|
||||||
|
}
|
||||||
|
|
||||||
|
var orderIds = fees.Select(x => x.OrderId).Distinct().ToArray();
|
||||||
|
var orders = await db.Queryable<Order>()
|
||||||
|
.Where(x => orderIds.Contains(x.Id))
|
||||||
|
.ToListAsync(cancellationToken);
|
||||||
|
var orderMap = orders.ToDictionary(x => x.Id);
|
||||||
|
|
||||||
|
var items = fees
|
||||||
|
.Where(fee => orderMap.ContainsKey(fee.OrderId))
|
||||||
|
.Select(fee => new OrderReceivablePayableRow
|
||||||
|
{
|
||||||
|
Fee = fee,
|
||||||
|
Order = orderMap[fee.OrderId]
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return (items, total);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<List<OrderStatusCountRow>> GetStatusCountsAsync(int? customerId, CancellationToken cancellationToken = default)
|
public async Task<List<OrderStatusCountRow>> GetStatusCountsAsync(int? customerId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var db = await GetDbContextAsync(cancellationToken);
|
var db = await GetDbContextAsync(cancellationToken);
|
||||||
|
|||||||
@ -33,6 +33,16 @@ internal sealed class SimpleAdminApiTestHost : IAsyncDisposable
|
|||||||
.OrderBy(x => x)
|
.OrderBy(x => x)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
public IReadOnlyList<string> GetHttpMethods(string routePatternContains) =>
|
||||||
|
_app.Services.GetRequiredService<EndpointDataSource>()
|
||||||
|
.Endpoints
|
||||||
|
.OfType<RouteEndpoint>()
|
||||||
|
.Where(x => (x.RoutePattern.RawText ?? string.Empty).Contains(routePatternContains, StringComparison.OrdinalIgnoreCase))
|
||||||
|
.SelectMany(x => x.Metadata.GetMetadata<Microsoft.AspNetCore.Routing.HttpMethodMetadata>()?.HttpMethods ?? [])
|
||||||
|
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||||
|
.OrderBy(x => x)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
public static async Task<SimpleAdminApiTestHost> CreateAsync(
|
public static async Task<SimpleAdminApiTestHost> CreateAsync(
|
||||||
ICountryRepository? countryRepository = null,
|
ICountryRepository? countryRepository = null,
|
||||||
IDictRepository? dictRepository = null,
|
IDictRepository? dictRepository = null,
|
||||||
|
|||||||
@ -15,6 +15,16 @@ namespace SimpleAdmin.Api.IntegrationTests;
|
|||||||
|
|
||||||
public class WeChatRouteIntegrationTests
|
public class WeChatRouteIntegrationTests
|
||||||
{
|
{
|
||||||
|
[Fact]
|
||||||
|
public async Task WeChatLegacyVerification_ShouldRegisterGetAndPostMethods()
|
||||||
|
{
|
||||||
|
await using var host = await SimpleAdminApiTestHost.CreateAsync(configureServices: ConfigureWeChatFallback);
|
||||||
|
|
||||||
|
var methods = host.GetHttpMethods("apiwechat/verification");
|
||||||
|
methods.Should().Contain("GET");
|
||||||
|
methods.Should().Contain("POST");
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task WeChatRoutes_ShouldBeRegisteredOnAuthService()
|
public async Task WeChatRoutes_ShouldBeRegisteredOnAuthService()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public partial class AuthService
|
|||||||
LazyServiceProvider.GetRequiredService<ILogger<AuthService>>();
|
LazyServiceProvider.GetRequiredService<ILogger<AuthService>>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 微信服务器接入验签(兼容 WMS:/api/apiwechat/verification)。
|
/// 微信公众号接入验签(GET)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
[HttpGet("/apiwechat/verification")]
|
[HttpGet("/apiwechat/verification")]
|
||||||
@ -88,7 +88,7 @@ public partial class AuthService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 微信消息/事件回调(兼容 WMS:/api/apiwechat/verification)。
|
/// 微信公众号消息/事件回调(POST)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
[HttpPost("/apiwechat/verification")]
|
[HttpPost("/apiwechat/verification")]
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
|
<NoWarn>$(NoWarn);CS1591</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -4,7 +4,7 @@ namespace SimpleAdmin.Api;
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 为正式启动与集成测试提供统一的应用构建入口。
|
/// 为正式启动与集成测试提供统一的应用构建入口。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static class SimpleAdminApiBootstrap
|
public static class SimpleAdminApiBootstrap
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user