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/antis-ncc-admin/src/views/lqXhmxb/ExportBox.vue b/antis-ncc-admin/src/views/lqXhmxb/ExportBox.vue deleted file mode 100644 index 4fc5c07..0000000 --- a/antis-ncc-admin/src/views/lqXhmxb/ExportBox.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - \ No newline at end of file diff --git a/antis-ncc-admin/src/views/lqXhmxb/Form.vue b/antis-ncc-admin/src/views/lqXhmxb/Form.vue deleted file mode 100644 index 83c9ce4..0000000 --- a/antis-ncc-admin/src/views/lqXhmxb/Form.vue +++ /dev/null @@ -1,197 +0,0 @@ - - diff --git a/antis-ncc-admin/src/views/lqXhmxb/index.vue b/antis-ncc-admin/src/views/lqXhmxb/index.vue deleted file mode 100644 index c1d73d9..0000000 --- a/antis-ncc-admin/src/views/lqXhmxb/index.vue +++ /dev/null @@ -1,319 +0,0 @@ - - \ No newline at end of file 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..f527054 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 @@ -10,56 +10,62 @@ namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo /// /// 主键 /// - public string Id { get; set; } + public string id { get; set; } /// /// 扣减类型 /// - public string DeductType { get; set; } + public string deductType { get; set; } /// /// 扣减类型名称 /// - public string DeductTypeName { get; set; } + public string deductTypeName { get; set; } /// /// 扣减关联ID /// - public string DeductId { get; set; } + public string deductId { get; set; } /// /// 开单id /// - public string BillingId { get; set; } + public string billingId { get; set; } /// /// 合计金额 /// - public decimal? Amount { get; set; } + public decimal? amount { get; set; } /// /// 是否有效 /// - public int? IsEffective { get; set; } + public int? isEffective { get; set; } /// /// 单价 /// - public decimal? UnitPrice { get; set; } + public decimal? unitPrice { get; set; } /// /// 品项名称 /// - public string ItemName { get; set; } + public string itemName { get; set; } /// /// 品项id /// - public string ItemId { get; set; } + public string itemId { get; set; } + + /// + /// 项目数量 + /// + public decimal? projectNumber { get; set; } /// /// 创建时间 /// - public DateTime? CreateTime { get; set; } + 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/LqKdQkbj/LqKdQkbjUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtRecordQueryInput.cs index 1f35e7c..71c1066 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjUpInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtRecordQueryInput.cs @@ -1,17 +1,18 @@ -using System; using System.ComponentModel.DataAnnotations; +using NCC.Common.Filter; -namespace NCC.Extend.Entitys.Dto.LqKdQkbj +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb { /// - /// 开单欠款补缴记录更新输入 + /// 门店欠款记录查询输入 /// - public class LqKdQkbjUpInput : LqKdQkbjCrInput + public class DebtRecordQueryInput : PageInputBase { /// - /// 主键 + /// 门店ID /// - [Required(ErrorMessage = "主键不能为空")] - public string Id { get; set; } + [Required(ErrorMessage = "门店ID不能为空")] + [Display(Name = "门店ID", Description = "查询欠款记录的门店ID")] + public string StoreId { 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..507cf03 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; } @@ -156,6 +161,16 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string cancelRefRemarks { get; set; } /// + /// 补缴开单ID + /// + public string supplementBillingId { get; set; } + + /// + /// 补缴金额 + /// + public decimal supplementAmount { get; set; } + + /// /// 扣款信息 /// public List lqKdKdjlbDeductList { 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..f3c8a38 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,32 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public string F_FIleUrl { get; set; } /// + /// 是否有效 + /// + public int IsEffective { get; set; } + + /// + /// 补缴开单ID + /// + public string SupplementBillingId { get; set; } + + /// + /// 补缴金额 + /// + public decimal SupplementAmount { get; set; } + + /// + /// 已缴欠款 + /// + public decimal PaidDebt { get; set; } + + + /// + /// 作废关联备注 + /// + public string CancelRefRemarks { get; set; } + + /// /// 健康师业绩 /// public List lqKdJksyjList { get; set; } @@ -165,5 +192,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..bce8df5 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 @@ -53,6 +53,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb public decimal qk { get; set; } /// + /// 已缴欠款 + /// + public decimal PaidDebt { get; set; } + + /// /// 储扣方式 /// public string ckfs { get; set; } @@ -141,5 +146,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/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..b35ae72 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/LqKdQkbj/LqKdQkbjCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjCrInput.cs deleted file mode 100644 index 072114e..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjCrInput.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; - -namespace NCC.Extend.Entitys.Dto.LqKdQkbj -{ - /// - /// 开单欠款补缴记录创建输入 - /// - public class LqKdQkbjCrInput - { - /// - /// 开单ID - /// - [Required(ErrorMessage = "开单ID不能为空")] - public string BillingId { get; set; } - - /// - /// 补缴金额 - /// - [Required(ErrorMessage = "补缴金额不能为空")] - [Range(0.01, 999999.99, ErrorMessage = "补缴金额必须在0.01到999999.99之间")] - public decimal PaymentAmount { get; set; } - - /// - /// 补缴方式 - /// - [Required(ErrorMessage = "补缴方式不能为空")] - public string PaymentMethod { get; set; } - - /// - /// 补缴时间 - /// - [Required(ErrorMessage = "补缴时间不能为空")] - public DateTime PaymentTime { get; set; } - - /// - /// 补缴操作人 - /// - public string PaymentUser { get; set; } - - /// - /// 补缴账户 - /// - public string PaymentAccount { get; set; } - - /// - /// 补缴凭证号 - /// - public string PaymentReference { get; set; } - - /// - /// 补缴备注 - /// - [StringLength(500, ErrorMessage = "补缴备注不能超过500个字符")] - public string Remark { get; set; } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListQueryInput.cs deleted file mode 100644 index 8f45140..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListQueryInput.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; - -namespace NCC.Extend.Entitys.Dto.LqKdQkbj -{ - /// - /// 开单欠款补缴记录列表查询输入 - /// - public class LqKdQkbjListQueryInput - { - /// - /// 开单ID - /// - public string BillingId { get; set; } - - /// - /// 补缴方式 - /// - public string PaymentMethod { get; set; } - - /// - /// 补缴操作人 - /// - public string PaymentUser { get; set; } - - /// - /// 最小补缴金额 - /// - public decimal? MinPaymentAmount { get; set; } - - /// - /// 最大补缴金额 - /// - public decimal? MaxPaymentAmount { get; set; } - - /// - /// 开始补缴时间 - /// - public DateTime? StartPaymentTime { get; set; } - - /// - /// 结束补缴时间 - /// - public DateTime? EndPaymentTime { get; set; } - - /// - /// 是否有效 - /// - public int? IsEffective { get; set; } - - /// - /// 补缴凭证号 - /// - public string PaymentReference { 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/LqKdQkbj/LqKdQkbjInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs index 3437564..7943edd 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs @@ -1,66 +1,57 @@ using System; +using System.ComponentModel.DataAnnotations; -namespace NCC.Extend.Entitys.Dto.LqKdQkbj +namespace NCC.Extend.Entitys.Dto.LqPackageInfo { /// - /// 开单欠款补缴记录详情输出 + /// 套餐信息详情输出 /// - public class LqKdQkbjInfoOutput + public class LqPackageInfoInfoOutput { /// - /// 主键 + /// 套餐ID /// public string Id { get; set; } /// - /// 开单ID + /// 套餐编码 /// - public string BillingId { get; set; } + public string PackageCode { get; set; } /// - /// 补缴金额 + /// 套餐名称 /// - public decimal PaymentAmount { get; set; } + public string PackageName { get; set; } /// - /// 补缴方式 + /// 套餐描述 /// - public string PaymentMethod { get; set; } + public string PackageDesc { get; set; } /// - /// 补缴方式名称 + /// 套餐价格 /// - public string PaymentMethodName { get; set; } + public decimal PackagePrice { get; set; } /// - /// 补缴时间 + /// 优惠价格 /// - public DateTime PaymentTime { get; set; } + public decimal? DiscountPrice { get; set; } /// - /// 补缴操作人 + /// 使用状态 /// - public string PaymentUser { get; set; } + public string Status { get; set; } /// - /// 补缴操作人姓名 + /// 上架状态 /// - public string PaymentUserName { get; set; } + public string ShelfStatus { get; set; } /// - /// 补缴账户 + /// 套餐类型 /// - public string PaymentAccount { get; set; } - - /// - /// 补缴凭证号 - /// - public string PaymentReference { get; set; } - - /// - /// 补缴备注 - /// - public string Remark { get; set; } + public string PackageType { get; set; } /// /// 创建时间 @@ -73,8 +64,13 @@ namespace NCC.Extend.Entitys.Dto.LqKdQkbj public DateTime UpdateTime { get; set; } /// - /// 是否有效 + /// 创建人 + /// + public string CreateUser { get; set; } + + /// + /// 更新人 /// - public int IsEffective { 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/LqKdQkbj/LqKdQkbjListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs index 0e6a76d..1cc2b2f 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs @@ -1,71 +1,56 @@ using System; -namespace NCC.Extend.Entitys.Dto.LqKdQkbj +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail { /// - /// 开单欠款补缴记录列表输出 + /// 套餐品项明细详情输出 /// - public class LqKdQkbjListOutput + public class LqPackageItemDetailInfoOutput { /// - /// 主键 + /// 明细ID /// public string Id { get; set; } /// - /// 开单ID + /// 套餐ID /// - public string BillingId { get; set; } + public string PackageId { get; set; } /// - /// 补缴金额 + /// 品项ID /// - public decimal PaymentAmount { get; set; } + public string ItemId { get; set; } /// - /// 补缴方式 + /// 品项数量 /// - public string PaymentMethod { get; set; } + public int ItemQuantity { get; set; } /// - /// 补缴方式名称 + /// 品项金额 /// - public string PaymentMethodName { get; set; } + public decimal ItemAmount { get; set; } /// - /// 补缴时间 + /// 品项备注 /// - public DateTime PaymentTime { get; set; } + public string ItemRemark { get; set; } /// - /// 补缴操作人 + /// 排序 /// - public string PaymentUser { get; set; } + public int SortOrder { get; set; } /// - /// 补缴操作人姓名 - /// - public string PaymentUserName { get; set; } - - /// - /// 补缴账户 - /// - public string PaymentAccount { get; set; } - - /// - /// 补缴凭证号 - /// - public string PaymentReference { get; set; } - - /// - /// 补缴备注 + /// 创建时间 /// - public string Remark { get; set; } + public DateTime CreateTime { get; set; } /// - /// 创建时间 + /// 更新时间 /// - public DateTime CreateTime { get; set; } + public DateTime UpdateTime { 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/LqPackageItemDetail/LqPackageItemDetailListOutput.cs index b1d7bfc..a23050f 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs @@ -1,48 +1,45 @@ -using NCC.Common.Filter; -using System.Collections.Generic; +using System; -namespace NCC.Extend.Entitys.Dto.LqYxhdfa +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail { /// - /// 营销活动方案列表查询输入 + /// 套餐品项明细列表输出 /// - public class LqYxhdfaListQueryInput : PageInputBase + public class LqPackageItemDetailListOutput { /// - /// 选择导出数据key + /// 明细ID /// - public string selectKey { get; set; } + public string Id { get; set; } /// - /// + /// 套餐ID /// - public int dataType { get; set; } - + public string PackageId { get; set; } /// - /// 方案编号 + /// 品项ID /// - public string id { get; set; } - + public string ItemId { get; set; } + /// - /// 营销活动编号 + /// 品项数量 /// - public string yxhdbh { get; set; } - + public int ItemQuantity { get; set; } + /// - /// 活动名称 + /// 品项金额 /// - public string hdmc { get; set; } - + public decimal ItemAmount { get; set; } + /// - /// 张数奖 + /// 排序 /// - public string zsj { get; set; } - + public int SortOrder { get; set; } + /// - /// 金额奖 + /// 创建时间 /// - public string jej { get; set; } - + public DateTime CreateTime { 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/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs index 200c105..67f0d80 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs @@ -1,35 +1,35 @@ -using System; +using System; -namespace NCC.Extend.Entitys.Dto.LqYxhdfa +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail { /// - /// 营销活动方案输出参数 + /// 套餐品项明细列表查询输入 /// - public class LqYxhdfaInfoOutput + public class LqPackageItemDetailListQueryInput { /// - /// 方案编号 + /// 套餐ID /// - public string id { get; set; } + public string PackageId { get; set; } /// - /// 营销活动编号 + /// 品项ID /// - public string yxhdbh { get; set; } + public string ItemId { get; set; } /// - /// 活动名称 + /// 是否有效 /// - public string hdmc { get; set; } + public int? IsEffective { get; set; } /// - /// 张数奖 + /// 创建时间开始 /// - public string zsj { get; set; } + public DateTime? CreateTimeStart { get; set; } /// - /// 金额奖 + /// 创建时间结束 /// - public string jej { 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/LqTkjlb/LqTkjlbInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs index cf9527e..9bc591e 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs @@ -82,5 +82,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// 拓客活动名称 /// public string eventName { get; set; } + + /// + /// 是否有效 + /// + public int isEffective { get; set; } } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs index 3d2a112..762f432 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs @@ -92,5 +92,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb /// 拓客活动名称 /// public string eventName { get; set; } + + /// + /// 是否有效 + /// + public int isEffective { 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/LqXhHyhk/LqXhHyhkMemberCardUsageOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageOutput.cs new file mode 100644 index 0000000..8b2a0f4 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageOutput.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; + +namespace NCC.Extend.Entitys.Dto.LqXhHyhk +{ + /// + /// 会员耗卡记录输出 + /// + public class LqXhHyhkMemberCardUsageOutput + { + /// + /// 耗卡记录ID + /// + public string Id { get; set; } + + /// + /// 会员ID + /// + public string MemberId { get; set; } + + /// + /// 会员姓名 + /// + public string MemberName { get; set; } + + /// + /// 门店ID + /// + public string StoreId { get; set; } + + /// + /// 门店名称 + /// + public string StoreName { get; set; } + + /// + /// 耗卡时间 + /// + public DateTime? UsageDate { get; set; } + + /// + /// 消费金额 + /// + public decimal? TotalAmount { get; set; } + + /// + /// 备注 + /// + public string Remarks { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 品项明细列表 + /// + public List ItemDetails { get; set; } = new List(); + } + + /// + /// 会员耗卡记录品项明细 + /// + public class LqXhHyhkMemberCardUsageItemDetail + { + /// + /// 明细ID + /// + public string Id { get; set; } + + /// + /// 品项ID + /// + public string ItemId { get; set; } + + /// + /// 品项名称 + /// + public string ItemName { get; set; } + + /// + /// 单价 + /// + public decimal? UnitPrice { get; set; } + + /// + /// 项目次数 + /// + public int? ProjectNumber { get; set; } + + /// + /// 合计金额 + /// + public decimal? TotalPrice { get; set; } + + /// + /// 来源类型 + /// + public string SourceType { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageQueryInput.cs new file mode 100644 index 0000000..5de9d47 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageQueryInput.cs @@ -0,0 +1,32 @@ +using NCC.Common.Filter; +using System.ComponentModel.DataAnnotations; + +namespace NCC.Extend.Entitys.Dto.LqXhHyhk +{ + /// + /// 会员耗卡记录查询输入 + /// + public class LqXhHyhkMemberCardUsageQueryInput : PageInputBase + { + /// + /// 会员ID + /// + [Required(ErrorMessage = "会员ID不能为空")] + public string MemberId { get; set; } + + /// + /// 门店ID + /// + public string StoreId { get; set; } + + /// + /// 开始时间 + /// + public System.DateTime? StartTime { get; set; } + + /// + /// 结束时间 + /// + public System.DateTime? EndTime { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhJksyjQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhJksyjQueryInput.cs new file mode 100644 index 0000000..659c006 --- /dev/null +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhJksyjQueryInput.cs @@ -0,0 +1,36 @@ +using System; +using System.ComponentModel.DataAnnotations; +using NCC.Common.Filter; + +namespace NCC.Extend.Entitys.Dto.LqXhHyhk +{ + /// + /// 健康师业绩查询输入 + /// + public class LqXhJksyjQueryInput : PageInputBase + { + /// + /// 开单记录ID + /// + [Display(Name = "开单记录ID", Description = "关联的开单记录ID")] + public string Glkdbh { get; set; } + + /// + /// 健康师ID + /// + [Display(Name = "健康师ID", Description = "健康师用户ID,可选")] + public string JksId { get; set; } + + /// + /// 开始时间 + /// + [Display(Name = "开始时间", Description = "查询开始时间")] + public DateTime? StartTime { get; set; } + + /// + /// 结束时间 + /// + [Display(Name = "结束时间", Description = "查询结束时间")] + public DateTime? EndTime { get; set; } + } +} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhJksyj/LqXhJksyjInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhJksyj/LqXhJksyjInfoOutput.cs index 0e73104..c696d88 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhJksyj/LqXhJksyjInfoOutput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhJksyj/LqXhJksyjInfoOutput.cs @@ -11,27 +11,27 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj /// 业绩编号 /// public string id { get; set; } - + /// /// 关联开单编号 /// public string glkdbh { get; set; } - + /// /// 健康师 /// public string jks { get; set; } - + /// /// 健康师姓名 /// public string jksxm { get; set; } - + /// /// 健康师账号 /// public string jkszh { get; set; } - + /// /// 健康师业绩 /// @@ -43,6 +43,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj public DateTime? yjsj { get; set; } /// + /// 门店 + /// + public string storeName { get; set; } + + /// /// 金三角id /// public string jsjId { get; set; } @@ -61,5 +66,16 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj /// 耗卡品项次数 /// public decimal? kdpxNumber { get; set; } + + /// + /// 会员id + /// + public string memberId { get; set; } + + + /// + /// 会员名称 + /// + public string memberName { get; set; } } } \ No newline at end of file diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbCrInput.cs deleted file mode 100644 index f1979ed..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbCrInput.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Dto.LqXhmxb -{ - /// - /// 消耗明细表修改输入参数 - /// - public class LqXhmxbCrInput - { - /// - /// 消耗编号 - /// - public string id { get; set; } - - /// - /// 门店编号 - /// - public string mdbh { get; set; } - - /// - /// 门店名称 - /// - public string mdmc { get; set; } - - /// - /// 部门编号 - /// - public string bmbh { get; set; } - - /// - /// 部门名称 - /// - public string bmmc { get; set; } - - /// - /// 员工编号 - /// - public string ygbh { get; set; } - - /// - /// 员工名称 - /// - public string ygmc { get; set; } - - /// - /// 项目数 - /// - public string xms { get; set; } - - /// - /// 消耗 - /// - public string xh { get; set; } - - /// - /// 手工 - /// - public string sg { get; set; } - - /// - /// 其它手工1 - /// - public string qtsg1 { get; set; } - - /// - /// 其它手工2 - /// - public string qtsg2 { get; set; } - - /// - /// 其它手工3 - /// - public string qtsg3 { get; set; } - - /// - /// 手工合计 - /// - public string sghj { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbInfoOutput.cs deleted file mode 100644 index 40e5812..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbInfoOutput.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Dto.LqXhmxb -{ - /// - /// 消耗明细表输出参数 - /// - public class LqXhmxbInfoOutput - { - /// - /// 消耗编号 - /// - public string id { get; set; } - - /// - /// 门店编号 - /// - public string mdbh { get; set; } - - /// - /// 门店名称 - /// - public string mdmc { get; set; } - - /// - /// 部门编号 - /// - public string bmbh { get; set; } - - /// - /// 部门名称 - /// - public string bmmc { get; set; } - - /// - /// 员工编号 - /// - public string ygbh { get; set; } - - /// - /// 员工名称 - /// - public string ygmc { get; set; } - - /// - /// 项目数 - /// - public string xms { get; set; } - - /// - /// 消耗 - /// - public string xh { get; set; } - - /// - /// 手工 - /// - public string sg { get; set; } - - /// - /// 其它手工1 - /// - public string qtsg1 { get; set; } - - /// - /// 其它手工2 - /// - public string qtsg2 { get; set; } - - /// - /// 其它手工3 - /// - public string qtsg3 { get; set; } - - /// - /// 手工合计 - /// - public string sghj { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListOutput.cs deleted file mode 100644 index 76da088..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListOutput.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; - -namespace NCC.Extend.Entitys.Dto.LqXhmxb -{ - /// - /// 消耗明细表输入参数 - /// - public class LqXhmxbListOutput - { - /// - /// 消耗编号 - /// - public string id { get; set; } - - /// - /// 门店编号 - /// - public string mdbh { get; set; } - - /// - /// 门店名称 - /// - public string mdmc { get; set; } - - /// - /// 部门编号 - /// - public string bmbh { get; set; } - - /// - /// 部门名称 - /// - public string bmmc { get; set; } - - /// - /// 员工编号 - /// - public string ygbh { get; set; } - - /// - /// 员工名称 - /// - public string ygmc { get; set; } - - /// - /// 项目数 - /// - public string xms { get; set; } - - /// - /// 消耗 - /// - public string xh { get; set; } - - /// - /// 手工 - /// - public string sg { get; set; } - - /// - /// 其它手工1 - /// - public string qtsg1 { get; set; } - - /// - /// 其它手工2 - /// - public string qtsg2 { get; set; } - - /// - /// 其它手工3 - /// - public string qtsg3 { get; set; } - - /// - /// 手工合计 - /// - public string sghj { get; set; } - - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListQueryInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListQueryInput.cs deleted file mode 100644 index e59cc72..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListQueryInput.cs +++ /dev/null @@ -1,93 +0,0 @@ -using NCC.Common.Filter; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Dto.LqXhmxb -{ - /// - /// 消耗明细表列表查询输入 - /// - public class LqXhmxbListQueryInput : PageInputBase - { - /// - /// 选择导出数据key - /// - public string selectKey { get; set; } - - /// - /// - /// - public int dataType { get; set; } - - - /// - /// 消耗编号 - /// - public string id { get; set; } - - /// - /// 门店编号 - /// - public string mdbh { get; set; } - - /// - /// 门店名称 - /// - public string mdmc { get; set; } - - /// - /// 部门编号 - /// - public string bmbh { get; set; } - - /// - /// 部门名称 - /// - public string bmmc { get; set; } - - /// - /// 员工编号 - /// - public string ygbh { get; set; } - - /// - /// 员工名称 - /// - public string ygmc { get; set; } - - /// - /// 项目数 - /// - public string xms { get; set; } - - /// - /// 消耗 - /// - public string xh { get; set; } - - /// - /// 手工 - /// - public string sg { get; set; } - - /// - /// 其它手工1 - /// - public string qtsg1 { get; set; } - - /// - /// 其它手工2 - /// - public string qtsg2 { get; set; } - - /// - /// 其它手工3 - /// - public string qtsg3 { get; set; } - - /// - /// 手工合计 - /// - public string sghj { 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/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/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..6734291 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,125 @@ 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")] - 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..8f8bfc7 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 @@ -102,15 +103,15 @@ namespace NCC.Extend.Entitys.lq_hytk_jksyj public string F_ModifyUser { get; set; } /// - /// 删除标记 + /// 退卡品相表id /// - [SugarColumn(ColumnName = "F_DeleteMark")] - public int? F_DeleteMark { get; set; } + [SugarColumn(ColumnName = "F_CardReturn")] + public string CardReturn { get; set; } /// - /// 退卡品项明细id + /// 是否有效 /// - [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..d5b6a6a 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 @@ -95,16 +96,17 @@ namespace NCC.Extend.Entitys.lq_hytk_kjbsyj [SugarColumn(ColumnName = "F_ModifyUser")] public string F_ModifyUser { get; set; } - /// - /// 删除标记 - /// - [SugarColumn(ColumnName = "F_DeleteMark")] - public int? F_DeleteMark { get; set; } /// - /// 退卡品项明细id + /// 退卡品项明细ID /// [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..051cc2b 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 @@ -25,7 +25,7 @@ namespace NCC.Extend.Entitys.lq_hytk_mx public string RefundInfoId { get; set; } /// - /// 退卡记录Id + /// 开单品项明细表id /// [SugarColumn(ColumnName = "F_BillingItemId")] public string BillingItemId { get; set; } @@ -68,12 +68,6 @@ namespace NCC.Extend.Entitys.lq_hytk_mx public int ProjectNumber { get; set; } /// - /// 是否有效 - /// - [SugarColumn(ColumnName = "F_IsEnabled")] - public int IsEnabled { get; set; } = StatusEnum.有效.GetHashCode(); - - /// /// 来源类型 /// [SugarColumn(ColumnName = "F_SourceType")] @@ -110,9 +104,9 @@ namespace NCC.Extend.Entitys.lq_hytk_mx public string ModifyUser { get; set; } /// - /// 删除标记 + /// 是否有效 /// - [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..fe97609 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,29 @@ 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; } + + /// + /// 补缴开单ID + /// + [SugarColumn(ColumnName = "F_SupplementBillingId")] + public string SupplementBillingId { get; set; } + + /// + /// 补缴金额 + /// + [SugarColumn(ColumnName = "F_SupplementAmount")] + public decimal SupplementAmount { 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_khxx/LqKhxxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs index b6427f1..dd4f453 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs @@ -1,5 +1,6 @@ using System; using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; namespace NCC.Extend.Entitys.lq_khxx @@ -140,5 +141,11 @@ namespace NCC.Extend.Entitys.lq_khxx [SugarColumn(ColumnName = "F_SubHealthUser")] public string SubHealthUser { 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_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_kd_qkbj/LqKdQkbjEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs index 952ddc8..ef09761 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_package_item_detail/LqPackageItemDetailEntity.cs @@ -1,69 +1,51 @@ -using System; using NCC.Common.Const; using SqlSugar; +using System; -namespace NCC.Extend.Entitys.lq_kd_qkbj +namespace NCC.Extend.Entitys.lq_package_item_detail { /// - /// 开单欠款补缴记录表 + /// 营销活动品项明细表 /// - [SugarTable("lq_kd_qkbj")] + [SugarTable("lq_marketing_activity_item_detail")] [Tenant(ClaimConst.TENANT_ID)] - public class LqKdQkbjEntity + public class LqPackageItemDetailEntity { /// - /// 主键 + /// 明细ID /// [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] public string Id { get; set; } /// - /// 开单ID - /// - [SugarColumn(ColumnName = "F_BillingId")] - public string BillingId { get; set; } - - /// - /// 补缴金额 - /// - [SugarColumn(ColumnName = "F_PaymentAmount")] - public decimal PaymentAmount { get; set; } - - /// - /// 补缴方式 - /// - [SugarColumn(ColumnName = "F_PaymentMethod")] - public string PaymentMethod { get; set; } - - /// - /// 补缴时间 + /// 营销活动ID /// - [SugarColumn(ColumnName = "F_PaymentTime")] - public DateTime PaymentTime { get; set; } + [SugarColumn(ColumnName = "F_ActivityId")] + public string ActivityId { get; set; } /// - /// 补缴操作人 + /// 品项ID /// - [SugarColumn(ColumnName = "F_PaymentUser")] - public string PaymentUser { get; set; } + [SugarColumn(ColumnName = "F_ItemId")] + public string ItemId { get; set; } /// - /// 补缴账户 + /// 品项名称 /// - [SugarColumn(ColumnName = "F_PaymentAccount")] - public string PaymentAccount { get; set; } + [SugarColumn(ColumnName = "F_ItemName")] + public string ItemName { get; set; } /// - /// 补缴凭证号 + /// 品项分类 /// - [SugarColumn(ColumnName = "F_PaymentReference")] - public string PaymentReference { get; set; } + [SugarColumn(ColumnName = "F_ItemCategory")] + public string ItemCategory { get; set; } /// - /// 补缴备注 + /// 品项备注 /// - [SugarColumn(ColumnName = "F_Remark")] - public string Remark { get; set; } + [SugarColumn(ColumnName = "F_ItemRemark")] + public string ItemRemark { get; set; } /// /// 创建时间 diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs index e668938..76f24c6 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs @@ -1,4 +1,6 @@ using System; +using NCC.Common.Enum; +using NCC.Extend.Entitys.Enum; using SqlSugar; namespace NCC.Extend.Entitys.lq_tkjlb @@ -92,5 +94,6 @@ namespace NCC.Extend.Entitys.lq_tkjlb /// [SugarColumn(ColumnName = "F_CreateTime")] public DateTime CreateTime { get; set; } = DateTime.Now; + } } 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..6ed3e3c 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 @@ -1,5 +1,6 @@ using System; using NCC.Common.Const; +using NCC.Extend.Entitys.Enum; using SqlSugar; namespace NCC.Extend.Entitys.lq_xh_hyhk @@ -48,6 +49,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")] @@ -112,6 +119,6 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk /// 是否有效 /// [SugarColumn(ColumnName = "F_IsEffective")] - public int? IsEffective { get; set; } = 1; + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode(); } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xhmxb/LqXhmxbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xhmxb/LqXhmxbEntity.cs deleted file mode 100644 index 565fafa..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xhmxb/LqXhmxbEntity.cs +++ /dev/null @@ -1,99 +0,0 @@ -using NCC.Common.Const; -using SqlSugar; -using System; - -namespace NCC.Extend.Entitys.lq_xhmxb -{ - /// - /// 消耗明细表 - /// - [SugarTable("lq_xhmxb")] - [Tenant(ClaimConst.TENANT_ID)] - public class LqXhmxbEntity - { - /// - /// 消耗编号 - /// - [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] - public string Id { get; set; } - - /// - /// 门店编号 - /// - [SugarColumn(ColumnName = "mdbh")] - public string Mdbh { get; set; } - - /// - /// 门店名称 - /// - [SugarColumn(ColumnName = "mdmc")] - public string Mdmc { get; set; } - - /// - /// 部门编号 - /// - [SugarColumn(ColumnName = "bmbh")] - public string Bmbh { get; set; } - - /// - /// 部门名称 - /// - [SugarColumn(ColumnName = "bmmc")] - public string Bmmc { get; set; } - - /// - /// 员工编号 - /// - [SugarColumn(ColumnName = "ygbh")] - public string Ygbh { get; set; } - - /// - /// 员工名称 - /// - [SugarColumn(ColumnName = "ygmc")] - public string Ygmc { get; set; } - - /// - /// 项目数 - /// - [SugarColumn(ColumnName = "xms")] - public string Xms { get; set; } - - /// - /// 消耗 - /// - [SugarColumn(ColumnName = "xh")] - public string Xh { get; set; } - - /// - /// 手工 - /// - [SugarColumn(ColumnName = "sg")] - public string Sg { get; set; } - - /// - /// 其它手工1 - /// - [SugarColumn(ColumnName = "qtsg1")] - public string Qtsg1 { get; set; } - - /// - /// 其它手工2 - /// - [SugarColumn(ColumnName = "qtsg2")] - public string Qtsg2 { get; set; } - - /// - /// 其它手工3 - /// - [SugarColumn(ColumnName = "qtsg3")] - public string Qtsg3 { get; set; } - - /// - /// 手工合计 - /// - [SugarColumn(ColumnName = "sghj")] - public string Sghj { get; set; } - - } -} \ No newline at end of file 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/LqXhmxbMapper.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqXhmxbMapper.cs deleted file mode 100644 index c4d624a..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqXhmxbMapper.cs +++ /dev/null @@ -1,14 +0,0 @@ -using NCC.Common.Helper; -using NCC.Extend.Entitys.Dto.LqXhmxb; -using Mapster; -using System.Collections.Generic; - -namespace NCC.Extend.Entitys.Mapper.LqXhmxb -{ - public class Mapper : IRegister - { - public void Register(TypeAdapterConfig config) - { - } - } -} 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/ILqXhmxbService.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqXhmxbService.cs deleted file mode 100644 index 85b079f..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqXhmxbService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace NCC.Extend.Interfaces.LqXhmxb -{ - public interface ILqXhmxbService - { - } -} \ No newline at end of file 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.Entitys/Dto/LqXhmxb/LqXhmxbUpInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs index 987c911..561bad6 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbUpInput.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs @@ -1,17 +1,18 @@ -using System; -using System.Collections.Generic; +using NCC.Extend.Entitys.Dto.LqPackageInfo; +using System.Threading.Tasks; -namespace NCC.Extend.Entitys.Dto.LqXhmxb +namespace NCC.Extend.Interfaces.LqPackageInfo { /// - /// 消耗明细表更新输入参数 + /// 营销活动服务接口 /// - public class LqXhmxbUpInput : LqXhmxbCrInput + public interface ILqPackageInfoService { /// - /// 消耗编号 + /// 添加营销活动 /// - public string id { get; set; } - + /// 营销活动创建输入 + /// 营销活动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..245b345 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) @@ -198,7 +200,7 @@ namespace NCC.Extend.LqHytkHytk entity.Id = YitIdHelper.NextId().ToString(); entity.F_CreateTime = DateTime.Now; entity.F_CreateUser = userInfo.userId; - entity.F_DeleteMark = 0; + entity.IsEffective = StatusEnum.有效.GetHashCode(); entity.Czry = userInfo.userId; try @@ -227,15 +229,14 @@ namespace NCC.Extend.LqHytkHytk BillingItemId = item.billingItemId, CreateTime = DateTime.Now, CreateUser = userInfo.userId, - DeleteMark = 0, Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, Tkje = item.tkje, ProjectNumber = item.F_ProjectNumber ?? 1, - 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 +245,24 @@ 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, + CardReturn = lqHytkMxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), + } ); } } @@ -287,8 +287,8 @@ namespace NCC.Extend.LqHytkHytk F_tkpxNumber = ikjbs_tem.F_tkpxNumber, F_CreateTime = DateTime.Now, F_CreateUser = userInfo.userId, - F_DeleteMark = 0, CardReturn = lqHytkMxEntity.Id, + IsEffective = StatusEnum.有效.GetHashCode(), } ); } @@ -380,13 +380,11 @@ namespace NCC.Extend.LqHytkHytk CreateTime = DateTime.Now, CreateUser = userInfo.userId, Tksj = input.tksj, - DeleteMark = 0, Px = item.px, Pxmc = item.pxmc, Pxjg = item.pxjg, Tkje = item.tkje, ProjectNumber = item.F_ProjectNumber ?? 1, - IsEnabled = item.F_IsEnabled ?? 1, SourceType = item.F_SourceType, TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), }; @@ -413,7 +411,6 @@ namespace NCC.Extend.LqHytkHytk F_tkpxNumber = ijks_tem.F_tkpxNumber, F_CreateTime = DateTime.Now, F_CreateUser = userInfo.userId, - F_DeleteMark = 0, } ); } @@ -439,7 +436,6 @@ namespace NCC.Extend.LqHytkHytk F_tkpxNumber = ikjbs_tem.F_tkpxNumber, F_CreateTime = DateTime.Now, F_CreateUser = userInfo.userId, - F_DeleteMark = 0, } ); } @@ -474,20 +470,42 @@ namespace NCC.Extend.LqHytkHytk } #endregion - #region 删除退卡信息 + #region 作废退卡信息 /// - /// 删除退卡信息(逻辑删除) + /// 作废退卡信息 /// /// 主键 /// - [HttpDelete("{id}")] - public async Task Delete(string id) + [HttpPut("VoidRefundCardInfo/{id}")] + public async Task VoidRefundCardInfo(string id) { - var entity = await _db.Queryable().FirstAsync(p => p.Id == id); - if (entity != null) + try { - entity.F_DeleteMark = 1; - await _lqHytkHytkRepository.UpdateAsync(entity); + var entity = await _db.Queryable().FirstAsync(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()); + if (entity == null) + { + throw NCCException.Oh("退卡信息不存在或已被作废"); + } + // 开启事务 + _db.BeginTran(); + // 更新主表 + entity.IsEffective = StatusEnum.无效.GetHashCode(); + entity.F_ModifyTime = DateTime.Now; + await _db.Updateable(entity).ExecuteCommandAsync(); + // 更新明细表 + 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(); + // 提交事务 + _db.CommitTran(); + return entity; + } + catch (Exception ex) + { + _db.RollbackTran(); + throw NCCException.Oh($"删除退卡信息失败: {ex.Message}"); } } #endregion @@ -590,10 +608,10 @@ namespace NCC.Extend.LqHytkHytk try { // 1. 查询主表信息 - var entity = await _db.Queryable().FirstAsync(p => p.Id == id); + var entity = await _db.Queryable().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync(); if (entity == null) { - throw NCCException.Oh(ErrorCode.COM1005, "退卡记录不存在"); + throw NCCException.Oh(ErrorCode.COM1005, "退卡记录不存在或已作废"); } var output = entity.Adapt(); @@ -621,7 +639,6 @@ namespace NCC.Extend.LqHytkHytk pxjg = mx.Pxjg, tkje = mx.Tkje, projectNumber = mx.ProjectNumber, - isEnabled = mx.IsEnabled, sourceType = mx.SourceType, totalPrice = mx.TotalPrice, }; diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs index 5f9fa48..73c1f35 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs @@ -17,8 +17,10 @@ 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; @@ -26,6 +28,7 @@ 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_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 +121,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 +143,7 @@ namespace NCC.Extend.LqKdKdjlb totalPrice = pxmx.TotalPrice, actualPrice = pxmx.ActualPrice, remark = pxmx.Remark, + isEffective = pxmx.IsEffective, }; // 关联该品项的健康师业绩 @@ -147,6 +154,7 @@ namespace NCC.Extend.LqKdKdjlb var kjbsyjForPx = lqKdKjbsyjList.Where(k => k.Kdpxid == pxmx.Id).ToList(); pxmxOutput.lqKdKjbsyjList = kjbsyjForPx.Adapt>(); + pxmxOutputList.Add(pxmxOutput); } @@ -156,6 +164,8 @@ namespace NCC.Extend.LqKdKdjlb // 7. 设置全局业绩列表(用于兼容性,但主要使用品项关联的业绩) output.lqKdJksyjList = lqKdJksyjList.Adapt>(); output.lqKdKjbsyjList = lqKdKjbsyjList.Adapt>(); + // 8. 设置扣款信息列表 + output.lqKdDeductList = lqKdDeductList.Adapt>(); return output; } @@ -182,6 +192,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 +219,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 +248,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,25 +279,49 @@ namespace NCC.Extend.LqKdKdjlb //开启事务 _db.BeginTran(); //判断是否有作废关联id - if (!string.IsNullOrEmpty(input.cancelRefId)) + //暂时先不需要 + // 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(); + // } + + //判断是否有补缴开单ID + if (!string.IsNullOrEmpty(input.supplementBillingId)) { - //查询作废关联id - var cancelRefEntity = await _db.Queryable().FirstAsync(p => p.Id == input.cancelRefId); - if (cancelRefEntity == null) + //查询补缴开单ID + var supplementBillingEntity = await _db.Queryable().FirstAsync(p => p.Id == input.supplementBillingId); + if (supplementBillingEntity == null || supplementBillingEntity.IsEffective == StatusEnum.无效.GetHashCode()) { - throw NCCException.Oh("作废关联id不存在"); + throw NCCException.Oh("补缴开单记录不存在或已作废"); } - //将作废关联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(); + //然后对之前的开单表的补缴金额进行累加 + //需要判断补缴金额是否超过欠款金额,只记录应缴金额 + var supplementAmount = supplementBillingEntity.Qk - supplementBillingEntity.PaidDebt; + entity.PaidDebt += input.supplementAmount > supplementAmount ? supplementAmount : input.supplementAmount; + await _db.Updateable(entity).ExecuteCommandAsync(); } //新增开单记录表记录 @@ -336,6 +374,7 @@ namespace NCC.Extend.LqKdKdjlb ActualPrice = item.actualPrice, Remark = item.remark, IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, }; allPxmxEntities.Add(lqKdPxmxEntity); @@ -358,6 +397,7 @@ namespace NCC.Extend.LqKdKdjlb Jsj_id = ijks_tem.jsj_id, Kdpxid = lqKdPxmxEntity.Id, IsEffective = StatusEnum.有效.GetHashCode(), + ActivityId = input.activityId, }); } } @@ -367,19 +407,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, + } ); } } @@ -1042,9 +1082,9 @@ namespace NCC.Extend.LqKdKdjlb } #endregion - #region 修改开单记录,不做删除,仅健康师业绩、科技部老师业绩信息 + #region 修改开单记录 /// - /// 修改开单记录,不做删除,仅健康师业绩、科技部老师业绩信息 + /// 修改开单记录 /// /// /// 更新开单记录及其关联的品项明细、健康师业绩、科技部老师业绩信息 @@ -1090,152 +1130,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(); } @@ -1252,57 +1299,90 @@ namespace NCC.Extend.LqKdKdjlb /// /// 作废开单记录 /// - /// 开单记录主键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 +1562,156 @@ namespace NCC.Extend.LqKdKdjlb } } #endregion + + #region 根据门店获取该门店的欠款记录 + /// + /// 根据门店获取该门店的欠款记录 + /// + /// 查询参数 + /// 分页的欠款记录 + /// + /// 获取指定门店的欠款记录,考虑已缴欠款情况,支持分页 + /// + /// 示例请求: + /// ```json + /// { + /// "storeId": "门店ID", + /// "currentPage": 1, + /// "pageSize": 10, + /// "sidx": "Kdrq", + /// "sort": "desc" + /// } + /// ``` + /// + /// 参数说明: + /// - storeId: 门店ID,必填 + /// - currentPage: 当前页码 + /// - pageSize: 每页大小 + /// - sidx: 排序字段,默认按开单日期 + /// - sort: 排序方式,默认降序 + /// + /// 返回说明: + /// - 只返回仍有欠款的记录(总欠款 > 已缴欠款) + /// - 包含开单编号、客户信息、欠款金额、已缴金额等 + /// + /// 成功返回分页的欠款记录列表 + /// 门店ID不能为空 + /// 服务器错误 + [HttpGet("GetDebtRecordByStoreId")] + public async Task GetDebtRecordByStoreId([FromQuery] DebtRecordQueryInput input) + { + try + { + if (string.IsNullOrEmpty(input.StoreId)) + { + throw NCCException.Oh("门店ID不能为空"); + } + var sidx = string.IsNullOrEmpty(input.sidx) ? "Kdrq" : input.sidx; + var sort = string.IsNullOrEmpty(input.sort) ? "desc" : input.sort; + // 获取该门店的欠款记录,考虑已缴欠款情况 + // 只返回仍有欠款的记录:总欠款 > 已缴欠款 + var debtRecords = await _db.Queryable() + .Where(p => p.Djmd == input.StoreId && p.Qk > p.PaidDebt && p.IsEffective == StatusEnum.有效.GetHashCode()) + .Select(it => new LqKdKdjlbListOutput + { + id = it.Id, + djmd = it.Djmd, + jsj = it.Jsj, + kdrq = it.Kdrq, + gjlx = it.Gjlx, + hgjg = it.Hgjg, + zdyj = it.Zdyj, + sfyj = it.Sfyj, + qk = it.Qk, + ckfs = it.Ckfs, + PaidDebt = it.PaidDebt, + fkfs = it.Fkfs, + fkyy = it.Fkyy, + fkpd = it.Fkpd, + khly = it.Khly, + tjr = it.Tjr, + deductAmount = it.DeductAmount, + sfskdd = it.Sfskdd, + jj = it.Jj, + bz = it.Bz, + kdhy = it.Kdhy, + kdhyc = it.Kdhyc, + kdhysjh = it.Kdhysjh, + jksyj = it.Jksyj, + 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 + " " + sort) + .ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(debtRecords); + } + 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, "该开单记录已经作废"); + } + // 判断是否有对应的补缴记录 + var qkbjList = await _db.Queryable().Where(p => p.SupplementBillingId == billingId).ToListAsync(); + if (qkbjList.Any()) + { + return (false, "该开单记录有对应的补缴记录,不能进行操作"); + } + // 查询开单记录下的品项明细ID列表 + var pxmxIdList = await _db.Queryable().Where(p => p.Glkdbh == billingId).Select(p => p.Id).Distinct().ToListAsync(); + // 判断是否有对应的消耗记录 + 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 a30ca78..9cbab3b 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() && o.Sfyj > 0).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,11 +581,12 @@ 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 { BillingItemId = x.DeductId, - TotalDeduct = SqlFunc.AggregateSum(x.Amount) + TotalDeduct = SqlFunc.AggregateSum(x.ProjectNumber) }) .ToListAsync(); @@ -609,6 +609,8 @@ namespace NCC.Extend.LqKhxx { item.RemainingCount = item.TotalPurchased - item.ConsumedCount - item.RefundedCount - item.DeductCount; } + //过滤剩余数量为0的品项,先暂时为不等于 0 ,因为现在有问题,会出现负数,后面再修改 + remainingItems = remainingItems.Where(item => item.RemainingCount != 0).ToList(); return new MemberRemainingItemsOutput { MemberId = memberId, 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/LqTkjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs index 767a81d..21c6d61 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs @@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqTkjlb; using NCC.Extend.Entitys.Enum; using NCC.Extend.Entitys.lq_event; using NCC.Extend.Entitys.lq_eventuser; +using NCC.Extend.Entitys.lq_kd_kdjlb; using NCC.Extend.Entitys.lq_khxx; using NCC.Extend.Entitys.lq_mdxx; using NCC.Extend.Entitys.lq_tkjlb; @@ -80,7 +81,7 @@ namespace NCC.Extend.LqTkjlb teamName = p.TeamName, eventId = p.EventId, eventName = SqlFunc.Subqueryable().Where(e => e.Id == p.EventId).Select(e => e.EventName), - storeName = SqlFunc.Subqueryable().Where(u => u.Id == p.StoreId).Select(u => u.Dm), + storeName = SqlFunc.Subqueryable().Where(u => u.Id == p.StoreId).Select(u => u.Dm) }) .FirstAsync(); @@ -185,8 +186,9 @@ namespace NCC.Extend.LqTkjlb MemberInfo.Khmc = entity.CustomerName; MemberInfo.Sjh = input.customerPhone; // 设置手机号 MemberInfo.Khlx = MemberTypeEnum.线索.GetHashCode().ToString(); - MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss"); + MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); MemberInfo.Jdqd = "19.9卡"; + //找到input.expansionUserId的用户信息 var userInfo = await _db.Queryable().Where(u => u.Id == input.expansionUserId).FirstAsync(); //判断 岗位是否为健康师,如果是健康师,则设置拓客人员是健康师 @@ -523,5 +525,7 @@ namespace NCC.Extend.LqTkjlb return result.OrderByDescending(t => t.totalCount).ToList(); } #endregion + + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs index c06d665..e738f67 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs @@ -20,6 +20,7 @@ using NCC.Extend.Entitys.Dto.LqXhHyhk; using NCC.Extend.Entitys.Dto.LqXhJksyj; using NCC.Extend.Entitys.Dto.LqXhKjbsyj; using NCC.Extend.Entitys.Dto.LqXhPxmx; +using NCC.Extend.Entitys.Enum; using NCC.Extend.Entitys.lq_kd_kdjlb; using NCC.Extend.Entitys.lq_kd_pxmx; using NCC.Extend.Entitys.lq_khxx; @@ -175,6 +176,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 +185,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 +204,7 @@ namespace NCC.Extend.LqXhHyhk sfykjb = it.Sfykjb, hksj = it.Hksj, czry = it.Czry, + memberPhone = it.MemberPhone, }) .MergeTable() .OrderBy(sidx + " " + input.sort) @@ -262,6 +262,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 { @@ -521,6 +522,12 @@ namespace NCC.Extend.LqXhHyhk { //开启事务 _db.BeginTran(); + //查询记录 + var LqXhHyhkInfo = await _db.Queryable().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync(); + if (LqXhHyhkInfo == null) + { + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在或已作废"); + } entity.UpdateTime = DateTime.Now; //更新会员耗卡记录 await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); @@ -528,57 +535,31 @@ namespace NCC.Extend.LqXhHyhk //清空原有数据 await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); await _db.Deleteable().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); - - // 注意:品项明细表不做删除操作,只更新或新增 - // await _db.Deleteable().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync(); - + await _db.Deleteable().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync(); // 收集所有需要插入的实体,然后批量插入 var allPxmxEntities = new List(); var allJksyjEntities = new List(); var allKjbsyjEntities = new List(); - // 处理品项明细列表 if (input.lqXhPxmxList != null && input.lqXhPxmxList.Any()) { foreach (var item in input.lqXhPxmxList) { - // 检查品项明细是否已存在 - var existingPxmx = await _db.Queryable() - .Where(p => p.Id == item.id) - .FirstAsync(); - - LqXhPxmxEntity lqXhPxmxEntity; - if (existingPxmx != null) - { - // 更新现有记录 - lqXhPxmxEntity = existingPxmx; - // 注意:LqXhPxmxEntity 没有 UpdateTime 字段 - lqXhPxmxEntity.MemberId = entity.Hy; - lqXhPxmxEntity.ProjectNumber = item.projectNumber ?? 1; - lqXhPxmxEntity.TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)); - lqXhPxmxEntity.Px = item.px; - lqXhPxmxEntity.Pxmc = item.pxmc; - lqXhPxmxEntity.Pxjg = item.pxjg; - lqXhPxmxEntity.SourceType = item.sourceType; - } - else + // 创建品项明细实体 + var lqXhPxmxEntity = new LqXhPxmxEntity { - // 创建新记录 - lqXhPxmxEntity = new LqXhPxmxEntity - { - Id = YitIdHelper.NextId().ToString(), - ConsumeInfoId = entity.Id, - BillingItemId = item.billingItemId, - CreateTIme = DateTime.Now, - MemberId = entity.Hy, - ProjectNumber = item.projectNumber ?? 1, - TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)), - Px = item.px, - Pxmc = item.pxmc, - Pxjg = item.pxjg, - SourceType = item.sourceType, - }; - } + Id = YitIdHelper.NextId().ToString(), + ConsumeInfoId = input.id, + BillingItemId = item.billingItemId, + CreateTIme = DateTime.Now, + MemberId = entity.Hy, + ProjectNumber = item.projectNumber ?? 1, + TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)), + Px = item.px, + Pxmc = item.pxmc, + Pxjg = item.pxjg, + SourceType = item.sourceType, + }; allPxmxEntities.Add(lqXhPxmxEntity); // 收集该品项关联的健康师业绩 @@ -590,7 +571,7 @@ namespace NCC.Extend.LqXhHyhk new LqXhJksyjEntity { Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, + Glkdbh = input.id, Jks = ijks_tem.jks, Jksxm = ijks_tem.jksxm, Jkszh = ijks_tem.jkszh, @@ -614,7 +595,7 @@ namespace NCC.Extend.LqXhHyhk new LqXhKjbsyjEntity { Id = YitIdHelper.NextId().ToString(), - Glkdbh = entity.Id, + Glkdbh = input.id, Kjbls = ikjbs_tem.kjbls, Kjblsxm = ikjbs_tem.kjblsxm, Kjblszh = ikjbs_tem.kjblszh, @@ -629,22 +610,10 @@ namespace NCC.Extend.LqXhHyhk } } } - // 批量插入品项明细 if (allPxmxEntities.Any()) { - // 分别处理插入和更新 - var existingEntities = allPxmxEntities.Where(e => !string.IsNullOrEmpty(e.Id)).ToList(); - var newEntities = allPxmxEntities.Where(e => string.IsNullOrEmpty(e.Id)).ToList(); - - if (existingEntities.Any()) - { - await _db.Updateable(existingEntities).ExecuteCommandAsync(); - } - if (newEntities.Any()) - { - await _db.Insertable(newEntities).ExecuteCommandAsync(); - } + await _db.Insertable(allPxmxEntities).ExecuteCommandAsync(); } // 批量插入健康师业绩 if (allJksyjEntities.Any()) @@ -656,8 +625,7 @@ namespace NCC.Extend.LqXhHyhk { await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); } - - //关闭事务 + // 提交事务 _db.CommitTran(); } catch (Exception) @@ -707,5 +675,198 @@ namespace NCC.Extend.LqXhHyhk } } #endregion + + #region 查询健康师消耗业绩列表 + /// + /// 查询健康师业绩列表 + /// + /// 查询参数 + /// 分页的健康师业绩列表 + /// + /// 查询健康师业绩记录,支持分页和时间筛选 + /// + /// 示例请求: + /// ```json + /// { + /// "glkdbh": "123456789", + /// "jksId": "健康师ID", + /// "startTime": "2025-01-01T00:00:00", + /// "endTime": "2025-01-31T23:59:59", + /// "currentPage": 1, + /// "pageSize": 10, + /// "sidx": "yjsj", + /// "sort": "desc" + /// } + /// ``` + /// + /// 参数说明: + /// - glkdbh: 开单记录ID(可选) + /// - jksId: 健康师ID(可选) + /// - startTime: 查询开始时间(可选) + /// - endTime: 查询结束时间(可选) + /// - currentPage: 当前页码 + /// - pageSize: 每页大小 + /// + /// 成功获取健康师业绩列表 + /// 请求参数错误 + /// 服务器内部错误 + [HttpGet("GetJksyjList")] + public async Task GetJksyjList([FromQuery] LqXhJksyjQueryInput input) + { + try + { + var sidx = string.IsNullOrEmpty(input.sidx) ? "yjsj" : input.sidx; + var sort = string.IsNullOrEmpty(input.sort) ? "desc" : input.sort; + var data = await _db.Queryable() + .WhereIF(!string.IsNullOrEmpty(input.Glkdbh), w => w.Glkdbh == input.Glkdbh) + .WhereIF(!string.IsNullOrEmpty(input.JksId), w => w.Jks == input.JksId) + .WhereIF(input.StartTime.HasValue, w => w.Yjsj >= input.StartTime.Value) + .WhereIF(input.EndTime.HasValue, w => w.Yjsj <= input.EndTime.Value) + .Where(w => w.IsEffective == StatusEnum.有效.GetHashCode()) + .Select(it => new LqXhJksyjInfoOutput + { + id = it.Id, + glkdbh = it.Glkdbh, + jks = it.Jks, + jksxm = it.Jksxm, + jkszh = it.Jkszh, + jksyj = it.Jksyj.ToString(), + yjsj = it.Yjsj, + jsjId = it.JsjId, + kdpxid = it.Kdpxid, + laborCost = it.LaborCost, + kdpxNumber = it.KdpxNumber, + storeName = SqlFunc.Subqueryable().Where(w => w.Id == it.Glkdbh).Select(w => w.Mdmc), + memberId = SqlFunc.Subqueryable().Where(w => w.Id == it.Glkdbh).Select(w => w.Hy), + memberName = SqlFunc.Subqueryable().Where(w => w.Id == it.Glkdbh).Select(w => w.Hymc), + }) + .MergeTable() + .OrderBy(sidx + " " + sort) + .ToPagedListAsync(input.currentPage, input.pageSize); + + return PageResult.SqlSugarPageResult(data); + } + catch (Exception ex) + { + throw NCCException.Oh($"获取健康师业绩列表失败: {ex.Message}"); + } + } + #endregion + + #region 耗卡记录作废 + /// + /// 耗卡记录作废 + /// + /// 耗卡记录ID + /// + [HttpPut("CancelCardUsageRecord/{id}")] + public async Task CancelCardUsageRecord(string id) + { + try + { + //开启事务 + _db.BeginTran(); + //查询消耗记录表信息 + var LqhyhkInfo = await _db.Queryable().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync(); + if (LqhyhkInfo == null) + { + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在或已作废"); + } + //更新耗卡记录状态 + LqhyhkInfo.IsEffective = StatusEnum.无效.GetHashCode(); + await _db.Updateable(LqhyhkInfo).ExecuteCommandAsync(); + //更新品项明细表状态 + await _db.Updateable().SetColumns(it => new LqXhPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.ConsumeInfoId == id).ExecuteCommandAsync(); + //更新健康师业绩表状态 + await _db.Updateable().SetColumns(it => new LqXhJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Glkdbh == id).ExecuteCommandAsync(); + //更新科技部老师业绩表状态 + await _db.Updateable().SetColumns(it => new LqXhKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Glkdbh == id).ExecuteCommandAsync(); + //关闭事务 + _db.CommitTran(); + return LqhyhkInfo; + } + catch (Exception) + { + //回滚事务 + _db.RollbackTran(); + throw NCCException.Oh(ErrorCode.COM1001); + } + } + #endregion + + #region 获取某个会员的耗卡记录 + /// + /// 获取某个会员的耗卡记录(分页) + /// + /// 查询参数 + /// + [HttpGet("GetMemberCardUsageRecord")] + public async Task GetMemberCardUsageRecord([FromQuery] LqXhHyhkMemberCardUsageQueryInput input) + { + try + { + // 参数验证 + if (string.IsNullOrEmpty(input.MemberId)) + { + throw NCCException.Oh("会员ID不能为空"); + } + // 分页查询会员耗卡记录 + var data = await _db.Queryable() + .Where(p => p.Hy == input.MemberId && p.IsEffective == StatusEnum.有效.GetHashCode()) + .WhereIF(!string.IsNullOrEmpty(input.StoreId), p => p.Md == input.StoreId) + .WhereIF(input.StartTime.HasValue, p => p.Hksj >= input.StartTime.Value) + .WhereIF(input.EndTime.HasValue, p => p.Hksj <= input.EndTime.Value) + .Select(it => new LqXhHyhkMemberCardUsageOutput + { + Id = it.Id, + MemberId = it.Hy, + MemberName = it.Hymc, + StoreId = it.Md, + StoreName = it.Mdmc, + UsageDate = it.Hksj, + TotalAmount = it.Xfje, + Remarks = it.SignatureFile, + CreateTime = it.CreateTime + }) + .MergeTable() + .OrderBy((input.sidx == null ? "UsageDate" : input.sidx) + " " + (input.sort ?? "desc")) + .ToPagedListAsync(input.currentPage, input.pageSize); + + // 获取当前页耗卡记录ID,直接查询对应的品项明细 + if (data.list.Any()) + { + var recordIds = data.list.Select(r => r.Id).ToList(); + // 批量查询当前页记录的所有品项明细 + var itemDetails = await _db.Queryable().Where(w => recordIds.Contains(w.ConsumeInfoId) && w.IsEffective == StatusEnum.有效.GetHashCode()).ToListAsync(); + // 按耗卡记录ID分组明细 + var detailsGrouped = itemDetails.GroupBy(d => d.ConsumeInfoId).ToDictionary(g => g.Key, g => g.ToList()); + // 为每个记录添加品项明细 + foreach (var record in data.list) + { + if (detailsGrouped.ContainsKey(record.Id)) + { + record.ItemDetails = detailsGrouped[record.Id].Select(detail => new LqXhHyhkMemberCardUsageItemDetail + { + Id = detail.Id, + ItemId = detail.Px, + ItemName = detail.Pxmc, + UnitPrice = detail.Pxjg, + ProjectNumber = detail.ProjectNumber, + TotalPrice = detail.TotalPrice, + SourceType = detail.SourceType, + CreateTime = detail.CreateTIme + }).ToList(); + } + } + } + return PageResult.SqlSugarPageResult(data); + } + catch (Exception ex) + { + throw NCCException.Oh($"获取会员耗卡记录失败: {ex.Message}"); + } + } + #endregion + } } diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs deleted file mode 100644 index 02af8f3..0000000 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs +++ /dev/null @@ -1,273 +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.LqXhmxb; -using NCC.Extend.Entitys.lq_xhmxb; -using NCC.Extend.Interfaces.LqXhmxb; -using NCC.FriendlyException; -using NCC.JsonSerialization; -using SqlSugar; -using Yitter.IdGenerator; - -namespace NCC.Extend.LqXhmxb -{ - /// - /// 消耗明细表服务 - /// - [ApiDescriptionSettings(Tag = "Extend", Name = "LqXhmxb", Order = 200)] - [Route("api/Extend/[controller]")] - public class LqXhmxbService : ILqXhmxbService, IDynamicApiController, ITransient - { - private readonly ISqlSugarRepository _lqXhmxbRepository; - private readonly SqlSugarScope _db; - private readonly IUserManager _userManager; - - /// - /// 初始化一个类型的新实例 - /// - public LqXhmxbService(ISqlSugarRepository lqXhmxbRepository, IUserManager userManager) - { - _lqXhmxbRepository = lqXhmxbRepository; - _db = _lqXhmxbRepository.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] LqXhmxbListQueryInput 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.mdbh), p => p.Mdbh.Contains(input.mdbh)) - .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc)) - .WhereIF(!string.IsNullOrEmpty(input.bmbh), p => p.Bmbh.Contains(input.bmbh)) - .WhereIF(!string.IsNullOrEmpty(input.bmmc), p => p.Bmmc.Contains(input.bmmc)) - .WhereIF(!string.IsNullOrEmpty(input.ygbh), p => p.Ygbh.Contains(input.ygbh)) - .WhereIF(!string.IsNullOrEmpty(input.ygmc), p => p.Ygmc.Contains(input.ygmc)) - .WhereIF(!string.IsNullOrEmpty(input.xms), p => p.Xms.Contains(input.xms)) - .WhereIF(!string.IsNullOrEmpty(input.xh), p => p.Xh.Contains(input.xh)) - .WhereIF(!string.IsNullOrEmpty(input.sg), p => p.Sg.Contains(input.sg)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg1), p => p.Qtsg1.Contains(input.qtsg1)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) - .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) - .Select(it => new LqXhmxbListOutput - { - id = it.Id, - mdbh = it.Mdbh, - mdmc = it.Mdmc, - bmbh = it.Bmbh, - bmmc = it.Bmmc, - ygbh = it.Ygbh, - ygmc = it.Ygmc, - xms = it.Xms, - xh = it.Xh, - sg = it.Sg, - qtsg1 = it.Qtsg1, - qtsg2 = it.Qtsg2, - qtsg3 = it.Qtsg3, - sghj = it.Sghj, - }) - .MergeTable() - .OrderBy(sidx + " " + input.sort) - .ToPagedListAsync(input.currentPage, input.pageSize); - return PageResult.SqlSugarPageResult(data); - } - - /// - /// 新建消耗明细表 - /// - /// 参数 - /// - [HttpPost("")] - public async Task Create([FromBody] LqXhmxbCrInput 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] LqXhmxbListQueryInput 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.mdbh), p => p.Mdbh.Contains(input.mdbh)) - .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc)) - .WhereIF(!string.IsNullOrEmpty(input.bmbh), p => p.Bmbh.Contains(input.bmbh)) - .WhereIF(!string.IsNullOrEmpty(input.bmmc), p => p.Bmmc.Contains(input.bmmc)) - .WhereIF(!string.IsNullOrEmpty(input.ygbh), p => p.Ygbh.Contains(input.ygbh)) - .WhereIF(!string.IsNullOrEmpty(input.ygmc), p => p.Ygmc.Contains(input.ygmc)) - .WhereIF(!string.IsNullOrEmpty(input.xms), p => p.Xms.Contains(input.xms)) - .WhereIF(!string.IsNullOrEmpty(input.xh), p => p.Xh.Contains(input.xh)) - .WhereIF(!string.IsNullOrEmpty(input.sg), p => p.Sg.Contains(input.sg)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg1), p => p.Qtsg1.Contains(input.qtsg1)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) - .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) - .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) - .Select(it => new LqXhmxbListOutput - { - id = it.Id, - mdbh = it.Mdbh, - mdmc = it.Mdmc, - bmbh = it.Bmbh, - bmmc = it.Bmmc, - ygbh = it.Ygbh, - ygmc = it.Ygmc, - xms = it.Xms, - xh = it.Xh, - sg = it.Sg, - qtsg1 = it.Qtsg1, - qtsg2 = it.Qtsg2, - qtsg3 = it.Qtsg3, - sghj = it.Sghj, - }) - .MergeTable() - .OrderBy(sidx + " " + input.sort) - .ToListAsync(); - return data; - } - - /// - /// 导出消耗明细表 - /// - /// 请求参数 - /// - [HttpGet("Actions/Export")] - public async Task Export([FromQuery] LqXhmxbListQueryInput 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\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList(); - ExcelConfig excelconfig = new ExcelConfig(); - excelconfig.FileName = "消耗明细表.xls"; - excelconfig.HeadFont = "微软雅黑"; - 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] LqXhmxbUpInput 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); - } - } -} 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); - } - } -} diff --git a/netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs b/netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs index 876fff8..47c6766 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs @@ -46,8 +46,9 @@ namespace NCC.Extend.Utils var customerName = GetCustomerName(entity.kdhy); sb.AppendLine($"⏩顾客姓名:{customerName}"); // 健康师:王维 - var healthTeachers = HealthInstructorNames.TrimEnd(','); - sb.AppendLine($"⏩健康师:{healthTeachers}"); + //这里需要把HealthInstructorNames去重,HealthInstructorNames格式为张三、李四、张三、 + var healthTeachers = HealthInstructorNames.Split(',', StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray(); + sb.AppendLine($"⏩健康师:{string.Join("、", healthTeachers)}"); // 活动方案:532工程 sb.AppendLine($"⏩活动方案:{entity.pxxx ?? "无"}");