Commit ce74473f3d7c863116a80ccf7eac786a6fab757c

Authored by “wangming”
1 parent 24642f43

feat: 新增门店类别枚举和耗卡反馈功能

- 新增StoreTypeEnum门店类别枚举(200平门店、旗舰店)
- 新增耗卡反馈功能(lq_xh_feedback表及相关实体、DTO、Service)
- 优化开单记录和耗卡记录列表,增加品项明细返回
- 完善会员开单记录查询接口,支持分页和时间筛选
- 优化耗卡记录作废功能,增加备注参数
- 修复排序规则冲突问题
- 完善各种实体和DTO的字段定义
Showing 39 changed files with 1065 additions and 294 deletions
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs
... ... @@ -95,5 +95,10 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
95 95 /// 退卡品项明细列表
96 96 /// </summary>
97 97 public List<LqHytkMxCrInput> lqHytkMxList { get; set; }
  98 +
  99 + /// <summary>
  100 + /// 签名文件
  101 + /// </summary>
  102 + public string signatureFile { get; set; }
98 103 }
99 104 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkInfoOutput.cs
... ... @@ -15,72 +15,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
15 15 /// 退卡编号
16 16 /// </summary>
17 17 public string id { get; set; }
18   -
  18 +
19 19 /// <summary>
20 20 /// 门店
21 21 /// </summary>
22 22 public string md { get; set; }
23   -
  23 +
24 24 /// <summary>
25 25 /// 门店编号
26 26 /// </summary>
27 27 public string mdbh { get; set; }
28   -
  28 +
29 29 /// <summary>
30 30 /// 门店名称
31 31 /// </summary>
32 32 public string mdmc { get; set; }
33   -
  33 +
34 34 /// <summary>
35 35 /// 会员
36 36 /// </summary>
37 37 public string hy { get; set; }
38   -
  38 +
39 39 /// <summary>
40 40 /// 会员姓名
41 41 /// </summary>
42 42 public string hymc { get; set; }
43   -
  43 +
44 44 /// <summary>
45 45 /// 会员账号
46 46 /// </summary>
47 47 public string hyzh { get; set; }
48   -
  48 +
49 49 /// <summary>
50 50 /// 顾客类型
51 51 /// </summary>
52 52 public string gklx { get; set; }
53   -
  53 +
54 54 /// <summary>
55 55 /// 退卡总金额
56 56 /// </summary>
57 57 public decimal? tkje { get; set; }
58   -
  58 +
59 59 /// <summary>
60 60 /// 手工费用
61 61 /// </summary>
62 62 public decimal? sgfy { get; set; }
63   -
  63 +
64 64 /// <summary>
65 65 /// 备注
66 66 /// </summary>
67 67 public string bz { get; set; }
68   -
  68 +
69 69 /// <summary>
70 70 /// 退卡时间
71 71 /// </summary>
72 72 public DateTime? tksj { get; set; }
73   -
  73 +
74 74 /// <summary>
75 75 /// 操作人员
76 76 /// </summary>
77 77 public string czry { get; set; }
78   -
  78 +
79 79 /// <summary>
80 80 /// 退卡状态
81 81 /// </summary>
82 82 public string tkzt { get; set; }
83   -
  83 +
84 84 /// <summary>
85 85 /// 退卡原因
86 86 /// </summary>
... ... @@ -92,6 +92,11 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
92 92 public string fileUrl { get; set; }
93 93  
94 94 /// <summary>
  95 + /// 签名文件
  96 + /// </summary>
  97 + public string signatureFile { get; set; }
  98 +
  99 + /// <summary>
95 100 /// 退卡品项明细列表
96 101 /// </summary>
97 102 public List<LqHytkMxInfoOutput> lqHytkMxList { get; set; }
... ... @@ -105,6 +110,6 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
105 110 /// 科技部老师业绩列表
106 111 /// </summary>
107 112 public List<LqHytkKjbsyjInfoOutput> lqHytkKjbsyjList { get; set; }
108   -
  113 +
109 114 }
110 115 }
111 116 \ No newline at end of file
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkUpInput.cs
... ... @@ -15,72 +15,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
15 15 /// 退卡编号
16 16 /// </summary>
17 17 public string id { get; set; }
18   -
  18 +
19 19 /// <summary>
20 20 /// 门店
21 21 /// </summary>
22 22 public string md { get; set; }
23   -
  23 +
24 24 /// <summary>
25 25 /// 门店编号
26 26 /// </summary>
27 27 public string mdbh { get; set; }
28   -
  28 +
29 29 /// <summary>
30 30 /// 门店名称
31 31 /// </summary>
32 32 public string mdmc { get; set; }
33   -
  33 +
34 34 /// <summary>
35 35 /// 会员
36 36 /// </summary>
37 37 public string hy { get; set; }
38   -
  38 +
39 39 /// <summary>
40 40 /// 会员姓名
41 41 /// </summary>
42 42 public string hymc { get; set; }
43   -
  43 +
44 44 /// <summary>
45 45 /// 会员账号
46 46 /// </summary>
47 47 public string hyzh { get; set; }
48   -
  48 +
49 49 /// <summary>
50 50 /// 顾客类型
51 51 /// </summary>
52 52 public string gklx { get; set; }
53   -
  53 +
54 54 /// <summary>
55 55 /// 退卡总金额
56 56 /// </summary>
57 57 public decimal? tkje { get; set; }
58   -
  58 +
59 59 /// <summary>
60 60 /// 手工费用
61 61 /// </summary>
62 62 public decimal? sgfy { get; set; }
63   -
  63 +
64 64 /// <summary>
65 65 /// 备注
66 66 /// </summary>
67 67 public string bz { get; set; }
68   -
  68 +
69 69 /// <summary>
70 70 /// 退卡时间
71 71 /// </summary>
72 72 public DateTime? tksj { get; set; }
73   -
  73 +
74 74 /// <summary>
75 75 /// 操作人员
76 76 /// </summary>
77 77 public string czry { get; set; }
78   -
  78 +
79 79 /// <summary>
80 80 /// 退卡状态
81 81 /// </summary>
82 82 public string tkzt { get; set; }
83   -
  83 +
84 84 /// <summary>
85 85 /// 退卡原因
86 86 /// </summary>
... ... @@ -90,21 +90,26 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
90 90 /// 退卡附件
91 91 /// </summary>
92 92 public string fileUrl { get; set; }
93   -
  93 +
  94 + /// <summary>
  95 + /// 签名文件
  96 + /// </summary>
  97 + public string signatureFile { get; set; }
  98 +
94 99 /// <summary>
95 100 /// 退卡品项明细列表
96 101 /// </summary>
97 102 public List<LqHytkMxCrInput> lqHytkMxList { get; set; }
98   -
  103 +
99 104 /// <summary>
100 105 /// 退卡健康师业绩列表
101 106 /// </summary>
102 107 public List<LqHytkJksyjCrInput> lqHytkJksyjList { get; set; }
103   -
  108 +
104 109 /// <summary>
105 110 /// 退卡科技部老师业绩列表
106 111 /// </summary>
107 112 public List<LqHytkKjbsyjCrInput> lqHytkKjbsyjList { get; set; }
108   -
  113 +
109 114 }
110 115 }
111 116 \ No newline at end of file
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/BillingRecordQueryInput.cs 0 → 100644
  1 +using System.ComponentModel.DataAnnotations;
  2 +using NCC.Common.Filter;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
  5 +{
  6 + /// <summary>
  7 + /// 会员开单记录查询输入
  8 + /// </summary>
  9 + public class BillingRecordQueryInput : PageInputBase
  10 + {
  11 + /// <summary>
  12 + /// 会员ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "会员ID不能为空")]
  15 + [Display(Name = "会员ID", Description = "查询开单记录的会员ID")]
  16 + public string MemberId { get; set; }
  17 +
  18 +
  19 + /// <summary>
  20 + /// 开始时间
  21 + /// </summary>
  22 + [Display(Name = "开始时间", Description = "查询开单记录的开始时间")]
  23 + public System.DateTime? StartTime { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 结束时间
  27 + /// </summary>
  28 + [Display(Name = "结束时间", Description = "查询开单记录的结束时间")]
  29 + public System.DateTime? EndTime { get; set; }
  30 + }
  31 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs
... ... @@ -116,31 +116,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
116 116 public string kdhy { get; set; }
117 117  
118 118 /// <summary>
119   - /// 开单会员名称
120   - /// </summary>
121   - public string kdhyc { get; set; }
122   -
123   - /// <summary>
124   - /// 开单会员手机号
125   - /// </summary>
126   - public string kdhysjh { get; set; }
127   -
128   - /// <summary>
129   - /// 健康师业绩
130   - /// </summary>
131   - public string jksyj { get; set; }
132   -
133   - /// <summary>
134   - /// 科技部老师业绩
135   - /// </summary>
136   - public string kjblsyj { get; set; }
137   -
138   - /// <summary>
139   - /// 品项信息
140   - /// </summary>
141   - public string pxxx { get; set; }
142   -
143   - /// <summary>
144 119 /// 方案其他
145 120 /// </summary>
146 121 public string F_FIleUrl { get; set; }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs
... ... @@ -132,21 +132,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
132 132 public string kdhysjh { get; set; }
133 133  
134 134 /// <summary>
135   - /// 健康师业绩
136   - /// </summary>
137   - public string jksyj { get; set; }
138   -
139   - /// <summary>
140   - /// 科技部老师业绩
141   - /// </summary>
142   - public string kjblsyj { get; set; }
143   -
144   - /// <summary>
145   - /// 品项信息
146   - /// </summary>
147   - public string pxxx { get; set; }
148   -
149   - /// <summary>
150 135 /// 方案其他
151 136 /// </summary>
152 137 public string F_FIleUrl { get; set; }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs
... ... @@ -124,21 +124,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
124 124 public string kdhysjh { get; set; }
125 125  
126 126 /// <summary>
127   - /// 健康师业绩
128   - /// </summary>
129   - public string jksyj { get; set; }
130   -
131   - /// <summary>
132   - /// 科技部老师业绩
133   - /// </summary>
134   - public string kjblsyj { get; set; }
135   -
136   - /// <summary>
137   - /// 品项信息
138   - /// </summary>
139   - public string pxxx { get; set; }
140   -
141   - /// <summary>
142 127 /// 方案其他
143 128 /// </summary>
144 129 public string F_FIleUrl { get; set; }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs
... ... @@ -124,20 +124,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
124 124 /// </summary>
125 125 public string kdhysjh { get; set; }
126 126  
127   - /// <summary>
128   - /// 健康师业绩
129   - /// </summary>
130   - public string jksyj { get; set; }
131   -
132   - /// <summary>
133   - /// 科技部老师业绩
134   - /// </summary>
135   - public string kjblsyj { get; set; }
136   -
137   - /// <summary>
138   - /// 品项信息
139   - /// </summary>
140   - public string pxxx { get; set; }
141 127  
142 128 /// <summary>
143 129 /// 方案其他
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxCrInput.cs
... ... @@ -23,10 +23,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
23 23 /// </summary>
24 24 public string sjh { get; set; }
25 25  
26   - /// <summary>
27   - /// 档案号
28   - /// </summary>
29   - public string dah { get; set; }
30 26  
31 27 /// <summary>
32 28 /// 性别
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackCrInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqXhFeedback
  5 +{
  6 + /// <summary>
  7 + /// 耗卡反馈创建输入
  8 + /// </summary>
  9 + public class LqXhFeedbackCrInput
  10 + {
  11 + /// <summary>
  12 + /// 耗卡记录ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "耗卡记录ID不能为空")]
  15 + [Display(Name = "耗卡记录ID", Description = "关联的耗卡记录ID")]
  16 + public string ConsumeId { get; set; }
  17 +
  18 + /// <summary>
  19 + /// 前图片
  20 + /// </summary>
  21 + [Display(Name = "前图片", Description = "耗卡前的图片")]
  22 + public string BeforeImage { get; set; }
  23 +
  24 + /// <summary>
  25 + /// 后图片
  26 + /// </summary>
  27 + [Display(Name = "后图片", Description = "耗卡后的图片")]
  28 + public string AfterImage { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 备注
  32 + /// </summary>
  33 + [Display(Name = "备注", Description = "反馈备注信息")]
  34 + public string Remark { get; set; }
  35 + }
  36 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqXhFeedback
  4 +{
  5 + /// <summary>
  6 + /// 耗卡反馈详情输出
  7 + /// </summary>
  8 + public class LqXhFeedbackInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 反馈记录ID
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 耗卡记录ID
  17 + /// </summary>
  18 + public string consumeId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 前图片
  22 + /// </summary>
  23 + public string beforeImage { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 后图片
  27 + /// </summary>
  28 + public string afterImage { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 备注
  32 + /// </summary>
  33 + public string remark { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 添加人ID
  37 + /// </summary>
  38 + public string createUser { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 添加人姓名
  42 + /// </summary>
  43 + public string createUserName { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 添加时间
  47 + /// </summary>
  48 + public DateTime createTime { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 更新时间
  52 + /// </summary>
  53 + public DateTime updateTime { get; set; }
  54 + }
  55 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackListOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqXhFeedback
  4 +{
  5 + /// <summary>
  6 + /// 耗卡反馈列表输出
  7 + /// </summary>
  8 + public class LqXhFeedbackListOutput
  9 + {
  10 + /// <summary>
  11 + /// 反馈记录ID
  12 + /// </summary>
  13 + public string id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 耗卡记录ID
  17 + /// </summary>
  18 + public string consumeId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 前图片
  22 + /// </summary>
  23 + public string beforeImage { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 后图片
  27 + /// </summary>
  28 + public string afterImage { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 备注
  32 + /// </summary>
  33 + public string remark { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 添加人ID
  37 + /// </summary>
  38 + public string createUser { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 添加人姓名
  42 + /// </summary>
  43 + public string createUserName { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 添加时间
  47 + /// </summary>
  48 + public DateTime createTime { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 更新时间
  52 + /// </summary>
  53 + public DateTime updateTime { get; set; }
  54 + }
  55 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackListQueryInput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqXhFeedback
  4 +{
  5 + /// <summary>
  6 + /// 耗卡反馈列表查询输入
  7 + /// </summary>
  8 + public class LqXhFeedbackListQueryInput : NCC.Common.Filter.PageInputBase
  9 + {
  10 + /// <summary>
  11 + /// 耗卡记录ID
  12 + /// </summary>
  13 + public string ConsumeId { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 添加人ID
  17 + /// </summary>
  18 + public string CreateUser { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 开始时间
  22 + /// </summary>
  23 + public DateTime? StartTime { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 结束时间
  27 + /// </summary>
  28 + public DateTime? EndTime { get; set; }
  29 + }
  30 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhFeedback/LqXhFeedbackUpInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqXhFeedback
  5 +{
  6 + /// <summary>
  7 + /// 耗卡反馈更新输入
  8 + /// </summary>
  9 + public class LqXhFeedbackUpInput : LqXhFeedbackCrInput
  10 + {
  11 + /// <summary>
  12 + /// 反馈记录ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "反馈记录ID不能为空")]
  15 + [Display(Name = "反馈记录ID", Description = "要更新的反馈记录ID")]
  16 + public new string id { get; set; }
  17 + }
  18 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs
... ... @@ -75,6 +75,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
75 75 public string czry { get; set; }
76 76  
77 77 /// <summary>
  78 + /// 签名文件
  79 + /// </summary>
  80 + public string signatureFile { get; set; }
  81 +
  82 + /// <summary>
78 83 /// 耗卡_品项明细
79 84 /// </summary>
80 85 public List<LqXhPxmxCrInput> lqXhPxmxList { get; set; }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkInfoOutput.cs
... ... @@ -15,96 +15,116 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
15 15 /// 耗卡编号
16 16 /// </summary>
17 17 public string id { get; set; }
18   -
  18 +
19 19 /// <summary>
20 20 /// 门店
21 21 /// </summary>
22 22 public string md { get; set; }
23   -
  23 +
24 24 /// <summary>
25 25 /// 门店编号
26 26 /// </summary>
27 27 public string mdbh { get; set; }
28   -
  28 +
29 29 /// <summary>
30 30 /// 门店名称
31 31 /// </summary>
32 32 public string mdmc { get; set; }
33   -
  33 +
34 34 /// <summary>
35 35 /// 会员
36 36 /// </summary>
37 37 public string hy { get; set; }
38   -
  38 +
39 39 /// <summary>
40 40 /// 会员账号
41 41 /// </summary>
42 42 public string hyzh { get; set; }
43   -
  43 +
44 44 /// <summary>
45 45 /// 会员名称
46 46 /// </summary>
47 47 public string hymc { get; set; }
48   -
  48 +
  49 + /// <summary>
  50 + /// 会员手机号
  51 + /// </summary>
  52 + public string memberPhone { get; set; }
  53 +
49 54 /// <summary>
50 55 /// 顾客类型
51 56 /// </summary>
52 57 public string gklx { get; set; }
53   -
  58 +
54 59 /// <summary>
55 60 /// 消费金额
56 61 /// </summary>
57 62 public string xfje { get; set; }
58   -
  63 +
59 64 /// <summary>
60 65 /// 手工费用
61 66 /// </summary>
62 67 public string sgfy { get; set; }
63   -
  68 +
64 69 /// <summary>
65 70 /// 是否有科技部
66 71 /// </summary>
67 72 public string sfykjb { get; set; }
68   -
  73 +
69 74 /// <summary>
70 75 /// 健康师业绩
71 76 /// </summary>
72 77 public string jksyj { get; set; }
73   -
  78 +
74 79 /// <summary>
75 80 /// 科技部业绩
76 81 /// </summary>
77 82 public string kjbyj { get; set; }
78   -
  83 +
79 84 /// <summary>
80 85 /// 品项信息
81 86 /// </summary>
82 87 public string pxxx { get; set; }
83   -
  88 +
84 89 /// <summary>
85 90 /// 耗卡时间
86 91 /// </summary>
87 92 public DateTime? hksj { get; set; }
88   -
  93 +
89 94 /// <summary>
90 95 /// 操作人员
91 96 /// </summary>
92 97 public string czry { get; set; }
93   -
  98 +
  99 + /// <summary>
  100 + /// 签名文件
  101 + /// </summary>
  102 + public string signatureFile { get; set; }
  103 +
  104 + /// <summary>
  105 + /// 是否有效
  106 + /// </summary>
  107 + public int isEffective { get; set; }
  108 +
  109 + /// <summary>
  110 + /// 作废备注
  111 + /// </summary>
  112 + public string cancelRemark { get; set; }
  113 +
94 114 /// <summary>
95 115 /// 健康师业绩
96 116 /// </summary>
97 117 public List<LqXhJksyjInfoOutput> lqXhJksyjList { get; set; }
98   -
  118 +
99 119 /// <summary>
100 120 /// 科技部老师业绩
101 121 /// </summary>
102 122 public List<LqXhKjbsyjInfoOutput> lqXhKjbsyjList { get; set; }
103   -
  123 +
104 124 /// <summary>
105 125 /// 耗卡_品项明细
106 126 /// </summary>
107 127 public List<LqXhPxmxInfoOutput> lqXhPxmxList { get; set; }
108   -
  128 +
109 129 }
110 130 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs
1 1 using System;
  2 +using System.Collections.Generic;
  3 +using NCC.Extend.Entitys.Dto.LqXhPxmx;
2 4  
3 5 namespace NCC.Extend.Entitys.Dto.LqXhHyhk
4 6 {
... ... @@ -77,5 +79,20 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
77 79 /// </summary>
78 80 public string czry { get; set; }
79 81  
  82 + /// <summary>
  83 + /// 耗卡明细列表
  84 + /// </summary>
  85 + public List<LqXhPxmxInfoOutput> ConsumeDetails { get; set; }
  86 +
  87 + /// <summary>
  88 + /// 签名文件
  89 + /// </summary>
  90 + public string signatureFile { get; set; }
  91 +
  92 + /// <summary>
  93 + /// 是否有效
  94 + /// </summary>
  95 + public int isEffective { get; set; }
  96 +
80 97 }
81 98 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs
... ... @@ -11,97 +11,97 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl
11 11 /// 主键
12 12 /// </summary>
13 13 public string id { get; set; }
14   -
  14 +
15 15 /// <summary>
16 16 /// 项目编号
17 17 /// </summary>
18 18 public string xmbh { get; set; }
19   -
  19 +
20 20 /// <summary>
21 21 /// 项目名称
22 22 /// </summary>
23 23 public string xmmc { get; set; }
24   -
  24 +
25 25 /// <summary>
26 26 /// 标准价格
27 27 /// </summary>
28 28 public decimal bzjg { get; set; }
29   -
  29 +
30 30 /// <summary>
31 31 /// 项目时长(分钟)
32 32 /// </summary>
33 33 public int? xmsc { get; set; }
34   -
  34 +
35 35 /// <summary>
36 36 /// 基础服务提成
37 37 /// </summary>
38 38 public decimal jcfwtc { get; set; }
39   -
  39 +
40 40 /// <summary>
41 41 /// 分类①-汇总表
42 42 /// </summary>
43 43 public string fl1 { get; set; }
44   -
  44 +
45 45 /// <summary>
46 46 /// 分类②-汇总表
47 47 /// </summary>
48 48 public string fl2 { get; set; }
49   -
  49 +
50 50 /// <summary>
51 51 /// 分类③-工资用
52 52 /// </summary>
53 53 public string fl3 { get; set; }
54   -
  54 +
55 55 /// <summary>
56 56 /// 分类④-统计品项用
57 57 /// </summary>
58 58 public string fl4 { get; set; }
59   -
  59 +
60 60 /// <summary>
61 61 /// 统计类别
62 62 /// </summary>
63 63 public string tjlb { get; set; }
64   -
  64 +
65 65 /// <summary>
66 66 /// 折扣类别
67 67 /// </summary>
68 68 public string zklb { get; set; }
69   -
  69 +
70 70 /// <summary>
71 71 /// 分类
72 72 /// </summary>
73 73 public string fl { get; set; }
74   -
  74 +
75 75 /// <summary>
76 76 /// 其它1
77 77 /// </summary>
78 78 public string qt1 { get; set; }
79   -
  79 +
80 80 /// <summary>
81 81 /// 其它2
82 82 /// </summary>
83 83 public string qt2 { get; set; }
84   -
  84 +
85 85 /// <summary>
86 86 /// 溯源金额
87 87 /// </summary>
88 88 public decimal? syje { get; set; }
89   -
  89 +
90 90 /// <summary>
91 91 /// Cell金额
92 92 /// </summary>
93 93 public decimal? cellje { get; set; }
94   -
  94 +
95 95 /// <summary>
96 96 /// 手工费
97 97 /// </summary>
98 98 public decimal? sgf { get; set; }
99   -
  99 +
100 100 /// <summary>
101 101 /// 项目次数
102 102 /// </summary>
103 103 public int? projectNumber { get; set; }
104   -
  104 +
105 105 /// <summary>
106 106 /// 来源类型
107 107 /// </summary>
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdXdbhsj/LqMdXdbhsjCrInput.cs
... ... @@ -38,5 +38,12 @@ namespace NCC.Extend.Entitys.Dto.LqMdXdbhsj
38 38 [Required(ErrorMessage = "是否启用不能为空")]
39 39 [Range(0, 1, ErrorMessage = "是否启用值必须在0-1之间")]
40 40 public int sfqy { get; set; } = 1;
  41 +
  42 + /// <summary>
  43 + /// 阶段
  44 + /// </summary>
  45 + [Required(ErrorMessage = "阶段不能为空")]
  46 + [Range(0, 1, ErrorMessage = "阶段值必须在1-3之间")]
  47 + public int stage { get; set; } = 1;
41 48 }
42 49 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdXdbhsj/LqMdXdbhsjInfoOutput.cs
... ... @@ -41,5 +41,10 @@ namespace NCC.Extend.Entitys.Dto.LqMdXdbhsj
41 41 /// 是否启用
42 42 /// </summary>
43 43 public int sfqy { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 阶段
  47 + /// </summary>
  48 + public int stage { get; set; }
44 49 }
45 50 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdXdbhsj/LqMdXdbhsjListOutput.cs
... ... @@ -41,5 +41,10 @@ namespace NCC.Extend.Entitys.Dto.LqMdXdbhsj
41 41 /// 是否启用
42 42 /// </summary>
43 43 public int sfqy { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 阶段
  47 + /// </summary>
  48 + public int stage { get; set; }
44 49 }
45 50 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/Dto/LqMdXdbhsj/LqMdXdbhsjUpInput.cs
... ... @@ -38,5 +38,12 @@ namespace NCC.Extend.Entitys.Dto.LqMdXdbhsj
38 38 [Required(ErrorMessage = "是否启用不能为空")]
39 39 [Range(0, 1, ErrorMessage = "是否启用值必须在0-1之间")]
40 40 public int sfqy { get; set; }
  41 +
  42 + /// <summary>
  43 + /// 阶段
  44 + /// </summary>
  45 + [Required(ErrorMessage = "阶段不能为空")]
  46 + [Range(0, 1, ErrorMessage = "阶段值必须在1-3之间")]
  47 + public int stage { get; set; } = 1;
41 48 }
42 49 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs
... ... @@ -137,5 +137,11 @@ namespace NCC.Extend.Entitys.lq_hytk_hytk
137 137 /// </summary>
138 138 [SugarColumn(ColumnName = "F_IsEffective")]
139 139 public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
  140 +
  141 + /// <summary>
  142 + /// 签名文件
  143 + /// </summary>
  144 + [SugarColumn(ColumnName = "F_SignatureFile")]
  145 + public string SignatureFile { get; set; }
140 146 }
141 147 }
142 148 \ No newline at end of file
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
... ... @@ -157,24 +157,6 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
157 157 public string Kdhysjh { get; set; }
158 158  
159 159 /// <summary>
160   - /// 健康师业绩
161   - /// </summary>
162   - [SugarColumn(ColumnName = "jksyj")]
163   - public string Jksyj { get; set; }
164   -
165   - /// <summary>
166   - /// 科技部老师业绩
167   - /// </summary>
168   - [SugarColumn(ColumnName = "kjblsyj")]
169   - public string Kjblsyj { get; set; }
170   -
171   - /// <summary>
172   - /// 品项信息
173   - /// </summary>
174   - [SugarColumn(ColumnName = "pxxx")]
175   - public string Pxxx { get; set; }
176   -
177   - /// <summary>
178 160 /// 开单用户
179 161 /// </summary>
180 162 [SugarColumn(ColumnName = "F_CreateUser")]
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_md_xdbhsj/LqMdXdbhsjEntity.cs
... ... @@ -16,42 +16,48 @@ namespace NCC.Extend.Entitys.lq_md_xdbhsj
16 16 /// </summary>
17 17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 18 public string Id { get; set; }
19   -
  19 +
20 20 /// <summary>
21 21 /// 门店ID
22 22 /// </summary>
23   - [SugarColumn(ColumnName = "mdid")]
  23 + [SugarColumn(ColumnName = "mdid")]
24 24 public string Mdid { get; set; }
25   -
  25 +
26 26 /// <summary>
27 27 /// 保护开始时间
28 28 /// </summary>
29   - [SugarColumn(ColumnName = "bhkssj")]
  29 + [SugarColumn(ColumnName = "bhkssj")]
30 30 public DateTime Bhkssj { get; set; }
31   -
  31 +
32 32 /// <summary>
33 33 /// 保护结束时间
34 34 /// </summary>
35   - [SugarColumn(ColumnName = "bhjssj")]
  35 + [SugarColumn(ColumnName = "bhjssj")]
36 36 public DateTime Bhjssj { get; set; }
37   -
  37 +
38 38 /// <summary>
39 39 /// 说明
40 40 /// </summary>
41   - [SugarColumn(ColumnName = "sm")]
  41 + [SugarColumn(ColumnName = "sm")]
42 42 public string Sm { get; set; }
43   -
  43 +
44 44 /// <summary>
45 45 /// 创建时间
46 46 /// </summary>
47   - [SugarColumn(ColumnName = "cjsj")]
  47 + [SugarColumn(ColumnName = "cjsj")]
48 48 public DateTime Cjsj { get; set; }
49   -
  49 +
50 50 /// <summary>
51 51 /// 是否启用(1启用,0禁用)
52 52 /// </summary>
53   - [SugarColumn(ColumnName = "sfqy")]
  53 + [SugarColumn(ColumnName = "sfqy")]
54 54 public int Sfqy { get; set; }
55   -
  55 +
  56 + /// <summary>
  57 + /// 阶段
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "F_Stage")]
  60 + public int Stage { get; set; }
  61 +
56 62 }
57 63 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_mdxx/LqMdxxEntity.cs
... ... @@ -16,168 +16,174 @@ namespace NCC.Extend.Entitys.lq_mdxx
16 16 /// </summary>
17 17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 18 public string Id { get; set; }
19   -
  19 +
20 20 /// <summary>
21 21 /// 门店编码
22 22 /// </summary>
23   - [SugarColumn(ColumnName = "mdbm")]
  23 + [SugarColumn(ColumnName = "mdbm")]
24 24 public string Mdbm { get; set; }
25   -
  25 +
26 26 /// <summary>
27 27 /// 单据门店编号
28 28 /// </summary>
29   - [SugarColumn(ColumnName = "djmdbh")]
  29 + [SugarColumn(ColumnName = "djmdbh")]
30 30 public string Djmdbh { get; set; }
31   -
  31 +
32 32 /// <summary>
33 33 /// 单据门店
34 34 /// </summary>
35   - [SugarColumn(ColumnName = "djmd")]
  35 + [SugarColumn(ColumnName = "djmd")]
36 36 public string Djmd { get; set; }
37   -
  37 +
38 38 /// <summary>
39 39 /// 店名
40 40 /// </summary>
41   - [SugarColumn(ColumnName = "dm")]
  41 + [SugarColumn(ColumnName = "dm")]
42 42 public string Dm { get; set; }
43   -
  43 +
44 44 /// <summary>
45 45 /// 城市
46 46 /// </summary>
47   - [SugarColumn(ColumnName = "cs")]
  47 + [SugarColumn(ColumnName = "cs")]
48 48 public string Cs { get; set; }
49   -
  49 +
50 50 /// <summary>
51 51 /// 地址
52 52 /// </summary>
53   - [SugarColumn(ColumnName = "dz")]
  53 + [SugarColumn(ColumnName = "dz")]
54 54 public string Dz { get; set; }
55   -
  55 +
56 56 /// <summary>
57 57 /// 姓名
58 58 /// </summary>
59   - [SugarColumn(ColumnName = "xm")]
  59 + [SugarColumn(ColumnName = "xm")]
60 60 public string Xm { get; set; }
61   -
  61 +
62 62 /// <summary>
63 63 /// 电话号码
64 64 /// </summary>
65   - [SugarColumn(ColumnName = "dhhm")]
  65 + [SugarColumn(ColumnName = "dhhm")]
66 66 public string Dhhm { get; set; }
67   -
  67 +
68 68 /// <summary>
69 69 /// 座机
70 70 /// </summary>
71   - [SugarColumn(ColumnName = "zj")]
  71 + [SugarColumn(ColumnName = "zj")]
72 72 public string Zj { get; set; }
73   -
  73 +
74 74 /// <summary>
75 75 /// 开业时间
76 76 /// </summary>
77   - [SugarColumn(ColumnName = "kysj")]
  77 + [SugarColumn(ColumnName = "kysj")]
78 78 public DateTime? Kysj { get; set; }
79   -
  79 +
80 80 /// <summary>
81 81 /// 最新状态
82 82 /// </summary>
83   - [SugarColumn(ColumnName = "zxzt")]
  83 + [SugarColumn(ColumnName = "zxzt")]
84 84 public string Zxzt { get; set; }
85   -
  85 +
86 86 /// <summary>
87 87 /// 工商名称
88 88 /// </summary>
89   - [SugarColumn(ColumnName = "gsmc")]
  89 + [SugarColumn(ColumnName = "gsmc")]
90 90 public string Gsmc { get; set; }
91   -
  91 +
92 92 /// <summary>
93 93 /// 法人
94 94 /// </summary>
95   - [SugarColumn(ColumnName = "fr")]
  95 + [SugarColumn(ColumnName = "fr")]
96 96 public string Fr { get; set; }
97   -
  97 +
98 98 /// <summary>
99 99 /// 有无社保
100 100 /// </summary>
101   - [SugarColumn(ColumnName = "ywsb")]
  101 + [SugarColumn(ColumnName = "ywsb")]
102 102 public string Ywsb { get; set; }
103   -
  103 +
104 104 /// <summary>
105 105 /// 事业部
106 106 /// </summary>
107   - [SugarColumn(ColumnName = "syb")]
  107 + [SugarColumn(ColumnName = "syb")]
108 108 public string Syb { get; set; }
109   -
  109 +
110 110 /// <summary>
111 111 /// 教育部
112 112 /// </summary>
113   - [SugarColumn(ColumnName = "jyb")]
  113 + [SugarColumn(ColumnName = "jyb")]
114 114 public string Jyb { get; set; }
115   -
  115 +
116 116 /// <summary>
117 117 /// 科技部
118 118 /// </summary>
119   - [SugarColumn(ColumnName = "kjb")]
  119 + [SugarColumn(ColumnName = "kjb")]
120 120 public string Kjb { get; set; }
121   -
  121 +
122 122 /// <summary>
123 123 /// 大项目部
124 124 /// </summary>
125   - [SugarColumn(ColumnName = "dxmb")]
  125 + [SugarColumn(ColumnName = "dxmb")]
126 126 public string Dxmb { get; set; }
127   -
  127 +
128 128 /// <summary>
129 129 /// 归属起始时间
130 130 /// </summary>
131   - [SugarColumn(ColumnName = "gsqssj")]
  131 + [SugarColumn(ColumnName = "gsqssj")]
132 132 public DateTime? Gsqssj { get; set; }
133   -
  133 +
134 134 /// <summary>
135 135 /// 归属终止时间
136 136 /// </summary>
137   - [SugarColumn(ColumnName = "gszzsj")]
  137 + [SugarColumn(ColumnName = "gszzsj")]
138 138 public DateTime? Gszzsj { get; set; }
139   -
  139 +
140 140 /// <summary>
141 141 /// 状态
142 142 /// </summary>
143   - [SugarColumn(ColumnName = "status")]
  143 + [SugarColumn(ColumnName = "status")]
144 144 public int? Status { get; set; }
145   -
  145 +
146 146 /// <summary>
147 147 /// 目标-门店生命线
148 148 /// </summary>
149   - [SugarColumn(ColumnName = "xsyj")]
  149 + [SugarColumn(ColumnName = "xsyj")]
150 150 public decimal? Xsyj { get; set; }
151   -
  151 +
152 152 /// <summary>
153 153 /// 目标-消耗业绩
154 154 /// </summary>
155   - [SugarColumn(ColumnName = "xhyj")]
  155 + [SugarColumn(ColumnName = "xhyj")]
156 156 public decimal? Xhyj { get; set; }
157   -
  157 +
158 158 /// <summary>
159 159 /// 目标-项目数
160 160 /// </summary>
161   - [SugarColumn(ColumnName = "xms")]
  161 + [SugarColumn(ColumnName = "xms")]
162 162 public int? Xms { get; set; }
163   -
  163 +
164 164 /// <summary>
165 165 /// 目标-人头1
166 166 /// </summary>
167   - [SugarColumn(ColumnName = "rt1")]
  167 + [SugarColumn(ColumnName = "rt1")]
168 168 public int? Rt1 { get; set; }
169   -
  169 +
170 170 /// <summary>
171 171 /// 目标-人头2
172 172 /// </summary>
173   - [SugarColumn(ColumnName = "rt2")]
  173 + [SugarColumn(ColumnName = "rt2")]
174 174 public int? Rt2 { get; set; }
175   -
  175 +
176 176 /// <summary>
177 177 /// 目标-人次
178 178 /// </summary>
179   - [SugarColumn(ColumnName = "rc")]
  179 + [SugarColumn(ColumnName = "rc")]
180 180 public int? Rc { get; set; }
181   -
  181 +
  182 + /// <summary>
  183 + /// 门店类型
  184 + /// </summary>
  185 + [SugarColumn(ColumnName = "F_StoreType")]
  186 + public int? StoreType { get; set; }
  187 +
182 188 }
183 189 }
184 190 \ No newline at end of file
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_feedback/LqXhFeedbackEntity.cs 0 → 100644
  1 +using System;
  2 +using NCC.Common.Const;
  3 +using SqlSugar;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_xh_feedback
  6 +{
  7 + /// <summary>
  8 + /// 耗卡反馈表
  9 + /// </summary>
  10 + [SugarTable("lq_xh_feedback")]
  11 + [Tenant(ClaimConst.TENANT_ID)]
  12 + public class LqXhFeedbackEntity
  13 + {
  14 + /// <summary>
  15 + /// 反馈记录ID
  16 + /// </summary>
  17 + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
  18 + public string Id { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 耗卡记录ID
  22 + /// </summary>
  23 + [SugarColumn(ColumnName = "F_ConsumeId")]
  24 + public string ConsumeId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 前图片
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "F_BeforeImage")]
  30 + public string BeforeImage { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 后图片
  34 + /// </summary>
  35 + [SugarColumn(ColumnName = "F_AfterImage")]
  36 + public string AfterImage { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 备注
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "F_Remark")]
  42 + public string Remark { get; set; }
  43 +
  44 + /// <summary>
  45 + /// 添加人ID
  46 + /// </summary>
  47 + [SugarColumn(ColumnName = "F_CreateUser")]
  48 + public string CreateUser { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 添加时间
  52 + /// </summary>
  53 + [SugarColumn(ColumnName = "F_CreateTime")]
  54 + public DateTime CreateTime { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 更新时间
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "F_UpdateTime")]
  60 + public DateTime UpdateTime { get; set; }
  61 + }
  62 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs
... ... @@ -120,5 +120,11 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk
120 120 /// </summary>
121 121 [SugarColumn(ColumnName = "F_IsEffective")]
122 122 public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
  123 +
  124 + /// <summary>
  125 + /// 作废备注
  126 + /// </summary>
  127 + [SugarColumn(ColumnName = "F_CancelRemark")]
  128 + public string CancelRemark { get; set; }
123 129 }
124 130 }
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StoreTypeEnum.cs 0 → 100644
  1 +using System.ComponentModel;
  2 +
  3 +namespace NCC.Extend.Entitys.Enum
  4 +{
  5 + /// <summary>
  6 + /// 门店类别枚举
  7 + /// </summary>
  8 + public enum StoreTypeEnum
  9 + {
  10 + /// <summary>
  11 + /// 200平门店
  12 + /// </summary>
  13 + [Description("200平门店")]
  14 + 门店200平 = 1,
  15 +
  16 + /// <summary>
  17 + /// 旗舰店
  18 + /// </summary>
  19 + [Description("旗舰店")]
  20 + 旗舰店 = 2,
  21 + }
  22 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqXhFeedback/ILqXhFeedbackService.cs 0 → 100644
  1 +using System.Threading.Tasks;
  2 +using NCC.Extend.Entitys.Dto.LqXhFeedback;
  3 +
  4 +namespace NCC.Extend.Interfaces.LqXhFeedback
  5 +{
  6 + /// <summary>
  7 + /// 耗卡反馈服务接口
  8 + /// </summary>
  9 + public interface ILqXhFeedbackService
  10 + {
  11 +
  12 + }
  13 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
... ... @@ -544,24 +544,16 @@ namespace NCC.Extend.LqHytkHytk
544 544 _db.BeginTran();
545 545  
546 546 // 1. 删除退卡品项明细记录
547   - await _db.Deleteable<LqHytkMxEntity>()
548   - .Where(x => x.RefundInfoId == id)
549   - .ExecuteCommandAsync();
  547 + await _db.Deleteable<LqHytkMxEntity>().Where(x => x.RefundInfoId == id).ExecuteCommandAsync();
550 548  
551 549 // 2. 删除退卡健康师业绩记录
552   - await _db.Deleteable<LqHytkJksyjEntity>()
553   - .Where(x => x.Gltkbh == id)
554   - .ExecuteCommandAsync();
  550 + await _db.Deleteable<LqHytkJksyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync();
555 551  
556 552 // 3. 删除退卡科技部老师业绩记录
557   - await _db.Deleteable<LqHytkKjbsyjEntity>()
558   - .Where(x => x.Gltkbh == id)
559   - .ExecuteCommandAsync();
  553 + await _db.Deleteable<LqHytkKjbsyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync();
560 554  
561 555 // 4. 删除退卡主表记录
562   - await _db.Deleteable<LqHytkHytkEntity>()
563   - .Where(x => x.Id == id)
564   - .ExecuteCommandAsync();
  556 + await _db.Deleteable<LqHytkHytkEntity>().Where(x => x.Id == id).ExecuteCommandAsync();
565 557  
566 558 // 提交事务
567 559 _db.CommitTran();
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
... ... @@ -113,7 +113,10 @@ namespace NCC.Extend.LqKdKdjlb
113 113 }
114 114  
115 115 var output = entity.Adapt<LqKdKdjlbInfoOutput>();
116   -
  116 + //获取会员信息
  117 + var MemberInfo = await _db.Queryable<LqKhxxEntity>().FirstAsync(p => p.Id == entity.Kdhy);
  118 + output.kdhyc = MemberInfo.Khmc;
  119 + output.kdhysjh = MemberInfo.Sjh;
117 120 // 2. 查询品项明细列表
118 121 var lqKdPxmxList = await _db.Queryable<LqKdPxmxEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync();
119 122  
... ... @@ -217,9 +220,6 @@ namespace NCC.Extend.LqKdKdjlb
217 220 .WhereIF(!string.IsNullOrEmpty(input.kdhy), p => p.Kdhy.Equals(input.kdhy))
218 221 .WhereIF(!string.IsNullOrEmpty(input.kdhyc), p => p.Kdhyc.Contains(input.kdhyc))
219 222 .WhereIF(!string.IsNullOrEmpty(input.kdhysjh), p => p.Kdhysjh.Contains(input.kdhysjh))
220   - .WhereIF(!string.IsNullOrEmpty(input.jksyj), p => p.Jksyj.Contains(input.jksyj))
221   - .WhereIF(!string.IsNullOrEmpty(input.kjblsyj), p => p.Kjblsyj.Contains(input.kjblsyj))
222   - .WhereIF(!string.IsNullOrEmpty(input.pxxx), p => p.Pxxx.Contains(input.pxxx))
223 223 .WhereIF(!string.IsNullOrEmpty(input.F_FIleUrl), p => p.F_FIleUrl.Contains(input.F_FIleUrl))
224 224 .WhereIF(!string.IsNullOrEmpty(input.CreateUser), p => p.CreateUser.Equals(input.CreateUser))
225 225 .Select(it => new LqKdKdjlbListOutput
... ... @@ -244,11 +244,8 @@ namespace NCC.Extend.LqKdKdjlb
244 244 jj = it.Jj,
245 245 bz = it.Bz,
246 246 kdhy = it.Kdhy,
247   - kdhyc = it.Kdhyc,
248   - kdhysjh = it.Kdhysjh,
249   - jksyj = it.Jksyj,
250   - kjblsyj = it.Kjblsyj,
251   - pxxx = it.Pxxx,
  247 + kdhyc = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Khmc),
  248 + kdhysjh = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Sjh),
252 249 IsEffective = it.IsEffective,
253 250 CreateUser = it.CreateUser,
254 251 CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
... ... @@ -476,7 +473,7 @@ namespace NCC.Extend.LqKdKdjlb
476 473 //通过开单记录表查询这个会员开单金额
477 474 var kdAmount = await _db.Queryable<LqKdKdjlbEntity>().Where(u => u.Kdhy == entity.Kdhy).SumAsync(u => u.Sfyj);
478 475 //如果开单金额小于500,为散客,如果大于500,为会员
479   - if (kdAmount < 500)
  476 + if (kdAmount < 500 && kdAmount > 0)
480 477 {
481 478 memberInfo.Khlx = MemberTypeEnum.散客.GetHashCode().ToString();
482 479 }
... ... @@ -784,9 +781,6 @@ namespace NCC.Extend.LqKdKdjlb
784 781 .WhereIF(!string.IsNullOrEmpty(input.kdhy), p => p.Kdhy.Equals(input.kdhy))
785 782 .WhereIF(!string.IsNullOrEmpty(input.kdhyc), p => p.Kdhyc.Contains(input.kdhyc))
786 783 .WhereIF(!string.IsNullOrEmpty(input.kdhysjh), p => p.Kdhysjh.Contains(input.kdhysjh))
787   - .WhereIF(!string.IsNullOrEmpty(input.jksyj), p => p.Jksyj.Contains(input.jksyj))
788   - .WhereIF(!string.IsNullOrEmpty(input.kjblsyj), p => p.Kjblsyj.Contains(input.kjblsyj))
789   - .WhereIF(!string.IsNullOrEmpty(input.pxxx), p => p.Pxxx.Contains(input.pxxx))
790 784 .WhereIF(!string.IsNullOrEmpty(input.F_FIleUrl), p => p.F_FIleUrl.Contains(input.F_FIleUrl))
791 785 .Select(it => new LqKdKdjlbListOutput
792 786 {
... ... @@ -812,9 +806,6 @@ namespace NCC.Extend.LqKdKdjlb
812 806 kdhy = it.Kdhy,
813 807 kdhyc = it.Kdhyc,
814 808 kdhysjh = it.Kdhysjh,
815   - jksyj = it.Jksyj,
816   - kjblsyj = it.Kjblsyj,
817   - pxxx = it.Pxxx,
818 809 F_FIleUrl = it.F_FIleUrl,
819 810 })
820 811 .MergeTable()
... ... @@ -1432,28 +1423,16 @@ namespace NCC.Extend.LqKdKdjlb
1432 1423 await _db.Updateable(entity).ExecuteCommandAsync();
1433 1424  
1434 1425 // 标记对应开单明细表为无效
1435   - await _db.Updateable<LqKdPxmxEntity>()
1436   - .SetColumns(it => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() })
1437   - .Where(it => it.Glkdbh == input.Id)
1438   - .ExecuteCommandAsync();
  1426 + await _db.Updateable<LqKdPxmxEntity>().SetColumns(it => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(it => it.Glkdbh == input.Id).ExecuteCommandAsync();
1439 1427  
1440 1428 // 标记健康师业绩为无效
1441   - await _db.Updateable<LqKdJksyjEntity>()
1442   - .SetColumns(it => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() })
1443   - .Where(it => it.Glkdbh == input.Id)
1444   - .ExecuteCommandAsync();
  1429 + await _db.Updateable<LqKdJksyjEntity>().SetColumns(it => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(it => it.Glkdbh == input.Id).ExecuteCommandAsync();
1445 1430  
1446 1431 // 标记科技部老师业绩为无效
1447   - await _db.Updateable<LqKdKjbsyjEntity>()
1448   - .SetColumns(it => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() })
1449   - .Where(it => it.Glkdbh == input.Id)
1450   - .ExecuteCommandAsync();
  1432 + await _db.Updateable<LqKdKjbsyjEntity>().SetColumns(it => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(it => it.Glkdbh == input.Id).ExecuteCommandAsync();
1451 1433  
1452 1434 // 标记开单_储扣详细表为无效
1453   - await _db.Updateable<LqKdDeductinfoEntity>()
1454   - .SetColumns(it => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() })
1455   - .Where(it => it.BillingId == input.Id)
1456   - .ExecuteCommandAsync();
  1435 + await _db.Updateable<LqKdDeductinfoEntity>().SetColumns(it => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(it => it.BillingId == input.Id).ExecuteCommandAsync();
1457 1436  
1458 1437 //关闭事务
1459 1438 _db.CommitTran();
... ... @@ -1715,11 +1694,8 @@ namespace NCC.Extend.LqKdKdjlb
1715 1694 jj = it.Jj,
1716 1695 bz = it.Bz,
1717 1696 kdhy = it.Kdhy,
1718   - kdhyc = it.Kdhyc,
1719   - kdhysjh = it.Kdhysjh,
1720   - jksyj = it.Jksyj,
1721   - kjblsyj = it.Kjblsyj,
1722   - pxxx = it.Pxxx,
  1697 + kdhyc = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Khmc),
  1698 + kdhysjh = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Sjh),
1723 1699 IsEffective = it.IsEffective,
1724 1700 CreateUser = it.CreateUser,
1725 1701 CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
... ... @@ -1737,6 +1713,130 @@ namespace NCC.Extend.LqKdKdjlb
1737 1713 }
1738 1714 #endregion
1739 1715  
  1716 + #region 获取某个会员的开单记录
  1717 + /// <summary>
  1718 + /// 获取某个会员的开单记录
  1719 + /// </summary>
  1720 + /// <remarks>
  1721 + /// 根据会员ID查询该会员的所有开单记录,支持分页和时间筛选
  1722 + ///
  1723 + /// 示例请求:
  1724 + /// ```json
  1725 + /// {
  1726 + /// "memberId": "会员ID",
  1727 + /// "storeId": "门店ID",
  1728 + /// "startTime": "2025-01-01",
  1729 + /// "endTime": "2025-12-31",
  1730 + /// "currentPage": 1,
  1731 + /// "pageSize": 20
  1732 + /// }
  1733 + /// ```
  1734 + ///
  1735 + /// 参数说明:
  1736 + /// - memberId: 会员ID(必填)
  1737 + /// - storeId: 门店ID(可选)
  1738 + /// - startTime: 开始时间(可选)
  1739 + /// - endTime: 结束时间(可选)
  1740 + /// - currentPage: 当前页码
  1741 + /// - pageSize: 每页大小
  1742 + /// </remarks>
  1743 + /// <param name="input">查询参数</param>
  1744 + /// <returns>分页的开单记录列表</returns>
  1745 + /// <response code="200">成功返回会员开单记录列表</response>
  1746 + /// <response code="400">参数错误</response>
  1747 + /// <response code="500">服务器错误</response>
  1748 + [HttpGet("GetBillingRecordByMemberId")]
  1749 + public async Task<dynamic> GetBillingRecordByMemberId([FromQuery] BillingRecordQueryInput input)
  1750 + {
  1751 + try
  1752 + {
  1753 + var sidx = input.sidx == null ? "kdrq" : input.sidx;
  1754 +
  1755 + var data = await _db.Queryable<LqKdKdjlbEntity>()
  1756 + .Where(p => p.Kdhy == input.MemberId)
  1757 + .WhereIF(input.StartTime.HasValue, p => p.Kdrq >= input.StartTime.Value)
  1758 + .WhereIF(input.EndTime.HasValue, p => p.Kdrq <= input.EndTime.Value)
  1759 + .Select(it => new LqKdKdjlbListOutput
  1760 + {
  1761 + id = it.Id,
  1762 + djmd = it.Djmd,
  1763 + jsj = it.Jsj,
  1764 + kdrq = it.Kdrq,
  1765 + gjlx = it.Gjlx,
  1766 + hgjg = it.Hgjg,
  1767 + zdyj = it.Zdyj,
  1768 + sfyj = it.Sfyj,
  1769 + qk = it.Qk,
  1770 + ckfs = it.Ckfs,
  1771 + fkfs = it.Fkfs,
  1772 + fkyy = it.Fkyy,
  1773 + fkpd = it.Fkpd,
  1774 + khly = it.Khly,
  1775 + tjr = it.Tjr,
  1776 + deductAmount = it.DeductAmount,
  1777 + sfskdd = it.Sfskdd,
  1778 + jj = it.Jj,
  1779 + bz = it.Bz,
  1780 + kdhy = it.Kdhy,
  1781 + kdhyc = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Khmc),
  1782 + kdhysjh = SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == it.Kdhy).Select(x => x.Sjh),
  1783 + IsEffective = it.IsEffective,
  1784 + CreateUser = it.CreateUser,
  1785 + CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
  1786 + })
  1787 + .MergeTable()
  1788 + .OrderBy(sidx + " " + input.sort)
  1789 + .ToPagedListAsync(input.currentPage, input.pageSize);
  1790 +
  1791 + // 获取当前页的开单记录ID列表
  1792 + var billingIds = data.list.Select(x => x.id).ToList();
  1793 +
  1794 + // 批量查询品项明细
  1795 + var itemDetails = new List<LqKdPxmxInfoOutput>();
  1796 + if (billingIds.Any())
  1797 + {
  1798 + itemDetails = await _db.Queryable<LqKdPxmxEntity>()
  1799 + .Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode())
  1800 + .Select(x => new LqKdPxmxInfoOutput
  1801 + {
  1802 + id = x.Id,
  1803 + glkdbh = x.Glkdbh,
  1804 + px = x.Px,
  1805 + pxmc = x.Pxmc,
  1806 + pxjg = x.Pxjg,
  1807 + projectNumber = x.ProjectNumber,
  1808 + isEnabled = x.IsEnabled,
  1809 + sourceType = x.SourceType,
  1810 + memberId = x.MemberId,
  1811 + createTime = x.CreateTIme,
  1812 + totalPrice = x.TotalPrice,
  1813 + actualPrice = x.ActualPrice,
  1814 + remark = x.Remark,
  1815 + isEffective = x.IsEffective
  1816 + })
  1817 + .ToListAsync();
  1818 + }
  1819 + // 按开单ID分组品项明细
  1820 + var itemDetailsGrouped = itemDetails.GroupBy(x => x.glkdbh)
  1821 + .ToDictionary(g => g.Key, g => g.ToList());
  1822 +
  1823 + // 为每个开单记录分配品项明细
  1824 + foreach (var item in data.list)
  1825 + {
  1826 + item.ItemDetails = itemDetailsGrouped.ContainsKey(item.id)
  1827 + ? itemDetailsGrouped[item.id]
  1828 + : new List<LqKdPxmxInfoOutput>();
  1829 + }
  1830 +
  1831 + return PageResult<LqKdKdjlbListOutput>.SqlSugarPageResult(data);
  1832 + }
  1833 + catch (Exception ex)
  1834 + {
  1835 + throw NCCException.Oh($"获取会员开单记录失败: {ex.Message}");
  1836 + }
  1837 + }
  1838 + #endregion
  1839 +
1740 1840 #region 私有方法
1741 1841 /// <summary>
1742 1842 /// 检查开单记录是否可以操作
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
... ... @@ -178,6 +178,7 @@ namespace NCC.Extend.LqKhxx
178 178 }
179 179 var entity = input.Adapt<LqKhxxEntity>();
180 180 entity.Id = YitIdHelper.NextId().ToString();
  181 + entity.Dah = "LQ" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
181 182 // 处理客户消费字段:将数组转换为逗号分隔的字符串
182 183 if (input.khxf != null && input.khxf.Count > 0)
183 184 {
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqMdXdbhsjService.cs
... ... @@ -85,6 +85,7 @@ namespace NCC.Extend.LqMdXdbhsj
85 85 sm = it.Sm,
86 86 cjsj = it.Cjsj,
87 87 sfqy = it.Sfqy,
  88 + stage = it.Stage,
88 89 })
89 90 .MergeTable()
90 91 .OrderBy(sidx + " " + input.sort)
... ... @@ -116,16 +117,12 @@ namespace NCC.Extend.LqMdXdbhsj
116 117 // 检查是否存在重叠的保护时间
117 118 var exists = await _db.Queryable<LqMdXdbhsjEntity>()
118 119 .Where(p => p.Mdid == entity.Mdid && p.Sfqy == 1)
119   - .Where(p =>
120   - (p.Bhkssj <= entity.Bhkssj && p.Bhjssj > entity.Bhkssj) || (p.Bhkssj < entity.Bhjssj && p.Bhjssj >= entity.Bhjssj) || (p.Bhkssj >= entity.Bhkssj && p.Bhjssj <= entity.Bhjssj)
121   - )
  120 + .Where(p => (p.Bhkssj <= entity.Bhkssj && p.Bhjssj > entity.Bhkssj) || (p.Bhkssj < entity.Bhjssj && p.Bhjssj >= entity.Bhjssj) || (p.Bhkssj >= entity.Bhkssj && p.Bhjssj <= entity.Bhjssj))
122 121 .AnyAsync();
123   -
124 122 if (exists)
125 123 {
126 124 throw NCCException.Oh("该门店在指定时间段内已存在保护时间设置");
127 125 }
128   -
129 126 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
130 127 if (!(isOk > 0))
131 128 throw NCCException.Oh(ErrorCode.COM1000);
... ... @@ -201,6 +198,7 @@ namespace NCC.Extend.LqMdXdbhsj
201 198 id = it.Id,
202 199 fullName = it.Mdid,
203 200 enCode = it.Id,
  201 + stage = it.Stage,
204 202 })
205 203 .ToListAsync();
206 204 return new { list = list };
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
... ... @@ -186,7 +186,7 @@ namespace NCC.Extend.LqTkjlb
186 186 MemberInfo.Khmc = entity.CustomerName;
187 187 MemberInfo.Sjh = input.customerPhone; // 设置手机号
188 188 MemberInfo.Khlx = MemberTypeEnum.线索.GetHashCode().ToString();
189   - MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
  189 + MemberInfo.Dah = "LQ" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
190 190 MemberInfo.Jdqd = "19.9卡";
191 191  
192 192 //找到input.expansionUserId的用户信息
... ... @@ -526,6 +526,5 @@ namespace NCC.Extend.LqTkjlb
526 526 }
527 527 #endregion
528 528  
529   -
530 529 }
531 530 }
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqXhFeedbackService.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Threading.Tasks;
  5 +using Mapster;
  6 +using Microsoft.AspNetCore.Mvc;
  7 +using Microsoft.Extensions.Logging;
  8 +using NCC.Common.Core.Manager;
  9 +using NCC.Common.Enum;
  10 +using NCC.Common.Filter;
  11 +using NCC.Common.Helper;
  12 +using NCC.Dependency;
  13 +using NCC.DynamicApiController;
  14 +using NCC.Extend.Entitys.Dto.LqXhFeedback;
  15 +using NCC.Extend.Entitys.lq_xh_feedback;
  16 +using NCC.Extend.Entitys.lq_xh_hyhk;
  17 +using NCC.Extend.Interfaces.LqXhFeedback;
  18 +using NCC.FriendlyException;
  19 +using NCC.System.Entitys.Permission;
  20 +using SqlSugar;
  21 +using Yitter.IdGenerator;
  22 +
  23 +namespace NCC.Extend
  24 +{
  25 + /// <summary>
  26 + /// 绿纤耗卡服务日志服务
  27 + /// </summary>
  28 + [ApiDescriptionSettings(Tag = "绿纤耗卡服务日志", Name = "LqXhFeedback", Order = 200, Groups = new[] { "Default" })]
  29 + [Route("api/Extend/[controller]")]
  30 + public class LqXhFeedbackService : ILqXhFeedbackService, IDynamicApiController, ITransient
  31 + {
  32 + private readonly ISqlSugarClient _db;
  33 + private readonly IUserManager _userManager;
  34 + private readonly ILogger<LqXhFeedbackService> _logger;
  35 +
  36 + public LqXhFeedbackService(ISqlSugarClient db, IUserManager userManager, ILogger<LqXhFeedbackService> logger)
  37 + {
  38 + _db = db;
  39 + _userManager = userManager;
  40 + _logger = logger;
  41 + }
  42 +
  43 + #region 获取耗卡反馈详情
  44 + /// <summary>
  45 + /// 获取耗卡反馈详情
  46 + /// </summary>
  47 + /// <remarks>
  48 + /// 根据反馈记录ID获取详细信息
  49 + ///
  50 + /// 示例请求:
  51 + /// GET /api/Extend/LqXhFeedback/GetInfo/{id}
  52 + ///
  53 + /// 参数说明:
  54 + /// - id: 反馈记录ID(路径参数)
  55 + /// </remarks>
  56 + /// <param name="id">反馈记录ID</param>
  57 + /// <returns>耗卡反馈详情</returns>
  58 + /// <response code="200">成功返回耗卡反馈详情</response>
  59 + /// <response code="404">记录不存在</response>
  60 + /// <response code="500">服务器错误</response>
  61 + [HttpGet("GetInfo/{id}")]
  62 + public async Task<dynamic> GetInfo(string id)
  63 + {
  64 + try
  65 + {
  66 + var entity = await _db.Queryable<LqXhFeedbackEntity>().Where(p => p.Id == id).FirstAsync();
  67 + if (entity == null)
  68 + {
  69 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
  70 + }
  71 + var output = entity.Adapt<LqXhFeedbackInfoOutput>();
  72 + // 获取添加人姓名
  73 + var createUser = await _db.Queryable<UserEntity>().Where(x => x.Id == entity.CreateUser).Select(x => x.RealName).FirstAsync();
  74 + output.createUserName = createUser;
  75 + return output;
  76 + }
  77 + catch (Exception ex)
  78 + {
  79 + throw NCCException.Oh($"获取耗卡反馈详情失败: {ex.Message}");
  80 + }
  81 + }
  82 + #endregion
  83 +
  84 + #region 创建耗卡反馈
  85 + /// <summary>
  86 + /// 创建耗卡反馈
  87 + /// </summary>
  88 + /// <remarks>
  89 + /// 创建新的耗卡反馈记录
  90 + ///
  91 + /// 示例请求:
  92 + /// ```json
  93 + /// {
  94 + /// "consumeId": "耗卡记录ID",
  95 + /// "beforeImage": "前图片路径或Base64",
  96 + /// "afterImage": "后图片路径或Base64",
  97 + /// "remark": "反馈备注"
  98 + /// }
  99 + /// ```
  100 + ///
  101 + /// 参数说明:
  102 + /// - consumeId: 耗卡记录ID(必填)
  103 + /// - beforeImage: 前图片(可选)
  104 + /// - afterImage: 后图片(可选)
  105 + /// - remark: 反馈备注(可选)
  106 + /// </remarks>
  107 + /// <param name="input">创建参数</param>
  108 + /// <returns>创建的耗卡反馈记录</returns>
  109 + /// <response code="200">成功创建耗卡反馈</response>
  110 + /// <response code="400">参数错误</response>
  111 + /// <response code="500">服务器错误</response>
  112 + [HttpPost("Create")]
  113 + public async Task<dynamic> Create([FromBody] LqXhFeedbackCrInput input)
  114 + {
  115 + try
  116 + {
  117 + // 验证耗卡记录是否存在
  118 + var consumeRecord = await _db.Queryable<LqXhHyhkEntity>().Where(p => p.Id == input.ConsumeId).FirstAsync();
  119 + if (consumeRecord == null)
  120 + {
  121 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在");
  122 + }
  123 + var entity = input.Adapt<LqXhFeedbackEntity>();
  124 + entity.Id = YitIdHelper.NextId().ToString();
  125 + entity.CreateUser = _userManager.UserId;
  126 + entity.CreateTime = DateTime.Now;
  127 + entity.UpdateTime = DateTime.Now;
  128 + await _db.Insertable(entity).ExecuteCommandAsync();
  129 + return entity.Adapt<LqXhFeedbackInfoOutput>();
  130 + }
  131 + catch (Exception ex)
  132 + {
  133 + throw NCCException.Oh($"创建耗卡反馈失败: {ex.Message}");
  134 + }
  135 + }
  136 + #endregion
  137 +
  138 + #region 更新耗卡反馈
  139 + /// <summary>
  140 + /// 更新耗卡反馈
  141 + /// </summary>
  142 + /// <remarks>
  143 + /// 更新现有的耗卡反馈记录
  144 + ///
  145 + /// 示例请求:
  146 + /// ```json
  147 + /// {
  148 + /// "id": "反馈记录ID",
  149 + /// "consumeId": "耗卡记录ID",
  150 + /// "beforeImage": "前图片路径或Base64",
  151 + /// "afterImage": "后图片路径或Base64",
  152 + /// "remark": "反馈备注"
  153 + /// }
  154 + /// ```
  155 + ///
  156 + /// 参数说明:
  157 + /// - id: 反馈记录ID(必填)
  158 + /// - consumeId: 耗卡记录ID(必填)
  159 + /// - beforeImage: 前图片(可选)
  160 + /// - afterImage: 后图片(可选)
  161 + /// - remark: 反馈备注(可选)
  162 + /// </remarks>
  163 + /// <param name="input">更新参数</param>
  164 + /// <returns>更新后的耗卡反馈记录</returns>
  165 + /// <response code="200">成功更新耗卡反馈</response>
  166 + /// <response code="400">参数错误</response>
  167 + /// <response code="404">记录不存在</response>
  168 + /// <response code="500">服务器错误</response>
  169 + [HttpPut("Update")]
  170 + public async Task<dynamic> Update([FromBody] LqXhFeedbackUpInput input)
  171 + {
  172 + try
  173 + {
  174 + var entity = await _db.Queryable<LqXhFeedbackEntity>().Where(p => p.Id == input.id).FirstAsync();
  175 + if (entity == null)
  176 + {
  177 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
  178 + }
  179 + // 验证耗卡记录是否存在
  180 + var consumeRecord = await _db.Queryable<LqXhHyhkEntity>().Where(p => p.Id == input.ConsumeId).FirstAsync();
  181 +
  182 + if (consumeRecord == null)
  183 + {
  184 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在");
  185 + }
  186 + entity.ConsumeId = input.ConsumeId;
  187 + entity.BeforeImage = input.BeforeImage;
  188 + entity.AfterImage = input.AfterImage;
  189 + entity.Remark = input.Remark;
  190 + entity.UpdateTime = DateTime.Now;
  191 + await _db.Updateable(entity).ExecuteCommandAsync();
  192 + return entity.Adapt<LqXhFeedbackInfoOutput>();
  193 + }
  194 + catch (Exception ex)
  195 + {
  196 + throw NCCException.Oh($"更新耗卡反馈失败: {ex.Message}");
  197 + }
  198 + }
  199 + #endregion
  200 +
  201 + #region 删除耗卡反馈
  202 + /// <summary>
  203 + /// 删除耗卡反馈
  204 + /// </summary>
  205 + /// <remarks>
  206 + /// 根据反馈记录ID删除记录
  207 + ///
  208 + /// 示例请求:
  209 + /// DELETE /api/Extend/LqXhFeedback/Delete/{id}
  210 + ///
  211 + /// 参数说明:
  212 + /// - id: 反馈记录ID(路径参数)
  213 + /// </remarks>
  214 + /// <param name="id">反馈记录ID</param>
  215 + /// <returns>删除结果</returns>
  216 + /// <response code="200">成功删除耗卡反馈</response>
  217 + /// <response code="404">记录不存在</response>
  218 + /// <response code="500">服务器错误</response>
  219 + [HttpDelete("Delete/{id}")]
  220 + public async Task<dynamic> Delete(string id)
  221 + {
  222 + try
  223 + {
  224 + var entity = await _db.Queryable<LqXhFeedbackEntity>()
  225 + .Where(p => p.Id == id)
  226 + .FirstAsync();
  227 +
  228 + if (entity == null)
  229 + {
  230 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡反馈记录不存在");
  231 + }
  232 +
  233 + await _db.Deleteable<LqXhFeedbackEntity>()
  234 + .Where(p => p.Id == id)
  235 + .ExecuteCommandAsync();
  236 +
  237 + return new { message = "删除成功" };
  238 + }
  239 + catch (Exception ex)
  240 + {
  241 + throw NCCException.Oh($"删除耗卡反馈失败: {ex.Message}");
  242 + }
  243 + }
  244 + #endregion
  245 +
  246 + #region 根据耗卡记录ID获取反馈
  247 + /// <summary>
  248 + /// 根据耗卡记录ID获取反馈
  249 + /// </summary>
  250 + /// <remarks>
  251 + /// 根据耗卡记录ID获取相关的所有反馈记录
  252 + ///
  253 + /// 示例请求:
  254 + /// GET /api/Extend/LqXhFeedback/GetByConsumeId/{consumeId}
  255 + ///
  256 + /// 参数说明:
  257 + /// - consumeId: 耗卡记录ID(路径参数)
  258 + /// </remarks>
  259 + /// <param name="consumeId">耗卡记录ID</param>
  260 + /// <returns>耗卡反馈列表</returns>
  261 + /// <response code="200">成功返回耗卡反馈列表</response>
  262 + /// <response code="500">服务器错误</response>
  263 + [HttpGet("GetByConsumeId/{consumeId}")]
  264 + public async Task<dynamic> GetByConsumeId(string consumeId)
  265 + {
  266 + try
  267 + {
  268 + var data = await _db.Queryable<LqXhFeedbackEntity>()
  269 + .Where(p => p.ConsumeId == consumeId)
  270 + .OrderBy(p => p.CreateTime, OrderByType.Desc)
  271 + .Select(it => new LqXhFeedbackListOutput
  272 + {
  273 + id = it.Id,
  274 + consumeId = it.ConsumeId,
  275 + beforeImage = it.BeforeImage,
  276 + afterImage = it.AfterImage,
  277 + remark = it.Remark,
  278 + createUser = it.CreateUser,
  279 + createUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
  280 + createTime = it.CreateTime,
  281 + updateTime = it.UpdateTime
  282 + })
  283 + .ToListAsync();
  284 +
  285 + return data;
  286 + }
  287 + catch (Exception ex)
  288 + {
  289 + throw NCCException.Oh($"获取耗卡反馈失败: {ex.Message}");
  290 + }
  291 + }
  292 + #endregion
  293 + }
  294 +}
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
... ... @@ -104,6 +104,10 @@ namespace NCC.Extend.LqXhHyhk
104 104 }
105 105  
106 106 var output = entity.Adapt<LqXhHyhkInfoOutput>();
  107 + //获取会员信息
  108 + var MemberInfo = await _db.Queryable<LqKhxxEntity>().FirstAsync(p => p.Id == entity.Hy);
  109 + output.hymc = MemberInfo.Khmc;
  110 + output.memberPhone = MemberInfo.Sjh;
107 111  
108 112 // 2. 查询品项明细列表
109 113 var lqXhPxmxList = await _db.Queryable<LqXhPxmxEntity>().Where(w => w.ConsumeInfoId == entity.Id).ToListAsync();
... ... @@ -197,18 +201,59 @@ namespace NCC.Extend.LqXhHyhk
197 201 mdmc = it.Mdmc,
198 202 hy = it.Hy,
199 203 hyzh = it.Hyzh,
200   - hymc = it.Hymc,
  204 + hymc = SqlFunc.Subqueryable<LqKhxxEntity>().Where(w => w.Id == it.Hy).Select(w => w.Khmc),
201 205 gklx = it.Gklx,
202 206 xfje = SqlFunc.ToString(it.Xfje),
203 207 sgfy = SqlFunc.ToString(it.Sgfy),
204 208 sfykjb = it.Sfykjb,
205 209 hksj = it.Hksj,
206 210 czry = it.Czry,
207   - memberPhone = it.MemberPhone,
  211 + memberPhone = SqlFunc.Subqueryable<LqKhxxEntity>().Where(w => w.Id == it.Hy).Select(w => w.Sjh),
  212 + isEffective = it.IsEffective,
208 213 })
209 214 .MergeTable()
210 215 .OrderBy(sidx + " " + input.sort)
211 216 .ToPagedListAsync(input.currentPage, input.pageSize);
  217 +
  218 + // 获取当前页的耗卡记录ID列表
  219 + var consumeIds = data.list.Select(x => x.id).ToList();
  220 +
  221 + // 批量查询耗卡明细
  222 + var consumeDetails = new List<LqXhPxmxInfoOutput>();
  223 + if (consumeIds.Any())
  224 + {
  225 + consumeDetails = await _db.Queryable<LqXhPxmxEntity>()
  226 + .Where(x => consumeIds.Contains(x.ConsumeInfoId) && x.IsEffective == StatusEnum.有效.GetHashCode())
  227 + .Select(x => new LqXhPxmxInfoOutput
  228 + {
  229 + id = x.Id,
  230 + consumeInfoId = x.ConsumeInfoId,
  231 + billingItemId = x.BillingItemId,
  232 + px = x.Px,
  233 + pxmc = x.Pxmc,
  234 + pxjg = x.Pxjg,
  235 + memberId = x.MemberId,
  236 + createTime = x.CreateTIme,
  237 + projectNumber = x.ProjectNumber,
  238 + sourceType = x.SourceType,
  239 + totalPrice = x.TotalPrice,
  240 + isEffective = x.IsEffective
  241 + })
  242 + .ToListAsync();
  243 + }
  244 +
  245 + // 按耗卡记录ID分组耗卡明细
  246 + var consumeDetailsGrouped = consumeDetails.GroupBy(x => x.consumeInfoId)
  247 + .ToDictionary(g => g.Key, g => g.ToList());
  248 +
  249 + // 为每个耗卡记录分配耗卡明细
  250 + foreach (var item in data.list)
  251 + {
  252 + item.ConsumeDetails = consumeDetailsGrouped.ContainsKey(item.id)
  253 + ? consumeDetailsGrouped[item.id]
  254 + : new List<LqXhPxmxInfoOutput>();
  255 + }
  256 +
212 257 return PageResult<LqXhHyhkListOutput>.SqlSugarPageResult(data);
213 258 }
214 259 #endregion
... ... @@ -264,6 +309,8 @@ namespace NCC.Extend.LqXhHyhk
264 309 entity.Czry = _userManager.UserId;
265 310 entity.MemberPhone = _db.Queryable<LqKhxxEntity>().Where(w => w.Id == entity.Hy).First().Sjh;
266 311 entity.CreateTime = DateTime.Now;
  312 + entity.IsEffective = StatusEnum.有效.GetHashCode();
  313 + entity.UpdateTime = DateTime.Now;
267 314 try
268 315 {
269 316 // 开启事务
... ... @@ -407,7 +454,8 @@ namespace NCC.Extend.LqXhHyhk
407 454 mdmc = it.Mdmc,
408 455 hy = it.Hy,
409 456 hyzh = it.Hyzh,
410   - hymc = it.Hymc,
  457 + hymc = SqlFunc.Subqueryable<LqKhxxEntity>().Where(w => w.Id == it.Hy).Select(w => w.Khmc),
  458 + memberPhone = SqlFunc.Subqueryable<LqKhxxEntity>().Where(w => w.Id == it.Hy).Select(w => w.Sjh),
411 459 gklx = it.Gklx,
412 460 xfje = SqlFunc.ToString(it.Xfje),
413 461 sgfy = SqlFunc.ToString(it.Sgfy),
... ... @@ -509,7 +557,7 @@ namespace NCC.Extend.LqXhHyhk
509 557  
510 558 #region 更新会员耗卡
511 559 /// <summary>
512   - /// 更新会员耗卡,不会删除品项明细,只会更新或新增
  560 + /// 更新会员耗卡
513 561 /// </summary>
514 562 /// <param name="id">主键</param>
515 563 /// <param name="input">参数</param>
... ... @@ -758,9 +806,10 @@ namespace NCC.Extend.LqXhHyhk
758 806 /// 耗卡记录作废
759 807 /// </summary>
760 808 /// <param name="id">耗卡记录ID</param>
  809 + /// <param name="remarks">作废备注</param>
761 810 /// <returns></returns>
762 811 [HttpPut("CancelCardUsageRecord/{id}")]
763   - public async Task<dynamic> CancelCardUsageRecord(string id)
  812 + public async Task<dynamic> CancelCardUsageRecord(string id, [FromQuery] string remarks = null)
764 813 {
765 814 try
766 815 {
... ... @@ -774,6 +823,8 @@ namespace NCC.Extend.LqXhHyhk
774 823 }
775 824 //更新耗卡记录状态
776 825 LqhyhkInfo.IsEffective = StatusEnum.无效.GetHashCode();
  826 + LqhyhkInfo.UpdateTime = DateTime.Now;
  827 + LqhyhkInfo.CancelRemark = remarks;
777 828 await _db.Updateable(LqhyhkInfo).ExecuteCommandAsync();
778 829 //更新品项明细表状态
779 830 await _db.Updateable<LqXhPxmxEntity>().SetColumns(it => new LqXhPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.ConsumeInfoId == id).ExecuteCommandAsync();
... ... @@ -820,7 +871,7 @@ namespace NCC.Extend.LqXhHyhk
820 871 {
821 872 Id = it.Id,
822 873 MemberId = it.Hy,
823   - MemberName = it.Hymc,
  874 + MemberName = SqlFunc.Subqueryable<LqKhxxEntity>().Where(w => w.Id == it.Hy).Select(w => w.Khmc),
824 875 StoreId = it.Md,
825 876 StoreName = it.Mdmc,
826 877 UsageDate = it.Hksj,
... ...
netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs
... ... @@ -51,7 +51,7 @@ namespace NCC.Extend.Utils
51 51 sb.AppendLine($"⏩健康师:{string.Join("、", healthTeachers)}");
52 52  
53 53 // 活动方案:532工程
54   - sb.AppendLine($"⏩活动方案:{entity.pxxx ?? "无"}");
  54 + // sb.AppendLine($"⏩活动方案:{entity.pxxx ?? "无"}");
55 55 // 跟单配合:王经理 竹主任 陈思思老师
56 56 var techTeachers = GetTechTeachers(entity.lqKdKjbsyjList);
57 57 sb.AppendLine($"⏩跟单配合:{techTeachers}");
... ...
netcore/src/Modularity/Extend/NCC.Extend/Utils/WeChatBotTestController.cs
... ... @@ -74,7 +74,7 @@ namespace NCC.Extend.Utils
74 74 jsj = "DEPT001", // 部门编码
75 75 kdhy = "CUSTOMER001", // 客户ID
76 76 kdhyc = "测试客户",
77   - pxxx = "测试方案",
  77 + // pxxx = "测试方案",
78 78 zdyj = 1000,
79 79 sfyj = 1000,
80 80 qk = 0,
... ...