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