From 3e508db59ec9caa82ea926b1d9bb061953b7d184 Mon Sep 17 00:00:00 2001 From: “wangming” <“wangming@antissoft.com”> Date: Mon, 13 Oct 2025 18:44:41 +0800 Subject: [PATCH] 优化开单记录作废功能:添加详细错误处理和备注字段支持 --- antis-ncc-admin/.env.development | 2 +- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs | 35 ++++++++++++++++++++--------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs | 1 + netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs | 21 +++++++++++++-------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs | 23 +++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentQueryInput.cs | 36 ++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentRecordOutput.cs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs | 5 +++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs | 12 ++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs | 10 ++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs | 55 ++++++++++++++++++++++++++++++------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs | 2 +- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/PayDebtInput.cs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs | 19 ++++++++++++------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs | 7 +++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs | 45 +++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs | 35 +++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs | 6 +++--- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs | 31 ++++++++++++++++++------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs | 39 --------------------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs | 35 ----------------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs | 36 ------------------------------------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs | 48 ------------------------------------------------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs | 17 ----------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md | 2 +- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs | 87 +++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs | 7 +++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs | 7 +++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs | 12 ++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs | 36 ++++++++++++------------------------ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs | 6 ++++++ netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs | 45 --------------------------------------------- netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs | 14 -------------- netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs | 6 ------ netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs | 18 ++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs | 50 +++++++++++++++++++++++++++++--------------------- netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs | 642 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs | 10 +++++----- netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs | 417 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs | 6 +++--- netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs | 237 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 55 files changed, 2144 insertions(+), 824 deletions(-) create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentQueryInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentRecordOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/PayDebtInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs create mode 100644 netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs delete mode 100644 netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs diff --git a/antis-ncc-admin/.env.development b/antis-ncc-admin/.env.development index d2ff3fb..69e7a0d 100644 --- a/antis-ncc-admin/.env.development +++ b/antis-ncc-admin/.env.development @@ -3,5 +3,5 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_APP_BASE_API = 'http://lvqian.antissoft.com' # VUE_APP_BASE_API = 'http://erp_test.lvqianmeiye.com' -# VUE_APP_BASE_API = 'http://localhost:2011' +VUE_APP_BASE_API = 'http://localhost:2011' VUE_APP_BASE_WSS = 'ws://192.168.110.45:2011/websocket' diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs index 6ad2f6b..1b31ffc 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs @@ -11,72 +11,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk /// 退卡编号 /// 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 hymc { get; set; } - + /// /// 会员账号 /// public string hyzh { get; set; } - + /// /// 顾客类型 /// public string gklx { get; set; } - + /// /// 退卡总金额 /// public decimal? tkje { get; set; } - + /// /// 手工费用 /// public decimal? sgfy { get; set; } - + /// /// 备注 /// public string bz { get; set; } - + /// /// 退卡时间 /// public DateTime? tksj { get; set; } - + /// /// 操作人员 /// public string czry { get; set; } - + /// /// 退卡状态 /// public string tkzt { get; set; } - + /// /// 退卡原因 /// @@ -86,6 +86,11 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk /// 退卡附件 /// public string fileUrl { get; set; } - + + /// + /// 是否有效 + /// + public int isEffective { 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 index 2863795..3d9d336 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs @@ -61,5 +61,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo /// 创建时间 /// public DateTime? CreateTime { get; set; } + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs index 4b39d4e..01a8c93 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs @@ -12,45 +12,50 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 业绩编号 /// public string id { get; set; } - + /// /// 关联开单编号 /// public string glkdbh { get; set; } - + /// /// 关联开单品项ID /// public string kdpxid { get; set; } - + /// /// 健康师ID /// public string jks { get; set; } - + /// /// 健康师姓名 /// public string jksxm { get; set; } - + /// /// 健康师账号 /// public string jkszh { get; set; } - + /// /// 健康师业绩 /// public string jksyj { get; set; } - + /// /// 业绩时间 /// public DateTime? yjsj { get; set; } - + /// /// 金三角ID /// public string jsj_id { get; set; } + + /// + /// 是否有效 + /// + public int IsEffective { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs new file mode 100644 index 0000000..e3d1805 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs @@ -0,0 +1,23 @@ +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb +{ + /// + /// 作废开单记录输入 + /// + public class CancelBillingInput + { + /// + /// 开单记录ID + /// + [Required(ErrorMessage = "开单记录ID不能为空")] + [Display(Name = "开单记录ID", Description = "需要作废的开单记录ID")] + public string Id { get; set; } + + /// + /// 作废备注 + /// + [Display(Name = "作废备注", Description = "作废开单记录的原因说明")] + public string Remarks { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentQueryInput.cs new file mode 100644 index 0000000..6e7096a --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentQueryInput.cs @@ -0,0 +1,36 @@ +using System; +using System.ComponentModel.DataAnnotations; +using NCC.Common.Filter; + +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb +{ + /// + /// 补缴欠款记录查询输入 + /// + public class DebtPaymentQueryInput : PageInputBase + { + /// + /// 开单记录ID + /// + [Display(Name = "开单记录ID", Description = "开单记录ID")] + public string BillingId { get; set; } + + /// + /// 付款日期开始 + /// + [Display(Name = "付款日期开始", Description = "付款日期范围开始")] + public DateTime? PaymentDateStart { get; set; } + + /// + /// 付款日期结束 + /// + [Display(Name = "付款日期结束", Description = "付款日期范围结束")] + public DateTime? PaymentDateEnd { get; set; } + + /// + /// 收款人员 + /// + [Display(Name = "收款人员", Description = "收款人员")] + public string PaymentUser { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentRecordOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentRecordOutput.cs new file mode 100644 index 0000000..269f281 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtPaymentRecordOutput.cs @@ -0,0 +1,59 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb +{ + /// + /// 补缴欠款记录输出 + /// + public class DebtPaymentRecordOutput + { + /// + /// 补缴记录ID + /// + [Display(Name = "补缴记录ID", Description = "补缴欠款记录的唯一标识")] + public string Id { get; set; } + + /// + /// 开单记录ID + /// + [Display(Name = "开单记录ID", Description = "关联的开单记录ID")] + public string BillingId { get; set; } + + /// + /// 补缴金额 + /// + [Display(Name = "补缴金额", Description = "客户补缴的欠款金额")] + public decimal PaymentAmount { get; set; } + + /// + /// 付款方式 + /// + [Display(Name = "付款方式", Description = "客户付款的方式")] + public string PaymentMethod { get; set; } + + /// + /// 付款日期 + /// + [Display(Name = "付款日期", Description = "客户实际付款的日期")] + public DateTime PaymentDate { get; set; } + + /// + /// 收款人员 + /// + [Display(Name = "收款人员", Description = "负责收款的工作人员")] + public string PaymentUser { get; set; } + + /// + /// 备注 + /// + [Display(Name = "备注", Description = "补缴欠款的备注信息")] + public string Remarks { get; set; } + + /// + /// 创建时间 + /// + [Display(Name = "创建时间", Description = "补缴记录的创建时间")] + public DateTime CreateTime { 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 5f846b8..b0c537c 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 @@ -146,6 +146,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string F_FIleUrl { get; set; } /// + /// 营销活动ID + /// + public string activityId { get; set; } + + /// /// 作废关联id /// public string cancelRefId { get; set; } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs index 7887b9b..eb0f078 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.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 { @@ -151,6 +152,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string F_FIleUrl { get; set; } /// + /// 是否有效 + /// + public int IsEffective { get; set; } + + /// /// 健康师业绩 /// public List lqKdJksyjList { get; set; } @@ -165,5 +171,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// public List lqKdPxmxList { get; set; } + + /// + /// 扣款信息列表 + /// + public List lqKdDeductList { get; set; } + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs index 34d7881..7b41111 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs @@ -141,5 +141,15 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 是否有效 /// public int IsEffective { get; set; } + + /// + /// 开单用户 + /// + public string CreateUser { get; set; } + + /// + /// 开单用户名称 + /// + public string CreateUserName { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs index 3ed6afb..6befc70 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs @@ -23,126 +23,131 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 开单编号 /// public string id { get; set; } - + /// /// 单据门店 /// public string djmd { get; set; } - + /// /// 金三角 /// public string jsj { get; set; } - + /// /// 开单日期 /// public string kdrq { get; set; } - + /// /// 顾客类型 /// public string gjlx { get; set; } - + /// /// 合作机构 /// public string hgjg { get; set; } - + /// /// 整单业绩 /// public string zdyj { get; set; } - + /// /// 实付业绩 /// public string sfyj { get; set; } - + /// /// 欠款 /// public string qk { get; set; } - + /// /// 储扣方式 /// public string ckfs { get; set; } - + /// /// 付款方式 /// public string fkfs { get; set; } - + /// /// 付款医院 /// public string fkyy { get; set; } - + /// /// 付款判断 /// public string fkpd { get; set; } - + /// /// 客户来源 /// public string khly { get; set; } - + /// /// 推荐人 /// public string tjr { get; set; } - + /// /// 是否首开订单 /// public string sfskdd { get; set; } - + /// /// 简介 /// public string jj { get; set; } - + /// /// 备注 /// public string bz { get; set; } - + /// /// 开单会员 /// public string kdhy { get; set; } - + /// /// 开单会员名称 /// public string kdhyc { get; set; } - + /// /// 开单会员手机号 /// public string kdhysjh { get; set; } - + /// /// 健康师业绩 /// public string jksyj { get; set; } - + /// /// 科技部老师业绩 /// public string kjblsyj { get; set; } - + /// /// 品项信息 /// public string pxxx { get; set; } - + /// /// 方案其他 /// public string F_FIleUrl { get; set; } - + + /// + /// 开单用户 + /// + public string CreateUser { get; set; } + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs index 92d931c..e5a8a63 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs @@ -12,6 +12,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 开单编号 /// public string id { get; set; } - + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/PayDebtInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/PayDebtInput.cs new file mode 100644 index 0000000..9ed5b6d --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/PayDebtInput.cs @@ -0,0 +1,50 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb +{ + /// + /// 补缴欠款输入 + /// + public class PayDebtInput + { + /// + /// 开单记录ID + /// + [Required(ErrorMessage = "开单记录ID不能为空")] + [Display(Name = "开单记录ID", Description = "需要补缴欠款的开单记录ID")] + public string BillingId { get; set; } + + /// + /// 补缴金额 + /// + [Required(ErrorMessage = "补缴金额不能为空")] + [Range(0.01, double.MaxValue, ErrorMessage = "补缴金额必须大于0")] + [Display(Name = "补缴金额", Description = "客户补缴的欠款金额")] + public decimal PaymentAmount { get; set; } + + /// + /// 付款方式 + /// + [Display(Name = "付款方式", Description = "客户付款的方式(现金、刷卡、转账等)")] + public string PaymentMethod { get; set; } + + /// + /// 付款日期 + /// + [Display(Name = "付款日期", Description = "客户实际付款的日期")] + public DateTime? PaymentDate { get; set; } + + /// + /// 收款人员 + /// + [Display(Name = "收款人员", Description = "负责收款的工作人员")] + public string PaymentUser { get; set; } + + /// + /// 备注 + /// + [Display(Name = "备注", Description = "补缴欠款的备注信息")] + public string Remarks { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs index 40ea6c7..62fb5d1 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs @@ -12,40 +12,45 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 业绩编号 /// public string id { get; set; } - + /// /// 关联开单编号 /// public string glkdbh { get; set; } - + /// /// 关联开单品项ID /// public string kdpxid { get; set; } - + /// /// 科技部老师ID /// public string kjbls { get; set; } - + /// /// 科技部老师姓名 /// public string kjblsxm { get; set; } - + /// /// 科技部老师账号 /// public string kjblszh { get; set; } - + /// /// 科技部老师业绩 /// public string kjblsyj { get; set; } - + /// /// 业绩时间 /// public DateTime? yjsj { get; set; } + + /// + /// 是否有效 + /// + public int IsEffective { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs index ef17a42..63f11d7 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using NCC.Extend.Entitys.Dto.LqKdDeductinfo; namespace NCC.Extend.Entitys.Dto.LqKdKdjlb { @@ -75,6 +76,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string remark { get; set; } /// + /// 是否有效 + /// + public int IsEffective { get; set; } + + /// /// 健康师业绩列表 /// public List lqKdJksyjList { get; set; } @@ -83,5 +89,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb /// 科技部老师业绩列表 /// public List lqKdKjbsyjList { get; set; } + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs new file mode 100644 index 0000000..aae3a57 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageInfo +{ + /// + /// 营销活动创建输入 + /// + public class LqPackageInfoCrInput + { + /// + /// 活动名称 + /// + [Required(ErrorMessage = "活动名称不能为空")] + [Display(Name = "活动名称", Description = "营销活动的名称")] + public string ActivityName { get; set; } + + /// + /// 活动描述 + /// + [Display(Name = "活动描述", Description = "营销活动的详细描述")] + public string ActivityDesc { get; set; } + + /// + /// 活动开始时间 + /// + [Required(ErrorMessage = "活动开始时间不能为空")] + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")] + public DateTime StartTime { get; set; } + + /// + /// 活动结束时间 + /// + [Required(ErrorMessage = "活动结束时间不能为空")] + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")] + public DateTime EndTime { get; set; } + + /// + /// 至少购买品项数量 + /// + [Required(ErrorMessage = "至少购买品项数量不能为空")] + [Range(1, int.MaxValue, ErrorMessage = "至少购买品项数量必须大于0")] + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")] + public int MinItemQuantity { get; set; } = 1; + + /// + /// 活动规则说明 + /// + [Display(Name = "活动规则说明", Description = "营销活动的规则和说明")] + public string ActivityRules { get; set; } + + /// + /// 活动图片(JSON格式) + /// + [Display(Name = "活动图片", Description = "营销活动的图片,JSON格式存储")] + public string ActivityImages { get; set; } + + /// + /// 排序 + /// + [Display(Name = "排序", Description = "营销活动的显示排序")] + public int SortOrder { get; set; } = 0; + + /// + /// 营销活动品项明细列表 + /// + [Display(Name = "活动品项明细", Description = "营销活动包含的品项明细列表")] + public List ActivityItems { get; set; } = new List(); + } + + /// + /// 营销活动品项明细输入 + /// + public class MarketingActivityItemDetailInput + { + /// + /// 品项ID + /// + [Required(ErrorMessage = "品项ID不能为空")] + [Display(Name = "品项ID", Description = "品项的唯一标识")] + public string ItemId { get; set; } + + /// + /// 品项名称 + /// + [Display(Name = "品项名称", Description = "品项的名称")] + public string ItemName { get; set; } + + /// + /// 品项分类 + /// + [Display(Name = "品项分类", Description = "品项的分类")] + public string ItemCategory { get; set; } + + /// + /// 品项备注 + /// + [Display(Name = "品项备注", Description = "品项的备注信息")] + public string ItemRemark { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs new file mode 100644 index 0000000..7943edd --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs @@ -0,0 +1,76 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageInfo +{ + /// + /// 套餐信息详情输出 + /// + public class LqPackageInfoInfoOutput + { + /// + /// 套餐ID + /// + public string Id { get; set; } + + /// + /// 套餐编码 + /// + public string PackageCode { get; set; } + + /// + /// 套餐名称 + /// + public string PackageName { get; set; } + + /// + /// 套餐描述 + /// + public string PackageDesc { get; set; } + + /// + /// 套餐价格 + /// + public decimal PackagePrice { get; set; } + + /// + /// 优惠价格 + /// + public decimal? DiscountPrice { get; set; } + + /// + /// 使用状态 + /// + public string Status { get; set; } + + /// + /// 上架状态 + /// + public string ShelfStatus { get; set; } + + /// + /// 套餐类型 + /// + public string PackageType { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { get; set; } + + /// + /// 创建人 + /// + public string CreateUser { get; set; } + + /// + /// 更新人 + /// + public string UpdateUser { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs new file mode 100644 index 0000000..dbd905b --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs @@ -0,0 +1,65 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageInfo +{ + /// + /// 营销活动列表输出 + /// + public class LqPackageInfoListOutput + { + /// + /// 营销活动ID + /// + [Display(Name = "营销活动ID", Description = "营销活动的唯一标识")] + public string Id { get; set; } + + /// + /// 活动名称 + /// + [Display(Name = "活动名称", Description = "营销活动的名称")] + public string ActivityName { get; set; } + + /// + /// 活动描述 + /// + [Display(Name = "活动描述", Description = "营销活动的描述")] + public string ActivityDesc { get; set; } + + /// + /// 活动开始时间 + /// + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")] + public DateTime StartTime { get; set; } + + /// + /// 活动结束时间 + /// + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")] + public DateTime EndTime { get; set; } + + /// + /// 至少购买品项数量 + /// + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")] + public int MinItemQuantity { get; set; } + + /// + /// 活动规则说明 + /// + [Display(Name = "活动规则说明", Description = "营销活动的规则说明")] + public string ActivityRules { get; set; } + + /// + /// 排序 + /// + [Display(Name = "排序", Description = "营销活动的显示排序")] + public int SortOrder { get; set; } + + /// + /// 创建时间 + /// + [Display(Name = "创建时间", Description = "营销活动的创建时间")] + public DateTime CreateTime { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs new file mode 100644 index 0000000..c9d74e5 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs @@ -0,0 +1,66 @@ +using System; +using System.ComponentModel.DataAnnotations; +using NCC.Common.Filter; + +namespace NCC.Extend.Entitys.Dto.LqPackageInfo +{ + /// + /// 营销活动列表查询输入 + /// + public class LqPackageInfoListQueryInput : PageInputBase + { + /// + /// 活动名称 + /// + [Display(Name = "活动名称", Description = "营销活动名称")] + public string ActivityName { get; set; } + + /// + /// 活动描述 + /// + [Display(Name = "活动描述", Description = "营销活动描述")] + public string ActivityDesc { get; set; } + + /// + /// 活动开始时间开始 + /// + [Display(Name = "活动开始时间开始", Description = "活动开始时间范围开始")] + public DateTime? StartTimeStart { get; set; } + + /// + /// 活动开始时间结束 + /// + [Display(Name = "活动开始时间结束", Description = "活动开始时间范围结束")] + public DateTime? StartTimeEnd { get; set; } + + /// + /// 活动结束时间开始 + /// + [Display(Name = "活动结束时间开始", Description = "活动结束时间范围开始")] + public DateTime? EndTimeStart { get; set; } + + /// + /// 活动结束时间结束 + /// + [Display(Name = "活动结束时间结束", Description = "活动结束时间范围结束")] + public DateTime? EndTimeEnd { get; set; } + + /// + /// 至少购买品项数量 + /// + [Display(Name = "至少购买品项数量", Description = "至少购买品项数量")] + public int? MinItemQuantity { get; set; } + + /// + /// 创建时间开始 + /// + [Display(Name = "创建时间开始", Description = "创建时间范围开始")] + public DateTime? CreateTimeStart { get; set; } + + /// + /// 创建时间结束 + /// + [Display(Name = "创建时间结束", Description = "创建时间范围结束")] + public DateTime? CreateTimeEnd { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs new file mode 100644 index 0000000..ee0c0cd --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageInfo +{ + /// + /// 营销活动更新输入 + /// + public class LqPackageInfoUpInput + { + /// + /// 营销活动ID + /// + [Required(ErrorMessage = "营销活动ID不能为空")] + [Display(Name = "营销活动ID", Description = "营销活动的唯一标识")] + public string Id { get; set; } + + /// + /// 活动名称 + /// + [Required(ErrorMessage = "活动名称不能为空")] + [Display(Name = "活动名称", Description = "营销活动的名称")] + public string ActivityName { get; set; } + + /// + /// 活动描述 + /// + [Display(Name = "活动描述", Description = "营销活动的详细描述")] + public string ActivityDesc { get; set; } + + /// + /// 活动开始时间 + /// + [Required(ErrorMessage = "活动开始时间不能为空")] + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")] + public DateTime StartTime { get; set; } + + /// + /// 活动结束时间 + /// + [Required(ErrorMessage = "活动结束时间不能为空")] + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")] + public DateTime EndTime { get; set; } + + /// + /// 至少购买品项数量 + /// + [Required(ErrorMessage = "至少购买品项数量不能为空")] + [Range(1, int.MaxValue, ErrorMessage = "至少购买品项数量必须大于0")] + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")] + public int MinItemQuantity { get; set; } = 1; + + /// + /// 活动规则说明 + /// + [Display(Name = "活动规则说明", Description = "营销活动的规则和说明")] + public string ActivityRules { get; set; } + + /// + /// 活动图片(JSON格式) + /// + [Display(Name = "活动图片", Description = "营销活动的图片,JSON格式存储")] + public string ActivityImages { get; set; } + + /// + /// 排序 + /// + [Display(Name = "排序", Description = "营销活动的显示排序")] + public int SortOrder { get; set; } = 0; + + /// + /// 营销活动品项明细列表 + /// + [Display(Name = "活动品项明细", Description = "营销活动包含的品项明细列表")] + public List ActivityItems { get; set; } = new List(); + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs new file mode 100644 index 0000000..1273f2d --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs @@ -0,0 +1,47 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail +{ + /// + /// 套餐品项明细创建输入 + /// + public class LqPackageItemDetailCrInput + { + /// + /// 套餐ID + /// + [Required(ErrorMessage = "套餐ID不能为空")] + public string PackageId { get; set; } + + /// + /// 品项ID + /// + [Required(ErrorMessage = "品项ID不能为空")] + public string ItemId { get; set; } + + /// + /// 品项数量 + /// + [Required(ErrorMessage = "品项数量不能为空")] + [Range(1, int.MaxValue, ErrorMessage = "品项数量必须大于0")] + public int ItemQuantity { get; set; } + + /// + /// 品项金额 + /// + [Required(ErrorMessage = "品项金额不能为空")] + [Range(0, double.MaxValue, ErrorMessage = "品项金额必须大于等于0")] + public decimal ItemAmount { get; set; } + + /// + /// 品项备注 + /// + public string ItemRemark { get; set; } + + /// + /// 排序 + /// + public int SortOrder { get; set; } = 0; + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs new file mode 100644 index 0000000..1cc2b2f --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs @@ -0,0 +1,60 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail +{ + /// + /// 套餐品项明细详情输出 + /// + public class LqPackageItemDetailInfoOutput + { + /// + /// 明细ID + /// + public string Id { get; set; } + + /// + /// 套餐ID + /// + public string PackageId { get; set; } + + /// + /// 品项ID + /// + public string ItemId { get; set; } + + /// + /// 品项数量 + /// + public int ItemQuantity { get; set; } + + /// + /// 品项金额 + /// + public decimal ItemAmount { get; set; } + + /// + /// 品项备注 + /// + public string ItemRemark { get; set; } + + /// + /// 排序 + /// + public int SortOrder { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { get; set; } + + /// + /// 是否有效 + /// + public int IsEffective { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs new file mode 100644 index 0000000..a23050f --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs @@ -0,0 +1,45 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail +{ + /// + /// 套餐品项明细列表输出 + /// + public class LqPackageItemDetailListOutput + { + /// + /// 明细ID + /// + public string Id { get; set; } + + /// + /// 套餐ID + /// + public string PackageId { get; set; } + + /// + /// 品项ID + /// + public string ItemId { get; set; } + + /// + /// 品项数量 + /// + public int ItemQuantity { get; set; } + + /// + /// 品项金额 + /// + public decimal ItemAmount { get; set; } + + /// + /// 排序 + /// + public int SortOrder { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs new file mode 100644 index 0000000..67f0d80 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs @@ -0,0 +1,35 @@ +using System; + +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail +{ + /// + /// 套餐品项明细列表查询输入 + /// + public class LqPackageItemDetailListQueryInput + { + /// + /// 套餐ID + /// + public string PackageId { get; set; } + + /// + /// 品项ID + /// + public string ItemId { get; set; } + + /// + /// 是否有效 + /// + public int? IsEffective { get; set; } + + /// + /// 创建时间开始 + /// + public DateTime? CreateTimeStart { get; set; } + + /// + /// 创建时间结束 + /// + public DateTime? CreateTimeEnd { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs new file mode 100644 index 0000000..e30f57b --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs @@ -0,0 +1,53 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail +{ + /// + /// 套餐品项明细更新输入 + /// + public class LqPackageItemDetailUpInput + { + /// + /// 明细ID + /// + [Required(ErrorMessage = "明细ID不能为空")] + public string Id { get; set; } + + /// + /// 套餐ID + /// + [Required(ErrorMessage = "套餐ID不能为空")] + public string PackageId { get; set; } + + /// + /// 品项ID + /// + [Required(ErrorMessage = "品项ID不能为空")] + public string ItemId { get; set; } + + /// + /// 品项数量 + /// + [Required(ErrorMessage = "品项数量不能为空")] + [Range(1, int.MaxValue, ErrorMessage = "品项数量必须大于0")] + public int ItemQuantity { get; set; } + + /// + /// 品项金额 + /// + [Required(ErrorMessage = "品项金额不能为空")] + [Range(0, double.MaxValue, ErrorMessage = "品项金额必须大于等于0")] + public decimal ItemAmount { get; set; } + + /// + /// 品项备注 + /// + public string ItemRemark { get; set; } + + /// + /// 排序 + /// + public int SortOrder { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs index f0fc3ae..4eab48d 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs @@ -23,16 +23,16 @@ namespace NCC.Extend.Entitys.Dto.LqSkzh /// 收款途径编号 /// public string id { get; set; } - + /// /// 收款途径 /// public string sktj { get; set; } - + /// /// 收款账号 /// public string skzh { get; set; } - + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs index e06d5b2..9eef5f4 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs @@ -11,66 +11,71 @@ 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 memberPhone { 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; } - + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs deleted file mode 100644 index 344aa92..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace NCC.Extend.Entitys.Dto.LqYxhdfa -{ - /// - /// 营销活动方案创建输入参数 - /// - public class LqYxhdfaCrInput - { - /// - /// 方案编号 - /// - public string id { get; set; } - - /// - /// 营销活动编号 - /// - [Required(ErrorMessage = "营销活动编号不能为空")] - public string yxhdbh { get; set; } - - /// - /// 活动名称 - /// - [Required(ErrorMessage = "活动名称不能为空")] - [StringLength(200, ErrorMessage = "活动名称长度不能超过200个字符")] - public string hdmc { get; set; } - - /// - /// 张数奖 - /// - public string zsj { get; set; } - - /// - /// 金额奖 - /// - public string jej { get; set; } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs deleted file mode 100644 index 200c105..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; - -namespace NCC.Extend.Entitys.Dto.LqYxhdfa -{ - /// - /// 营销活动方案输出参数 - /// - public class LqYxhdfaInfoOutput - { - /// - /// 方案编号 - /// - public string id { get; set; } - - /// - /// 营销活动编号 - /// - public string yxhdbh { get; set; } - - /// - /// 活动名称 - /// - public string hdmc { get; set; } - - /// - /// 张数奖 - /// - public string zsj { get; set; } - - /// - /// 金额奖 - /// - public string jej { get; set; } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs deleted file mode 100644 index 7f3714d..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; - -namespace NCC.Extend.Entitys.Dto.LqYxhdfa -{ - /// - /// 营销活动方案输入参数 - /// - public class LqYxhdfaListOutput - { - /// - /// 方案编号 - /// - public string id { get; set; } - - /// - /// 营销活动编号 - /// - public string yxhdbh { get; set; } - - /// - /// 活动名称 - /// - public string hdmc { get; set; } - - /// - /// 张数奖 - /// - public string zsj { get; set; } - - /// - /// 金额奖 - /// - public string jej { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs deleted file mode 100644 index b1d7bfc..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs +++ /dev/null @@ -1,48 +0,0 @@ -using NCC.Common.Filter; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Dto.LqYxhdfa -{ - /// - /// 营销活动方案列表查询输入 - /// - public class LqYxhdfaListQueryInput : PageInputBase - { - /// - /// 选择导出数据key - /// - public string selectKey { get; set; } - - /// - /// - /// - public int dataType { get; set; } - - - /// - /// 方案编号 - /// - public string id { get; set; } - - /// - /// 营销活动编号 - /// - public string yxhdbh { get; set; } - - /// - /// 活动名称 - /// - public string hdmc { get; set; } - - /// - /// 张数奖 - /// - public string zsj { get; set; } - - /// - /// 金额奖 - /// - public string jej { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs deleted file mode 100644 index 795206c..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Dto.LqYxhdfa -{ - /// - /// 营销活动方案更新输入参数 - /// - public class LqYxhdfaUpInput : LqYxhdfaCrInput - { - /// - /// 方案编号 - /// - public string id { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md index d2b8cc8..a720be2 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md @@ -65,7 +65,7 @@ - `lq_tkjlb/` - 拓客记录表 - (已删除) `lq_tk_xsc/` - 拓客记录表 - `lq_yaoyjl/` - 邀约记录 -- `lq_yxhdfa/` - 营销活动方案 +- (已删除) `lq_yxhdfa/` - 营销活动方案 - `lq_yyjl/` - 预约记录 - `lq_cpxx/` - 产品资料 - `lq_gz/` - 工资全字段 diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs index bc1b154..fd352f4 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs @@ -1,4 +1,5 @@ using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; using System; @@ -16,127 +17,133 @@ namespace NCC.Extend.Entitys.lq_hytk_hytk /// [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] public string Id { get; set; } - + /// /// 门店 /// - [SugarColumn(ColumnName = "md")] + [SugarColumn(ColumnName = "md")] public string Md { get; set; } - + /// /// 门店编号 /// - [SugarColumn(ColumnName = "mdbh")] + [SugarColumn(ColumnName = "mdbh")] public string Mdbh { get; set; } - + /// /// 门店名称 /// - [SugarColumn(ColumnName = "mdmc")] + [SugarColumn(ColumnName = "mdmc")] public string Mdmc { get; set; } - + /// /// 会员 /// - [SugarColumn(ColumnName = "hy")] + [SugarColumn(ColumnName = "hy")] public string Hy { get; set; } - + /// /// 会员姓名 /// - [SugarColumn(ColumnName = "hymc")] + [SugarColumn(ColumnName = "hymc")] public string Hymc { get; set; } - + /// /// 会员账号 /// - [SugarColumn(ColumnName = "hyzh")] + [SugarColumn(ColumnName = "hyzh")] public string Hyzh { get; set; } - + /// /// 顾客类型 /// - [SugarColumn(ColumnName = "gklx")] + [SugarColumn(ColumnName = "gklx")] public string Gklx { get; set; } - + /// /// 退卡总金额 /// - [SugarColumn(ColumnName = "tkje")] + [SugarColumn(ColumnName = "tkje")] public decimal? Tkje { get; set; } - + /// /// 手工费用 /// - [SugarColumn(ColumnName = "sgfy")] + [SugarColumn(ColumnName = "sgfy")] public decimal? Sgfy { get; set; } - + /// /// 备注 /// - [SugarColumn(ColumnName = "bz")] + [SugarColumn(ColumnName = "bz")] public string Bz { get; set; } - + /// /// 退卡时间 /// - [SugarColumn(ColumnName = "tksj")] + [SugarColumn(ColumnName = "tksj")] public DateTime? Tksj { get; set; } - + /// /// 操作人员 /// - [SugarColumn(ColumnName = "czry")] + [SugarColumn(ColumnName = "czry")] public string Czry { get; set; } - + /// /// 退卡状态 /// - [SugarColumn(ColumnName = "tkzt")] + [SugarColumn(ColumnName = "tkzt")] public string Tkzt { get; set; } - + /// /// 退卡原因 /// - [SugarColumn(ColumnName = "tkyy")] + [SugarColumn(ColumnName = "tkyy")] public string Tkyy { get; set; } /// /// 退卡附件 /// - [SugarColumn(ColumnName = "F_FileUrl")] + [SugarColumn(ColumnName = "F_FileUrl")] public string FileUrl { get; set; } - + /// /// 创建时间 /// - [SugarColumn(ColumnName = "F_CreateTime")] + [SugarColumn(ColumnName = "F_CreateTime")] public DateTime? F_CreateTime { get; set; } - + /// /// 创建用户 /// - [SugarColumn(ColumnName = "F_CreateUser")] + [SugarColumn(ColumnName = "F_CreateUser")] public string F_CreateUser { get; set; } - + /// /// 修改时间 /// - [SugarColumn(ColumnName = "F_ModifyTime")] + [SugarColumn(ColumnName = "F_ModifyTime")] public DateTime? F_ModifyTime { get; set; } - + /// /// 修改用户 /// - [SugarColumn(ColumnName = "F_ModifyUser")] + [SugarColumn(ColumnName = "F_ModifyUser")] public string F_ModifyUser { get; set; } - + /// /// 删除标记 /// - [SugarColumn(ColumnName = "F_DeleteMark")] + [SugarColumn(ColumnName = "F_DeleteMark")] public int? F_DeleteMark { get; set; } - + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode(); + } } \ No newline at end of file diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs index 4fd006b..411e1bf 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs @@ -1,5 +1,6 @@ using System; using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; namespace NCC.Extend.Entitys.lq_hytk_jksyj @@ -112,5 +113,11 @@ namespace NCC.Extend.Entitys.lq_hytk_jksyj /// [SugarColumn(ColumnName = "F_CardReturn")] public string CardReturn { get; set; } + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode(); } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs index fe4d17c..62d7953 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs @@ -1,5 +1,6 @@ using System; using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; namespace NCC.Extend.Entitys.lq_hytk_kjbsyj @@ -106,5 +107,11 @@ namespace NCC.Extend.Entitys.lq_hytk_kjbsyj /// [SugarColumn(ColumnName = "F_CardReturn")] public string CardReturn { get; set; } + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode(); } } 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 12a67c6..94d9a1d 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 @@ -114,5 +114,11 @@ namespace NCC.Extend.Entitys.lq_hytk_mx /// [SugarColumn(ColumnName = "F_DeleteMark")] public int? DeleteMark { get; set; } + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode(); } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs index 441dbaa..28cf514 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs @@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_jksyj /// [SugarColumn(ColumnName = "F_IsEffective")] public int IsEffective { get; set; } = 1; + + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs index a7e1062..ceb6983 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs @@ -217,5 +217,17 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb [SugarColumn(ColumnName = "F_CancelRefRemarks")] public string CancelRefRemarks { get; set; } + + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } + + /// + /// 已缴欠款 + /// + [SugarColumn(ColumnName = "F_PaidDebt")] + public decimal PaidDebt { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs index 97cadbb..14fe19e 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs @@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_kjbsyj /// [SugarColumn(ColumnName = "F_IsEffective")] public int IsEffective { get; set; } = 1; + + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs index bc62ca2..735aba4 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs @@ -101,5 +101,11 @@ namespace NCC.Extend.Entitys.lq_kd_pxmx /// [SugarColumn(ColumnName = "F_Remark")] public string Remark { get; set; } + + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs index 952ddc8..c17bb5a 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs @@ -1,6 +1,6 @@ -using System; using NCC.Common.Const; using SqlSugar; +using System; namespace NCC.Extend.Entitys.lq_kd_qkbj { @@ -12,13 +12,13 @@ namespace NCC.Extend.Entitys.lq_kd_qkbj public class LqKdQkbjEntity { /// - /// 主键 + /// 补缴记录ID /// [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] public string Id { get; set; } /// - /// 开单ID + /// 开单记录ID /// [SugarColumn(ColumnName = "F_BillingId")] public string BillingId { get; set; } @@ -30,40 +30,28 @@ namespace NCC.Extend.Entitys.lq_kd_qkbj public decimal PaymentAmount { get; set; } /// - /// 补缴方式 + /// 付款方式 /// [SugarColumn(ColumnName = "F_PaymentMethod")] public string PaymentMethod { get; set; } /// - /// 补缴时间 + /// 付款日期 /// - [SugarColumn(ColumnName = "F_PaymentTime")] - public DateTime PaymentTime { get; set; } + [SugarColumn(ColumnName = "F_PaymentDate")] + public DateTime PaymentDate { get; set; } /// - /// 补缴操作人 + /// 收款人员 /// [SugarColumn(ColumnName = "F_PaymentUser")] public string PaymentUser { get; set; } /// - /// 补缴账户 - /// - [SugarColumn(ColumnName = "F_PaymentAccount")] - public string PaymentAccount { get; set; } - - /// - /// 补缴凭证号 - /// - [SugarColumn(ColumnName = "F_PaymentReference")] - public string PaymentReference { get; set; } - - /// - /// 补缴备注 + /// 备注 /// - [SugarColumn(ColumnName = "F_Remark")] - public string Remark { get; set; } + [SugarColumn(ColumnName = "F_Remarks")] + public string Remarks { get; set; } /// /// 创建时间 @@ -83,4 +71,4 @@ namespace NCC.Extend.Entitys.lq_kd_qkbj [SugarColumn(ColumnName = "F_IsEffective")] public int IsEffective { get; set; } = 1; } -} +} \ No newline at end of file diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs new file mode 100644 index 0000000..0e44051 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs @@ -0,0 +1,98 @@ +using NCC.Common.Const; +using SqlSugar; +using System; + +namespace NCC.Extend.Entitys.lq_package_info +{ + /// + /// 营销活动表 + /// + [SugarTable("lq_marketing_activity")] + [Tenant(ClaimConst.TENANT_ID)] + public class LqPackageInfoEntity + { + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] + public string Id { get; set; } + + /// + /// 活动名称 + /// + [SugarColumn(ColumnName = "F_ActivityName")] + public string ActivityName { get; set; } + + /// + /// 活动描述 + /// + [SugarColumn(ColumnName = "F_ActivityDesc")] + public string ActivityDesc { get; set; } + + /// + /// 活动开始时间 + /// + [SugarColumn(ColumnName = "F_StartTime")] + public DateTime StartTime { get; set; } + + /// + /// 活动结束时间 + /// + [SugarColumn(ColumnName = "F_EndTime")] + public DateTime EndTime { get; set; } + + /// + /// 至少购买品项数量 + /// + [SugarColumn(ColumnName = "F_MinItemQuantity")] + public int MinItemQuantity { get; set; } = 1; + + /// + /// 活动规则说明 + /// + [SugarColumn(ColumnName = "F_ActivityRules")] + public string ActivityRules { get; set; } + + /// + /// 活动图片(JSON格式) + /// + [SugarColumn(ColumnName = "F_ActivityImages")] + public string ActivityImages { get; set; } + + /// + /// 排序 + /// + [SugarColumn(ColumnName = "F_SortOrder")] + public int SortOrder { get; set; } = 0; + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "F_CreateTime")] + public DateTime CreateTime { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "F_UpdateTime")] + public DateTime UpdateTime { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "F_CreateUser")] + public string CreateUser { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "F_UpdateUser")] + public string UpdateUser { get; set; } + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = 1; + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs new file mode 100644 index 0000000..ef09761 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs @@ -0,0 +1,68 @@ +using NCC.Common.Const; +using SqlSugar; +using System; + +namespace NCC.Extend.Entitys.lq_package_item_detail +{ + /// + /// 营销活动品项明细表 + /// + [SugarTable("lq_marketing_activity_item_detail")] + [Tenant(ClaimConst.TENANT_ID)] + public class LqPackageItemDetailEntity + { + /// + /// 明细ID + /// + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] + public string Id { get; set; } + + /// + /// 营销活动ID + /// + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } + + /// + /// 品项ID + /// + [SugarColumn(ColumnName = "F_ItemId")] + public string ItemId { get; set; } + + /// + /// 品项名称 + /// + [SugarColumn(ColumnName = "F_ItemName")] + public string ItemName { get; set; } + + /// + /// 品项分类 + /// + [SugarColumn(ColumnName = "F_ItemCategory")] + public string ItemCategory { get; set; } + + /// + /// 品项备注 + /// + [SugarColumn(ColumnName = "F_ItemRemark")] + public string ItemRemark { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "F_CreateTime")] + public DateTime CreateTime { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "F_UpdateTime")] + public DateTime UpdateTime { get; set; } + + /// + /// 是否有效 + /// + [SugarColumn(ColumnName = "F_IsEffective")] + public int IsEffective { get; set; } = 1; + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs index c0d326b..10d6ef8 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs @@ -48,6 +48,12 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk public string Hyzh { get; set; } /// + /// 会员手机号 + /// + [SugarColumn(ColumnName = "F_MemberPhone")] + public string MemberPhone { get; set; } + + /// /// 会员名称 /// [SugarColumn(ColumnName = "hymc")] diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs deleted file mode 100644 index 178aed3..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs +++ /dev/null @@ -1,45 +0,0 @@ -using NCC.Common.Const; -using SqlSugar; -using System; - -namespace NCC.Extend.Entitys.lq_yxhdfa -{ - /// - /// 营销活动方案 - /// - [SugarTable("lq_yxhdfa")] - [Tenant(ClaimConst.TENANT_ID)] - public class LqYxhdfaEntity - { - /// - /// 方案编号 - /// - [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] - public string Id { get; set; } - - /// - /// 营销活动编号 - /// - [SugarColumn(ColumnName = "yxhdbh")] - public string Yxhdbh { get; set; } - - /// - /// 活动名称 - /// - [SugarColumn(ColumnName = "hdmc")] - public string Hdmc { get; set; } - - /// - /// 张数奖 - /// - [SugarColumn(ColumnName = "zsj")] - public string Zsj { get; set; } - - /// - /// 金额奖 - /// - [SugarColumn(ColumnName = "jej")] - public string Jej { get; set; } - - } -} \ No newline at end of file diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs deleted file mode 100644 index 32bed5e..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs +++ /dev/null @@ -1,14 +0,0 @@ -using NCC.Common.Helper; -using NCC.Extend.Entitys.Dto.LqYxhdfa; -using Mapster; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Mapper.LqYxhdfa -{ - public class Mapper : IRegister - { - public void Register(TypeAdapterConfig config) - { - } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs deleted file mode 100644 index fa9c00c..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NCC.Extend.Interfaces.LqYxhdfa -{ - public interface ILqYxhdfaService - { - } -} \ No newline at end of file diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs new file mode 100644 index 0000000..561bad6 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs @@ -0,0 +1,18 @@ +using NCC.Extend.Entitys.Dto.LqPackageInfo; +using System.Threading.Tasks; + +namespace NCC.Extend.Interfaces.LqPackageInfo +{ + /// + /// 营销活动服务接口 + /// + public interface ILqPackageInfoService + { + /// + /// 添加营销活动 + /// + /// 营销活动创建输入 + /// 营销活动ID + Task CreatePackageInfoAsync(LqPackageInfoCrInput input); + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs index c27be94..6666674 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs @@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqHytkHytk; using NCC.Extend.Entitys.Dto.LqHytkJksyj; using NCC.Extend.Entitys.Dto.LqHytkKjbsyj; using NCC.Extend.Entitys.Dto.LqHytkMx; +using NCC.Extend.Entitys.Enum; using NCC.Extend.Entitys.lq_hytk_hytk; using NCC.Extend.Entitys.lq_hytk_jksyj; using NCC.Extend.Entitys.lq_hytk_kjbsyj; @@ -113,6 +114,7 @@ namespace NCC.Extend.LqHytkHytk tksj = it.Tksj, czry = it.Czry, fileUrl = it.FileUrl, + isEffective = it.IsEffective, }) .MergeTable() .OrderBy(sidx + " " + input.sort) @@ -199,6 +201,7 @@ namespace NCC.Extend.LqHytkHytk entity.F_CreateTime = DateTime.Now; entity.F_CreateUser = userInfo.userId; entity.F_DeleteMark = 0; + entity.IsEffective = StatusEnum.有效.GetHashCode(); entity.Czry = userInfo.userId; try @@ -236,6 +239,7 @@ namespace NCC.Extend.LqHytkHytk IsEnabled = item.F_IsEnabled ?? 1, SourceType = item.F_SourceType, TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), + IsEffective = StatusEnum.有效.GetHashCode(), }; allMxEntities.Add(lqHytkMxEntity); @@ -244,25 +248,25 @@ namespace NCC.Extend.LqHytkHytk { foreach (var ijks_tem in item.lqHytkJksyjList) { - allJksyjEntities.Add( - new LqHytkJksyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Gltkbh = newEntity.Id, - Jks = ijks_tem.jks, - Jksxm = ijks_tem.jksxm, - Jkszh = ijks_tem.jkszh, - Jksyj = ijks_tem.jksyj, - Tksj = DateTime.Now, - F_jsjid = ijks_tem.F_jsjid, - F_tkpxid = ijks_tem.F_tkpxid, - F_LaborCost = ijks_tem.F_LaborCost, - F_tkpxNumber = ijks_tem.F_tkpxNumber, - F_CreateTime = DateTime.Now, - F_CreateUser = userInfo.userId, - F_DeleteMark = 0, - CardReturn = lqHytkMxEntity.Id, - } + allJksyjEntities.Add(new LqHytkJksyjEntity + { + Id = YitIdHelper.NextId().ToString(), + Gltkbh = newEntity.Id, + Jks = ijks_tem.jks, + Jksxm = ijks_tem.jksxm, + Jkszh = ijks_tem.jkszh, + Jksyj = ijks_tem.jksyj, + Tksj = DateTime.Now, + F_jsjid = ijks_tem.F_jsjid, + F_tkpxid = ijks_tem.F_tkpxid, + F_LaborCost = ijks_tem.F_LaborCost, + F_tkpxNumber = ijks_tem.F_tkpxNumber, + F_CreateTime = DateTime.Now, + F_CreateUser = userInfo.userId, + F_DeleteMark = 0, + CardReturn = lqHytkMxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), + } ); } } @@ -289,6 +293,7 @@ namespace NCC.Extend.LqHytkHytk F_CreateUser = userInfo.userId, F_DeleteMark = 0, CardReturn = lqHytkMxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), } ); } @@ -474,7 +479,7 @@ namespace NCC.Extend.LqHytkHytk } #endregion - #region 删除退卡信息 + #region 标记退卡信息为无效 /// /// 删除退卡信息(逻辑删除) /// @@ -486,8 +491,11 @@ namespace NCC.Extend.LqHytkHytk var entity = await _db.Queryable().FirstAsync(p => p.Id == id); if (entity != null) { - entity.F_DeleteMark = 1; + entity.IsEffective = StatusEnum.无效.GetHashCode(); await _lqHytkHytkRepository.UpdateAsync(entity); + await _db.Updateable().SetColumns(it => new LqHytkMxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.RefundInfoId == id).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new LqHytkJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Gltkbh == id).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new LqHytkKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Gltkbh == id).ExecuteCommandAsync(); } } #endregion diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs index 5f9fa48..45abe4d 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs @@ -17,15 +17,19 @@ using NCC.DataEncryption; using NCC.Dependency; using NCC.DynamicApiController; using NCC.Extend.Entitys.Dto.Common; +using NCC.Extend.Entitys.Dto.LqKdDeductinfo; using NCC.Extend.Entitys.Dto.LqKdKdjlb; using NCC.Extend.Entitys.Enum; +using NCC.Extend.Entitys.lq_hytk_mx; 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; using NCC.Extend.Entitys.lq_kd_pxmx; +using NCC.Extend.Entitys.lq_kd_qkbj; using NCC.Extend.Entitys.lq_khxx; +using NCC.Extend.Entitys.lq_xh_pxmx; using NCC.Extend.Entitys.lq_xmzl; using NCC.Extend.Interfaces.LqKdKdjlb; using NCC.Extend.Utils; @@ -118,6 +122,9 @@ namespace NCC.Extend.LqKdKdjlb // 4. 查询科技部老师业绩列表 var lqKdKjbsyjList = await _db.Queryable().Where(w => w.Glkdbh == entity.Id).ToListAsync(); + // 5. 查询扣款信息列表 + var lqKdDeductList = await _db.Queryable().Where(w => w.BillingId == entity.Id).ToListAsync(); + // 5. 构建品项明细输出,每个品项关联对应的业绩信息 var pxmxOutputList = new List(); foreach (var pxmx in lqKdPxmxList) @@ -137,6 +144,7 @@ namespace NCC.Extend.LqKdKdjlb totalPrice = pxmx.TotalPrice, actualPrice = pxmx.ActualPrice, remark = pxmx.Remark, + IsEffective = pxmx.IsEffective, }; // 关联该品项的健康师业绩 @@ -147,6 +155,7 @@ namespace NCC.Extend.LqKdKdjlb var kjbsyjForPx = lqKdKjbsyjList.Where(k => k.Kdpxid == pxmx.Id).ToList(); pxmxOutput.lqKdKjbsyjList = kjbsyjForPx.Adapt>(); + pxmxOutputList.Add(pxmxOutput); } @@ -156,6 +165,8 @@ namespace NCC.Extend.LqKdKdjlb // 7. 设置全局业绩列表(用于兼容性,但主要使用品项关联的业绩) output.lqKdJksyjList = lqKdJksyjList.Adapt>(); output.lqKdKjbsyjList = lqKdKjbsyjList.Adapt>(); + // 8. 设置扣款信息列表 + output.lqKdDeductList = lqKdDeductList.Adapt>(); return output; } @@ -182,6 +193,7 @@ namespace NCC.Extend.LqKdKdjlb DateTime? startKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.First()) : null; DateTime? endKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.Last()) : null; var data = await _db.Queryable() + .WhereIF(!string.IsNullOrEmpty(input.keyword), p => p.Kdhyc.Contains(input.keyword) || p.Kdhysjh.Contains(input.keyword)) .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) .WhereIF(!string.IsNullOrEmpty(input.djmd), p => p.Djmd.Equals(input.djmd)) .WhereIF(!string.IsNullOrEmpty(input.jsj), p => p.Jsj.Equals(input.jsj)) @@ -208,6 +220,7 @@ namespace NCC.Extend.LqKdKdjlb .WhereIF(!string.IsNullOrEmpty(input.kjblsyj), p => p.Kjblsyj.Contains(input.kjblsyj)) .WhereIF(!string.IsNullOrEmpty(input.pxxx), p => p.Pxxx.Contains(input.pxxx)) .WhereIF(!string.IsNullOrEmpty(input.F_FIleUrl), p => p.F_FIleUrl.Contains(input.F_FIleUrl)) + .WhereIF(!string.IsNullOrEmpty(input.CreateUser), p => p.CreateUser.Equals(input.CreateUser)) .Select(it => new LqKdKdjlbListOutput { id = it.Id, @@ -236,6 +249,8 @@ namespace NCC.Extend.LqKdKdjlb kjblsyj = it.Kjblsyj, pxxx = it.Pxxx, IsEffective = it.IsEffective, + CreateUser = it.CreateUser, + CreateUserName = SqlFunc.Subqueryable().Where(x => x.Id == it.CreateUser).Select(x => x.RealName), }) .MergeTable() .OrderBy(sidx + " " + input.sort) @@ -265,26 +280,34 @@ namespace NCC.Extend.LqKdKdjlb //开启事务 _db.BeginTran(); //判断是否有作废关联id - if (!string.IsNullOrEmpty(input.cancelRefId)) - { - //查询作废关联id - var cancelRefEntity = await _db.Queryable().FirstAsync(p => p.Id == input.cancelRefId); - if (cancelRefEntity == null) - { - throw NCCException.Oh("作废关联id不存在"); - } - //将作废关联id的IsEffective设置为0 - cancelRefEntity.IsEffective = StatusEnum.无效.GetHashCode(); - await _db.Updateable(cancelRefEntity).ExecuteCommandAsync(); - //把品项明细表的IsEffective设置为0 - await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); - //把健康师业绩表的IsEffective设置为0 - await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); - //把科技部老师业绩表的IsEffective设置为0 - await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); - //把扣款信息表的IsEffective设置为0 - await _db.Updateable().Where(p => p.BillingId == input.cancelRefId).UpdateColumns(p => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); - } + //暂时先不需要 + // if (!string.IsNullOrEmpty(input.cancelRefId)) + // { + // //查询作废关联id + // var cancelRefEntity = await _db.Queryable().FirstAsync(p => p.Id == input.cancelRefId); + // if (cancelRefEntity == null || cancelRefEntity.IsEffective == StatusEnum.无效.GetHashCode()) + // { + // throw NCCException.Oh("该开单记录已经作废"); + // } + // // 检查作废关联记录是否可以作废 + // var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(input.cancelRefId); + // if (!canCancel) + // { + // throw NCCException.Oh(errorMessage); + // } + + // //将作废关联id的IsEffective设置为无效 + // cancelRefEntity.IsEffective = StatusEnum.无效.GetHashCode(); + // await _db.Updateable(cancelRefEntity).ExecuteCommandAsync(); + // //把品项明细表的IsEffective设置为无效 + // await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); + // //把健康师业绩表的IsEffective设置为无效 + // await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); + // //把科技部老师业绩表的IsEffective设置为无效 + // await _db.Updateable().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); + // //把扣款信息表的IsEffective设置为无效 + // await _db.Updateable().Where(p => p.BillingId == input.cancelRefId).UpdateColumns(p => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); + // } //新增开单记录表记录 entity.CreateUser = userInfo.userId; @@ -336,6 +359,7 @@ namespace NCC.Extend.LqKdKdjlb ActualPrice = item.actualPrice, Remark = item.remark, IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, }; allPxmxEntities.Add(lqKdPxmxEntity); @@ -358,6 +382,7 @@ namespace NCC.Extend.LqKdKdjlb Jsj_id = ijks_tem.jsj_id, Kdpxid = lqKdPxmxEntity.Id, IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, }); } } @@ -367,19 +392,19 @@ namespace NCC.Extend.LqKdKdjlb { foreach (var ikjbs_tem in item.lqKdKjbsyjList) { - allKjbsyjEntities.Add( - new LqKdKjbsyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Glkdbh = newEntity.Id, - Kjbls = ikjbs_tem.kjbls, - Kjblsxm = ikjbs_tem.kjblsxm, - Kjblszh = ikjbs_tem.kjblszh, - Kjblsyj = ikjbs_tem.kjblsyj, - Yjsj = input.kdrq, - Kdpxid = lqKdPxmxEntity.Id, - IsEffective = StatusEnum.有效.GetHashCode(), - } + allKjbsyjEntities.Add(new LqKdKjbsyjEntity + { + Id = YitIdHelper.NextId().ToString(), + Glkdbh = newEntity.Id, + Kjbls = ikjbs_tem.kjbls, + Kjblsxm = ikjbs_tem.kjblsxm, + Kjblszh = ikjbs_tem.kjblszh, + Kjblsyj = ikjbs_tem.kjblsyj, + Yjsj = input.kdrq, + Kdpxid = lqKdPxmxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, + } ); } } @@ -1090,152 +1115,159 @@ namespace NCC.Extend.LqKdKdjlb { var entity = input.Adapt(); entity.Id = id; // 确保ID正确设置 - try { + //检查开单记录是否可以操作 + var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(id); + if (!canCancel) + { + throw NCCException.Oh(errorMessage); + } //开启事务 _db.BeginTran(); - // 更新开单记录主表 - await _db.Updateable(entity) - .IgnoreColumns(ignoreAllNullColumns: true) - .IgnoreColumns(x => x.CreateTime) // 不更新创建时间 - .ExecuteCommandAsync(); - - // 处理品项明细列表 - 更新或插入 - if (input.lqKdPxmxList != null && input.lqKdPxmxList.Any()) + await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).IgnoreColumns(x => x.CreateTime).ExecuteCommandAsync(); + //清空原有品项明细 + await _db.Deleteable().Where(x => x.Glkdbh == id).ExecuteCommandAsync(); + //清空原有健康师业绩 + await _db.Deleteable().Where(x => x.Glkdbh == id).ExecuteCommandAsync(); + //清空原有科技部老师业绩 + await _db.Deleteable().Where(x => x.Glkdbh == id).ExecuteCommandAsync(); + //清空原有扣款信息 + await _db.Deleteable().Where(x => x.BillingId == id).ExecuteCommandAsync(); + //循环品相信息 + // 收集所有需要插入的实体,然后批量插入 + var allPxmxEntities = new List(); + var allJksyjEntities = new List(); + var allKjbsyjEntities = new List(); + var allDeductEntities = new List(); + // 处理扣款信息列表 + foreach (var item in input.lqKdKdjlbDeductList) { - foreach (var item in input.lqKdPxmxList) + var lqKdDeductEntity = new LqKdDeductinfoEntity + { + Id = YitIdHelper.NextId().ToString(), + BillingId = id, + DeductId = item.DeductId, + DeductType = item.DeductType, + Amount = item.Amount, + ProjectNumber = item.ProjectNumber, + UnitPrice = item.UnitPrice, + ItemName = item.ItemName, + ItemId = item.ItemId, + IsEffective = StatusEnum.有效.GetHashCode(), // 设置为有效 + CreateTime = DateTime.Now, // 设置创建时间 + }; + allDeductEntities.Add(lqKdDeductEntity); + } + // 处理品项明细列表 + foreach (var item in input.lqKdPxmxList) + { + // 创建品项明细实体 + var lqKdPxmxEntity = new LqKdPxmxEntity { - // 检查品项明细是否已存在 - var existingPxmx = await _db.Queryable() - .Where(x => x.Glkdbh == id && x.Px == item.px) - .FirstAsync(); + Id = YitIdHelper.NextId().ToString(), + Glkdbh = id, + Yjsj = input.kdrq, + CreateTIme = DateTime.Now, + MemberId = entity.Kdhy, + IsEnabled = StatusEnum.有效.GetHashCode(), + ProjectNumber = item.projectNumber, + TotalPrice = (decimal)(item.pxjg * item.projectNumber), + Px = item.px, + Pxmc = item.pxmc, + Pxjg = item.pxjg, + SourceType = item.sourceType, + ActualPrice = item.actualPrice, + Remark = item.remark, + IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, + }; + allPxmxEntities.Add(lqKdPxmxEntity); - if (existingPxmx != null) + // 收集该品项关联的健康师业绩 + if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any()) + { + //把jksxm保存到HealthInstructorNames + foreach (var ijks_tem in item.lqKdJksyjList) { - // 更新现有品项明细 - existingPxmx.ProjectNumber = item.projectNumber == 0 ? 1 : item.projectNumber; - existingPxmx.TotalPrice = (decimal)(item.pxjg * (item.projectNumber == 0 ? 1 : item.projectNumber)); - existingPxmx.Pxmc = item.pxmc; - existingPxmx.Pxjg = item.pxjg; - existingPxmx.SourceType = item.sourceType; - await _db.Updateable(existingPxmx).ExecuteCommandAsync(); - - // 更新该品项关联的健康师业绩 - if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any()) - { - // 先删除该品项的所有健康师业绩 - await _db.Deleteable() - .Where(x => x.Kdpxid == existingPxmx.Id) - .ExecuteCommandAsync(); - - // 重新插入健康师业绩 - var jksyjEntities = item.lqKdJksyjList.Select(ijks_tem => new LqKdJksyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, - Jks = ijks_tem.jks, - Jksxm = ijks_tem.jksxm, - Jkszh = ijks_tem.jkszh, - Jksyj = ijks_tem.jksyj, - Yjsj = DateTime.Now, - Jsj_id = ijks_tem.jsj_id, - Kdpxid = existingPxmx.Id, - }).ToList(); - - if (jksyjEntities.Any()) - { - await _db.Insertable(jksyjEntities).ExecuteCommandAsync(); - } - } - - // 更新该品项关联的科技部老师业绩 - if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any()) + allJksyjEntities.Add(new LqKdJksyjEntity { - // 先删除该品项的所有科技部老师业绩 - await _db.Deleteable() - .Where(x => x.Kdpxid == existingPxmx.Id) - .ExecuteCommandAsync(); - - // 重新插入科技部老师业绩 - var kjbsyjEntities = item.lqKdKjbsyjList.Select(ikjbs_tem => new LqKdKjbsyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, - Kjbls = ikjbs_tem.kjbls, - Kjblsxm = ikjbs_tem.kjblsxm, - Kjblszh = ikjbs_tem.kjblszh, - Kjblsyj = ikjbs_tem.kjblsyj, - Yjsj = DateTime.Now, - Kdpxid = existingPxmx.Id, - }).ToList(); - - if (kjbsyjEntities.Any()) - { - await _db.Insertable(kjbsyjEntities).ExecuteCommandAsync(); - } - } + Id = YitIdHelper.NextId().ToString(), + Glkdbh = id, + Jks = ijks_tem.jks, + Jksxm = ijks_tem.jksxm, + Jkszh = ijks_tem.jkszh, + Jksyj = ijks_tem.jksyj, + Yjsj = input.kdrq, + Jsj_id = ijks_tem.jsj_id, + Kdpxid = lqKdPxmxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, + }); } - else + } + + // 收集该品项关联的科技部老师业绩 + if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any()) + { + foreach (var ikjbs_tem in item.lqKdKjbsyjList) { - // 插入新的品项明细 - var newPxmxEntity = new LqKdPxmxEntity + allKjbsyjEntities.Add(new LqKdKjbsyjEntity { Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, - CreateTIme = DateTime.Now, - MemberId = entity.Kdhy, - IsEnabled = 0, - ProjectNumber = item.projectNumber == 0 ? 1 : item.projectNumber, - TotalPrice = (decimal)(item.pxjg * (item.projectNumber == 0 ? 1 : item.projectNumber)), - Px = item.px, - Pxmc = item.pxmc, - Pxjg = item.pxjg, - SourceType = item.sourceType, - }; - await _db.Insertable(newPxmxEntity).ExecuteCommandAsync(); - - // 插入该品项关联的健康师业绩 - if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any()) - { - var jksyjEntities = item.lqKdJksyjList.Select(ijks_tem => new LqKdJksyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, - Jks = ijks_tem.jks, - Jksxm = ijks_tem.jksxm, - Jkszh = ijks_tem.jkszh, - Jksyj = ijks_tem.jksyj, - Yjsj = DateTime.Now, - Jsj_id = ijks_tem.jsj_id, - Kdpxid = newPxmxEntity.Id, - }).ToList(); - - await _db.Insertable(jksyjEntities).ExecuteCommandAsync(); - } - - // 插入该品项关联的科技部老师业绩 - if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any()) - { - var kjbsyjEntities = item.lqKdKjbsyjList.Select(ikjbs_tem => new LqKdKjbsyjEntity - { - Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, - Kjbls = ikjbs_tem.kjbls, - Kjblsxm = ikjbs_tem.kjblsxm, - Kjblszh = ikjbs_tem.kjblszh, - Kjblsyj = ikjbs_tem.kjblsyj, - Yjsj = DateTime.Now, - Kdpxid = newPxmxEntity.Id, - }).ToList(); - - await _db.Insertable(kjbsyjEntities).ExecuteCommandAsync(); + Glkdbh = id, + Kjbls = ikjbs_tem.kjbls, + Kjblsxm = ikjbs_tem.kjblsxm, + Kjblszh = ikjbs_tem.kjblszh, + Kjblsyj = ikjbs_tem.kjblsyj, + Yjsj = input.kdrq, + Kdpxid = lqKdPxmxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, } + ); } } } + + + //通过会员id查询会员信息 + var memberInfo = await _db.Queryable().Where(u => u.Id == entity.Kdhy).FirstAsync(); + //通过开单记录表查询这个会员开单金额 + var kdAmount = await _db.Queryable().Where(u => u.Kdhy == entity.Kdhy).SumAsync(u => u.Sfyj); + //如果开单金额小于500,为散客,如果大于500,为会员 + if (kdAmount < 500) + { + memberInfo.Khlx = MemberTypeEnum.散客.GetHashCode().ToString(); + } + else + { + memberInfo.Khlx = MemberTypeEnum.会员.GetHashCode().ToString(); + } + await _db.Updateable(memberInfo).ExecuteCommandAsync(); + // 批量插入扣款信息 + if (allDeductEntities.Any()) + { + await _db.Insertable(allDeductEntities).ExecuteCommandAsync(); + } + // 批量插入品项明细 + if (allPxmxEntities.Any()) + { + await _db.Insertable(allPxmxEntities).ExecuteCommandAsync(); + } + // 批量插入健康师业绩 + if (allJksyjEntities.Any()) + { + await _db.Insertable(allJksyjEntities).ExecuteCommandAsync(); + } + // 批量插入科技部老师业绩 + if (allKjbsyjEntities.Any()) + { + await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); + } + //关闭事务 _db.CommitTran(); } @@ -1248,61 +1280,98 @@ namespace NCC.Extend.LqKdKdjlb } #endregion + + + + #region 作废开单记录 /// /// 作废开单记录 /// - /// 开单记录主键ID + /// 作废开单记录输入 /// 无返回值 + /// + /// 作废指定的开单记录,包括相关的品项明细、业绩记录等 + /// + /// 示例请求: + /// ```json + /// { + /// "id": "123456789", + /// "remarks": "客户要求作废此订单" + /// } + /// ``` + /// + /// 参数说明: + /// - id: 开单记录主键ID(必填) + /// - remarks: 作废备注说明 + /// /// 作废成功 /// 参数错误,开单记录ID不能为空 /// 开单记录不存在 /// 服务器内部错误 - [HttpPut("Cancel/{id}")] - public async Task Cancel(string id) + [HttpPut("Cancel")] + public async Task Cancel(CancelBillingInput input) { - if (string.IsNullOrEmpty(id)) + if (string.IsNullOrEmpty(input.Id)) { throw NCCException.Oh("开单记录ID不能为空"); } - try { //开启事务 _db.BeginTran(); + // 检查开单记录是否可以作废 + var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(input.Id); + if (!canCancel) + { + throw NCCException.Oh(errorMessage); + } // 查询开单记录 - var entity = await _db.Queryable().FirstAsync(p => p.Id == id); + var entity = await _db.Queryable().FirstAsync(p => p.Id == input.Id); if (entity == null) { throw NCCException.Oh("开单记录不存在"); } - // 检查是否已经作废 - if (entity.IsEffective == 0) - { - throw NCCException.Oh("该开单记录已经作废"); - } - - // 标记开单记录为无效 - entity.IsEffective = 0; + // 标记开单记录为无效,并添加作废备注 + entity.IsEffective = StatusEnum.无效.GetHashCode(); + entity.CancelRefRemarks = input.Remarks; + entity.UpdateTime = DateTime.Now; await _db.Updateable(entity).ExecuteCommandAsync(); + // 标记对应开单明细表为无效 - await _db.Updateable().SetColumns(it => new LqKdPxmxEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); + await _db.Updateable() + .SetColumns(it => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }) + .Where(it => it.Glkdbh == input.Id) + .ExecuteCommandAsync(); + // 标记健康师业绩为无效 - await _db.Updateable().SetColumns(it => new LqKdJksyjEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); + await _db.Updateable() + .SetColumns(it => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }) + .Where(it => it.Glkdbh == input.Id) + .ExecuteCommandAsync(); + // 标记科技部老师业绩为无效 - await _db.Updateable().SetColumns(it => new LqKdKjbsyjEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); + await _db.Updateable() + .SetColumns(it => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }) + .Where(it => it.Glkdbh == input.Id) + .ExecuteCommandAsync(); + // 标记开单_储扣详细表为无效 - await _db.Updateable().SetColumns(it => new LqKdDeductinfoEntity { IsEffective = 0 }).Where(it => it.BillingId == id).ExecuteCommandAsync(); + await _db.Updateable() + .SetColumns(it => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }) + .Where(it => it.BillingId == input.Id) + .ExecuteCommandAsync(); + //关闭事务 _db.CommitTran(); } - catch (Exception) + catch (Exception ex) { //回滚事务 _db.RollbackTran(); - throw NCCException.Oh(ErrorCode.COM1001); + throw NCCException.Oh($"作废开单记录失败: {ex.Message}"); } } #endregion @@ -1482,5 +1551,218 @@ namespace NCC.Extend.LqKdKdjlb } } #endregion + + #region 补缴欠款 + /// + /// 补缴欠款 + /// + /// 补缴欠款输入 + /// 补缴记录ID + /// + /// 为客户补缴欠款,记录补缴信息并更新开单记录的已缴欠款金额 + /// + /// 示例请求: + /// ```json + /// { + /// "billingId": "123456789", + /// "paymentAmount": 1000.00, + /// "paymentMethod": "现金", + /// "paymentDate": "2025-01-15T10:30:00", + /// "paymentUser": "收款员", + /// "remarks": "客户补缴欠款" + /// } + /// ``` + /// + /// 参数说明: + /// - billingId: 开单记录ID(必填) + /// - paymentAmount: 补缴金额(必填) + /// - paymentMethod: 付款方式 + /// - paymentDate: 付款日期 + /// - paymentUser: 收款人员 + /// - remarks: 备注信息 + /// + /// 补缴成功,返回补缴记录ID + /// 请求参数错误 + /// 开单记录不存在 + /// 服务器内部错误 + [HttpPost("PayDebtAsync")] + public async Task PayDebtAsync(PayDebtInput input) + { + try + { + // 验证补缴金额 + if (input.PaymentAmount <= 0) + { + throw NCCException.Oh("补缴金额必须大于0"); + } + + // 检查开单记录是否存在 + var billingRecord = await _db.Queryable().Where(w => w.Id == input.BillingId).FirstAsync(); + if (billingRecord == null || billingRecord.IsEffective == StatusEnum.无效.GetHashCode()) + { + throw NCCException.Oh("开单记录不存在或已作废"); + } + // 检查补缴金额是否超过欠款金额 + var remainingDebt = billingRecord.Qk - billingRecord.PaidDebt; + if (input.PaymentAmount > remainingDebt) + { + throw NCCException.Oh($"补缴金额({input.PaymentAmount})不能超过剩余欠款金额({remainingDebt})"); + } + // 开始事务 + _db.BeginTran(); + try + { + // 创建补缴记录 + var paymentRecord = new LqKdQkbjEntity + { + Id = YitIdHelper.NextId().ToString(), + BillingId = input.BillingId, + PaymentAmount = input.PaymentAmount, + PaymentMethod = input.PaymentMethod, + PaymentDate = input.PaymentDate ?? DateTime.Now, + PaymentUser = input.PaymentUser ?? _userManager.UserId, + Remarks = input.Remarks, + CreateTime = DateTime.Now, + UpdateTime = DateTime.Now, + IsEffective = StatusEnum.有效.GetHashCode() + }; + // 保存补缴记录 + await _db.Insertable(paymentRecord).ExecuteCommandAsync(); + + // 更新开单记录的已缴欠款金额 + await _db.Updateable() + .SetColumns(it => new LqKdKdjlbEntity + { + PaidDebt = it.PaidDebt + input.PaymentAmount, + UpdateTime = DateTime.Now + }) + .Where(w => w.Id == input.BillingId) + .ExecuteCommandAsync(); + + // 提交事务 + _db.CommitTran(); + return new + { + success = true, + message = "补缴成功", + data = paymentRecord.Id + }; + } + catch + { + // 回滚事务 + _db.RollbackTran(); + throw; + } + } + catch (Exception ex) + { + throw NCCException.Oh($"补缴欠款失败: {ex.Message}"); + } + } + + + #endregion + + #region 补缴欠款查询 + /// + /// 获取补缴欠款记录列表 + /// + /// 查询输入 + /// 补缴记录列表 + /// + /// 获取指定开单记录的补缴欠款历史记录 + /// + /// 成功获取补缴记录列表 + /// 请求参数错误 + /// 服务器内部错误 + [HttpGet("GetDebtPaymentRecordsAsync")] + public async Task GetDebtPaymentRecordsAsync([FromQuery] DebtPaymentQueryInput input) + { + try + { + var sidx = input.sidx == null ? "PaymentDate" : input.sidx; + var data = await _db.Queryable() + .WhereIF(!string.IsNullOrEmpty(input.BillingId), w => w.BillingId == input.BillingId) + .WhereIF(input.PaymentDateStart.HasValue, w => w.PaymentDate >= input.PaymentDateStart.Value) + .WhereIF(input.PaymentDateEnd.HasValue, w => w.PaymentDate <= input.PaymentDateEnd.Value) + .WhereIF(!string.IsNullOrEmpty(input.PaymentUser), w => w.PaymentUser.Contains(input.PaymentUser)) + .Select(it => new DebtPaymentRecordOutput + { + Id = it.Id, + BillingId = it.BillingId, + PaymentAmount = it.PaymentAmount, + PaymentMethod = it.PaymentMethod, + PaymentDate = it.PaymentDate, + PaymentUser = it.PaymentUser, + Remarks = it.Remarks, + CreateTime = it.CreateTime + }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(data); + } + catch (Exception ex) + { + throw NCCException.Oh($"获取补缴记录失败: {ex.Message}"); + } + } + #endregion + + #region 私有方法 + /// + /// 检查开单记录是否可以操作 + /// + /// 开单记录ID + /// 是否可以作废 + private async Task<(bool canCancel, string errorMessage)> CheckBillingCanCancelAsync(string billingId) + { + try + { + // 查询开单记录 + var entity = await _db.Queryable().FirstAsync(p => p.Id == billingId); + if (entity == null) + { + return (false, "开单记录不存在"); + } + // 检查是否已经作废 + if (entity.IsEffective == StatusEnum.无效.GetHashCode()) + { + return (false, "该开单记录已经作废"); + } + // 查询开单记录下的品项明细ID列表 + var pxmxIdList = await _db.Queryable().Where(p => p.Glkdbh == billingId).Select(p => p.Id).Distinct().ToListAsync(); + //判断是否有对应的补缴记录 + var qkbjList = await _db.Queryable().Where(p => p.BillingId == billingId).ToListAsync(); + if (qkbjList.Any()) + { + return (false, "该开单记录有对应的补缴记录,不能进行操作"); + } + // 判断是否有对应的消耗记录 + var xhPxmxList = await _db.Queryable().Where(p => pxmxIdList.Contains(p.BillingItemId)).ToListAsync(); + if (xhPxmxList.Any()) + { + return (false, "该开单记录有对应的消耗记录,不能进行操作"); + } + // 判断是否有退卡记录 + var hytkMxList = await _db.Queryable().Where(p => pxmxIdList.Contains(p.BillingItemId)).ToListAsync(); + if (hytkMxList.Any()) + { + return (false, "该开单记录有对应的退卡记录,不能进行操作"); + } + // 判断是否已经有储扣记录 + var deductInfoList = await _db.Queryable().Where(p => pxmxIdList.Contains(p.DeductId)).ToListAsync(); + if (deductInfoList.Any()) + { + return (false, "该开单记录有对应的储扣记录,不能进行操作"); + } + + return (true, string.Empty); + } + catch (Exception ex) + { + return (false, $"检查开单记录状态失败: {ex.Message}"); + } + } + #endregion } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs index df72cd9..42e174e 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs @@ -344,7 +344,6 @@ namespace NCC.Extend.LqKhxx { throw NCCException.Oh("客户ID不能为空"); } - // 查询客户是否存在 var customerExists = await _db.Queryable().Where(c => c.Id == customerId).AnyAsync(); @@ -352,13 +351,10 @@ namespace NCC.Extend.LqKhxx { throw NCCException.Oh("客户不存在"); } - // 查询开单记录数量 - var orderCount = await _db.Queryable().Where(o => o.Kdhy == customerId).CountAsync(); - + var orderCount = await _db.Queryable().Where(o => o.Kdhy == customerId && o.IsEffective == StatusEnum.有效.GetHashCode()).CountAsync(); var hasOrderRecord = orderCount > 0; var orderType = hasOrderRecord ? "repeat_order" : "first_order"; - return new LqKhxxOrderTypeOutput { CustomerId = customerId, @@ -546,6 +542,7 @@ namespace NCC.Extend.LqKhxx // 先查询基础品项数据 var baseItems = await _db.Queryable() .Where(x => x.MemberId == memberId) + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()) .Select(x => new { x.Id, @@ -560,6 +557,7 @@ namespace NCC.Extend.LqKhxx // 查询消费数据 var consumedData = await _db.Queryable() .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId)) + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()) .GroupBy(x => x.BillingItemId) .Select(x => new { @@ -571,6 +569,7 @@ namespace NCC.Extend.LqKhxx // 查询退卡数据 var refundedData = await _db.Queryable() .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId)) + // .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()) .GroupBy(x => x.BillingItemId) .Select(x => new { @@ -582,6 +581,7 @@ namespace NCC.Extend.LqKhxx //查询储扣数据 var deductData = await _db.Queryable() .Where(x => baseItems.Select(b => b.Id).Contains(x.DeductId)) + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()) .GroupBy(x => x.DeductId) .Select(x => new { diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs new file mode 100644 index 0000000..80fa30c --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs @@ -0,0 +1,417 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using NCC.Common.Core.Manager; +using NCC.Common.Filter; +using NCC.Dependency; +using NCC.DynamicApiController; +using NCC.Extend.Entitys.Dto.LqPackageInfo; +using NCC.Extend.Entitys.Enum; +using NCC.Extend.Entitys.lq_package_info; +using NCC.Extend.Entitys.lq_package_item_detail; +using NCC.Extend.Interfaces.LqPackageInfo; +using NCC.FriendlyException; +using SqlSugar; +using Yitter.IdGenerator; + +namespace NCC.Extend.LqPackageInfo +{ + /// + /// 营销活动服务 + /// + [ApiDescriptionSettings(Tag = "绿纤营销活动服务", Name = "LqPackageInfo", Order = 200)] + [Route("api/Extend/[controller]")] + public class LqPackageInfoService : ILqPackageInfoService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _packageInfoRepository; + private readonly SqlSugarScope _db; + private readonly IUserManager _userManager; + + /// + /// 构造函数 + /// + /// 营销活动仓储 + /// 用户管理器 + public LqPackageInfoService(ISqlSugarRepository packageInfoRepository, IUserManager userManager) + { + _packageInfoRepository = packageInfoRepository; + _db = packageInfoRepository.Context; + _userManager = userManager; + } + + #region 添加营销活动 + /// + /// 添加营销活动 + /// + /// 营销活动创建输入 + /// 营销活动ID + /// + /// 创建新的营销活动,包含活动基本信息和品项明细 + /// + /// 示例请求: + /// ```json + /// { + /// "activityName": "春季护肤优惠活动", + /// "activityDesc": "春季护肤特惠活动", + /// "startTime": "2025-03-01T00:00:00", + /// "endTime": "2025-03-31T23:59:59", + /// "minItemQuantity": 2, + /// "activityRules": "活动规则说明", + /// "activityImages": "[\"image1.jpg\"]", + /// "sortOrder": 1, + /// "activityItems": [ + /// { + /// "itemId": "ITEM001", + /// "itemName": "面部清洁", + /// "itemCategory": "基础护理", + /// "itemRemark": "推荐品项" + /// } + /// ] + /// } + /// ``` + /// + /// 参数说明: + /// - activityName: 营销活动名称 + /// - activityDesc: 营销活动描述 + /// - startTime: 活动开始时间 + /// - endTime: 活动结束时间 + /// - minItemQuantity: 至少购买品项数量 + /// - activityRules: 活动规则说明 + /// - activityImages: 活动图片(JSON格式) + /// - sortOrder: 排序 + /// - activityItems: 营销活动品项明细列表 + /// + /// 成功创建营销活动,返回营销活动ID + /// 请求参数错误 + /// 服务器内部错误 + [HttpPost("CreatePackageInfoAsync")] + public async Task CreatePackageInfoAsync(LqPackageInfoCrInput input) + { + try + { + // 验证活动时间 + if (input.StartTime >= input.EndTime) + { + throw NCCException.Oh("活动开始时间必须小于结束时间"); + } + + // 验证品项明细 + if (input.ActivityItems == null || !input.ActivityItems.Any()) + { + throw NCCException.Oh("营销活动必须包含至少一个品项"); + } + + // 验证至少购买品项数量 + if (input.ActivityItems.Count < input.MinItemQuantity) + { + throw NCCException.Oh($"品项数量不能少于至少购买品项数量({input.MinItemQuantity})"); + } + + // 开始事务 + _db.BeginTran(); + + try + { + // 创建营销活动实体 + var packageInfo = input.Adapt(); + packageInfo.Id = YitIdHelper.NextId().ToString(); + packageInfo.CreateTime = DateTime.Now; + packageInfo.UpdateTime = DateTime.Now; + packageInfo.CreateUser = _userManager.UserId; + packageInfo.UpdateUser = _userManager.UserId; + packageInfo.IsEffective = StatusEnum.有效.GetHashCode(); + // 保存营销活动 + await _db.Insertable(packageInfo).ExecuteCommandAsync(); + // 创建营销活动品项明细 + var packageItemDetails = input.ActivityItems.Select(item => + { + var packageItemDetail = item.Adapt(); + packageItemDetail.Id = YitIdHelper.NextId().ToString(); + packageItemDetail.ActivityId = packageInfo.Id; + packageItemDetail.CreateTime = DateTime.Now; + packageItemDetail.UpdateTime = DateTime.Now; + packageItemDetail.IsEffective = StatusEnum.有效.GetHashCode(); + return packageItemDetail; + }).ToList(); + // 批量保存营销活动品项明细 + if (packageItemDetails.Any()) + { + await _db.Insertable(packageItemDetails).ExecuteCommandAsync(); + } + // 提交事务 + _db.CommitTran(); + + return packageInfo.Id; + } + catch + { + // 回滚事务 + _db.RollbackTran(); + throw; + } + } + catch (Exception ex) + { + throw NCCException.Oh($"添加营销活动失败: {ex.Message}"); + } + } + #endregion + + #region 获取营销活动列表 + /// + /// 获取营销活动列表 + /// + /// 营销活动列表查询输入 + /// 营销活动列表 + /// + /// 获取营销活动列表,支持按活动名称、时间范围等条件筛选 + /// + /// 查询参数说明: + /// - activityName: 活动名称(模糊查询) + /// - activityDesc: 活动描述(模糊查询) + /// - startTimeStart: 活动开始时间范围开始 + /// - startTimeEnd: 活动开始时间范围结束 + /// - endTimeStart: 活动结束时间范围开始 + /// - endTimeEnd: 活动结束时间范围结束 + /// - minItemQuantity: 至少购买品项数量 + /// - createTimeStart: 创建时间范围开始 + /// - createTimeEnd: 创建时间范围结束 + /// + /// 成功获取营销活动列表 + /// 请求参数错误 + /// 服务器内部错误 + [HttpGet("GetPackageInfoListAsync")] + public async Task GetPackageInfoListAsync([FromQuery] LqPackageInfoListQueryInput input) + { + var sidx = input.sidx == null ? "CreateTime" : input.sidx; + var data = await _db.Queryable() + .WhereIF(!string.IsNullOrEmpty(input.ActivityName), w => w.ActivityName.Contains(input.ActivityName)) + .WhereIF(!string.IsNullOrEmpty(input.ActivityDesc), w => w.ActivityDesc.Contains(input.ActivityDesc)) + .WhereIF(input.StartTimeStart.HasValue, w => w.StartTime >= input.StartTimeStart.Value) + .WhereIF(input.StartTimeEnd.HasValue, w => w.StartTime <= input.StartTimeEnd.Value) + .WhereIF(input.EndTimeStart.HasValue, w => w.EndTime >= input.EndTimeStart.Value) + .WhereIF(input.EndTimeEnd.HasValue, w => w.EndTime <= input.EndTimeEnd.Value) + .WhereIF(input.MinItemQuantity.HasValue, w => w.MinItemQuantity == input.MinItemQuantity.Value) + .WhereIF(input.CreateTimeStart.HasValue, w => w.CreateTime >= input.CreateTimeStart.Value) + .WhereIF(input.CreateTimeEnd.HasValue, w => w.CreateTime <= input.CreateTimeEnd.Value) + .Select(it => new LqPackageInfoListOutput + { + Id = it.Id, + ActivityName = it.ActivityName, + ActivityDesc = it.ActivityDesc, + StartTime = it.StartTime, + EndTime = it.EndTime, + MinItemQuantity = it.MinItemQuantity, + ActivityRules = it.ActivityRules, + SortOrder = it.SortOrder, + CreateTime = it.CreateTime + }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize); + return PageResult.SqlSugarPageResult(data); + } + #endregion + + #region 获取营销活动详情 + /// + /// 获取营销活动详情 + /// + /// 营销活动ID + /// 营销活动详情 + [HttpGet("GetPackageInfoDetailAsync")] + public async Task GetPackageInfoDetailAsync(string id) + { + var data = await _db.Queryable().Where(w => w.Id == id).FirstAsync(); + var output = data.Adapt(); + return output; + } + #endregion + + #region 更新营销活动 + /// + /// 更新营销活动 + /// + /// 营销活动更新输入 + /// 营销活动ID + /// + /// 更新营销活动信息,包括活动基本信息和品项明细 + /// + /// 示例请求: + /// ```json + /// { + /// "id": "123456789", + /// "activityName": "春季护肤优惠活动", + /// "activityDesc": "春季护肤特惠活动", + /// "startTime": "2025-03-01T00:00:00", + /// "endTime": "2025-03-31T23:59:59", + /// "minItemQuantity": 2, + /// "activityRules": "活动规则说明", + /// "activityImages": "[\"image1.jpg\"]", + /// "sortOrder": 1, + /// "activityItems": [ + /// { + /// "itemId": "ITEM001", + /// "itemName": "面部清洁", + /// "itemCategory": "基础护理", + /// "itemRemark": "推荐品项" + /// } + /// ] + /// } + /// ``` + /// + /// 参数说明: + /// - id: 营销活动ID(必填) + /// - activityName: 营销活动名称 + /// - activityDesc: 营销活动描述 + /// - startTime: 活动开始时间 + /// - endTime: 活动结束时间 + /// - minItemQuantity: 至少购买品项数量 + /// - activityRules: 活动规则说明 + /// - activityImages: 活动图片(JSON格式) + /// - sortOrder: 排序 + /// - activityItems: 营销活动品项明细列表 + /// + /// 成功更新营销活动,返回营销活动ID + /// 请求参数错误 + /// 营销活动不存在 + /// 服务器内部错误 + [HttpPut("UpdatePackageInfoAsync")] + public async Task UpdatePackageInfoAsync(LqPackageInfoUpInput input) + { + try + { + // 验证活动时间 + if (input.StartTime >= input.EndTime) + { + throw NCCException.Oh("活动开始时间必须小于结束时间"); + } + + // 验证品项明细 + if (input.ActivityItems == null || !input.ActivityItems.Any()) + { + throw NCCException.Oh("营销活动必须包含至少一个品项"); + } + + // 验证至少购买品项数量 + if (input.ActivityItems.Count < input.MinItemQuantity) + { + throw NCCException.Oh($"品项数量不能少于至少购买品项数量({input.MinItemQuantity})"); + } + + // 检查营销活动是否存在 + var existingActivity = await _db.Queryable() + .Where(w => w.Id == input.Id) + .FirstAsync(); + + if (existingActivity == null) + { + throw NCCException.Oh("营销活动不存在"); + } + + // 开始事务 + _db.BeginTran(); + + try + { + // 更新营销活动基本信息 + var updateResult = await _db.Updateable() + .SetColumns(it => new LqPackageInfoEntity + { + ActivityName = input.ActivityName, + ActivityDesc = input.ActivityDesc, + StartTime = input.StartTime, + EndTime = input.EndTime, + MinItemQuantity = input.MinItemQuantity, + ActivityRules = input.ActivityRules, + ActivityImages = input.ActivityImages, + SortOrder = input.SortOrder, + UpdateTime = DateTime.Now, + UpdateUser = _userManager.UserId + }) + .Where(w => w.Id == input.Id) + .ExecuteCommandAsync(); + + if (updateResult <= 0) + { + throw NCCException.Oh("更新营销活动失败"); + } + + // 删除原有的品项明细 + await _db.Deleteable() + .Where(w => w.ActivityId == input.Id) + .ExecuteCommandAsync(); + + // 创建新的品项明细 + var packageItemDetails = input.ActivityItems.Select(item => + { + var packageItemDetail = item.Adapt(); + packageItemDetail.Id = YitIdHelper.NextId().ToString(); + packageItemDetail.ActivityId = input.Id; + packageItemDetail.CreateTime = DateTime.Now; + packageItemDetail.UpdateTime = DateTime.Now; + packageItemDetail.IsEffective = 1; + return packageItemDetail; + }).ToList(); + + // 批量保存新的品项明细 + if (packageItemDetails.Any()) + { + await _db.Insertable(packageItemDetails).ExecuteCommandAsync(); + } + + // 提交事务 + _db.CommitTran(); + + return input.Id; + } + catch + { + // 回滚事务 + _db.RollbackTran(); + throw; + } + } + catch (Exception ex) + { + throw NCCException.Oh($"更新营销活动失败: {ex.Message}"); + } + } + #endregion + + #region 标记删除营销活动 + /// + /// 标记删除营销活动 + /// + /// 营销活动ID + /// 营销活动ID + [HttpDelete("MarkDeletePackageInfoAsync")] + public async Task MarkDeletePackageInfoAsync(string id) + { + var entity = await _db.Queryable().Where(w => w.Id == id).FirstAsync(); + if (entity == null) + { + throw NCCException.Oh("营销活动不存在"); + } + entity.IsEffective = StatusEnum.无效.GetHashCode(); + await _db.Updateable(entity).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new LqPackageItemDetailEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.ActivityId == id).ExecuteCommandAsync(); + return id; + } + #endregion + + #region 获取当前时间有效的活动 + /// + /// 获取当前时间有效的活动 + /// + /// 当前时间有效的活动 + [HttpGet("GetCurrentTimeEffectiveActivityAsync")] + public async Task GetCurrentTimeEffectiveActivityAsync() + { + var data = await _db.Queryable().Where(w => w.StartTime <= DateTime.Now && w.EndTime >= DateTime.Now && w.IsEffective == StatusEnum.有效.GetHashCode()).ToListAsync(); + var output = data.Adapt>(); + return output; + } + #endregion + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs index c06d665..79439e8 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs @@ -175,6 +175,7 @@ namespace NCC.Extend.LqXhHyhk DateTime? startHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.First()) : null; DateTime? endHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.Last()) : null; var data = await _db.Queryable() + .WhereIF(!string.IsNullOrEmpty(input.keyword), p => p.Hymc.Contains(input.keyword) || p.Hyzh.Contains(input.keyword) || p.MemberPhone.Contains(input.keyword)) .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) .WhereIF(!string.IsNullOrEmpty(input.md), p => p.Md.Equals(input.md)) .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh)) @@ -183,9 +184,6 @@ namespace NCC.Extend.LqXhHyhk .WhereIF(!string.IsNullOrEmpty(input.hyzh), p => p.Hyzh.Contains(input.hyzh)) .WhereIF(!string.IsNullOrEmpty(input.hymc), p => p.Hymc.Contains(input.hymc)) .WhereIF(!string.IsNullOrEmpty(input.gklx), p => p.Gklx.Equals(input.gklx)) - // 注意:xfje 和 sgfy 现在是 decimal 类型,不支持字符串模糊查询 - // .WhereIF(!string.IsNullOrEmpty(input.xfje), p => SqlFunc.ToString(p.Xfje).Contains(input.xfje)) - // .WhereIF(!string.IsNullOrEmpty(input.sgfy), p => SqlFunc.ToString(p.Sgfy).Contains(input.sgfy)) .WhereIF(!string.IsNullOrEmpty(input.sfykjb), p => p.Sfykjb.Equals(input.sfykjb)) .WhereIF(queryHksj != null, p => p.Hksj >= new DateTime(startHksj.ToDate().Year, startHksj.ToDate().Month, startHksj.ToDate().Day, 0, 0, 0)) .WhereIF(queryHksj != null, p => p.Hksj <= new DateTime(endHksj.ToDate().Year, endHksj.ToDate().Month, endHksj.ToDate().Day, 23, 59, 59)) @@ -205,6 +203,7 @@ namespace NCC.Extend.LqXhHyhk sfykjb = it.Sfykjb, hksj = it.Hksj, czry = it.Czry, + memberPhone = it.MemberPhone, }) .MergeTable() .OrderBy(sidx + " " + input.sort) @@ -262,6 +261,7 @@ namespace NCC.Extend.LqXhHyhk var entity = input.Adapt(); entity.Id = YitIdHelper.NextId().ToString(); entity.Czry = _userManager.UserId; + entity.MemberPhone = _db.Queryable().Where(w => w.Id == entity.Hy).First().Sjh; entity.CreateTime = DateTime.Now; try { diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs deleted file mode 100644 index 340b36b..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs +++ /dev/null @@ -1,237 +0,0 @@ -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.Extend.Entitys.Dto.LqYxhdfa; -using NCC.Extend.Entitys.lq_yxhdfa; -using NCC.Extend.Interfaces.LqYxhdfa; -using NCC.FriendlyException; -using NCC.JsonSerialization; -using SqlSugar; -using Yitter.IdGenerator; - -namespace NCC.Extend.LqYxhdfa -{ - /// - /// 营销活动方案服务 - /// - [ApiDescriptionSettings(Tag = "Extend", Name = "LqYxhdfa", Order = 200)] - [Route("api/Extend/[controller]")] - public class LqYxhdfaService : ILqYxhdfaService, IDynamicApiController, ITransient - { - private readonly ISqlSugarRepository _lqYxhdfaRepository; - private readonly SqlSugarScope _db; - private readonly IUserManager _userManager; - - /// - /// 初始化一个类型的新实例 - /// - public LqYxhdfaService(ISqlSugarRepository lqYxhdfaRepository, IUserManager userManager) - { - _lqYxhdfaRepository = lqYxhdfaRepository; - _db = _lqYxhdfaRepository.Context; - _userManager = userManager; - } - - /// - /// 获取营销活动方案 - /// - /// 参数 - /// - [HttpGet("{id}")] - public async Task GetInfo(string id) - { - var entity = await _db.Queryable().FirstAsync(p => p.Id == id); - var output = entity.Adapt(); - return output; - } - - /// - /// 获取营销活动方案列表 - /// - /// 请求参数 - /// - [HttpGet("")] - public async Task GetList([FromQuery] LqYxhdfaListQueryInput input) - { - var sidx = input.sidx == null ? "id" : input.sidx; - var data = await _db.Queryable() - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) - .WhereIF(!string.IsNullOrEmpty(input.yxhdbh), p => p.Yxhdbh.Contains(input.yxhdbh)) - .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc)) - .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj)) - .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej)) - .Select(it => new LqYxhdfaListOutput - { - id = it.Id, - yxhdbh = it.Yxhdbh, - hdmc = it.Hdmc, - zsj = it.Zsj, - jej = it.Jej, - }) - .MergeTable() - .OrderBy(sidx + " " + input.sort) - .ToPagedListAsync(input.currentPage, input.pageSize); - return PageResult.SqlSugarPageResult(data); - } - - /// - /// 新建营销活动方案 - /// - /// 参数 - /// - [HttpPost("")] - public async Task Create([FromBody] LqYxhdfaCrInput input) - { - var userInfo = await _userManager.GetUserInfo(); - 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); - } - - /// - /// 获取营销活动方案无分页列表 - /// - /// 请求参数 - /// - [NonAction] - public async Task GetNoPagingList([FromQuery] LqYxhdfaListQueryInput input) - { - var sidx = input.sidx == null ? "id" : input.sidx; - var data = await _db.Queryable() - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) - .WhereIF(!string.IsNullOrEmpty(input.yxhdbh), p => p.Yxhdbh.Contains(input.yxhdbh)) - .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc)) - .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj)) - .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej)) - .Select(it => new LqYxhdfaListOutput - { - id = it.Id, - yxhdbh = it.Yxhdbh, - hdmc = it.Hdmc, - zsj = it.Zsj, - jej = it.Jej, - }) - .MergeTable() - .OrderBy(sidx + " " + input.sort) - .ToListAsync(); - return data; - } - - /// - /// 导出营销活动方案 - /// - /// 请求参数 - /// - [HttpGet("Actions/Export")] - public async Task Export([FromQuery] LqYxhdfaListQueryInput input) - { - var userInfo = await _userManager.GetUserInfo(); - var exportData = new List(); - if (input.dataType == 0) - { - var data = Clay.Object(await this.GetList(input)); - exportData = data.Solidify>().list; - } - else - { - exportData = await this.GetNoPagingList(input); - } - List paramList = - "[{\"value\":\"方案编号\",\"field\":\"id\"},{\"value\":\"营销活动编号\",\"field\":\"yxhdbh\"},{\"value\":\"活动名称\",\"field\":\"hdmc\"},{\"value\":\"张数奖\",\"field\":\"zsj\"},{\"value\":\"金额奖\",\"field\":\"jej\"},]".ToList(); - ExcelConfig excelconfig = new ExcelConfig(); - excelconfig.FileName = "营销活动方案.xls"; - excelconfig.HeadFont = "微软雅黑"; - excelconfig.HeadPoint = 10; - excelconfig.IsAllSizeColumn = true; - excelconfig.ColumnModel = new List(); - List selectKeyList = input.selectKey.Split(',').ToList(); - foreach (var item in selectKeyList) - { - var isExist = paramList.Find(p => p.field == item); - if (isExist != null) - { - excelconfig.ColumnModel.Add(new ExcelColumnModel() { Column = isExist.field, ExcelColumn = isExist.value }); - } - } - 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") }; - return output; - } - - /// - /// 批量删除营销活动方案 - /// - /// 主键数组 - /// - [HttpPost("batchRemove")] - public async Task BatchRemove([FromBody] List ids) - { - var entitys = await _db.Queryable().In(it => it.Id, ids).ToListAsync(); - if (entitys.Count > 0) - { - try - { - //开启事务 - _db.BeginTran(); - //批量删除营销活动方案 - await _db.Deleteable().In(d => d.Id, ids).ExecuteCommandAsync(); - //关闭事务 - _db.CommitTran(); - } - catch (Exception) - { - //回滚事务 - _db.RollbackTran(); - throw NCCException.Oh(ErrorCode.COM1002); - } - } - } - - /// - /// 更新营销活动方案 - /// - /// 主键 - /// 参数 - /// - [HttpPut("{id}")] - public async Task Update(string id, [FromBody] LqYxhdfaUpInput input) - { - var entity = input.Adapt(); - var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); - if (!(isOk > 0)) - throw NCCException.Oh(ErrorCode.COM1001); - } - - /// - /// 删除营销活动方案 - /// - /// - [HttpDelete("{id}")] - public async Task Delete(string id) - { - 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); - } - } -} -- libgit2 0.21.4