Commit 5b46253570e50ff1f233238c0961202d5db6caa8

Authored by “wangming”
1 parent cc202318

1111

Showing 15 changed files with 631 additions and 3 deletions
antis-ncc-admin/src/views/storeTotalPerformanceStatistics/index.vue
@@ -61,6 +61,26 @@ @@ -61,6 +61,26 @@
61 <el-table-column prop="ItemQuantity" label="品项数量" width="100" align="right"></el-table-column> 61 <el-table-column prop="ItemQuantity" label="品项数量" width="100" align="right"></el-table-column>
62 <el-table-column prop="FirstOrderCount" label="首开单数量" width="100" align="right"></el-table-column> 62 <el-table-column prop="FirstOrderCount" label="首开单数量" width="100" align="right"></el-table-column>
63 <el-table-column prop="UpgradeOrderCount" label="升单数量" width="100" align="right"></el-table-column> 63 <el-table-column prop="UpgradeOrderCount" label="升单数量" width="100" align="right"></el-table-column>
  64 + <el-table-column prop="FirstOrderPerformance" label="首单业绩" width="120" align="right">
  65 + <template slot-scope="scope">
  66 + {{ formatMoney(scope.row.FirstOrderPerformance) }}
  67 + </template>
  68 + </el-table-column>
  69 + <el-table-column prop="UpgradeOrderPerformance" label="升单业绩" width="120" align="right">
  70 + <template slot-scope="scope">
  71 + {{ formatMoney(scope.row.UpgradeOrderPerformance) }}
  72 + </template>
  73 + </el-table-column>
  74 + <el-table-column prop="RefundAmount" label="退款业绩" width="120" align="right">
  75 + <template slot-scope="scope">
  76 + <span style="color: #F56C6C;">{{ formatMoney(scope.row.RefundAmount) }}</span>
  77 + </template>
  78 + </el-table-column>
  79 + <el-table-column prop="RefundCount" label="退款次数" width="100" align="right">
  80 + <template slot-scope="scope">
  81 + <span style="color: #F56C6C;">{{ scope.row.RefundCount || 0 }}</span>
  82 + </template>
  83 + </el-table-column>
64 <el-table-column prop="CreateTime" label="创建时间" width="150" align="center"> 84 <el-table-column prop="CreateTime" label="创建时间" width="150" align="center">
65 <template slot-scope="scope"> 85 <template slot-scope="scope">
66 {{ formatDateTime(scope.row.CreateTime) }} 86 {{ formatDateTime(scope.row.CreateTime) }}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCardTransferLog/LqCardTransferLogCrInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqCardTransferLog
  5 +{
  6 + /// <summary>
  7 + /// 转卡日志创建输入参数
  8 + /// </summary>
  9 + public class LqCardTransferLogCrInput
  10 + {
  11 + /// <summary>
  12 + /// 退卡ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "退卡ID不能为空")]
  15 + public string refundCardId { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 开卡ID
  19 + /// </summary>
  20 + [Required(ErrorMessage = "开卡ID不能为空")]
  21 + public string billingCardId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 转卡人会员ID
  25 + /// </summary>
  26 + [Required(ErrorMessage = "转卡人会员ID不能为空")]
  27 + public string transferFromMemberId { get; set; }
  28 +
  29 + /// <summary>
  30 + /// 被转卡人会员ID
  31 + /// </summary>
  32 + [Required(ErrorMessage = "被转卡人会员ID不能为空")]
  33 + public string transferToMemberId { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 转卡总金额
  37 + /// </summary>
  38 + [Required(ErrorMessage = "转卡总金额不能为空")]
  39 + [Range(0.01, double.MaxValue, ErrorMessage = "转卡总金额必须大于0")]
  40 + public decimal transferAmount { get; set; }
  41 +
  42 + /// <summary>
  43 + /// 转卡时间
  44 + /// </summary>
  45 + [Required(ErrorMessage = "转卡时间不能为空")]
  46 + public DateTime transferTime { get; set; }
  47 +
  48 + /// <summary>
  49 + /// 操作人ID
  50 + /// </summary>
  51 + [Required(ErrorMessage = "操作人ID不能为空")]
  52 + public string operatorId { get; set; }
  53 +
  54 + /// <summary>
  55 + /// 备注信息
  56 + /// </summary>
  57 + public string remarks { get; set; }
  58 + }
  59 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCardTransferLog/LqCardTransferLogInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqCardTransferLog
  4 +{
  5 + /// <summary>
  6 + /// 转卡日志详情输出参数
  7 + /// </summary>
  8 + public class LqCardTransferLogInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键ID
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 退卡ID
  17 + /// </summary>
  18 + public string refundCardId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 开卡ID
  22 + /// </summary>
  23 + public string billingCardId { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 转卡人会员ID
  27 + /// </summary>
  28 + public string transferFromMemberId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 转卡人姓名
  32 + /// </summary>
  33 + public string transferFromMemberName { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 被转卡人会员ID
  37 + /// </summary>
  38 + public string transferToMemberId { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 被转卡人姓名
  42 + /// </summary>
  43 + public string transferToMemberName { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 转卡总金额
  47 + /// </summary>
  48 + public decimal transferAmount { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 转卡时间
  52 + /// </summary>
  53 + public DateTime transferTime { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 操作人ID
  57 + /// </summary>
  58 + public string operatorId { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 备注信息
  62 + /// </summary>
  63 + public string remarks { get; set; }
  64 +
  65 + /// <summary>
  66 + /// 创建时间
  67 + /// </summary>
  68 + public DateTime? createTime { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 更新时间
  72 + /// </summary>
  73 + public DateTime? updateTime { get; set; }
  74 +
  75 + /// <summary>
  76 + /// 是否有效
  77 + /// </summary>
  78 + public int isEffective { get; set; }
  79 + }
  80 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCardTransferLog/LqCardTransferLogListOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqCardTransferLog
  4 +{
  5 + /// <summary>
  6 + /// 转卡日志列表输出参数
  7 + /// </summary>
  8 + public class LqCardTransferLogListOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键ID
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 退卡ID
  17 + /// </summary>
  18 + public string refundCardId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 开卡ID
  22 + /// </summary>
  23 + public string billingCardId { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 转卡人会员ID
  27 + /// </summary>
  28 + public string transferFromMemberId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 转卡人姓名
  32 + /// </summary>
  33 + public string transferFromMemberName { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 被转卡人会员ID
  37 + /// </summary>
  38 + public string transferToMemberId { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 被转卡人姓名
  42 + /// </summary>
  43 + public string transferToMemberName { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 转卡总金额
  47 + /// </summary>
  48 + public decimal transferAmount { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 转卡时间
  52 + /// </summary>
  53 + public DateTime transferTime { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 操作人ID
  57 + /// </summary>
  58 + public string operatorId { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 备注信息
  62 + /// </summary>
  63 + public string remarks { get; set; }
  64 +
  65 + /// <summary>
  66 + /// 创建时间
  67 + /// </summary>
  68 + public DateTime? createTime { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 更新时间
  72 + /// </summary>
  73 + public DateTime? updateTime { get; set; }
  74 +
  75 + /// <summary>
  76 + /// 是否有效
  77 + /// </summary>
  78 + public int isEffective { get; set; }
  79 + }
  80 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqCardTransferLog/LqCardTransferLogListQueryInput.cs 0 → 100644
  1 +using System;
  2 +using NCC.Common.Filter;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqCardTransferLog
  5 +{
  6 + /// <summary>
  7 + /// 转卡日志列表查询输入参数
  8 + /// </summary>
  9 + public class LqCardTransferLogListQueryInput : PageInputBase
  10 + {
  11 + /// <summary>
  12 + /// 转卡人会员ID
  13 + /// </summary>
  14 + public string transferFromMemberId { get; set; }
  15 +
  16 + /// <summary>
  17 + /// 被转卡人会员ID
  18 + /// </summary>
  19 + public string transferToMemberId { get; set; }
  20 +
  21 + /// <summary>
  22 + /// 操作人ID
  23 + /// </summary>
  24 + public string operatorId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 是否有效(1:有效 0:无效)
  28 + /// </summary>
  29 + public int isEffective { get; set; } = 1;
  30 +
  31 + /// <summary>
  32 + /// 转卡开始时间
  33 + /// </summary>
  34 + public DateTime? transferStartTime { get; set; }
  35 +
  36 + /// <summary>
  37 + /// 转卡结束时间
  38 + /// </summary>
  39 + public DateTime? transferEndTime { get; set; }
  40 +
  41 + /// <summary>
  42 + /// 最小转卡金额
  43 + /// </summary>
  44 + public decimal? minTransferAmount { get; set; }
  45 +
  46 + /// <summary>
  47 + /// 最大转卡金额
  48 + /// </summary>
  49 + public decimal? maxTransferAmount { get; set; }
  50 + }
  51 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqDepartmentConsumePerformanceStatisticsListOutput.cs
@@ -62,12 +62,23 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics @@ -62,12 +62,23 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics
62 /// </summary> 62 /// </summary>
63 public decimal HeadCount { get; set; } 63 public decimal HeadCount { get; set; }
64 64
  65 +
65 /// <summary> 66 /// <summary>
66 /// 人次(日度去重到店数) 67 /// 人次(日度去重到店数)
67 /// </summary> 68 /// </summary>
68 public decimal PersonCount { get; set; } 69 public decimal PersonCount { get; set; }
69 70
70 /// <summary> 71 /// <summary>
  72 + /// 退款业绩
  73 + /// </summary>
  74 + public decimal RefundAmount { get; set; }
  75 +
  76 + /// <summary>
  77 + /// 退款次数
  78 + /// </summary>
  79 + public int RefundCount { get; set; }
  80 +
  81 + /// <summary>
71 /// 创建时间 82 /// 创建时间
72 /// </summary> 83 /// </summary>
73 public DateTime CreateTime { get; set; } 84 public DateTime CreateTime { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/LqStoreTotalPerformanceStatisticsListOutput.cs
@@ -63,6 +63,16 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics @@ -63,6 +63,16 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics
63 public int UpgradeOrderCount { get; set; } 63 public int UpgradeOrderCount { get; set; }
64 64
65 /// <summary> 65 /// <summary>
  66 + /// 退款业绩
  67 + /// </summary>
  68 + public decimal RefundAmount { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 退款次数
  72 + /// </summary>
  73 + public int RefundCount { get; set; }
  74 +
  75 + /// <summary>
66 /// 创建时间 76 /// 创建时间
67 /// </summary> 77 /// </summary>
68 public DateTime CreateTime { get; set; } 78 public DateTime CreateTime { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatisticsStoreTotalPerformance/LqStatisticsStoreTotalPerformanceInfoOutput.cs
@@ -63,6 +63,26 @@ namespace NCC.Extend.Entitys.Dto.LqStatisticsStoreTotalPerformance @@ -63,6 +63,26 @@ namespace NCC.Extend.Entitys.Dto.LqStatisticsStoreTotalPerformance
63 public int upgradeOrderCount { get; set; } 63 public int upgradeOrderCount { get; set; }
64 64
65 /// <summary> 65 /// <summary>
  66 + /// 首单业绩
  67 + /// </summary>
  68 + public decimal firstOrderPerformance { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 升单业绩
  72 + /// </summary>
  73 + public decimal upgradeOrderPerformance { get; set; }
  74 +
  75 + /// <summary>
  76 + /// 退款业绩
  77 + /// </summary>
  78 + public decimal refundAmount { get; set; }
  79 +
  80 + /// <summary>
  81 + /// 退款次数
  82 + /// </summary>
  83 + public int refundCount { get; set; }
  84 +
  85 + /// <summary>
66 /// 创建时间 86 /// 创建时间
67 /// </summary> 87 /// </summary>
68 public DateTime? createTime { get; set; } 88 public DateTime? createTime { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatisticsStoreTotalPerformance/LqStatisticsStoreTotalPerformanceListOutput.cs
@@ -73,6 +73,16 @@ namespace NCC.Extend.Entitys.Dto.LqStatisticsStoreTotalPerformance @@ -73,6 +73,16 @@ namespace NCC.Extend.Entitys.Dto.LqStatisticsStoreTotalPerformance
73 public decimal upgradeOrderPerformance { get; set; } 73 public decimal upgradeOrderPerformance { get; set; }
74 74
75 /// <summary> 75 /// <summary>
  76 + /// 退款业绩
  77 + /// </summary>
  78 + public decimal refundAmount { get; set; }
  79 +
  80 + /// <summary>
  81 + /// 退款次数
  82 + /// </summary>
  83 + public int refundCount { get; set; }
  84 +
  85 + /// <summary>
76 /// 创建时间 86 /// 创建时间
77 /// </summary> 87 /// </summary>
78 public DateTime? createTime { get; set; } 88 public DateTime? createTime { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_card_transfer_log/LqCardTransferLogEntity.cs 0 → 100644
  1 +using System;
  2 +using NCC.Common.Const;
  3 +using SqlSugar;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_card_transfer_log
  6 +{
  7 + /// <summary>
  8 + /// 转卡日志
  9 + /// </summary>
  10 + [SugarTable("lq_card_transfer_log")]
  11 + [Tenant(ClaimConst.TENANT_ID)]
  12 + public class LqCardTransferLogEntity
  13 + {
  14 + /// <summary>
  15 + /// 主键ID
  16 + /// </summary>
  17 + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
  18 + public string Id { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 退卡ID
  22 + /// </summary>
  23 + [SugarColumn(ColumnName = "F_RefundCardId")]
  24 + public string RefundCardId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 开卡ID
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "F_BillingCardId")]
  30 + public string BillingCardId { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 转卡人会员ID
  34 + /// </summary>
  35 + [SugarColumn(ColumnName = "F_TransferFromMemberId")]
  36 + public string TransferFromMemberId { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 被转卡人会员ID
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "F_TransferToMemberId")]
  42 + public string TransferToMemberId { get; set; }
  43 +
  44 + /// <summary>
  45 + /// 转卡总金额
  46 + /// </summary>
  47 + [SugarColumn(ColumnName = "F_TransferAmount")]
  48 + public decimal TransferAmount { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 转卡时间
  52 + /// </summary>
  53 + [SugarColumn(ColumnName = "F_TransferTime")]
  54 + public DateTime TransferTime { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 操作人ID
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "F_OperatorId")]
  60 + public string OperatorId { get; set; }
  61 +
  62 +
  63 + /// <summary>
  64 + /// 备注信息
  65 + /// </summary>
  66 + [SugarColumn(ColumnName = "F_Remarks")]
  67 + public string Remarks { get; set; }
  68 +
  69 + /// <summary>
  70 + /// 创建时间
  71 + /// </summary>
  72 + [SugarColumn(ColumnName = "F_CreateTime")]
  73 + public DateTime? CreateTime { get; set; }
  74 +
  75 + /// <summary>
  76 + /// 更新时间
  77 + /// </summary>
  78 + [SugarColumn(ColumnName = "F_UpdateTime")]
  79 + public DateTime? UpdateTime { get; set; }
  80 +
  81 + /// <summary>
  82 + /// 是否有效
  83 + /// </summary>
  84 + [SugarColumn(ColumnName = "F_IsEffective")]
  85 + public int IsEffective { get; set; }
  86 + }
  87 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_store_total_performance/LqStatisticsStoreTotalPerformanceEntity.cs
@@ -90,6 +90,18 @@ namespace NCC.Extend.Entitys.lq_statistics_store_total_performance @@ -90,6 +90,18 @@ namespace NCC.Extend.Entitys.lq_statistics_store_total_performance
90 public decimal UpgradeOrderPerformance { get; set; } 90 public decimal UpgradeOrderPerformance { get; set; }
91 91
92 /// <summary> 92 /// <summary>
  93 + /// 退款业绩
  94 + /// </summary>
  95 + [SugarColumn(ColumnName = "F_RefundAmount")]
  96 + public decimal RefundAmount { get; set; }
  97 +
  98 + /// <summary>
  99 + /// 退款次数
  100 + /// </summary>
  101 + [SugarColumn(ColumnName = "F_RefundCount")]
  102 + public int RefundCount { get; set; }
  103 +
  104 + /// <summary>
93 /// 创建时间 105 /// 创建时间
94 /// </summary> 106 /// </summary>
95 [SugarColumn(ColumnName = "F_CreateTime")] 107 [SugarColumn(ColumnName = "F_CreateTime")]
netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqCardTransferLogService.cs 0 → 100644
  1 +using NCC.Extend.Entitys.Dto.LqCardTransferLog;
  2 +
  3 +namespace NCC.Extend.Interfaces
  4 +{
  5 + /// <summary>
  6 + /// 转卡日志服务接口
  7 + /// </summary>
  8 + public interface ILqCardTransferLogService
  9 + {
  10 + // 接口方法将在Service实现中定义
  11 + }
  12 +}
netcore/src/Modularity/Extend/NCC.Extend/LqCardTransferLogService.cs 0 → 100644
  1 +using System;
  2 +using System.Linq;
  3 +using System.Threading.Tasks;
  4 +using Microsoft.AspNetCore.Mvc;
  5 +using Microsoft.Extensions.Logging;
  6 +using NCC.Common.Core.Manager;
  7 +using NCC.Common.Filter;
  8 +using NCC.Dependency;
  9 +using NCC.DynamicApiController;
  10 +using NCC.Extend.Entitys.Dto.LqCardTransferLog;
  11 +using NCC.Extend.Entitys.lq_card_transfer_log;
  12 +using NCC.Extend.Interfaces;
  13 +using NCC.FriendlyException;
  14 +using SqlSugar;
  15 +
  16 +namespace NCC.Extend.LqCardTransferLog
  17 +{
  18 + /// <summary>
  19 + /// 转卡日志服务
  20 + /// </summary>
  21 + [ApiDescriptionSettings(Tag = "绿纤转卡日志服务", Name = "LqCardTransferLog", Order = 100)]
  22 + [Route("api/Extend/[controller]")]
  23 + public class LqCardTransferLogService : IDynamicApiController, ILqCardTransferLogService, ITransient
  24 + {
  25 + private readonly ISqlSugarClient _db;
  26 + private readonly IUserManager _userManager;
  27 + private readonly ILogger<LqCardTransferLogService> _logger;
  28 +
  29 + public LqCardTransferLogService(ISqlSugarClient db, IUserManager userManager, ILogger<LqCardTransferLogService> logger)
  30 + {
  31 + _db = db;
  32 + _userManager = userManager;
  33 + _logger = logger;
  34 + }
  35 +
  36 + #region 添加转卡日志
  37 + /// <summary>
  38 + /// 添加转卡日志
  39 + /// </summary>
  40 + /// <param name="input">转卡日志创建输入参数</param>
  41 + /// <returns>创建结果</returns>
  42 + [HttpPost("add")]
  43 + public async Task<dynamic> AddTransferLog([FromBody] LqCardTransferLogCrInput input)
  44 + {
  45 + try
  46 + {
  47 + if (input == null)
  48 + {
  49 + throw NCCException.Oh("输入参数不能为空");
  50 + }
  51 +
  52 + var entity = new LqCardTransferLogEntity
  53 + {
  54 + Id = Guid.NewGuid().ToString(),
  55 + RefundCardId = input.refundCardId,
  56 + BillingCardId = input.billingCardId,
  57 + TransferFromMemberId = input.transferFromMemberId,
  58 + TransferToMemberId = input.transferToMemberId,
  59 + TransferAmount = input.transferAmount,
  60 + TransferTime = input.transferTime,
  61 + OperatorId = input.operatorId,
  62 + Remarks = input.remarks ?? "",
  63 + CreateTime = DateTime.Now,
  64 + IsEffective = 1
  65 + };
  66 +
  67 + var result = await _db.Insertable(entity).ExecuteCommandAsync();
  68 +
  69 + return new
  70 + {
  71 + Success = true,
  72 + Message = "转卡日志创建成功",
  73 + Data = new { Id = entity.Id }
  74 + };
  75 + }
  76 + catch (Exception ex)
  77 + {
  78 + throw NCCException.Oh($"创建转卡日志失败: {ex.Message}");
  79 + }
  80 + }
  81 + #endregion
  82 +
  83 + #region 获取转卡日志列表
  84 + /// <summary>
  85 + /// 获取转卡日志列表
  86 + /// </summary>
  87 + /// <param name="input">查询输入参数</param>
  88 + /// <returns>转卡日志列表</returns>
  89 + [HttpGet("")]
  90 + public async Task<dynamic> GetList([FromQuery] LqCardTransferLogListQueryInput input)
  91 + {
  92 + try
  93 + {
  94 + var result = await _db.Queryable<LqCardTransferLogEntity>()
  95 + .WhereIF(input.isEffective != 0, x => x.IsEffective == input.isEffective)
  96 + .WhereIF(!string.IsNullOrEmpty(input.transferFromMemberId), x => x.TransferFromMemberId == input.transferFromMemberId)
  97 + .WhereIF(!string.IsNullOrEmpty(input.transferToMemberId), x => x.TransferToMemberId == input.transferToMemberId)
  98 + .WhereIF(!string.IsNullOrEmpty(input.operatorId), x => x.OperatorId == input.operatorId)
  99 + .WhereIF(input.transferStartTime.HasValue, x => x.TransferTime >= input.transferStartTime.Value)
  100 + .WhereIF(input.transferEndTime.HasValue, x => x.TransferTime <= input.transferEndTime.Value)
  101 + .WhereIF(input.minTransferAmount.HasValue, x => x.TransferAmount >= input.minTransferAmount.Value)
  102 + .WhereIF(input.maxTransferAmount.HasValue, x => x.TransferAmount <= input.maxTransferAmount.Value)
  103 + .WhereIF(!string.IsNullOrEmpty(input.keyword), x => x.Remarks.Contains(input.keyword))
  104 + .Select(x => new LqCardTransferLogListOutput
  105 + {
  106 + id = x.Id,
  107 + refundCardId = x.RefundCardId,
  108 + billingCardId = x.BillingCardId,
  109 + transferFromMemberId = x.TransferFromMemberId,
  110 + transferToMemberId = x.TransferToMemberId,
  111 + transferAmount = x.TransferAmount,
  112 + transferTime = x.TransferTime,
  113 + operatorId = x.OperatorId,
  114 + remarks = x.Remarks,
  115 + createTime = x.CreateTime,
  116 + updateTime = x.UpdateTime,
  117 + isEffective = x.IsEffective
  118 + })
  119 + .OrderBy(x => x.transferTime, OrderByType.Desc)
  120 + .ToPagedListAsync(input.currentPage, input.pageSize);
  121 +
  122 + return PageResult<LqCardTransferLogListOutput>.SqlSugarPageResult(result);
  123 + }
  124 + catch (Exception ex)
  125 + {
  126 + throw NCCException.Oh($"获取转卡日志列表失败: {ex.Message}");
  127 + }
  128 + }
  129 + #endregion
  130 + }
  131 +}
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -44,6 +44,7 @@ using SqlSugar; @@ -44,6 +44,7 @@ using SqlSugar;
44 using Yitter.IdGenerator; 44 using Yitter.IdGenerator;
45 using NCC.Extend.Entitys.lq_package_info; 45 using NCC.Extend.Entitys.lq_package_info;
46 using NCC.Extend.Entitys.lq_mdxx; 46 using NCC.Extend.Entitys.lq_mdxx;
  47 +using NCC.Extend.Entitys.lq_card_transfer_log;
47 48
48 namespace NCC.Extend.LqKdKdjlb 49 namespace NCC.Extend.LqKdKdjlb
49 { 50 {
@@ -2614,6 +2615,23 @@ namespace NCC.Extend.LqKdKdjlb @@ -2614,6 +2615,23 @@ namespace NCC.Extend.LqKdKdjlb
2614 }); 2615 });
2615 } 2616 }
2616 } 2617 }
  2618 + //记录转卡日志
  2619 + var transferLogEntity = new LqCardTransferLogEntity
  2620 + {
  2621 + Id = YitIdHelper.NextId().ToString(),
  2622 + RefundCardId = refundId,
  2623 + BillingCardId = billingId,
  2624 + TransferFromMemberId = input.FromMemberId,
  2625 + TransferToMemberId = input.ToMemberId,
  2626 + TransferAmount = input.TransferItems.Sum(x => x.ItemPrice * x.TransferQuantity),
  2627 + TransferTime = transferTime,
  2628 + OperatorId = userInfo.userId,
  2629 + Remarks = input.Remarks,
  2630 + CreateTime = DateTime.Now,
  2631 + IsEffective = StatusEnum.有效.GetHashCode()
  2632 +
  2633 + };
  2634 + await _db.Insertable(transferLogEntity).ExecuteCommandAsync();
2617 2635
2618 await _db.Insertable(billingPxmxEntities).ExecuteCommandAsync(); 2636 await _db.Insertable(billingPxmxEntities).ExecuteCommandAsync();
2619 if (billingJksyjEntities.Any()) 2637 if (billingJksyjEntities.Any())
netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
@@ -2472,7 +2472,7 @@ namespace NCC.Extend.LqStatistics @@ -2472,7 +2472,7 @@ namespace NCC.Extend.LqStatistics
2472 /// 保存门店总业绩统计数据 2472 /// 保存门店总业绩统计数据
2473 /// </summary> 2473 /// </summary>
2474 /// <remarks> 2474 /// <remarks>
2475 - /// 统计门店的总业绩、欠款金额、总单业绩、储扣总金额、品项数量、首开单数量、升单数量 2475 + /// 统计门店的总业绩、欠款金额、总单业绩、储扣总金额、品项数量、首开单数量、升单数量、退款业绩、退款次数
2476 /// 2476 ///
2477 /// 示例请求: 2477 /// 示例请求:
2478 /// ```json 2478 /// ```json
@@ -2483,6 +2483,17 @@ namespace NCC.Extend.LqStatistics @@ -2483,6 +2483,17 @@ namespace NCC.Extend.LqStatistics
2483 /// 2483 ///
2484 /// 参数说明: 2484 /// 参数说明:
2485 /// - statisticsMonth: 统计月份,格式为YYYYMM 2485 /// - statisticsMonth: 统计月份,格式为YYYYMM
  2486 + ///
  2487 + /// 统计指标:
  2488 + /// - 总业绩: 开单记录的总业绩金额
  2489 + /// - 欠款金额: 开单记录的欠款总额
  2490 + /// - 总单业绩: 开单记录的实付业绩
  2491 + /// - 储扣总金额: 储扣记录的金额总和
  2492 + /// - 品项数量: 开单品项的总数量
  2493 + /// - 首开单数量: 首次开单的数量
  2494 + /// - 升单数量: 升单的数量
  2495 + /// - 退款业绩: 退款记录的总金额
  2496 + /// - 退款次数: 退款记录的总次数
2486 /// </remarks> 2497 /// </remarks>
2487 /// <param name="input">统计输入参数</param> 2498 /// <param name="input">统计输入参数</param>
2488 /// <returns>保存结果</returns> 2499 /// <returns>保存结果</returns>
@@ -2515,7 +2526,9 @@ namespace NCC.Extend.LqStatistics @@ -2515,7 +2526,9 @@ namespace NCC.Extend.LqStatistics
2515 store_data.F_FirstOrderCount, 2526 store_data.F_FirstOrderCount,
2516 store_data.F_UpgradeOrderCount, 2527 store_data.F_UpgradeOrderCount,
2517 store_data.F_FirstOrderPerformance, 2528 store_data.F_FirstOrderPerformance,
2518 - store_data.F_UpgradeOrderPerformance 2529 + store_data.F_UpgradeOrderPerformance,
  2530 + COALESCE(refund_data.F_RefundAmount, 0) as F_RefundAmount,
  2531 + COALESCE(refund_data.F_RefundCount, 0) as F_RefundCount
2519 FROM ( 2532 FROM (
2520 SELECT 2533 SELECT
2521 kd.djmd as F_StoreId, 2534 kd.djmd as F_StoreId,
@@ -2544,7 +2557,17 @@ namespace NCC.Extend.LqStatistics @@ -2544,7 +2557,17 @@ namespace NCC.Extend.LqStatistics
2544 WHERE kd.F_IsEffective = 1 2557 WHERE kd.F_IsEffective = 1
2545 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth 2558 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2546 GROUP BY kd.djmd 2559 GROUP BY kd.djmd
2547 - ) item_data ON store_data.F_StoreId = item_data.F_StoreId"; 2560 + ) item_data ON store_data.F_StoreId = item_data.F_StoreId
  2561 + LEFT JOIN (
  2562 + SELECT
  2563 + hytk.md as F_StoreId,
  2564 + COALESCE(SUM(hytk.tkje), 0) as F_RefundAmount,
  2565 + COUNT(DISTINCT hytk.F_Id) as F_RefundCount
  2566 + FROM lq_hytk_hytk hytk
  2567 + WHERE hytk.F_IsEffective = 1
  2568 + AND DATE_FORMAT(hytk.tksj, '%Y%m') = @statisticsMonth
  2569 + GROUP BY hytk.md
  2570 + ) refund_data ON store_data.F_StoreId = refund_data.F_StoreId";
2548 2571
2549 var storePerformanceData = await _db.Ado.SqlQueryAsync<dynamic>(storePerformanceSql, new { statisticsMonth }); 2572 var storePerformanceData = await _db.Ado.SqlQueryAsync<dynamic>(storePerformanceSql, new { statisticsMonth });
2550 2573
@@ -2563,6 +2586,8 @@ namespace NCC.Extend.LqStatistics @@ -2563,6 +2586,8 @@ namespace NCC.Extend.LqStatistics
2563 UpgradeOrderCount = Convert.ToInt32(data.F_UpgradeOrderCount ?? 0), 2586 UpgradeOrderCount = Convert.ToInt32(data.F_UpgradeOrderCount ?? 0),
2564 FirstOrderPerformance = Convert.ToDecimal(data.F_FirstOrderPerformance ?? 0), 2587 FirstOrderPerformance = Convert.ToDecimal(data.F_FirstOrderPerformance ?? 0),
2565 UpgradeOrderPerformance = Convert.ToDecimal(data.F_UpgradeOrderPerformance ?? 0), 2588 UpgradeOrderPerformance = Convert.ToDecimal(data.F_UpgradeOrderPerformance ?? 0),
  2589 + RefundAmount = Convert.ToDecimal(data.F_RefundAmount ?? 0),
  2590 + RefundCount = Convert.ToInt32(data.F_RefundCount ?? 0),
2566 CreateTime = DateTime.Now 2591 CreateTime = DateTime.Now
2567 }).ToList(); 2592 }).ToList();
2568 2593
@@ -3302,6 +3327,8 @@ namespace NCC.Extend.LqStatistics @@ -3302,6 +3327,8 @@ namespace NCC.Extend.LqStatistics
3302 ItemQuantity = it.ItemQuantity, 3327 ItemQuantity = it.ItemQuantity,
3303 FirstOrderCount = it.FirstOrderCount, 3328 FirstOrderCount = it.FirstOrderCount,
3304 UpgradeOrderCount = it.UpgradeOrderCount, 3329 UpgradeOrderCount = it.UpgradeOrderCount,
  3330 + RefundAmount = it.RefundAmount,
  3331 + RefundCount = it.RefundCount,
3305 CreateTime = it.CreateTime.HasValue ? it.CreateTime.Value : DateTime.Now 3332 CreateTime = it.CreateTime.HasValue ? it.CreateTime.Value : DateTime.Now
3306 }).ToList(); 3333 }).ToList();
3307 3334