From b45d55f7d41e9102d1125da84a00e25409a0bbf8 Mon Sep 17 00:00:00 2001 From: “wangming” <“wangming@antissoft.com”> Date: Tue, 23 Sep 2025 18:02:43 +0800 Subject: [PATCH] Refactor LqEventService and related DTOs to enhance event handling; implement manual mapping for event output, update member retrieval logic, and streamline event type retrieval. Modify LqHytkHytkService to adjust entity relationships and improve data handling. Introduce deduct information handling in LqKdKdjlbService and update related DTOs for consistency. Enhance LqTkjlbService to improve data retrieval and organization. Update LqXhHyhkService to refine consumption tracking and improve data integrity. --- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs | 23 +++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs | 25 ------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs | 2 +- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs | 25 +++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs | 20 ++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs | 30 ++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs | 2 +- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs | 10 ---------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs | 9 +++++++-- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs | 17 +++++++++++------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs | 36 ++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs | 40 ++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs | 40 ++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs | 35 +++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs | 17 +++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs | 26 +++++++++++++------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs | 29 +++++++++++++++++------------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs | 29 +++++++++++++++++------------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs | 57 ++++++++++++++++++++++++++++++--------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs | 8 ++++---- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs | 27 +++++++++++++-------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs | 23 ++++++++++++++--------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs | 11 +++-------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs | 16 ++++++++-------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs | 92 +++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs | 44 ++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs | 56 ++++++++++++++++++++++++++++++++++---------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs | 52 ++++++++++++++++++++++++++-------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs | 28 ++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs | 28 ++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------- netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs | 49 ++++++++++++++++++++++++++----------------------- netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs | 44 ++++++++++++++++++++++++++++++++++++++++++-- netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs | 157 ++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------- netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------- netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs | 20 ++++++++++---------- netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------- 38 files changed, 1119 insertions(+), 587 deletions(-) create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs new file mode 100644 index 0000000..375b2a5 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs @@ -0,0 +1,23 @@ +namespace NCC.Extend.Entitys.Dto.Common +{ + /// + /// 通用枚举输出 + /// + public class EnumOutput + { + /// + /// 枚举值 + /// + public int Value { get; set; } + + /// + /// 枚举名称 + /// + public string Name { get; set; } + + /// + /// 中文描述 + /// + public string Description { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs deleted file mode 100644 index 588f003..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.ComponentModel; - -namespace NCC.Extend.Entitys.Dto.LqEvent -{ - /// - /// 拓客类型枚举输出 - /// - public class EventTypeEnumOutput - { - /// - /// 枚举值 - /// - public int Value { get; set; } - - /// - /// 枚举名称 - /// - public string Name { get; set; } - - /// - /// 中文描述 - /// - public string Description { get; set; } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs index 9db7cf4..21d67b6 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs @@ -14,7 +14,7 @@ namespace NCC.Extend.Entitys.Dto.LqEvent /// 主键ID /// [Required(ErrorMessage = "活动ID不能为空")] - public new int? Id { get; set; } + public new string Id { get; set; } /// /// 活动名称 diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs new file mode 100644 index 0000000..6052ff2 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +namespace NCC.Extend.Entitys.Dto.LqEvent +{ + /// + /// 门店战队数据输出 + /// + public class StoreTeamDataOutput + { + /// + /// 门店ID + /// + public string StoreId { get; set; } + + /// + /// 门店名称 + /// + public string StoreName { get; set; } + + /// + /// 战队列表 + /// + public List TeamList { get; set; } = new List(); + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs new file mode 100644 index 0000000..8d9f78c --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; + +namespace NCC.Extend.Entitys.Dto.LqEvent +{ + /// + /// 战队信息输出 + /// + public class TeamInfoOutput + { + /// + /// 战队名称 + /// + public string TeamName { get; set; } + + /// + /// 战队用户信息列表 + /// + public List TeamUserInfo { get; set; } = new List(); + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs new file mode 100644 index 0000000..98ab6bb --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs @@ -0,0 +1,30 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqEvent +{ + /// + /// 战队用户信息输出 + /// + public class TeamUserInfoOutput + { + /// + /// 拓客用户ID + /// + public string ExpansionUserId { get; set; } + + /// + /// 拓客用户姓名 + /// + public string ExpansionUserName { get; set; } + + /// + /// 拓客数量 + /// + public int ExpansionCount { get; set; } + + /// + /// 活动目标 + /// + public int EventTarget { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs index 48f73cc..8d6c268 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs @@ -42,6 +42,6 @@ namespace NCC.Extend.Entitys.Dto.LqEventUser /// /// 目标张数 /// - public int? TargetCount { get; set; } + public int TargetCount { get; set; } = 0; } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs index ddc69d9..5765211 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs @@ -95,15 +95,5 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk /// 退卡品项明细列表 /// public List lqHytkMxList { get; set; } - - /// - /// 退卡健康师业绩列表 - /// - public List lqHytkJksyjList { get; set; } - - /// - /// 退卡科技部老师业绩列表 - /// - public List lqHytkKjbsyjList { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs index 7f73fc3..e7c406d 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx public string id { get; set; } /// - /// 关联退卡编号 + /// 关联退卡Id /// - public string gltkbh { get; set; } + public string refundInfoId { get; set; } + + /// + /// 退卡记录Id + /// + public string billingItemId { get; set; } /// /// 品项 diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs index c462028..c4628e7 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx public string id { get; set; } /// - /// 关联退卡编号 + /// 关联退卡Id /// - public string gltkbh { get; set; } + public string refundInfoId { get; set; } + + /// + /// 退卡记录Id + /// + public string billingItemId { get; set; } /// /// 品项编号 @@ -43,22 +48,22 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx /// /// 项目次数 /// - public int? F_ProjectNumber { get; set; } + public int projectNumber { get; set; } /// /// 是否有效 /// - public int? F_IsEnabled { get; set; } + public int isEnabled { get; set; } /// /// 来源类型(开卡/赠送/其他) /// - public string F_SourceType { get; set; } + public string sourceType { get; set; } /// /// 合计金额(品项价格 × 项目次数) /// - public decimal? F_TotalPrice { get; set; } + public decimal? totalPrice { get; set; } /// /// 健康师业绩列表 diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs new file mode 100644 index 0000000..1c76346 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs @@ -0,0 +1,36 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo +{ + /// + /// 开单扣减信息创建输入 + /// + public class LqKdDeductinfoCrInput + { + /// + /// 扣减类型 + /// + [Required(ErrorMessage = "扣减类型不能为空")] + public int? DeductType { get; set; } + + /// + /// 扣减关联ID + /// + [Required(ErrorMessage = "扣减关联ID不能为空")] + public string DeductId { get; set; } + + /// + /// 开单id + /// + [Required(ErrorMessage = "开单id不能为空")] + public string BillingId { get; set; } + + /// + /// 合计金额 + /// + [Required(ErrorMessage = "合计金额不能为空")] + [Range(0.01, 999999.99, ErrorMessage = "合计金额必须在0.01到999999.99之间")] + public decimal? Amount { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs new file mode 100644 index 0000000..29ef734 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs @@ -0,0 +1,40 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo +{ + /// + /// 开单扣减信息详情输出 + /// + public class LqKdDeductinfoInfoOutput + { + /// + /// 主键 + /// + public string Id { get; set; } + + /// + /// 扣减类型 + /// + public int? DeductType { get; set; } + + /// + /// 扣减类型名称 + /// + public string DeductTypeName { get; set; } + + /// + /// 扣减关联ID + /// + public string DeductId { get; set; } + + /// + /// 开单id + /// + public string BillingId { get; set; } + + /// + /// 合计金额 + /// + public decimal? Amount { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs new file mode 100644 index 0000000..fcd8bcf --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs @@ -0,0 +1,40 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo +{ + /// + /// 开单扣减信息列表输出 + /// + public class LqKdDeductinfoListOutput + { + /// + /// 主键 + /// + public string Id { get; set; } + + /// + /// 扣减类型 + /// + public int? DeductType { get; set; } + + /// + /// 扣减类型名称 + /// + public string DeductTypeName { get; set; } + + /// + /// 扣减关联ID + /// + public string DeductId { get; set; } + + /// + /// 开单id + /// + public string BillingId { get; set; } + + /// + /// 合计金额 + /// + public decimal? Amount { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs new file mode 100644 index 0000000..6565663 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs @@ -0,0 +1,35 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo +{ + /// + /// 开单扣减信息列表查询输入 + /// + public class LqKdDeductinfoListQueryInput + { + /// + /// 扣减类型 + /// + public int? DeductType { get; set; } + + /// + /// 扣减关联ID + /// + public string DeductId { get; set; } + + /// + /// 开单id + /// + public string BillingId { get; set; } + + /// + /// 最小金额 + /// + public decimal? MinAmount { get; set; } + + /// + /// 最大金额 + /// + public decimal? MaxAmount { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs new file mode 100644 index 0000000..e309233 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs @@ -0,0 +1,17 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo +{ + /// + /// 开单扣减信息更新输入 + /// + public class LqKdDeductinfoUpInput : LqKdDeductinfoCrInput + { + /// + /// 主键 + /// + [Required(ErrorMessage = "主键不能为空")] + public string Id { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs index 18162ef..481ba5d 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using NCC.Common.Model; +using NCC.Extend.Entitys.Dto.LqKdDeductinfo; namespace NCC.Extend.Entitys.Dto.LqKdKdjlb { @@ -150,6 +151,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string F_FIleUrl { get; set; } /// + /// 扣款信息 + /// + public List lqKdKdjlbDeductList { get; set; } + + /// /// 开单_品项明细 /// public List lqKdPxmxList { get; set; } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs index cbbfd13..3c4515a 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs @@ -16,42 +16,42 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// /// 拓客时间 /// - public DateTime? tksj { get; set; } + public DateTime expansionTime { get; set; } + + /// + /// 拓客人员 + /// + public string expansionUserId { get; set; } /// /// 顾客姓名 /// - public string gkxm { get; set; } + public string customerName { get; set; } /// - /// 电话号码 + /// 顾客电话号码 /// - public string dhhm { get; set; } + public string customerPhone { get; set; } /// /// 购买张数 /// - public int? gmzs { get; set; } + public int buyNumber { get; set; } /// /// 支付方式 /// - public string zffs { get; set; } + public string paymentMethod { get; set; } /// /// 是否加微信 /// - public string sfjwx { get; set; } + public string isAddWeChat { get; set; } /// /// 备注 /// - public string bz { get; set; } - - /// - /// 拓客人员 - /// - public string tkry { get; set; } + public string remarks { get; set; } /// /// 拓客活动id diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs index f056394..0ec4db3 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs @@ -16,52 +16,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// /// 拓客时间 /// - public DateTime? tksj { get; set; } + public DateTime expansionTime { get; set; } /// /// 拓客人员 /// - public string tkry { get; set; } + public string expansionUserId { get; set; } + + /// + /// 拓客人员 + /// + public string expansionUserName { get; set; } /// /// 顾客姓名 /// - public string gkxm { get; set; } + public string customerName { get; set; } /// - /// 电话号码 + /// 顾客电话号码 /// - public string dhhm { get; set; } + public string customerPhone { get; set; } /// /// 购买张数 /// - public int? gmzs { get; set; } + public int buyNumber { get; set; } /// /// 支付方式 /// - public string zffs { get; set; } + public string paymentMethod { get; set; } /// /// 是否加微信 /// - public string sfjwx { get; set; } + public string isAddWeChat { get; set; } /// /// 备注 /// - public string bz { get; set; } + public string remarks { get; set; } /// - /// 所属门店 + /// 所属门店ID /// - public string ssmd { get; set; } + public string storeId { get; set; } /// /// 所属战队 /// - public string sszd { get; set; } + public string teamName { get; set; } /// /// 拓客活动id diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs index abfa230..a70ae5a 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs @@ -15,52 +15,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// /// 拓客时间 /// - public DateTime? tksj { get; set; } + public DateTime expansionTime { get; set; } /// /// 拓客人员 /// - public string tkry { get; set; } + public string expansionUserId { get; set; } + + /// + /// 拓客人员 + /// + public string expansionUserName { get; set; } /// /// 顾客姓名 /// - public string gkxm { get; set; } + public string customerName { get; set; } /// - /// 电话号码 + /// 顾客电话号码 /// - public string dhhm { get; set; } + public string customerPhone { get; set; } /// /// 购买张数 /// - public int? gmzs { get; set; } + public int buyNumber { get; set; } /// /// 支付方式 /// - public string zffs { get; set; } + public string paymentMethod { get; set; } /// /// 是否加微信 /// - public string sfjwx { get; set; } + public string isAddWeChat { get; set; } /// /// 备注 /// - public string bz { get; set; } + public string remarks { get; set; } /// - /// 所属门店 + /// 所属门店ID /// - public string ssmd { get; set; } + public string storeId { get; set; } /// /// 所属战队 /// - public string sszd { get; set; } + public string teamName { get; set; } /// /// 拓客活动id diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs index 910eda6..a38de1b 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs @@ -1,5 +1,5 @@ -using NCC.Common.Filter; -using System.Collections.Generic; +using System.Collections.Generic; +using NCC.Common.Filter; namespace NCC.Extend.Entitys.Dto.LqTkjlb { @@ -14,65 +14,68 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb public string selectKey { get; set; } /// - /// + /// /// public int dataType { get; set; } - /// /// 拓客编号 /// public string id { get; set; } - + /// /// 拓客时间 /// - public string tksj { get; set; } - + public string expansionTime { get; set; } + /// /// 拓客人员 /// - public string tkry { get; set; } - + public string expansionUserId { get; set; } + /// /// 顾客姓名 /// - public string gkxm { get; set; } - + public string customerName { get; set; } + /// - /// 电话号码 + /// 顾客电话号码 /// - public string dhhm { get; set; } - + public string customerPhone { get; set; } + /// /// 购买张数 /// - public string gmzs { get; set; } - + public string buyNumber { get; set; } + /// /// 支付方式 /// - public string zffs { get; set; } - + public string paymentMethod { get; set; } + /// /// 是否加微信 /// - public string sfjwx { get; set; } - + public string isAddWeChat { get; set; } + /// /// 备注 /// - public string bz { get; set; } - + public string remarks { get; set; } + /// - /// 所属门店 + /// 拓客活动id /// - public string ssmd { get; set; } - + public string eventId { get; set; } + + /// + /// 所属门店ID + /// + public string storeId { get; set; } + /// /// 所属战队 /// - public string sszd { get; set; } - + public string teamName { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs index 5672845..f8ee7cc 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs @@ -10,13 +10,13 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// /// 所属战队 /// - public string sszd { get; set; } - + public string teamName { get; set; } + /// /// 拓客人数 /// - public int tkrs { get; set; } - + public int expansionUserCount { get; set; } + /// /// 排名 /// diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs index 32fe5e6..e3c80f8 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs @@ -13,71 +13,70 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk /// 耗卡编号 /// public string id { get; set; } - + /// /// 门店 /// public string md { get; set; } - + /// /// 门店编号 /// public string mdbh { get; set; } - + /// /// 门店名称 /// public string mdmc { get; set; } - + /// /// 会员 /// public string hy { get; set; } - + /// /// 会员账号 /// public string hyzh { get; set; } - + /// /// 会员名称 /// public string hymc { get; set; } - + /// /// 顾客类型 /// public string gklx { get; set; } - + /// /// 消费金额 /// public string xfje { get; set; } - + /// /// 手工费用 /// public string sgfy { get; set; } - + /// /// 是否有科技部 /// public string sfykjb { get; set; } - + /// /// 耗卡时间 /// public DateTime? hksj { get; set; } - + /// /// 操作人员 /// public string czry { get; set; } - + /// /// 耗卡_品项明细 /// public List lqXhPxmxList { get; set; } - } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs index 0038e88..83144e0 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs @@ -17,13 +17,13 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk /// /// GK2025022100004 public string MemberId { get; set; } - + /// /// 会员姓名 /// /// 张三 public string MemberName { get; set; } - + /// /// 剩余品项列表 /// @@ -41,51 +41,56 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk public class RemainingItemInfo { /// + /// 开单品项id + /// + public string BillingItemId { get; set; } + + /// /// 品项ID /// /// 94 public string ItemId { get; set; } - + /// /// 品项名称 /// /// 胶原宝宝-单部位 public string ItemName { get; set; } - + /// /// 品项单价 /// /// 100.00 public decimal ItemPrice { get; set; } - + /// /// 来源类型 /// /// 品项的来源类型,用于区分相同品项的不同来源 /// 开卡 public string SourceType { get; set; } - + /// /// 总购买数量 /// /// 该品项的总购买次数 /// 3 public decimal TotalPurchased { get; set; } - + /// /// 已耗卡数量 /// /// 该品项已消费的次数 /// 1 public decimal ConsumedCount { get; set; } - + /// /// 已退卡数量 /// /// 该品项已退卡的次数 /// 0 public decimal RefundedCount { get; set; } - + /// /// 剩余数量 /// diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs index 4801ba6..5165762 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs @@ -14,9 +14,9 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx public string id { get; set; } /// - /// 关联开单编号 + /// 开单品项明细表id /// - public string glkdbh { get; set; } + public string billingItemId { get; set; } /// /// 品项 @@ -34,11 +34,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx public decimal pxjg { get; set; } /// - /// 是否赠送 - /// - public string xfzs { get; set; } - - /// /// 会员id /// public string memberId { get; set; } @@ -78,4 +73,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx /// public List lqXhKjbsyjList { get; set; } } -} \ No newline at end of file +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs index bd7a991..d203e31 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx public string id { get; set; } /// - /// 关联耗卡编号 + /// 耗卡记录ID /// - public string glkdbh { get; set; } + public string consumeInfoId { get; set; } + + /// + /// 开单品项明细表id + /// + public string billingItemId { get; set; } /// /// 品项编号 @@ -36,11 +41,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx public decimal pxjg { get; set; } /// - /// 是否赠送 - /// - public string xfzs { get; set; } - - /// /// 会员ID /// public string memberId { get; set; } @@ -80,4 +80,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx /// public List lqXhKjbsyjList { get; set; } } -} \ No newline at end of file +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs index 928de33..303ed67 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs @@ -1,6 +1,7 @@ -using NCC.Common.Const; +using System; +using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; -using System; namespace NCC.Extend.Entitys.lq_hytk_mx { @@ -16,90 +17,95 @@ namespace NCC.Extend.Entitys.lq_hytk_mx /// [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] public string Id { get; set; } - + /// - /// 关联退卡编号 + /// 关联退卡Id /// - [SugarColumn(ColumnName = "gltkbh")] - public string Gltkbh { get; set; } - + [SugarColumn(ColumnName = "F_RefundInfoId")] + public string RefundInfoId { get; set; } + + /// + /// 退卡记录Id + /// + [SugarColumn(ColumnName = "F_BillingItemId")] + public string BillingItemId { get; set; } + /// /// 品项 /// - [SugarColumn(ColumnName = "px")] + [SugarColumn(ColumnName = "px")] public string Px { get; set; } - + /// /// 品项名称 /// - [SugarColumn(ColumnName = "pxmc")] + [SugarColumn(ColumnName = "pxmc")] public string Pxmc { get; set; } - + /// /// 品项价格 /// - [SugarColumn(ColumnName = "pxjg")] + [SugarColumn(ColumnName = "pxjg")] public decimal? Pxjg { get; set; } - + /// /// 退款金额 /// - [SugarColumn(ColumnName = "tkje")] + [SugarColumn(ColumnName = "tkje")] public decimal? Tkje { get; set; } - + /// /// 项目次数 /// - [SugarColumn(ColumnName = "F_ProjectNumber")] - public int? F_ProjectNumber { get; set; } - + [SugarColumn(ColumnName = "F_ProjectNumber")] + public int ProjectNumber { get; set; } + /// /// 是否有效 /// - [SugarColumn(ColumnName = "F_IsEnabled")] - public int? F_IsEnabled { get; set; } - + [SugarColumn(ColumnName = "F_IsEnabled")] + public int IsEnabled { get; set; } = StatusEnum.有效.GetHashCode(); + /// /// 来源类型 /// - [SugarColumn(ColumnName = "F_SourceType")] - public string F_SourceType { get; set; } - + [SugarColumn(ColumnName = "F_SourceType")] + public string SourceType { get; set; } + /// /// 合计金额 /// - [SugarColumn(ColumnName = "F_TotalPrice")] - public decimal? F_TotalPrice { get; set; } - + [SugarColumn(ColumnName = "F_TotalPrice")] + public decimal? TotalPrice { get; set; } + /// /// 创建时间 /// - [SugarColumn(ColumnName = "F_CreateTime")] - public DateTime? F_CreateTime { get; set; } - + [SugarColumn(ColumnName = "F_CreateTime")] + public DateTime? CreateTime { get; set; } + /// /// 创建用户 /// - [SugarColumn(ColumnName = "F_CreateUser")] - public string F_CreateUser { get; set; } - + [SugarColumn(ColumnName = "F_CreateUser")] + public string CreateUser { get; set; } + /// /// 修改时间 /// - [SugarColumn(ColumnName = "F_ModifyTime")] - public DateTime? F_ModifyTime { get; set; } - + [SugarColumn(ColumnName = "F_ModifyTime")] + public DateTime? ModifyTime { get; set; } + /// /// 修改用户 /// - [SugarColumn(ColumnName = "F_ModifyUser")] - public string F_ModifyUser { get; set; } - + [SugarColumn(ColumnName = "F_ModifyUser")] + public string ModifyUser { get; set; } + /// /// 删除标记 /// - [SugarColumn(ColumnName = "F_DeleteMark")] - public int? F_DeleteMark { get; set; } - + [SugarColumn(ColumnName = "F_DeleteMark")] + public int? DeleteMark { get; set; } } -} \ No newline at end of file +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs new file mode 100644 index 0000000..22a02eb --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs @@ -0,0 +1,44 @@ +using System; +using System.ComponentModel.DataAnnotations; +using SqlSugar; + +namespace NCC.Extend.Entitys.lq_kd_deductinfo +{ + /// + /// 开单扣减信息表 + /// + [SugarTable("lq_kd_deductinfo")] + public class LqKdDeductinfoEntity + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, ColumnName = "F_Id")] + public string Id { get; set; } + + /// + /// 扣减类型 + /// + [SugarColumn(ColumnName = "F_DeductType")] + public int? DeductType { get; set; } + + /// + /// 扣减关联ID + /// + [SugarColumn(ColumnName = "F_DeductId")] + public string DeductId { get; set; } + + /// + /// 开单id + /// + [SugarColumn(ColumnName = "F_BillingId")] + [Required] + public string BillingId { get; set; } + + /// + /// 合计金额 + /// + [SugarColumn(ColumnName = "F_Amount")] + public decimal? Amount { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs index 61b05fd..e668938 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs @@ -18,50 +18,50 @@ namespace NCC.Extend.Entitys.lq_tkjlb /// /// 拓客时间 /// - [SugarColumn(ColumnName = "tksj")] - public DateTime? Tksj { get; set; } + [SugarColumn(ColumnName = "F_ExpansionTime")] + public DateTime ExpansionTime { get; set; } /// /// 拓客人员 /// - [SugarColumn(ColumnName = "tkry")] - public string Tkry { get; set; } + [SugarColumn(ColumnName = "F_ExpansionUserId")] + public string ExpansionUserId { get; set; } /// /// 顾客姓名 /// - [SugarColumn(ColumnName = "gkxm")] - public string Gkxm { get; set; } + [SugarColumn(ColumnName = "F_CustomerName")] + public string CustomerName { get; set; } /// - /// 电话号码 + /// 顾客电话号码 /// - [SugarColumn(ColumnName = "dhhm")] - public string Dhhm { get; set; } + [SugarColumn(ColumnName = "F_CustomerPhone")] + public string CustomerPhone { get; set; } /// /// 购买张数 /// - [SugarColumn(ColumnName = "gmzs")] - public int? Gmzs { get; set; } + [SugarColumn(ColumnName = "F_BuyNumber")] + public int BuyNumber { get; set; } = 0; /// /// 支付方式 /// - [SugarColumn(ColumnName = "zffs")] - public string Zffs { get; set; } + [SugarColumn(ColumnName = "F_PaymentMethod")] + public string PaymentMethod { get; set; } /// /// 是否加微信 /// - [SugarColumn(ColumnName = "sfjwx")] - public string Sfjwx { get; set; } + [SugarColumn(ColumnName = "F_IsAddWeChat")] + public string IsAddWeChat { get; set; } /// /// 备注 /// - [SugarColumn(ColumnName = "bz")] - public string Bz { get; set; } + [SugarColumn(ColumnName = "F_Remarks")] + public string Remarks { get; set; } /// /// 拓客活动id @@ -70,15 +70,27 @@ namespace NCC.Extend.Entitys.lq_tkjlb public string EventId { get; set; } /// - /// 所属组织 + /// 所属门店ID /// - [SugarColumn(ColumnName = "ssmd")] - public string Ssmd { get; set; } + [SugarColumn(ColumnName = "F_StoreId")] + public string StoreId { get; set; } /// /// 所属战队 /// - [SugarColumn(ColumnName = "sszd")] - public string Sszd { get; set; } + [SugarColumn(ColumnName = "F_TeamName")] + public string TeamName { get; set; } + + /// + /// 所属部门id + /// + [SugarColumn(ColumnName = "F_DepId")] + public string DepId { get; set; } + + /// + /// 添加时间 + /// + [SugarColumn(ColumnName = "F_CreateTime")] + public DateTime CreateTime { get; set; } = DateTime.Now; } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs index f424831..9af0701 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs @@ -1,6 +1,6 @@ -using NCC.Common.Const; +using System; +using NCC.Common.Const; using SqlSugar; -using System; namespace NCC.Extend.Entitys.lq_xh_pxmx { @@ -16,71 +16,71 @@ namespace NCC.Extend.Entitys.lq_xh_pxmx /// [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] public string Id { get; set; } - + /// - /// 关联开单编号 + /// 耗卡记录ID /// - [SugarColumn(ColumnName = "glkdbh")] - public string Glkdbh { get; set; } - + [SugarColumn(ColumnName = "F_ConsumeInfoId")] + public string ConsumeInfoId { get; set; } + + /// + /// 开单品项明细表id + /// + [SugarColumn(ColumnName = "F_BillingItemId")] + public string BillingItemId { get; set; } + /// /// 品项 /// - [SugarColumn(ColumnName = "px")] + [SugarColumn(ColumnName = "px")] public string Px { get; set; } - + /// /// 品项名称 /// - [SugarColumn(ColumnName = "pxmc")] + [SugarColumn(ColumnName = "pxmc")] public string Pxmc { get; set; } - + /// /// 品项价格 /// - [SugarColumn(ColumnName = "pxjg")] + [SugarColumn(ColumnName = "pxjg")] public decimal Pxjg { get; set; } /// - /// 是否赠送 - /// - [SugarColumn(ColumnName = "xfzs")] - public string Xfzs { get; set; } - - /// /// 会员id /// - [SugarColumn(ColumnName = "F_MemberId")] + [SugarColumn(ColumnName = "F_MemberId")] public string MemberId { get; set; } /// /// 创建时间 /// - [SugarColumn(ColumnName = "F_CreateTIme")] + [SugarColumn(ColumnName = "F_CreateTIme")] public DateTime? CreateTIme { get; set; } /// /// 项目次数 /// - [SugarColumn(ColumnName = "F_ProjectNumber")] - public int? ProjectNumber { get; set; } + [SugarColumn(ColumnName = "F_ProjectNumber")] + public int ProjectNumber { get; set; } /// /// 是否有效 /// - [SugarColumn(ColumnName = "F_IsEnabled")] + [SugarColumn(ColumnName = "F_IsEnabled")] public int? IsEnabled { get; set; } /// /// 来源类型 /// - [SugarColumn(ColumnName = "F_SourceType")] + [SugarColumn(ColumnName = "F_SourceType")] public string SourceType { get; set; } /// /// 合计金额 /// - [SugarColumn(ColumnName = "F_TotalPrice")] + [SugarColumn(ColumnName = "F_TotalPrice")] public decimal TotalPrice { get; set; } } -} \ No newline at end of file +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs new file mode 100644 index 0000000..d9e4b7e --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs @@ -0,0 +1,28 @@ +using System.ComponentModel; + +namespace NCC.Extend.Entitys.Enum +{ + /// + /// 扣款类型 + /// + public enum DeductTypeEnum + { + /// + /// 储值卡 + /// + [Description("储值卡")] + 储值卡 = 1, + + /// + /// 扣项 + /// + [Description("扣项")] + 扣项 = 2, + + /// + /// 套餐 + /// + [Description("套餐")] + 套餐 = 3, + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs new file mode 100644 index 0000000..c71b3da --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs @@ -0,0 +1,28 @@ +using System.ComponentModel; + +namespace NCC.Extend.Entitys.Enum +{ + /// + /// 状态枚举 + /// + public enum StatusEnum + { + /// + /// 有效 + /// + [Description("有效")] + 有效 = 0, + + /// + /// 无效 + /// + [Description("无效")] + 无效 = 1, + + /// + /// 删除 + /// + [Description("删除")] + 删除 = 99, + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs index 9e97358..e3c1db6 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs @@ -9,16 +9,19 @@ using Mapster; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using NCC.Common.Core.Manager; +using NCC.Common.Extension; using NCC.Common.Filter; using NCC.Common.Helper; using NCC.Dependency; using NCC.DynamicApiController; +using NCC.Extend.Entitys.Dto.Common; using NCC.Extend.Entitys.Dto.LqEvent; using NCC.Extend.Entitys.Dto.LqEventUser; using NCC.Extend.Entitys.Enum; using NCC.Extend.Entitys.lq_event; using NCC.Extend.Entitys.lq_eventuser; using NCC.Extend.Entitys.lq_mdxx; +using NCC.Extend.Entitys.lq_tkjlb; using NCC.Extend.Interfaces.LqEvent; using NCC.FriendlyException; using NCC.System.Entitys.Permission; @@ -136,13 +139,36 @@ namespace NCC.Extend.LqEvent throw NCCException.Oh("拓客活动不存在"); } - var output = entity.Adapt(); - - // 2. 获取拓客活动成员信息 - var members = await _db.Queryable().Where(u => u.EventId == id.ToString()).ToListAsync(); - - // 3. 转换为输出格式 - output.Members = members.Adapt>(); + // 2. 手动映射到输出格式 + var output = new LqEventInfoOutput + { + id = entity.Id, + eventName = entity.EventName, + startTime = entity.StartTime, + endTime = entity.EndTime, + eventCoordinator = entity.EventCoordinator, + eventNumber = entity.EventNumber, + eventType = entity.EventType, + }; + + // 3. 获取拓客活动成员信息 + var members = await _db.Queryable().Where(u => u.EventId == id).ToListAsync(); + + // 4. 手动映射成员信息 + output.Members = members + .Select(m => new LqEventUserInfoOutput + { + id = m.Id, + eventId = m.EventId, + userId = m.UserId, + depId = m.DepId, + teamName = m.TeamName, + creationTime = m.CreationTime, + creationUser = m.CreationUser, + targetCount = m.EventTarget, + storeId = m.StoreId, + }) + .ToList(); return output; } @@ -233,6 +259,7 @@ namespace NCC.Extend.LqEvent CreationTime = DateTime.Now, CreationUser = userInfo?.userName, StoreId = member.StoreId, + EventTarget = member.TargetCount, } ); } @@ -325,6 +352,7 @@ namespace NCC.Extend.LqEvent CreationTime = DateTime.Now, CreationUser = userInfo?.userName, StoreId = member.StoreId, + EventTarget = member.TargetCount, } ); } @@ -503,6 +531,188 @@ namespace NCC.Extend.LqEvent } #endregion + #region 根据用户ID获取当前参与的拓客活动 + /// + /// 根据用户ID获取当前参与的拓客活动列表 + /// + /// + /// 根据用户ID查询当前正在进行的拓客活动信息 + /// 返回用户参与的所有活动详情,包括活动基本信息、用户目标、门店信息等 + /// 如果没有当前活动,返回空列表 + /// + /// 示例请求: + /// ```json + /// GET /api/Extend/LqEvent/user/{userId}/current + /// ``` + /// + /// 参数说明: + /// - userId: 用户ID,必填参数 + /// + /// 返回信息包括: + /// - 活动基本信息(ID、名称、编号、负责人、时间) + /// - 用户参与信息(用户ID、部门ID、战队名称、目标数量) + /// - 门店信息(门店ID、门店名称) + /// - 创建信息(创建时间、创建用户) + /// + /// 用户ID + /// 用户当前参与的拓客活动列表,无活动时返回空列表 + /// 成功返回活动列表(可能为空) + /// 参数错误,用户ID不能为空 + [HttpGet("user/{userId}/current")] + public async Task GetCurrentEvent(string userId) + { + if (string.IsNullOrEmpty(userId)) + { + throw NCCException.Oh("用户ID不能为空"); + } + try + { + var currentTime = DateTime.Now; + // 先检查用户是否有活动记录 + var userEventCount = await _db.Queryable().Where(eu => eu.UserId == userId).CountAsync(); + if (userEventCount == 0) + { + return null; + } + // 使用内存合并的方式,避免复杂的SqlFunc问题 + // 1. 查询用户参与的活动信息 + var userEvents = await _db.Queryable().Where(eventUser => eventUser.UserId == userId).ToListAsync(); + + if (userEvents == null || userEvents.Count == 0) + { + return new List(); + } + + // 2. 查询当前正在进行的活动详情 + var eventIds = userEvents.Select(u => u.EventId).ToList(); + var currentEvents = await _db.Queryable().Where(e => eventIds.Contains(e.Id) && e.StartTime <= currentTime && e.EndTime >= currentTime).ToListAsync(); + + if (currentEvents == null || currentEvents.Count == 0) + { + return new List(); + } + + // 3. 在内存中合并数据 + var eventUsers = userEvents + .Where(userEvent => currentEvents.Any(e => e.Id == userEvent.EventId)) + .Select(userEvent => + { + var eventInfo = currentEvents.First(e => e.Id == userEvent.EventId); + return new LqEventUserEventOutput + { + EventId = userEvent.EventId, + EventName = eventInfo.EventName, + EventNumber = eventInfo.EventNumber, + EventCoordinator = eventInfo.EventCoordinator, + StartTime = eventInfo.StartTime, + EndTime = eventInfo.EndTime, + UserId = userEvent.UserId, + DepId = userEvent.DepId, + TeamName = userEvent.TeamName, + EventTarget = userEvent.EventTarget, + CreationTime = userEvent.CreationTime, + CreationUser = userEvent.CreationUser, + StoreId = userEvent.StoreId, + StoreName = null, // 不需要门店信息 + }; + }) + .ToList(); + + // 如果没有查询到当前活动,返回空列表 + return eventUsers ?? new List(); + } + catch (Exception ex) + { + throw NCCException.Oh($"查询用户 {userId} 当前活动失败: {ex.Message}", ex); + } + } + #endregion + + #region 根据活动ID获取战队统计数据 + /// + /// 根据活动ID获取战队统计数据 + /// + /// + /// 根据活动ID查询该活动下所有门店和战队的统计数据 + /// 返回按门店和战队分组的拓客数据 + /// + /// 示例请求: + /// ```json + /// GET /api/Extend/LqEvent/team-data/{eventId} + /// ``` + /// + /// 参数说明: + /// - eventId: 活动ID,必填参数 + /// + /// 返回信息包括: + /// - 门店信息(门店ID、门店名称) + /// - 战队信息(战队名称) + /// - 用户信息(用户ID、用户姓名、拓客数量、活动目标) + /// + /// 活动ID + /// 按门店和战队分组的统计数据 + /// 成功返回统计数据 + /// 参数错误,活动ID不能为空 + [HttpGet("team-data/{eventId}")] + public async Task GetTeamDataByEventId(string eventId) + { + if (string.IsNullOrEmpty(eventId)) + { + throw NCCException.Oh("活动ID不能为空"); + } + + try + { + // 使用SqlFunc子查询,一次性获取所有需要的数据,避免多次查询和内存合并 + var teamData = await _db.Queryable() + .Where(eventUser => eventUser.EventId == eventId) + .Select(eventUser => new + { + StoreId = eventUser.StoreId, + StoreName = SqlFunc.Subqueryable().Where(md => md.Id == eventUser.StoreId).Select(md => md.Dm), + TeamName = eventUser.TeamName, + ExpansionUserId = eventUser.UserId, + ExpansionUserName = SqlFunc.Subqueryable().Where(u => u.Id == eventUser.UserId).Select(u => u.RealName), + EventTarget = eventUser.EventTarget, + ExpansionCount = SqlFunc.Subqueryable().Where(tkjlb => tkjlb.EventId == eventId && tkjlb.ExpansionUserId == eventUser.UserId).Count(), + }) + .ToListAsync(); + + // 按门店和战队分组数据 + var result = teamData + .GroupBy(x => new { x.StoreId, x.StoreName }) + .Select(storeGroup => new StoreTeamDataOutput + { + StoreId = storeGroup.Key.StoreId, + StoreName = storeGroup.Key.StoreName, + TeamList = storeGroup + .GroupBy(x => x.TeamName) + .Select(teamGroup => new TeamInfoOutput + { + TeamName = teamGroup.Key, + TeamUserInfo = teamGroup + .Select(user => new TeamUserInfoOutput + { + ExpansionUserId = user.ExpansionUserId, + ExpansionUserName = user.ExpansionUserName, + ExpansionCount = user.ExpansionCount, + EventTarget = user.EventTarget, + }) + .ToList(), + }) + .ToList(), + }) + .ToList(); + + return result; + } + catch (Exception ex) + { + throw NCCException.Oh($"查询活动 {eventId} 战队统计数据失败: {ex.Message}", ex); + } + } + #endregion + #region Excel导入拓客活动用户 /// @@ -698,7 +908,7 @@ namespace NCC.Extend.LqEvent // 调试信息:输出每一行读取的数据 Console.WriteLine($"第{i + 1}行数据: 手机号={mobilePhone}, 姓名={name}, 战队={teamName}, 门店={storeName}, 目标={targetCountStr}"); - int? targetCount = null; + int targetCount = 0; if (!string.IsNullOrEmpty(targetCountStr) && int.TryParse(targetCountStr, out int target)) { targetCount = target; @@ -746,7 +956,7 @@ namespace NCC.Extend.LqEvent public string Name { get; set; } public string TeamName { get; set; } public string StoreName { get; set; } - public int? TargetCount { get; set; } + public int TargetCount { get; set; } = 0; } #endregion @@ -758,30 +968,16 @@ namespace NCC.Extend.LqEvent /// /// 拓客类型枚举列表 [HttpGet("event-types")] - public List GetEventTypes() + public List GetEventTypes() { - var result = new List(); - - // 获取所有枚举值 - var enumValues = Enum.GetValues(); - - foreach (var enumValue in enumValues) - { - // 获取枚举的Description特性 - var field = enumValue.GetType().GetField(enumValue.ToString()); - var descriptionAttribute = field?.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute; - - result.Add( - new EventTypeEnumOutput - { - Value = (int)enumValue, - Name = enumValue.ToString(), - Description = descriptionAttribute?.Description ?? enumValue.ToString(), - } - ); - } - - return result; + return Enum.GetValues() + .Select(e => new EnumOutput + { + Value = (int)e, + Name = e.ToString(), + Description = e.GetDescription(), + }) + .ToList(); } #endregion diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs index 85f44fb..7f8ba96 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs @@ -223,18 +223,19 @@ namespace NCC.Extend.LqHytkHytk var lqHytkMxEntity = new LqHytkMxEntity { Id = YitIdHelper.NextId().ToString(), - Gltkbh = newEntity.Id, - F_CreateTime = DateTime.Now, - F_CreateUser = userInfo.userId, - F_DeleteMark = 0, + RefundInfoId = newEntity.Id, + BillingItemId = item.billingItemId, + CreateTime = DateTime.Now, + CreateUser = userInfo.userId, + DeleteMark = 0, Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, Tkje = item.tkje, - F_ProjectNumber = item.F_ProjectNumber ?? 1, - F_IsEnabled = item.F_IsEnabled ?? 1, - F_SourceType = item.F_SourceType, - F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), + ProjectNumber = item.F_ProjectNumber ?? 1, + IsEnabled = item.F_IsEnabled ?? 1, + SourceType = item.F_SourceType, + TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), }; allMxEntities.Add(lqHytkMxEntity); @@ -356,7 +357,7 @@ namespace NCC.Extend.LqHytkHytk await _db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync(); // 删除原有的关联数据 - await _db.Deleteable().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); + await _db.Deleteable().Where(x => x.RefundInfoId == id).ExecuteCommandAsync(); await _db.Deleteable().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); await _db.Deleteable().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); @@ -374,18 +375,19 @@ namespace NCC.Extend.LqHytkHytk var lqHytkMxEntity = new LqHytkMxEntity { Id = YitIdHelper.NextId().ToString(), - Gltkbh = id, - F_CreateTime = DateTime.Now, - F_CreateUser = userInfo.userId, - F_DeleteMark = 0, + RefundInfoId = id, + BillingItemId = item.billingItemId, + CreateTime = DateTime.Now, + CreateUser = userInfo.userId, + DeleteMark = 0, Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, Tkje = item.tkje, - F_ProjectNumber = item.F_ProjectNumber ?? 1, - F_IsEnabled = item.F_IsEnabled ?? 1, - F_SourceType = item.F_SourceType, - F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), + ProjectNumber = item.F_ProjectNumber ?? 1, + IsEnabled = item.F_IsEnabled ?? 1, + SourceType = item.F_SourceType, + TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), }; allMxEntities.Add(lqHytkMxEntity); @@ -523,7 +525,7 @@ namespace NCC.Extend.LqHytkHytk var output = entity.Adapt(); // 2. 查询品项明细列表 - var lqHytkMxList = await _db.Queryable().Where(w => w.Gltkbh == entity.Id).ToListAsync(); + var lqHytkMxList = await _db.Queryable().Where(w => w.RefundInfoId == entity.Id).ToListAsync(); // 3. 查询健康师业绩列表 var lqHytkJksyjList = await _db.Queryable().Where(w => w.Gltkbh == entity.Id).ToListAsync(); @@ -538,15 +540,16 @@ namespace NCC.Extend.LqHytkHytk var mxOutput = new LqHytkMxInfoOutput { id = mx.Id, - gltkbh = mx.Gltkbh, + refundInfoId = mx.RefundInfoId, + billingItemId = mx.BillingItemId, px = mx.Px, pxmc = mx.Pxmc, pxjg = mx.Pxjg, tkje = mx.Tkje, - F_ProjectNumber = mx.F_ProjectNumber, - F_IsEnabled = mx.F_IsEnabled, - F_SourceType = mx.F_SourceType, - F_TotalPrice = mx.F_TotalPrice, + projectNumber = mx.ProjectNumber, + isEnabled = mx.IsEnabled, + sourceType = mx.SourceType, + totalPrice = mx.TotalPrice, }; // 关联该品项的健康师业绩 diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs index 6a71eac..9a16689 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs @@ -16,8 +16,11 @@ using NCC.Common.Model.NPOI; using NCC.DataEncryption; using NCC.Dependency; using NCC.DynamicApiController; +using NCC.Extend.Entitys.Dto.Common; using NCC.Extend.Entitys.Dto.LqKdKdjlb; +using NCC.Extend.Entitys.Enum; using NCC.Extend.Entitys.lq_jinsanjiao_user; +using NCC.Extend.Entitys.lq_kd_deductinfo; using NCC.Extend.Entitys.lq_kd_jksyj; using NCC.Extend.Entitys.lq_kd_kdjlb; using NCC.Extend.Entitys.lq_kd_kjbsyj; @@ -266,7 +269,20 @@ namespace NCC.Extend.LqKdKdjlb var allPxmxEntities = new List(); var allJksyjEntities = new List(); var allKjbsyjEntities = new List(); - + var allDeductEntities = new List(); + // 处理扣款信息列表 + foreach (var item in input.lqKdKdjlbDeductList) + { + var lqKdDeductEntity = new LqKdDeductinfoEntity + { + Id = YitIdHelper.NextId().ToString(), + BillingId = newEntity.Id, + DeductId = item.DeductId, + DeductType = item.DeductType, + Amount = item.Amount, + }; + allDeductEntities.Add(lqKdDeductEntity); + } // 处理品项明细列表 foreach (var item in input.lqKdPxmxList) { @@ -331,7 +347,11 @@ namespace NCC.Extend.LqKdKdjlb } } } - + // 批量插入扣款信息 + if (allDeductEntities.Any()) + { + await _db.Insertable(allDeductEntities).ExecuteCommandAsync(); + } // 批量插入品项明细 if (allPxmxEntities.Any()) { @@ -347,6 +367,7 @@ namespace NCC.Extend.LqKdKdjlb { await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); } + //关闭事务 _db.CommitTran(); @@ -755,5 +776,24 @@ namespace NCC.Extend.LqKdKdjlb } } #endregion + + #region 获取扣款类型枚举内容 + /// + /// 获取扣款类型枚举内容 + /// + /// 扣款类型枚举列表 + [HttpGet("deduct-types")] + public List GetDeductTypes() + { + return Enum.GetValues() + .Select(e => new EnumOutput + { + Value = (int)e, + Name = e.ToString(), + Description = e.GetDescription(), + }) + .ToList(); + } + #endregion } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs index 53cca4c..b396a74 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs @@ -548,155 +548,34 @@ namespace NCC.Extend.LqKhxx { throw NCCException.Oh(ErrorCode.COM1000, "会员ID不能为空"); } - try { - _logger.LogInformation("开始查询会员剩余品项,会员ID:{MemberId}", memberId); - // 1. 查询会员基本信息 var memberInfo = await _db.Queryable().Where(x => x.Id == memberId).FirstAsync(); - if (memberInfo == null) { _logger.LogWarning("会员不存在,会员ID:{MemberId}", memberId); - throw NCCException.Oh(ErrorCode.COM1005, "会员不存在"); + throw NCCException.Oh("会员不存在"); } - - _logger.LogInformation("会员信息查询成功,会员姓名:{MemberName}", memberInfo.Khmc); - // 2. 查询开单记录ID列表 - _logger.LogInformation("开始查询开单记录ID列表"); - var orderIds = await _db.Queryable().Where(kd => kd.Kdhy == memberId).Select(kd => kd.Id).ToListAsync(); - - _logger.LogInformation("开单记录ID列表查询成功,数量:{Count}", orderIds.Count); - - // 3. 查询开单品项统计(按品项ID、名称、价格和来源类型分组) - _logger.LogInformation("开始查询开单品项统计"); - var purchasedItems = new List(); - if (orderIds.Any()) - { - var tempPurchasedItems = await _db.Queryable() - .Where(px => orderIds.Contains(px.Glkdbh)) - .GroupBy(px => new - { - px.Px, - px.Pxmc, - px.Pxjg, - px.SourceType, - }) - .Select(px => new - { - ItemId = px.Px, - ItemName = px.Pxmc, - ItemPrice = px.Pxjg, - SourceType = SqlFunc.IsNull(px.SourceType, "未知"), - TotalPurchased = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.ProjectNumber)), - }) - .ToListAsync(); - - purchasedItems = tempPurchasedItems.Cast().ToList(); - _logger.LogInformation("开单品项统计查询成功,数量:{Count}", purchasedItems.Count); - - // 调试:输出前几条记录查看SourceType字段 - foreach (var item in purchasedItems.Take(3)) - { - _logger.LogInformation($"调试 - 品项ID: {item.ItemId}, 品项名称: {item.ItemName}, 来源类型: {item.SourceType}"); - } - } - - // 4. 查询耗卡记录ID列表 - _logger.LogInformation("开始查询耗卡记录ID列表"); - var consumeIds = await _db.Queryable().Where(hk => hk.Hy == memberId).Select(hk => hk.Id).ToListAsync(); - - _logger.LogInformation("耗卡记录ID列表查询成功,数量:{Count}", consumeIds.Count); - - // 5. 查询耗卡品项统计(按品项ID和来源类型分组) - _logger.LogInformation("开始查询耗卡品项统计"); - var consumedItems = new List(); - if (consumeIds.Any()) - { - var tempConsumedItems = await _db.Queryable() - .Where(px => consumeIds.Contains(px.Glkdbh)) - .GroupBy(px => new { px.Px, px.SourceType }) - .Select(px => new - { - ItemId = px.Px, - SourceType = SqlFunc.IsNull(px.SourceType, "未知"), - ConsumedCount = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.ProjectNumber)), - }) - .ToListAsync(); - - consumedItems = tempConsumedItems.Cast().ToList(); - _logger.LogInformation("耗卡品项统计查询成功,数量:{Count}", consumedItems.Count); - } - - // 6. 查询退卡记录ID列表 - _logger.LogInformation("开始查询退卡记录ID列表"); - var refundIds = await _db.Queryable().Where(tk => tk.Hy == memberId && tk.F_DeleteMark != 1).Select(tk => tk.Id).ToListAsync(); - - _logger.LogInformation("退卡记录ID列表查询成功,数量:{Count}", refundIds.Count); - - // 7. 查询退卡品项统计(按品项ID和来源类型分组) - _logger.LogInformation("开始查询退卡品项统计"); - var refundedItems = new List(); - if (refundIds.Any()) - { - var tempRefundedItems = await _db.Queryable() - .Where(px => refundIds.Contains(px.Gltkbh) && px.F_DeleteMark != 1) - .GroupBy(px => new { px.Px, px.F_SourceType }) - .Select(px => new - { - ItemId = px.Px, - SourceType = SqlFunc.IsNull(px.F_SourceType, "未知"), - RefundedCount = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.F_ProjectNumber)), - }) - .ToListAsync(); - - refundedItems = tempRefundedItems.Cast().ToList(); - _logger.LogInformation("退卡品项统计查询成功,数量:{Count}", refundedItems.Count); - } - - // 8. 合并计算剩余品项(按品项ID和来源类型匹配) - _logger.LogInformation("开始合并计算剩余品项"); - var remainingItems = new List(); - - // 处理有购买记录的品项 - foreach (var purchased in purchasedItems) - { - // 按品项ID和来源类型匹配耗卡记录 - var consumed = consumedItems.FirstOrDefault(x => x.ItemId == purchased.ItemId && x.SourceType == purchased.SourceType); - var consumedCount = consumed?.ConsumedCount ?? 0; - - // 按品项ID和来源类型匹配退卡记录 - var refunded = refundedItems.FirstOrDefault(x => x.ItemId == purchased.ItemId && x.SourceType == purchased.SourceType); - var refundedCount = refunded?.RefundedCount ?? 0; - - // 计算剩余数量:购买数量 - 消费数量 - 退卡数量 - var remainingCount = purchased.TotalPurchased - consumedCount - refundedCount; - - if (remainingCount > 0) + var remainingItems = await _db.Queryable() + .Where(x => x.MemberId == memberId) + .Select(x => new RemainingItemInfo { - remainingItems.Add( - new RemainingItemInfo - { - ItemId = purchased.ItemId, - ItemName = purchased.ItemName, - ItemPrice = purchased.ItemPrice, - SourceType = purchased.SourceType?.ToString() ?? "未知", - TotalPurchased = purchased.TotalPurchased, - ConsumedCount = consumedCount, - RefundedCount = refundedCount, - RemainingCount = remainingCount, - } - ); - } - } - - // 7. 按剩余数量降序排列 - remainingItems = remainingItems.OrderByDescending(x => x.RemainingCount).ToList(); - - _logger.LogInformation("剩余品项计算完成,数量:{Count}", remainingItems.Count); - + BillingItemId = x.Id, + ItemId = x.Px, + ItemName = x.Pxmc, + ItemPrice = x.Pxjg, + SourceType = x.SourceType, + TotalPurchased = x.ProjectNumber, + ConsumedCount = SqlFunc.Subqueryable().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)), + RefundedCount = SqlFunc.Subqueryable().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)), + RemainingCount = + x.ProjectNumber + - SqlFunc.Subqueryable().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)) + - SqlFunc.Subqueryable().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)), + }) + .ToListAsync(); return new MemberRemainingItemsOutput { MemberId = memberId, diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs index af48c14..d1026f3 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs @@ -33,7 +33,7 @@ namespace NCC.Extend.LqTkjlb /// /// 拓客管理服务 /// - [ApiDescriptionSettings(Tag = "Extend", Name = "LqTkjlb", Order = 200)] + [ApiDescriptionSettings(Tag = "绿纤拓客管理服务", Name = "LqTkjlb", Order = 200)] [Route("api/Extend/[controller]")] public class LqTkjlbService : ILqTkjlbService, IDynamicApiController, ITransient { @@ -60,10 +60,29 @@ namespace NCC.Extend.LqTkjlb [HttpGet("{id}")] public async Task GetInfo(string id) { - var entity = await _db.Queryable().FirstAsync(p => p.Id == id); - var output = entity.Adapt(); - output.eventName = SqlFunc.Subqueryable().Where(u => u.Id == entity.EventId).Select(u => u.EventName); - return output; + // 使用SqlFunc在查询时直接获取用户名和活动名称 + var result = await _db.Queryable() + .Where(p => p.Id == id) + .Select(p => new LqTkjlbInfoOutput + { + id = p.Id, + expansionTime = p.ExpansionTime, + expansionUserId = p.ExpansionUserId, + expansionUserName = SqlFunc.Subqueryable().Where(u => u.Id == p.ExpansionUserId).Select(u => u.RealName), + customerName = p.CustomerName, + customerPhone = p.CustomerPhone, + buyNumber = p.BuyNumber, + paymentMethod = p.PaymentMethod, + isAddWeChat = p.IsAddWeChat, + remarks = p.Remarks, + storeId = p.StoreId, + teamName = p.TeamName, + eventId = p.EventId, + eventName = SqlFunc.Subqueryable().Where(e => e.Id == p.EventId).Select(e => e.EventName), + }) + .FirstAsync(); + + return result; } #endregion @@ -78,36 +97,37 @@ namespace NCC.Extend.LqTkjlb public async Task GetList([FromQuery] LqTkjlbListQueryInput input) { var sidx = input.sidx == null ? "id" : input.sidx; - List queryTksj = input.tksj != null ? input.tksj.Split(',').ToObeject>() : null; + List queryTksj = input.expansionTime != null ? input.expansionTime.Split(',').ToObeject>() : null; DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null; DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null; var data = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) - .WhereIF(queryTksj != null, p => p.Tksj >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0)) - .WhereIF(queryTksj != null, p => p.Tksj <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59)) - .WhereIF(!string.IsNullOrEmpty(input.tkry), p => p.Tkry.Equals(input.tkry)) - .WhereIF(!string.IsNullOrEmpty(input.gkxm), p => p.Gkxm.Contains(input.gkxm)) - .WhereIF(!string.IsNullOrEmpty(input.dhhm), p => p.Dhhm.Contains(input.dhhm)) - .WhereIF(!string.IsNullOrEmpty(input.gmzs), p => p.Gmzs.Equals(input.gmzs)) - .WhereIF(!string.IsNullOrEmpty(input.zffs), p => p.Zffs.Equals(input.zffs)) - .WhereIF(!string.IsNullOrEmpty(input.sfjwx), p => p.Sfjwx.Equals(input.sfjwx)) - .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz)) - .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd)) - .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) + .WhereIF(queryTksj != null, p => p.ExpansionTime >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0)) + .WhereIF(queryTksj != null, p => p.ExpansionTime <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59)) + .WhereIF(!string.IsNullOrEmpty(input.expansionUserId), p => p.ExpansionUserId.Equals(input.expansionUserId)) + .WhereIF(!string.IsNullOrEmpty(input.customerName), p => p.CustomerName.Contains(input.customerName)) + .WhereIF(!string.IsNullOrEmpty(input.customerPhone), p => p.CustomerPhone.Contains(input.customerPhone)) + .WhereIF(!string.IsNullOrEmpty(input.buyNumber), p => p.BuyNumber.Equals(input.buyNumber)) + .WhereIF(!string.IsNullOrEmpty(input.paymentMethod), p => p.PaymentMethod.Equals(input.paymentMethod)) + .WhereIF(!string.IsNullOrEmpty(input.isAddWeChat), p => p.IsAddWeChat.Equals(input.isAddWeChat)) + .WhereIF(!string.IsNullOrEmpty(input.remarks), p => p.Remarks.Contains(input.remarks)) + .WhereIF(!string.IsNullOrEmpty(input.storeId), p => p.StoreId.Contains(input.storeId)) + .WhereIF(!string.IsNullOrEmpty(input.teamName), p => p.TeamName.Contains(input.teamName)) + .WhereIF(!string.IsNullOrEmpty(input.eventId), p => p.EventId.Contains(input.eventId)) .Select(it => new LqTkjlbListOutput { id = it.Id, - tksj = it.Tksj, - // tkry=it.Tkry, - tkry = SqlFunc.Subqueryable().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), - gkxm = it.Gkxm, - dhhm = it.Dhhm, - gmzs = it.Gmzs, - zffs = it.Zffs, - sfjwx = it.Sfjwx, - bz = it.Bz, - ssmd = it.Ssmd, - sszd = it.Sszd, + expansionTime = it.ExpansionTime, + expansionUserId = it.ExpansionUserId, + expansionUserName = SqlFunc.Subqueryable().Where(u => u.MobilePhone == it.ExpansionUserId).Select(u => u.RealName), + customerName = it.CustomerName, + customerPhone = it.CustomerPhone, + buyNumber = it.BuyNumber, + paymentMethod = it.PaymentMethod, + isAddWeChat = it.IsAddWeChat, + remarks = it.Remarks, + storeId = it.StoreId, + teamName = it.TeamName, eventId = it.EventId, eventName = SqlFunc.Subqueryable().Where(u => u.Id == it.EventId).Select(u => u.EventName), }) @@ -129,7 +149,7 @@ namespace NCC.Extend.LqTkjlb { var userInfo = await _userManager.GetUserInfo(); //通过input.dhhm去查询用户信息 - var user = _db.Queryable().Where(u => u.Sjh == input.dhhm).Any(); + var user = _db.Queryable().Where(u => u.Sjh == input.customerPhone).Any(); if (user) { throw NCCException.Oh("该手机号码已存在于会员或线索池中"); @@ -138,7 +158,7 @@ namespace NCC.Extend.LqTkjlb var result = await _db.Ado.UseTranAsync(async () => { //通过input.eventId去查询拓客活动信息 - var eventUserInfoList = await _db.Queryable().Where(u => u.EventId == input.eventId && u.UserId == input.tkry).ToListAsync(); + var eventUserInfoList = await _db.Queryable().Where(u => u.EventId == input.eventId && u.UserId == input.expansionUserId).ToListAsync(); if (eventUserInfoList == null || eventUserInfoList.Count == 0) { throw NCCException.Oh("未找到对应的拓客活动用户信息,请确认活动ID和用户ID是否正确"); @@ -147,15 +167,18 @@ namespace NCC.Extend.LqTkjlb // 创建拓客记录 var entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); - entity.Sszd = eventUserInfo.TeamName; + entity.TeamName = eventUserInfo.TeamName; + entity.StoreId = eventUserInfo.StoreId; + entity.DepId = eventUserInfo.DepId; + entity.ExpansionTime = DateTime.Now; var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); if (!(isOk > 0)) throw NCCException.Oh("创建拓客记录失败"); // 创建客户信息 LqKhxxEntity MemberInfo = new LqKhxxEntity(); MemberInfo.Id = YitIdHelper.NextId().ToString(); - MemberInfo.Khmc = entity.Gkxm; - MemberInfo.Sjh = input.dhhm; // 设置手机号 + MemberInfo.Khmc = entity.CustomerName; + MemberInfo.Sjh = input.customerPhone; // 设置手机号 MemberInfo.Khmqgs = "线索池"; MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss"); var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); @@ -181,35 +204,42 @@ namespace NCC.Extend.LqTkjlb public async Task GetNoPagingList([FromQuery] LqTkjlbListQueryInput input) { var sidx = input.sidx == null ? "id" : input.sidx; - List queryTksj = input.tksj != null ? input.tksj.Split(',').ToObeject>() : null; - DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null; - DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null; + List queryExpansionTime = input.expansionTime != null ? input.expansionTime.Split(',').ToObeject>() : null; + DateTime? startExpansionTime = queryExpansionTime != null ? Ext.GetDateTime(queryExpansionTime.First()) : null; + DateTime? endExpansionTime = queryExpansionTime != null ? Ext.GetDateTime(queryExpansionTime.Last()) : null; var data = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) - .WhereIF(queryTksj != null, p => p.Tksj >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0)) - .WhereIF(queryTksj != null, p => p.Tksj <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59)) - .WhereIF(!string.IsNullOrEmpty(input.tkry), p => p.Tkry.Equals(input.tkry)) - .WhereIF(!string.IsNullOrEmpty(input.gkxm), p => p.Gkxm.Contains(input.gkxm)) - .WhereIF(!string.IsNullOrEmpty(input.dhhm), p => p.Dhhm.Contains(input.dhhm)) - .WhereIF(!string.IsNullOrEmpty(input.gmzs), p => p.Gmzs.Equals(input.gmzs)) - .WhereIF(!string.IsNullOrEmpty(input.zffs), p => p.Zffs.Equals(input.zffs)) - .WhereIF(!string.IsNullOrEmpty(input.sfjwx), p => p.Sfjwx.Equals(input.sfjwx)) - .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz)) - .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd)) - .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) + .WhereIF( + queryExpansionTime != null, + p => p.ExpansionTime >= new DateTime(startExpansionTime.ToDate().Year, startExpansionTime.ToDate().Month, startExpansionTime.ToDate().Day, 0, 0, 0) + ) + .WhereIF(queryExpansionTime != null, p => p.ExpansionTime <= new DateTime(endExpansionTime.ToDate().Year, endExpansionTime.ToDate().Month, endExpansionTime.ToDate().Day, 23, 59, 59)) + .WhereIF(!string.IsNullOrEmpty(input.expansionUserId), p => p.ExpansionUserId.Equals(input.expansionUserId)) + .WhereIF(!string.IsNullOrEmpty(input.customerName), p => p.CustomerName.Contains(input.customerName)) + .WhereIF(!string.IsNullOrEmpty(input.customerPhone), p => p.CustomerPhone.Contains(input.customerPhone)) + .WhereIF(!string.IsNullOrEmpty(input.buyNumber), p => p.BuyNumber.ToString().Equals(input.buyNumber)) + .WhereIF(!string.IsNullOrEmpty(input.paymentMethod), p => p.PaymentMethod.Equals(input.paymentMethod)) + .WhereIF(!string.IsNullOrEmpty(input.isAddWeChat), p => p.IsAddWeChat.Equals(input.isAddWeChat)) + .WhereIF(!string.IsNullOrEmpty(input.remarks), p => p.Remarks.Contains(input.remarks)) + .WhereIF(!string.IsNullOrEmpty(input.storeId), p => p.StoreId.Contains(input.storeId)) + .WhereIF(!string.IsNullOrEmpty(input.teamName), p => p.TeamName.Contains(input.teamName)) + .WhereIF(!string.IsNullOrEmpty(input.eventId), p => p.EventId.Equals(input.eventId)) .Select(it => new LqTkjlbListOutput { id = it.Id, - tksj = it.Tksj, - tkry = it.Tkry, - gkxm = it.Gkxm, - dhhm = it.Dhhm, - gmzs = it.Gmzs, - zffs = it.Zffs, - sfjwx = it.Sfjwx, - bz = it.Bz, - ssmd = it.Ssmd, - sszd = it.Sszd, + expansionTime = it.ExpansionTime, + expansionUserId = it.ExpansionUserId, + expansionUserName = it.ExpansionUserId, // 这里需要根据实际业务逻辑获取用户名 + customerName = it.CustomerName, + customerPhone = it.CustomerPhone, + buyNumber = it.BuyNumber, + paymentMethod = it.PaymentMethod, + isAddWeChat = it.IsAddWeChat, + remarks = it.Remarks, + storeId = it.StoreId, + teamName = it.TeamName, + eventId = it.EventId, + eventName = it.EventId, // 这里需要根据实际业务逻辑获取活动名称 }) .MergeTable() .OrderBy(sidx + " " + input.sort) @@ -336,10 +366,13 @@ namespace NCC.Extend.LqTkjlb [HttpGet("Actions/GetRanking")] public async Task GetRanking() { - var data = await _db.Queryable().GroupBy(it => it.Sszd).Select(it => new LqTkjlbRankingOutput { sszd = it.Sszd, tkrs = SqlFunc.AggregateCount(it.Id) }).ToListAsync(); + var data = await _db.Queryable() + .GroupBy(it => it.TeamName) + .Select(it => new LqTkjlbRankingOutput { teamName = it.TeamName, expansionUserCount = SqlFunc.AggregateCount(it.Id) }) + .ToListAsync(); // 在内存中排序并添加排名 - var sortedData = data.OrderByDescending(it => it.tkrs).ToList(); + var sortedData = data.OrderByDescending(it => it.expansionUserCount).ToList(); for (int i = 0; i < sortedData.Count; i++) { sortedData[i].ranking = i + 1; @@ -360,18 +393,18 @@ namespace NCC.Extend.LqTkjlb var result = new List(); // 获取所有战队 - var teams = await _db.Queryable().GroupBy(it => it.Sszd).Select(it => it.Sszd).ToListAsync(); + var teams = await _db.Queryable().GroupBy(it => it.TeamName).Select(it => it.TeamName).ToListAsync(); foreach (var team in teams) { // 获取该战队所有人员的拓客数据 var teamMembers = await _db.Queryable() - .Where(it => it.Sszd == team) - .GroupBy(it => it.Tkry) + .Where(it => it.TeamName == team) + .GroupBy(it => it.ExpansionUserId) .Select(it => new { // tkry = it.Tkry, - tkry = SqlFunc.Subqueryable().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), + tkry = SqlFunc.Subqueryable().Where(u => u.Id == it.ExpansionUserId).Select(u => u.RealName), tkrs = SqlFunc.AggregateCount(it.Id), }) .ToListAsync(); diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs index 5ba0a97..a8823b4 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs @@ -105,7 +105,7 @@ namespace NCC.Extend.LqXhHyhk var output = entity.Adapt(); // 2. 查询品项明细列表 - var lqXhPxmxList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync(); + var lqXhPxmxList = await _db.Queryable().Where(w => w.ConsumeInfoId == entity.Id).ToListAsync(); // 3. 查询健康师业绩列表 var lqXhJksyjList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync(); @@ -120,11 +120,11 @@ namespace NCC.Extend.LqXhHyhk var pxmxOutput = new LqXhPxmxInfoOutput { id = pxmx.Id, - glkdbh = pxmx.Glkdbh, + consumeInfoId = pxmx.ConsumeInfoId, + billingItemId = pxmx.BillingItemId, px = pxmx.Px, pxmc = pxmx.Pxmc, pxjg = pxmx.Pxjg, - xfzs = pxmx.Xfzs, memberId = pxmx.MemberId, createTime = pxmx.CreateTIme, projectNumber = pxmx.ProjectNumber, @@ -281,7 +281,8 @@ namespace NCC.Extend.LqXhHyhk var lqXhPxmxEntity = new LqXhPxmxEntity { Id = YitIdHelper.NextId().ToString(), - Glkdbh = newEntity.Id, + ConsumeInfoId = newEntity.Id, + BillingItemId = item.billingItemId, CreateTIme = DateTime.Now, MemberId = entity.Hy, IsEnabled = 0, @@ -290,7 +291,6 @@ namespace NCC.Extend.LqXhHyhk Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, - Xfzs = item.xfzs, SourceType = item.sourceType, }; allPxmxEntities.Add(lqXhPxmxEntity); @@ -494,7 +494,7 @@ namespace NCC.Extend.LqXhHyhk await _db.Deleteable().In(u => u.Glkdbh, ids).ExecuteCommandAsync(); //清空子表数据 - await _db.Deleteable().In(u => u.Glkdbh, ids).ExecuteCommandAsync(); + await _db.Deleteable().In(u => u.ConsumeInfoId, ids).ExecuteCommandAsync(); //关闭事务 _db.CommitTran(); } @@ -532,7 +532,7 @@ namespace NCC.Extend.LqXhHyhk await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); //清空原有数据 - await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); + await _db.Deleteable().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync(); // 收集所有需要插入的实体,然后批量插入 var allPxmxEntities = new List(); @@ -548,7 +548,8 @@ namespace NCC.Extend.LqXhHyhk var lqXhPxmxEntity = new LqXhPxmxEntity { Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, + ConsumeInfoId = entity.Id, + BillingItemId = item.billingItemId, CreateTIme = DateTime.Now, MemberId = entity.Hy, IsEnabled = 0, @@ -557,7 +558,6 @@ namespace NCC.Extend.LqXhHyhk Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, - Xfzs = item.xfzs, SourceType = item.sourceType, }; allPxmxEntities.Add(lqXhPxmxEntity); @@ -664,7 +664,7 @@ namespace NCC.Extend.LqXhHyhk await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); //清空子表数据 - await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); + await _db.Deleteable().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync(); //关闭事务 _db.CommitTran(); diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs index 5aaa4e8..02af8f3 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs @@ -1,34 +1,34 @@ -using NCC.Common.Core.Manager; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using NCC.ClayObject; +using NCC.Common.Configuration; +using NCC.Common.Core.Manager; using NCC.Common.Enum; using NCC.Common.Extension; using NCC.Common.Filter; +using NCC.Common.Helper; +using NCC.Common.Model.NPOI; +using NCC.DataEncryption; using NCC.Dependency; using NCC.DynamicApiController; -using NCC.FriendlyException; +using NCC.Extend.Entitys.Dto.LqXhmxb; +using NCC.Extend.Entitys.lq_xhmxb; using NCC.Extend.Interfaces.LqXhmxb; -using Mapster; -using Microsoft.AspNetCore.Mvc; +using NCC.FriendlyException; +using NCC.JsonSerialization; using SqlSugar; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using NCC.Extend.Entitys.lq_xhmxb; -using NCC.Extend.Entitys.Dto.LqXhmxb; using Yitter.IdGenerator; -using NCC.Common.Helper; -using NCC.JsonSerialization; -using NCC.Common.Model.NPOI; -using NCC.Common.Configuration; -using NCC.DataEncryption; -using NCC.ClayObject; namespace NCC.Extend.LqXhmxb { /// /// 消耗明细表服务 /// - [ApiDescriptionSettings(Tag = "Extend",Name = "LqXhmxb", Order = 200)] + [ApiDescriptionSettings(Tag = "Extend", Name = "LqXhmxb", Order = 200)] [Route("api/Extend/[controller]")] public class LqXhmxbService : ILqXhmxbService, IDynamicApiController, ITransient { @@ -39,11 +39,9 @@ namespace NCC.Extend.LqXhmxb /// /// 初始化一个类型的新实例 /// - public LqXhmxbService( - ISqlSugarRepository lqXhmxbRepository, - IUserManager userManager) + public LqXhmxbService(ISqlSugarRepository lqXhmxbRepository, IUserManager userManager) { - _lqXhmxbRepository = lqXhmxbRepository; + _lqXhmxbRepository = lqXhmxbRepository; _db = _lqXhmxbRepository.Context; _userManager = userManager; } @@ -62,10 +60,10 @@ namespace NCC.Extend.LqXhmxb } /// - /// 获取消耗明细表列表 - /// - /// 请求参数 - /// + /// 获取消耗明细表列表 + /// + /// 请求参数 + /// [HttpGet("")] public async Task GetList([FromQuery] LqXhmxbListQueryInput input) { @@ -85,24 +83,27 @@ namespace NCC.Extend.LqXhmxb .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) - .Select(it=> new LqXhmxbListOutput + .Select(it => new LqXhmxbListOutput { id = it.Id, - mdbh=it.Mdbh, - mdmc=it.Mdmc, - bmbh=it.Bmbh, - bmmc=it.Bmmc, - ygbh=it.Ygbh, - ygmc=it.Ygmc, - xms=it.Xms, - xh=it.Xh, - sg=it.Sg, - qtsg1=it.Qtsg1, - qtsg2=it.Qtsg2, - qtsg3=it.Qtsg3, - sghj=it.Sghj, - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize); - return PageResult.SqlSugarPageResult(data); + mdbh = it.Mdbh, + mdmc = it.Mdmc, + bmbh = it.Bmbh, + bmmc = it.Bmmc, + ygbh = it.Ygbh, + ygmc = it.Ygmc, + xms = it.Xms, + xh = it.Xh, + sg = it.Sg, + qtsg1 = it.Qtsg1, + qtsg2 = it.Qtsg2, + qtsg3 = it.Qtsg3, + sghj = it.Sghj, + }) + .MergeTable() + .OrderBy(sidx + " " + input.sort) + .ToPagedListAsync(input.currentPage, input.pageSize); + return PageResult.SqlSugarPageResult(data); } /// @@ -117,14 +118,15 @@ namespace NCC.Extend.LqXhmxb var entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); + if (!(isOk > 0)) + throw NCCException.Oh(ErrorCode.COM1000); } /// - /// 获取消耗明细表无分页列表 - /// - /// 请求参数 - /// + /// 获取消耗明细表无分页列表 + /// + /// 请求参数 + /// [NonAction] public async Task GetNoPagingList([FromQuery] LqXhmxbListQueryInput input) { @@ -144,31 +146,34 @@ namespace NCC.Extend.LqXhmxb .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) - .Select(it=> new LqXhmxbListOutput + .Select(it => new LqXhmxbListOutput { id = it.Id, - mdbh=it.Mdbh, - mdmc=it.Mdmc, - bmbh=it.Bmbh, - bmmc=it.Bmmc, - ygbh=it.Ygbh, - ygmc=it.Ygmc, - xms=it.Xms, - xh=it.Xh, - sg=it.Sg, - qtsg1=it.Qtsg1, - qtsg2=it.Qtsg2, - qtsg3=it.Qtsg3, - sghj=it.Sghj, - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync(); - return data; + mdbh = it.Mdbh, + mdmc = it.Mdmc, + bmbh = it.Bmbh, + bmmc = it.Bmmc, + ygbh = it.Ygbh, + ygmc = it.Ygmc, + xms = it.Xms, + xh = it.Xh, + sg = it.Sg, + qtsg1 = it.Qtsg1, + qtsg2 = it.Qtsg2, + qtsg3 = it.Qtsg3, + sghj = it.Sghj, + }) + .MergeTable() + .OrderBy(sidx + " " + input.sort) + .ToListAsync(); + return data; } /// - /// 导出消耗明细表 - /// - /// 请求参数 - /// + /// 导出消耗明细表 + /// + /// 请求参数 + /// [HttpGet("Actions/Export")] public async Task Export([FromQuery] LqXhmxbListQueryInput input) { @@ -183,7 +188,8 @@ namespace NCC.Extend.LqXhmxb { exportData = await this.GetNoPagingList(input); } - List paramList = "[{\"value\":\"消耗编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList(); + List paramList = + "[{\"value\":\"消耗编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList(); ExcelConfig excelconfig = new ExcelConfig(); excelconfig.FileName = "消耗明细表.xls"; excelconfig.HeadFont = "微软雅黑"; @@ -202,11 +208,7 @@ namespace NCC.Extend.LqXhmxb var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; ExcelExportHelper.Export(exportData, excelconfig, addPath); var fileName = _userManager.UserId + "|" + addPath + "|xls"; - var output = new - { - name = excelconfig.FileName, - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") - }; + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") }; return output; } @@ -226,7 +228,7 @@ namespace NCC.Extend.LqXhmxb //开启事务 _db.BeginTran(); //批量删除消耗明细表 - await _db.Deleteable().In(d => d.Id,ids).ExecuteCommandAsync(); + await _db.Deleteable().In(d => d.Id, ids).ExecuteCommandAsync(); //关闭事务 _db.CommitTran(); } @@ -250,7 +252,8 @@ namespace NCC.Extend.LqXhmxb { var entity = input.Adapt(); var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); + if (!(isOk > 0)) + throw NCCException.Oh(ErrorCode.COM1001); } /// @@ -263,7 +266,8 @@ namespace NCC.Extend.LqXhmxb var entity = await _db.Queryable().FirstAsync(p => p.Id == id); _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); var isOk = await _db.Deleteable().Where(d => d.Id == id).ExecuteCommandAsync(); - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); + if (!(isOk > 0)) + throw NCCException.Oh(ErrorCode.COM1002); } } } -- libgit2 0.21.4