Commit b45d55f7d41e9102d1125da84a00e25409a0bbf8

Authored by “wangming”
1 parent b1e65b28

Refactor LqEventService and related DTOs to enhance event handling; implement ma…

…nual mapping for event output, update member retrieval logic, and streamline event type retrieval. Modify LqHytkHytkService to adjust entity relationships and improve data handling. Introduce deduct information handling in LqKdKdjlbService and update related DTOs for consistency. Enhance LqTkjlbService to improve data retrieval and organization. Update LqXhHyhkService to refine consumption tracking and improve data integrity.
Showing 37 changed files with 1099 additions and 567 deletions
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/EventTypeEnumOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/Common/EnumOutput.cs
1 -using System.ComponentModel;  
2 -  
3 -namespace NCC.Extend.Entitys.Dto.LqEvent 1 +namespace NCC.Extend.Entitys.Dto.Common
4 { 2 {
5 /// <summary> 3 /// <summary>
6 - /// 拓客类型枚举输出 4 + /// 通用枚举输出
7 /// </summary> 5 /// </summary>
8 - public class EventTypeEnumOutput 6 + public class EnumOutput
9 { 7 {
10 /// <summary> 8 /// <summary>
11 /// 枚举值 9 /// 枚举值
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs
@@ -14,7 +14,7 @@ namespace NCC.Extend.Entitys.Dto.LqEvent @@ -14,7 +14,7 @@ namespace NCC.Extend.Entitys.Dto.LqEvent
14 /// 主键ID 14 /// 主键ID
15 /// </summary> 15 /// </summary>
16 [Required(ErrorMessage = "活动ID不能为空")] 16 [Required(ErrorMessage = "活动ID不能为空")]
17 - public new int? Id { get; set; } 17 + public new string Id { get; set; }
18 18
19 /// <summary> 19 /// <summary>
20 /// 活动名称 20 /// 活动名称
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreTeamDataOutput.cs 0 → 100644
  1 +using System.Collections.Generic;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqEvent
  4 +{
  5 + /// <summary>
  6 + /// 门店战队数据输出
  7 + /// </summary>
  8 + public class StoreTeamDataOutput
  9 + {
  10 + /// <summary>
  11 + /// 门店ID
  12 + /// </summary>
  13 + public string StoreId { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 门店名称
  17 + /// </summary>
  18 + public string StoreName { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 战队列表
  22 + /// </summary>
  23 + public List<TeamInfoOutput> TeamList { get; set; } = new List<TeamInfoOutput>();
  24 + }
  25 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamInfoOutput.cs 0 → 100644
  1 +using System.Collections.Generic;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqEvent
  4 +{
  5 + /// <summary>
  6 + /// 战队信息输出
  7 + /// </summary>
  8 + public class TeamInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 战队名称
  12 + /// </summary>
  13 + public string TeamName { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 战队用户信息列表
  17 + /// </summary>
  18 + public List<TeamUserInfoOutput> TeamUserInfo { get; set; } = new List<TeamUserInfoOutput>();
  19 + }
  20 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/TeamUserInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqEvent
  4 +{
  5 + /// <summary>
  6 + /// 战队用户信息输出
  7 + /// </summary>
  8 + public class TeamUserInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 拓客用户ID
  12 + /// </summary>
  13 + public string ExpansionUserId { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 拓客用户姓名
  17 + /// </summary>
  18 + public string ExpansionUserName { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 拓客数量
  22 + /// </summary>
  23 + public int ExpansionCount { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 活动目标
  27 + /// </summary>
  28 + public int EventTarget { get; set; }
  29 + }
  30 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs
@@ -42,6 +42,6 @@ namespace NCC.Extend.Entitys.Dto.LqEventUser @@ -42,6 +42,6 @@ namespace NCC.Extend.Entitys.Dto.LqEventUser
42 /// <summary> 42 /// <summary>
43 /// 目标张数 43 /// 目标张数
44 /// </summary> 44 /// </summary>
45 - public int? TargetCount { get; set; } 45 + public int TargetCount { get; set; } = 0;
46 } 46 }
47 } 47 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs
@@ -95,15 +95,5 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk @@ -95,15 +95,5 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
95 /// 退卡品项明细列表 95 /// 退卡品项明细列表
96 /// </summary> 96 /// </summary>
97 public List<LqHytkMxCrInput> lqHytkMxList { get; set; } 97 public List<LqHytkMxCrInput> lqHytkMxList { get; set; }
98 -  
99 - /// <summary>  
100 - /// 退卡健康师业绩列表  
101 - /// </summary>  
102 - public List<LqHytkJksyjCrInput> lqHytkJksyjList { get; set; }  
103 -  
104 - /// <summary>  
105 - /// 退卡科技部老师业绩列表  
106 - /// </summary>  
107 - public List<LqHytkKjbsyjCrInput> lqHytkKjbsyjList { get; set; }  
108 } 98 }
109 } 99 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs
@@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx
16 public string id { get; set; } 16 public string id { get; set; }
17 17
18 /// <summary> 18 /// <summary>
19 - /// 关联退卡编号 19 + /// 关联退卡Id
20 /// </summary> 20 /// </summary>
21 - public string gltkbh { get; set; } 21 + public string refundInfoId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 退卡记录Id
  25 + /// </summary>
  26 + public string billingItemId { get; set; }
22 27
23 /// <summary> 28 /// <summary>
24 /// 品项 29 /// 品项
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs
@@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx
16 public string id { get; set; } 16 public string id { get; set; }
17 17
18 /// <summary> 18 /// <summary>
19 - /// 关联退卡编号 19 + /// 关联退卡Id
20 /// </summary> 20 /// </summary>
21 - public string gltkbh { get; set; } 21 + public string refundInfoId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 退卡记录Id
  25 + /// </summary>
  26 + public string billingItemId { get; set; }
22 27
23 /// <summary> 28 /// <summary>
24 /// 品项编号 29 /// 品项编号
@@ -43,22 +48,22 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx @@ -43,22 +48,22 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx
43 /// <summary> 48 /// <summary>
44 /// 项目次数 49 /// 项目次数
45 /// </summary> 50 /// </summary>
46 - public int? F_ProjectNumber { get; set; } 51 + public int projectNumber { get; set; }
47 52
48 /// <summary> 53 /// <summary>
49 /// 是否有效 54 /// 是否有效
50 /// </summary> 55 /// </summary>
51 - public int? F_IsEnabled { get; set; } 56 + public int isEnabled { get; set; }
52 57
53 /// <summary> 58 /// <summary>
54 /// 来源类型(开卡/赠送/其他) 59 /// 来源类型(开卡/赠送/其他)
55 /// </summary> 60 /// </summary>
56 - public string F_SourceType { get; set; } 61 + public string sourceType { get; set; }
57 62
58 /// <summary> 63 /// <summary>
59 /// 合计金额(品项价格 × 项目次数) 64 /// 合计金额(品项价格 × 项目次数)
60 /// </summary> 65 /// </summary>
61 - public decimal? F_TotalPrice { get; set; } 66 + public decimal? totalPrice { get; set; }
62 67
63 /// <summary> 68 /// <summary>
64 /// 健康师业绩列表 69 /// 健康师业绩列表
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoCrInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
  5 +{
  6 + /// <summary>
  7 + /// 开单扣减信息创建输入
  8 + /// </summary>
  9 + public class LqKdDeductinfoCrInput
  10 + {
  11 + /// <summary>
  12 + /// 扣减类型
  13 + /// </summary>
  14 + [Required(ErrorMessage = "扣减类型不能为空")]
  15 + public int? DeductType { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 扣减关联ID
  19 + /// </summary>
  20 + [Required(ErrorMessage = "扣减关联ID不能为空")]
  21 + public string DeductId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 开单id
  25 + /// </summary>
  26 + [Required(ErrorMessage = "开单id不能为空")]
  27 + public string BillingId { get; set; }
  28 +
  29 + /// <summary>
  30 + /// 合计金额
  31 + /// </summary>
  32 + [Required(ErrorMessage = "合计金额不能为空")]
  33 + [Range(0.01, 999999.99, ErrorMessage = "合计金额必须在0.01到999999.99之间")]
  34 + public decimal? Amount { get; set; }
  35 + }
  36 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
  4 +{
  5 + /// <summary>
  6 + /// 开单扣减信息详情输出
  7 + /// </summary>
  8 + public class LqKdDeductinfoInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键
  12 + /// </summary>
  13 + public string Id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 扣减类型
  17 + /// </summary>
  18 + public int? DeductType { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 扣减类型名称
  22 + /// </summary>
  23 + public string DeductTypeName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 扣减关联ID
  27 + /// </summary>
  28 + public string DeductId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 开单id
  32 + /// </summary>
  33 + public string BillingId { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 合计金额
  37 + /// </summary>
  38 + public decimal? Amount { get; set; }
  39 + }
  40 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
  4 +{
  5 + /// <summary>
  6 + /// 开单扣减信息列表输出
  7 + /// </summary>
  8 + public class LqKdDeductinfoListOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键
  12 + /// </summary>
  13 + public string Id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 扣减类型
  17 + /// </summary>
  18 + public int? DeductType { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 扣减类型名称
  22 + /// </summary>
  23 + public string DeductTypeName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 扣减关联ID
  27 + /// </summary>
  28 + public string DeductId { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 开单id
  32 + /// </summary>
  33 + public string BillingId { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 合计金额
  37 + /// </summary>
  38 + public decimal? Amount { get; set; }
  39 + }
  40 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoListQueryInput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
  4 +{
  5 + /// <summary>
  6 + /// 开单扣减信息列表查询输入
  7 + /// </summary>
  8 + public class LqKdDeductinfoListQueryInput
  9 + {
  10 + /// <summary>
  11 + /// 扣减类型
  12 + /// </summary>
  13 + public int? DeductType { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 扣减关联ID
  17 + /// </summary>
  18 + public string DeductId { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 开单id
  22 + /// </summary>
  23 + public string BillingId { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 最小金额
  27 + /// </summary>
  28 + public decimal? MinAmount { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 最大金额
  32 + /// </summary>
  33 + public decimal? MaxAmount { get; set; }
  34 + }
  35 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoUpInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
  5 +{
  6 + /// <summary>
  7 + /// 开单扣减信息更新输入
  8 + /// </summary>
  9 + public class LqKdDeductinfoUpInput : LqKdDeductinfoCrInput
  10 + {
  11 + /// <summary>
  12 + /// 主键
  13 + /// </summary>
  14 + [Required(ErrorMessage = "主键不能为空")]
  15 + public string Id { get; set; }
  16 + }
  17 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using NCC.Common.Model; 3 using NCC.Common.Model;
  4 +using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
4 5
5 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb 6 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
6 { 7 {
@@ -150,6 +151,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -150,6 +151,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
150 public string F_FIleUrl { get; set; } 151 public string F_FIleUrl { get; set; }
151 152
152 /// <summary> 153 /// <summary>
  154 + /// 扣款信息
  155 + /// </summary>
  156 + public List<LqKdDeductinfoCrInput> lqKdKdjlbDeductList { get; set; }
  157 +
  158 + /// <summary>
153 /// 开单_品项明细 159 /// 开单_品项明细
154 /// </summary> 160 /// </summary>
155 public List<LqKdPxmxCrInput> lqKdPxmxList { get; set; } 161 public List<LqKdPxmxCrInput> lqKdPxmxList { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs
@@ -16,42 +16,42 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -16,42 +16,42 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
16 /// <summary> 16 /// <summary>
17 /// 拓客时间 17 /// 拓客时间
18 /// </summary> 18 /// </summary>
19 - public DateTime? tksj { get; set; } 19 + public DateTime expansionTime { get; set; }
  20 +
  21 + /// <summary>
  22 + /// 拓客人员
  23 + /// </summary>
  24 + public string expansionUserId { get; set; }
20 25
21 /// <summary> 26 /// <summary>
22 /// 顾客姓名 27 /// 顾客姓名
23 /// </summary> 28 /// </summary>
24 - public string gkxm { get; set; } 29 + public string customerName { get; set; }
25 30
26 /// <summary> 31 /// <summary>
27 - /// 电话号码 32 + /// 顾客电话号码
28 /// </summary> 33 /// </summary>
29 - public string dhhm { get; set; } 34 + public string customerPhone { get; set; }
30 35
31 /// <summary> 36 /// <summary>
32 /// 购买张数 37 /// 购买张数
33 /// </summary> 38 /// </summary>
34 - public int? gmzs { get; set; } 39 + public int buyNumber { get; set; }
35 40
36 /// <summary> 41 /// <summary>
37 /// 支付方式 42 /// 支付方式
38 /// </summary> 43 /// </summary>
39 - public string zffs { get; set; } 44 + public string paymentMethod { get; set; }
40 45
41 /// <summary> 46 /// <summary>
42 /// 是否加微信 47 /// 是否加微信
43 /// </summary> 48 /// </summary>
44 - public string sfjwx { get; set; } 49 + public string isAddWeChat { get; set; }
45 50
46 /// <summary> 51 /// <summary>
47 /// 备注 52 /// 备注
48 /// </summary> 53 /// </summary>
49 - public string bz { get; set; }  
50 -  
51 - /// <summary>  
52 - /// 拓客人员  
53 - /// </summary>  
54 - public string tkry { get; set; } 54 + public string remarks { get; set; }
55 55
56 /// <summary> 56 /// <summary>
57 /// 拓客活动id 57 /// 拓客活动id
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs
@@ -16,52 +16,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -16,52 +16,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
16 /// <summary> 16 /// <summary>
17 /// 拓客时间 17 /// 拓客时间
18 /// </summary> 18 /// </summary>
19 - public DateTime? tksj { get; set; } 19 + public DateTime expansionTime { get; set; }
20 20
21 /// <summary> 21 /// <summary>
22 /// 拓客人员 22 /// 拓客人员
23 /// </summary> 23 /// </summary>
24 - public string tkry { get; set; } 24 + public string expansionUserId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 拓客人员
  28 + /// </summary>
  29 + public string expansionUserName { get; set; }
25 30
26 /// <summary> 31 /// <summary>
27 /// 顾客姓名 32 /// 顾客姓名
28 /// </summary> 33 /// </summary>
29 - public string gkxm { get; set; } 34 + public string customerName { get; set; }
30 35
31 /// <summary> 36 /// <summary>
32 - /// 电话号码 37 + /// 顾客电话号码
33 /// </summary> 38 /// </summary>
34 - public string dhhm { get; set; } 39 + public string customerPhone { get; set; }
35 40
36 /// <summary> 41 /// <summary>
37 /// 购买张数 42 /// 购买张数
38 /// </summary> 43 /// </summary>
39 - public int? gmzs { get; set; } 44 + public int buyNumber { get; set; }
40 45
41 /// <summary> 46 /// <summary>
42 /// 支付方式 47 /// 支付方式
43 /// </summary> 48 /// </summary>
44 - public string zffs { get; set; } 49 + public string paymentMethod { get; set; }
45 50
46 /// <summary> 51 /// <summary>
47 /// 是否加微信 52 /// 是否加微信
48 /// </summary> 53 /// </summary>
49 - public string sfjwx { get; set; } 54 + public string isAddWeChat { get; set; }
50 55
51 /// <summary> 56 /// <summary>
52 /// 备注 57 /// 备注
53 /// </summary> 58 /// </summary>
54 - public string bz { get; set; } 59 + public string remarks { get; set; }
55 60
56 /// <summary> 61 /// <summary>
57 - /// 所属门店 62 + /// 所属门店ID
58 /// </summary> 63 /// </summary>
59 - public string ssmd { get; set; } 64 + public string storeId { get; set; }
60 65
61 /// <summary> 66 /// <summary>
62 /// 所属战队 67 /// 所属战队
63 /// </summary> 68 /// </summary>
64 - public string sszd { get; set; } 69 + public string teamName { get; set; }
65 70
66 /// <summary> 71 /// <summary>
67 /// 拓客活动id 72 /// 拓客活动id
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs
@@ -15,52 +15,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -15,52 +15,57 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
15 /// <summary> 15 /// <summary>
16 /// 拓客时间 16 /// 拓客时间
17 /// </summary> 17 /// </summary>
18 - public DateTime? tksj { get; set; } 18 + public DateTime expansionTime { get; set; }
19 19
20 /// <summary> 20 /// <summary>
21 /// 拓客人员 21 /// 拓客人员
22 /// </summary> 22 /// </summary>
23 - public string tkry { get; set; } 23 + public string expansionUserId { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 拓客人员
  27 + /// </summary>
  28 + public string expansionUserName { get; set; }
24 29
25 /// <summary> 30 /// <summary>
26 /// 顾客姓名 31 /// 顾客姓名
27 /// </summary> 32 /// </summary>
28 - public string gkxm { get; set; } 33 + public string customerName { get; set; }
29 34
30 /// <summary> 35 /// <summary>
31 - /// 电话号码 36 + /// 顾客电话号码
32 /// </summary> 37 /// </summary>
33 - public string dhhm { get; set; } 38 + public string customerPhone { get; set; }
34 39
35 /// <summary> 40 /// <summary>
36 /// 购买张数 41 /// 购买张数
37 /// </summary> 42 /// </summary>
38 - public int? gmzs { get; set; } 43 + public int buyNumber { get; set; }
39 44
40 /// <summary> 45 /// <summary>
41 /// 支付方式 46 /// 支付方式
42 /// </summary> 47 /// </summary>
43 - public string zffs { get; set; } 48 + public string paymentMethod { get; set; }
44 49
45 /// <summary> 50 /// <summary>
46 /// 是否加微信 51 /// 是否加微信
47 /// </summary> 52 /// </summary>
48 - public string sfjwx { get; set; } 53 + public string isAddWeChat { get; set; }
49 54
50 /// <summary> 55 /// <summary>
51 /// 备注 56 /// 备注
52 /// </summary> 57 /// </summary>
53 - public string bz { get; set; } 58 + public string remarks { get; set; }
54 59
55 /// <summary> 60 /// <summary>
56 - /// 所属门店 61 + /// 所属门店ID
57 /// </summary> 62 /// </summary>
58 - public string ssmd { get; set; } 63 + public string storeId { get; set; }
59 64
60 /// <summary> 65 /// <summary>
61 /// 所属战队 66 /// 所属战队
62 /// </summary> 67 /// </summary>
63 - public string sszd { get; set; } 68 + public string teamName { get; set; }
64 69
65 /// <summary> 70 /// <summary>
66 /// 拓客活动id 71 /// 拓客活动id
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListQueryInput.cs
1 -using NCC.Common.Filter;  
2 -using System.Collections.Generic; 1 +using System.Collections.Generic;
  2 +using NCC.Common.Filter;
3 3
4 namespace NCC.Extend.Entitys.Dto.LqTkjlb 4 namespace NCC.Extend.Entitys.Dto.LqTkjlb
5 { 5 {
@@ -14,65 +14,68 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -14,65 +14,68 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
14 public string selectKey { get; set; } 14 public string selectKey { get; set; }
15 15
16 /// <summary> 16 /// <summary>
17 - /// 17 + ///
18 /// </summary> 18 /// </summary>
19 public int dataType { get; set; } 19 public int dataType { get; set; }
20 20
21 -  
22 /// <summary> 21 /// <summary>
23 /// 拓客编号 22 /// 拓客编号
24 /// </summary> 23 /// </summary>
25 public string id { get; set; } 24 public string id { get; set; }
26 - 25 +
27 /// <summary> 26 /// <summary>
28 /// 拓客时间 27 /// 拓客时间
29 /// </summary> 28 /// </summary>
30 - public string tksj { get; set; }  
31 - 29 + public string expansionTime { get; set; }
  30 +
32 /// <summary> 31 /// <summary>
33 /// 拓客人员 32 /// 拓客人员
34 /// </summary> 33 /// </summary>
35 - public string tkry { get; set; }  
36 - 34 + public string expansionUserId { get; set; }
  35 +
37 /// <summary> 36 /// <summary>
38 /// 顾客姓名 37 /// 顾客姓名
39 /// </summary> 38 /// </summary>
40 - public string gkxm { get; set; }  
41 - 39 + public string customerName { get; set; }
  40 +
42 /// <summary> 41 /// <summary>
43 - /// 电话号码 42 + /// 顾客电话号码
44 /// </summary> 43 /// </summary>
45 - public string dhhm { get; set; }  
46 - 44 + public string customerPhone { get; set; }
  45 +
47 /// <summary> 46 /// <summary>
48 /// 购买张数 47 /// 购买张数
49 /// </summary> 48 /// </summary>
50 - public string gmzs { get; set; }  
51 - 49 + public string buyNumber { get; set; }
  50 +
52 /// <summary> 51 /// <summary>
53 /// 支付方式 52 /// 支付方式
54 /// </summary> 53 /// </summary>
55 - public string zffs { get; set; }  
56 - 54 + public string paymentMethod { get; set; }
  55 +
57 /// <summary> 56 /// <summary>
58 /// 是否加微信 57 /// 是否加微信
59 /// </summary> 58 /// </summary>
60 - public string sfjwx { get; set; }  
61 - 59 + public string isAddWeChat { get; set; }
  60 +
62 /// <summary> 61 /// <summary>
63 /// 备注 62 /// 备注
64 /// </summary> 63 /// </summary>
65 - public string bz { get; set; }  
66 - 64 + public string remarks { get; set; }
  65 +
67 /// <summary> 66 /// <summary>
68 - /// 所属门店 67 + /// 拓客活动id
69 /// </summary> 68 /// </summary>
70 - public string ssmd { get; set; }  
71 - 69 + public string eventId { get; set; }
  70 +
  71 + /// <summary>
  72 + /// 所属门店ID
  73 + /// </summary>
  74 + public string storeId { get; set; }
  75 +
72 /// <summary> 76 /// <summary>
73 /// 所属战队 77 /// 所属战队
74 /// </summary> 78 /// </summary>
75 - public string sszd { get; set; }  
76 - 79 + public string teamName { get; set; }
77 } 80 }
78 } 81 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbRankingOutput.cs
@@ -10,13 +10,13 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -10,13 +10,13 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
10 /// <summary> 10 /// <summary>
11 /// 所属战队 11 /// 所属战队
12 /// </summary> 12 /// </summary>
13 - public string sszd { get; set; }  
14 - 13 + public string teamName { get; set; }
  14 +
15 /// <summary> 15 /// <summary>
16 /// 拓客人数 16 /// 拓客人数
17 /// </summary> 17 /// </summary>
18 - public int tkrs { get; set; }  
19 - 18 + public int expansionUserCount { get; set; }
  19 +
20 /// <summary> 20 /// <summary>
21 /// 排名 21 /// 排名
22 /// </summary> 22 /// </summary>
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkCrInput.cs
@@ -13,71 +13,70 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk @@ -13,71 +13,70 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
13 /// 耗卡编号 13 /// 耗卡编号
14 /// </summary> 14 /// </summary>
15 public string id { get; set; } 15 public string id { get; set; }
16 - 16 +
17 /// <summary> 17 /// <summary>
18 /// 门店 18 /// 门店
19 /// </summary> 19 /// </summary>
20 public string md { get; set; } 20 public string md { get; set; }
21 - 21 +
22 /// <summary> 22 /// <summary>
23 /// 门店编号 23 /// 门店编号
24 /// </summary> 24 /// </summary>
25 public string mdbh { get; set; } 25 public string mdbh { get; set; }
26 - 26 +
27 /// <summary> 27 /// <summary>
28 /// 门店名称 28 /// 门店名称
29 /// </summary> 29 /// </summary>
30 public string mdmc { get; set; } 30 public string mdmc { get; set; }
31 - 31 +
32 /// <summary> 32 /// <summary>
33 /// 会员 33 /// 会员
34 /// </summary> 34 /// </summary>
35 public string hy { get; set; } 35 public string hy { get; set; }
36 - 36 +
37 /// <summary> 37 /// <summary>
38 /// 会员账号 38 /// 会员账号
39 /// </summary> 39 /// </summary>
40 public string hyzh { get; set; } 40 public string hyzh { get; set; }
41 - 41 +
42 /// <summary> 42 /// <summary>
43 /// 会员名称 43 /// 会员名称
44 /// </summary> 44 /// </summary>
45 public string hymc { get; set; } 45 public string hymc { get; set; }
46 - 46 +
47 /// <summary> 47 /// <summary>
48 /// 顾客类型 48 /// 顾客类型
49 /// </summary> 49 /// </summary>
50 public string gklx { get; set; } 50 public string gklx { get; set; }
51 - 51 +
52 /// <summary> 52 /// <summary>
53 /// 消费金额 53 /// 消费金额
54 /// </summary> 54 /// </summary>
55 public string xfje { get; set; } 55 public string xfje { get; set; }
56 - 56 +
57 /// <summary> 57 /// <summary>
58 /// 手工费用 58 /// 手工费用
59 /// </summary> 59 /// </summary>
60 public string sgfy { get; set; } 60 public string sgfy { get; set; }
61 - 61 +
62 /// <summary> 62 /// <summary>
63 /// 是否有科技部 63 /// 是否有科技部
64 /// </summary> 64 /// </summary>
65 public string sfykjb { get; set; } 65 public string sfykjb { get; set; }
66 - 66 +
67 /// <summary> 67 /// <summary>
68 /// 耗卡时间 68 /// 耗卡时间
69 /// </summary> 69 /// </summary>
70 public DateTime? hksj { get; set; } 70 public DateTime? hksj { get; set; }
71 - 71 +
72 /// <summary> 72 /// <summary>
73 /// 操作人员 73 /// 操作人员
74 /// </summary> 74 /// </summary>
75 public string czry { get; set; } 75 public string czry { get; set; }
76 - 76 +
77 /// <summary> 77 /// <summary>
78 /// 耗卡_品项明细 78 /// 耗卡_品项明细
79 /// </summary> 79 /// </summary>
80 public List<LqXhPxmxCrInput> lqXhPxmxList { get; set; } 80 public List<LqXhPxmxCrInput> lqXhPxmxList { get; set; }
81 -  
82 } 81 }
83 } 82 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/MemberRemainingItemsOutput.cs
@@ -17,13 +17,13 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk @@ -17,13 +17,13 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
17 /// </summary> 17 /// </summary>
18 /// <example>GK2025022100004</example> 18 /// <example>GK2025022100004</example>
19 public string MemberId { get; set; } 19 public string MemberId { get; set; }
20 - 20 +
21 /// <summary> 21 /// <summary>
22 /// 会员姓名 22 /// 会员姓名
23 /// </summary> 23 /// </summary>
24 /// <example>张三</example> 24 /// <example>张三</example>
25 public string MemberName { get; set; } 25 public string MemberName { get; set; }
26 - 26 +
27 /// <summary> 27 /// <summary>
28 /// 剩余品项列表 28 /// 剩余品项列表
29 /// </summary> 29 /// </summary>
@@ -41,51 +41,56 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk @@ -41,51 +41,56 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
41 public class RemainingItemInfo 41 public class RemainingItemInfo
42 { 42 {
43 /// <summary> 43 /// <summary>
  44 + /// 开单品项id
  45 + /// </summary>
  46 + public string BillingItemId { get; set; }
  47 +
  48 + /// <summary>
44 /// 品项ID 49 /// 品项ID
45 /// </summary> 50 /// </summary>
46 /// <example>94</example> 51 /// <example>94</example>
47 public string ItemId { get; set; } 52 public string ItemId { get; set; }
48 - 53 +
49 /// <summary> 54 /// <summary>
50 /// 品项名称 55 /// 品项名称
51 /// </summary> 56 /// </summary>
52 /// <example>胶原宝宝-单部位</example> 57 /// <example>胶原宝宝-单部位</example>
53 public string ItemName { get; set; } 58 public string ItemName { get; set; }
54 - 59 +
55 /// <summary> 60 /// <summary>
56 /// 品项单价 61 /// 品项单价
57 /// </summary> 62 /// </summary>
58 /// <example>100.00</example> 63 /// <example>100.00</example>
59 public decimal ItemPrice { get; set; } 64 public decimal ItemPrice { get; set; }
60 - 65 +
61 /// <summary> 66 /// <summary>
62 /// 来源类型 67 /// 来源类型
63 /// </summary> 68 /// </summary>
64 /// <remarks>品项的来源类型,用于区分相同品项的不同来源</remarks> 69 /// <remarks>品项的来源类型,用于区分相同品项的不同来源</remarks>
65 /// <example>开卡</example> 70 /// <example>开卡</example>
66 public string SourceType { get; set; } 71 public string SourceType { get; set; }
67 - 72 +
68 /// <summary> 73 /// <summary>
69 /// 总购买数量 74 /// 总购买数量
70 /// </summary> 75 /// </summary>
71 /// <remarks>该品项的总购买次数</remarks> 76 /// <remarks>该品项的总购买次数</remarks>
72 /// <example>3</example> 77 /// <example>3</example>
73 public decimal TotalPurchased { get; set; } 78 public decimal TotalPurchased { get; set; }
74 - 79 +
75 /// <summary> 80 /// <summary>
76 /// 已耗卡数量 81 /// 已耗卡数量
77 /// </summary> 82 /// </summary>
78 /// <remarks>该品项已消费的次数</remarks> 83 /// <remarks>该品项已消费的次数</remarks>
79 /// <example>1</example> 84 /// <example>1</example>
80 public decimal ConsumedCount { get; set; } 85 public decimal ConsumedCount { get; set; }
81 - 86 +
82 /// <summary> 87 /// <summary>
83 /// 已退卡数量 88 /// 已退卡数量
84 /// </summary> 89 /// </summary>
85 /// <remarks>该品项已退卡的次数</remarks> 90 /// <remarks>该品项已退卡的次数</remarks>
86 /// <example>0</example> 91 /// <example>0</example>
87 public decimal RefundedCount { get; set; } 92 public decimal RefundedCount { get; set; }
88 - 93 +
89 /// <summary> 94 /// <summary>
90 /// 剩余数量 95 /// 剩余数量
91 /// </summary> 96 /// </summary>
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxCrInput.cs
@@ -14,9 +14,9 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -14,9 +14,9 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
14 public string id { get; set; } 14 public string id { get; set; }
15 15
16 /// <summary> 16 /// <summary>
17 - /// 关联开单编号 17 + /// 开单品项明细表id
18 /// </summary> 18 /// </summary>
19 - public string glkdbh { get; set; } 19 + public string billingItemId { get; set; }
20 20
21 /// <summary> 21 /// <summary>
22 /// 品项 22 /// 品项
@@ -34,11 +34,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -34,11 +34,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
34 public decimal pxjg { get; set; } 34 public decimal pxjg { get; set; }
35 35
36 /// <summary> 36 /// <summary>
37 - /// 是否赠送  
38 - /// </summary>  
39 - public string xfzs { get; set; }  
40 -  
41 - /// <summary>  
42 /// 会员id 37 /// 会员id
43 /// </summary> 38 /// </summary>
44 public string memberId { get; set; } 39 public string memberId { get; set; }
@@ -78,4 +73,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -78,4 +73,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
78 /// </summary> 73 /// </summary>
79 public List<LqXhKjbsyj.LqXhKjbsyjCrInput> lqXhKjbsyjList { get; set; } 74 public List<LqXhKjbsyj.LqXhKjbsyjCrInput> lqXhKjbsyjList { get; set; }
80 } 75 }
81 -}  
82 \ No newline at end of file 76 \ No newline at end of file
  77 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhPxmx/LqXhPxmxInfoOutput.cs
@@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -16,9 +16,14 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
16 public string id { get; set; } 16 public string id { get; set; }
17 17
18 /// <summary> 18 /// <summary>
19 - /// 关联耗卡编号 19 + /// 耗卡记录ID
20 /// </summary> 20 /// </summary>
21 - public string glkdbh { get; set; } 21 + public string consumeInfoId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 开单品项明细表id
  25 + /// </summary>
  26 + public string billingItemId { get; set; }
22 27
23 /// <summary> 28 /// <summary>
24 /// 品项编号 29 /// 品项编号
@@ -36,11 +41,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -36,11 +41,6 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
36 public decimal pxjg { get; set; } 41 public decimal pxjg { get; set; }
37 42
38 /// <summary> 43 /// <summary>
39 - /// 是否赠送  
40 - /// </summary>  
41 - public string xfzs { get; set; }  
42 -  
43 - /// <summary>  
44 /// 会员ID 44 /// 会员ID
45 /// </summary> 45 /// </summary>
46 public string memberId { get; set; } 46 public string memberId { get; set; }
@@ -80,4 +80,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx @@ -80,4 +80,4 @@ namespace NCC.Extend.Entitys.Dto.LqXhPxmx
80 /// </summary> 80 /// </summary>
81 public List<LqXhKjbsyjInfoOutput> lqXhKjbsyjList { get; set; } 81 public List<LqXhKjbsyjInfoOutput> lqXhKjbsyjList { get; set; }
82 } 82 }
83 -}  
84 \ No newline at end of file 83 \ No newline at end of file
  84 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs
1 -using NCC.Common.Const; 1 +using System;
  2 +using NCC.Common.Const;
  3 +using NCC.Extend.Entitys.Enum;
2 using SqlSugar; 4 using SqlSugar;
3 -using System;  
4 5
5 namespace NCC.Extend.Entitys.lq_hytk_mx 6 namespace NCC.Extend.Entitys.lq_hytk_mx
6 { 7 {
@@ -16,90 +17,95 @@ namespace NCC.Extend.Entitys.lq_hytk_mx @@ -16,90 +17,95 @@ namespace NCC.Extend.Entitys.lq_hytk_mx
16 /// </summary> 17 /// </summary>
17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] 18 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 public string Id { get; set; } 19 public string Id { get; set; }
19 - 20 +
20 /// <summary> 21 /// <summary>
21 - /// 关联退卡编号 22 + /// 关联退卡Id
22 /// </summary> 23 /// </summary>
23 - [SugarColumn(ColumnName = "gltkbh")]  
24 - public string Gltkbh { get; set; }  
25 - 24 + [SugarColumn(ColumnName = "F_RefundInfoId")]
  25 + public string RefundInfoId { get; set; }
  26 +
  27 + /// <summary>
  28 + /// 退卡记录Id
  29 + /// </summary>
  30 + [SugarColumn(ColumnName = "F_BillingItemId")]
  31 + public string BillingItemId { get; set; }
  32 +
26 /// <summary> 33 /// <summary>
27 /// 品项 34 /// 品项
28 /// </summary> 35 /// </summary>
29 - [SugarColumn(ColumnName = "px")] 36 + [SugarColumn(ColumnName = "px")]
30 public string Px { get; set; } 37 public string Px { get; set; }
31 - 38 +
32 /// <summary> 39 /// <summary>
33 /// 品项名称 40 /// 品项名称
34 /// </summary> 41 /// </summary>
35 - [SugarColumn(ColumnName = "pxmc")] 42 + [SugarColumn(ColumnName = "pxmc")]
36 public string Pxmc { get; set; } 43 public string Pxmc { get; set; }
37 - 44 +
38 /// <summary> 45 /// <summary>
39 /// 品项价格 46 /// 品项价格
40 /// </summary> 47 /// </summary>
41 - [SugarColumn(ColumnName = "pxjg")] 48 + [SugarColumn(ColumnName = "pxjg")]
42 public decimal? Pxjg { get; set; } 49 public decimal? Pxjg { get; set; }
43 - 50 +
44 /// <summary> 51 /// <summary>
45 /// 退款金额 52 /// 退款金额
46 /// </summary> 53 /// </summary>
47 - [SugarColumn(ColumnName = "tkje")] 54 + [SugarColumn(ColumnName = "tkje")]
48 public decimal? Tkje { get; set; } 55 public decimal? Tkje { get; set; }
49 - 56 +
50 /// <summary> 57 /// <summary>
51 /// 项目次数 58 /// 项目次数
52 /// </summary> 59 /// </summary>
53 - [SugarColumn(ColumnName = "F_ProjectNumber")]  
54 - public int? F_ProjectNumber { get; set; }  
55 - 60 + [SugarColumn(ColumnName = "F_ProjectNumber")]
  61 + public int ProjectNumber { get; set; }
  62 +
56 /// <summary> 63 /// <summary>
57 /// 是否有效 64 /// 是否有效
58 /// </summary> 65 /// </summary>
59 - [SugarColumn(ColumnName = "F_IsEnabled")]  
60 - public int? F_IsEnabled { get; set; }  
61 - 66 + [SugarColumn(ColumnName = "F_IsEnabled")]
  67 + public int IsEnabled { get; set; } = StatusEnum.有效.GetHashCode();
  68 +
62 /// <summary> 69 /// <summary>
63 /// 来源类型 70 /// 来源类型
64 /// </summary> 71 /// </summary>
65 - [SugarColumn(ColumnName = "F_SourceType")]  
66 - public string F_SourceType { get; set; }  
67 - 72 + [SugarColumn(ColumnName = "F_SourceType")]
  73 + public string SourceType { get; set; }
  74 +
68 /// <summary> 75 /// <summary>
69 /// 合计金额 76 /// 合计金额
70 /// </summary> 77 /// </summary>
71 - [SugarColumn(ColumnName = "F_TotalPrice")]  
72 - public decimal? F_TotalPrice { get; set; }  
73 - 78 + [SugarColumn(ColumnName = "F_TotalPrice")]
  79 + public decimal? TotalPrice { get; set; }
  80 +
74 /// <summary> 81 /// <summary>
75 /// 创建时间 82 /// 创建时间
76 /// </summary> 83 /// </summary>
77 - [SugarColumn(ColumnName = "F_CreateTime")]  
78 - public DateTime? F_CreateTime { get; set; }  
79 - 84 + [SugarColumn(ColumnName = "F_CreateTime")]
  85 + public DateTime? CreateTime { get; set; }
  86 +
80 /// <summary> 87 /// <summary>
81 /// 创建用户 88 /// 创建用户
82 /// </summary> 89 /// </summary>
83 - [SugarColumn(ColumnName = "F_CreateUser")]  
84 - public string F_CreateUser { get; set; }  
85 - 90 + [SugarColumn(ColumnName = "F_CreateUser")]
  91 + public string CreateUser { get; set; }
  92 +
86 /// <summary> 93 /// <summary>
87 /// 修改时间 94 /// 修改时间
88 /// </summary> 95 /// </summary>
89 - [SugarColumn(ColumnName = "F_ModifyTime")]  
90 - public DateTime? F_ModifyTime { get; set; }  
91 - 96 + [SugarColumn(ColumnName = "F_ModifyTime")]
  97 + public DateTime? ModifyTime { get; set; }
  98 +
92 /// <summary> 99 /// <summary>
93 /// 修改用户 100 /// 修改用户
94 /// </summary> 101 /// </summary>
95 - [SugarColumn(ColumnName = "F_ModifyUser")]  
96 - public string F_ModifyUser { get; set; }  
97 - 102 + [SugarColumn(ColumnName = "F_ModifyUser")]
  103 + public string ModifyUser { get; set; }
  104 +
98 /// <summary> 105 /// <summary>
99 /// 删除标记 106 /// 删除标记
100 /// </summary> 107 /// </summary>
101 - [SugarColumn(ColumnName = "F_DeleteMark")]  
102 - public int? F_DeleteMark { get; set; }  
103 - 108 + [SugarColumn(ColumnName = "F_DeleteMark")]
  109 + public int? DeleteMark { get; set; }
104 } 110 }
105 -}  
106 \ No newline at end of file 111 \ No newline at end of file
  112 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_deductinfo/LqKdDeductinfoEntity.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +using SqlSugar;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_kd_deductinfo
  6 +{
  7 + /// <summary>
  8 + /// 开单扣减信息表
  9 + /// </summary>
  10 + [SugarTable("lq_kd_deductinfo")]
  11 + public class LqKdDeductinfoEntity
  12 + {
  13 + /// <summary>
  14 + /// 主键
  15 + /// </summary>
  16 + [SugarColumn(IsPrimaryKey = true, ColumnName = "F_Id")]
  17 + public string Id { get; set; }
  18 +
  19 + /// <summary>
  20 + /// 扣减类型
  21 + /// </summary>
  22 + [SugarColumn(ColumnName = "F_DeductType")]
  23 + public int? DeductType { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 扣减关联ID
  27 + /// </summary>
  28 + [SugarColumn(ColumnName = "F_DeductId")]
  29 + public string DeductId { get; set; }
  30 +
  31 + /// <summary>
  32 + /// 开单id
  33 + /// </summary>
  34 + [SugarColumn(ColumnName = "F_BillingId")]
  35 + [Required]
  36 + public string BillingId { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 合计金额
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "F_Amount")]
  42 + public decimal? Amount { get; set; }
  43 + }
  44 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
@@ -18,50 +18,50 @@ namespace NCC.Extend.Entitys.lq_tkjlb @@ -18,50 +18,50 @@ namespace NCC.Extend.Entitys.lq_tkjlb
18 /// <summary> 18 /// <summary>
19 /// 拓客时间 19 /// 拓客时间
20 /// </summary> 20 /// </summary>
21 - [SugarColumn(ColumnName = "tksj")]  
22 - public DateTime? Tksj { get; set; } 21 + [SugarColumn(ColumnName = "F_ExpansionTime")]
  22 + public DateTime ExpansionTime { get; set; }
23 23
24 /// <summary> 24 /// <summary>
25 /// 拓客人员 25 /// 拓客人员
26 /// </summary> 26 /// </summary>
27 - [SugarColumn(ColumnName = "tkry")]  
28 - public string Tkry { get; set; } 27 + [SugarColumn(ColumnName = "F_ExpansionUserId")]
  28 + public string ExpansionUserId { get; set; }
29 29
30 /// <summary> 30 /// <summary>
31 /// 顾客姓名 31 /// 顾客姓名
32 /// </summary> 32 /// </summary>
33 - [SugarColumn(ColumnName = "gkxm")]  
34 - public string Gkxm { get; set; } 33 + [SugarColumn(ColumnName = "F_CustomerName")]
  34 + public string CustomerName { get; set; }
35 35
36 /// <summary> 36 /// <summary>
37 - /// 电话号码 37 + /// 顾客电话号码
38 /// </summary> 38 /// </summary>
39 - [SugarColumn(ColumnName = "dhhm")]  
40 - public string Dhhm { get; set; } 39 + [SugarColumn(ColumnName = "F_CustomerPhone")]
  40 + public string CustomerPhone { get; set; }
41 41
42 /// <summary> 42 /// <summary>
43 /// 购买张数 43 /// 购买张数
44 /// </summary> 44 /// </summary>
45 - [SugarColumn(ColumnName = "gmzs")]  
46 - public int? Gmzs { get; set; } 45 + [SugarColumn(ColumnName = "F_BuyNumber")]
  46 + public int BuyNumber { get; set; } = 0;
47 47
48 /// <summary> 48 /// <summary>
49 /// 支付方式 49 /// 支付方式
50 /// </summary> 50 /// </summary>
51 - [SugarColumn(ColumnName = "zffs")]  
52 - public string Zffs { get; set; } 51 + [SugarColumn(ColumnName = "F_PaymentMethod")]
  52 + public string PaymentMethod { get; set; }
53 53
54 /// <summary> 54 /// <summary>
55 /// 是否加微信 55 /// 是否加微信
56 /// </summary> 56 /// </summary>
57 - [SugarColumn(ColumnName = "sfjwx")]  
58 - public string Sfjwx { get; set; } 57 + [SugarColumn(ColumnName = "F_IsAddWeChat")]
  58 + public string IsAddWeChat { get; set; }
59 59
60 /// <summary> 60 /// <summary>
61 /// 备注 61 /// 备注
62 /// </summary> 62 /// </summary>
63 - [SugarColumn(ColumnName = "bz")]  
64 - public string Bz { get; set; } 63 + [SugarColumn(ColumnName = "F_Remarks")]
  64 + public string Remarks { get; set; }
65 65
66 /// <summary> 66 /// <summary>
67 /// 拓客活动id 67 /// 拓客活动id
@@ -70,15 +70,27 @@ namespace NCC.Extend.Entitys.lq_tkjlb @@ -70,15 +70,27 @@ namespace NCC.Extend.Entitys.lq_tkjlb
70 public string EventId { get; set; } 70 public string EventId { get; set; }
71 71
72 /// <summary> 72 /// <summary>
73 - /// 所属组织 73 + /// 所属门店ID
74 /// </summary> 74 /// </summary>
75 - [SugarColumn(ColumnName = "ssmd")]  
76 - public string Ssmd { get; set; } 75 + [SugarColumn(ColumnName = "F_StoreId")]
  76 + public string StoreId { get; set; }
77 77
78 /// <summary> 78 /// <summary>
79 /// 所属战队 79 /// 所属战队
80 /// </summary> 80 /// </summary>
81 - [SugarColumn(ColumnName = "sszd")]  
82 - public string Sszd { get; set; } 81 + [SugarColumn(ColumnName = "F_TeamName")]
  82 + public string TeamName { get; set; }
  83 +
  84 + /// <summary>
  85 + /// 所属部门id
  86 + /// </summary>
  87 + [SugarColumn(ColumnName = "F_DepId")]
  88 + public string DepId { get; set; }
  89 +
  90 + /// <summary>
  91 + /// 添加时间
  92 + /// </summary>
  93 + [SugarColumn(ColumnName = "F_CreateTime")]
  94 + public DateTime CreateTime { get; set; } = DateTime.Now;
83 } 95 }
84 } 96 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_pxmx/LqXhPxmxEntity.cs
1 -using NCC.Common.Const; 1 +using System;
  2 +using NCC.Common.Const;
2 using SqlSugar; 3 using SqlSugar;
3 -using System;  
4 4
5 namespace NCC.Extend.Entitys.lq_xh_pxmx 5 namespace NCC.Extend.Entitys.lq_xh_pxmx
6 { 6 {
@@ -16,71 +16,71 @@ namespace NCC.Extend.Entitys.lq_xh_pxmx @@ -16,71 +16,71 @@ namespace NCC.Extend.Entitys.lq_xh_pxmx
16 /// </summary> 16 /// </summary>
17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] 17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 public string Id { get; set; } 18 public string Id { get; set; }
19 - 19 +
20 /// <summary> 20 /// <summary>
21 - /// 关联开单编号 21 + /// 耗卡记录ID
22 /// </summary> 22 /// </summary>
23 - [SugarColumn(ColumnName = "glkdbh")]  
24 - public string Glkdbh { get; set; }  
25 - 23 + [SugarColumn(ColumnName = "F_ConsumeInfoId")]
  24 + public string ConsumeInfoId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 开单品项明细表id
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "F_BillingItemId")]
  30 + public string BillingItemId { get; set; }
  31 +
26 /// <summary> 32 /// <summary>
27 /// 品项 33 /// 品项
28 /// </summary> 34 /// </summary>
29 - [SugarColumn(ColumnName = "px")] 35 + [SugarColumn(ColumnName = "px")]
30 public string Px { get; set; } 36 public string Px { get; set; }
31 - 37 +
32 /// <summary> 38 /// <summary>
33 /// 品项名称 39 /// 品项名称
34 /// </summary> 40 /// </summary>
35 - [SugarColumn(ColumnName = "pxmc")] 41 + [SugarColumn(ColumnName = "pxmc")]
36 public string Pxmc { get; set; } 42 public string Pxmc { get; set; }
37 - 43 +
38 /// <summary> 44 /// <summary>
39 /// 品项价格 45 /// 品项价格
40 /// </summary> 46 /// </summary>
41 - [SugarColumn(ColumnName = "pxjg")] 47 + [SugarColumn(ColumnName = "pxjg")]
42 public decimal Pxjg { get; set; } 48 public decimal Pxjg { get; set; }
43 49
44 /// <summary> 50 /// <summary>
45 - /// 是否赠送  
46 - /// </summary>  
47 - [SugarColumn(ColumnName = "xfzs")]  
48 - public string Xfzs { get; set; }  
49 -  
50 - /// <summary>  
51 /// 会员id 51 /// 会员id
52 /// </summary> 52 /// </summary>
53 - [SugarColumn(ColumnName = "F_MemberId")] 53 + [SugarColumn(ColumnName = "F_MemberId")]
54 public string MemberId { get; set; } 54 public string MemberId { get; set; }
55 55
56 /// <summary> 56 /// <summary>
57 /// 创建时间 57 /// 创建时间
58 /// </summary> 58 /// </summary>
59 - [SugarColumn(ColumnName = "F_CreateTIme")] 59 + [SugarColumn(ColumnName = "F_CreateTIme")]
60 public DateTime? CreateTIme { get; set; } 60 public DateTime? CreateTIme { get; set; }
61 61
62 /// <summary> 62 /// <summary>
63 /// 项目次数 63 /// 项目次数
64 /// </summary> 64 /// </summary>
65 - [SugarColumn(ColumnName = "F_ProjectNumber")]  
66 - public int? ProjectNumber { get; set; } 65 + [SugarColumn(ColumnName = "F_ProjectNumber")]
  66 + public int ProjectNumber { get; set; }
67 67
68 /// <summary> 68 /// <summary>
69 /// 是否有效 69 /// 是否有效
70 /// </summary> 70 /// </summary>
71 - [SugarColumn(ColumnName = "F_IsEnabled")] 71 + [SugarColumn(ColumnName = "F_IsEnabled")]
72 public int? IsEnabled { get; set; } 72 public int? IsEnabled { get; set; }
73 73
74 /// <summary> 74 /// <summary>
75 /// 来源类型 75 /// 来源类型
76 /// </summary> 76 /// </summary>
77 - [SugarColumn(ColumnName = "F_SourceType")] 77 + [SugarColumn(ColumnName = "F_SourceType")]
78 public string SourceType { get; set; } 78 public string SourceType { get; set; }
79 79
80 /// <summary> 80 /// <summary>
81 /// 合计金额 81 /// 合计金额
82 /// </summary> 82 /// </summary>
83 - [SugarColumn(ColumnName = "F_TotalPrice")] 83 + [SugarColumn(ColumnName = "F_TotalPrice")]
84 public decimal TotalPrice { get; set; } 84 public decimal TotalPrice { get; set; }
85 } 85 }
86 -}  
87 \ No newline at end of file 86 \ No newline at end of file
  87 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/DeductTypeEnum.cs 0 → 100644
  1 +using System.ComponentModel;
  2 +
  3 +namespace NCC.Extend.Entitys.Enum
  4 +{
  5 + /// <summary>
  6 + /// 扣款类型
  7 + /// </summary>
  8 + public enum DeductTypeEnum
  9 + {
  10 + /// <summary>
  11 + /// 储值卡
  12 + /// </summary>
  13 + [Description("储值卡")]
  14 + 储值卡 = 1,
  15 +
  16 + /// <summary>
  17 + /// 扣项
  18 + /// </summary>
  19 + [Description("扣项")]
  20 + 扣项 = 2,
  21 +
  22 + /// <summary>
  23 + /// 套餐
  24 + /// </summary>
  25 + [Description("套餐")]
  26 + 套餐 = 3,
  27 + }
  28 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/StatusEnum.cs 0 → 100644
  1 +using System.ComponentModel;
  2 +
  3 +namespace NCC.Extend.Entitys.Enum
  4 +{
  5 + /// <summary>
  6 + /// 状态枚举
  7 + /// </summary>
  8 + public enum StatusEnum
  9 + {
  10 + /// <summary>
  11 + /// 有效
  12 + /// </summary>
  13 + [Description("有效")]
  14 + 有效 = 0,
  15 +
  16 + /// <summary>
  17 + /// 无效
  18 + /// </summary>
  19 + [Description("无效")]
  20 + 无效 = 1,
  21 +
  22 + /// <summary>
  23 + /// 删除
  24 + /// </summary>
  25 + [Description("删除")]
  26 + 删除 = 99,
  27 + }
  28 +}
netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
@@ -9,16 +9,19 @@ using Mapster; @@ -9,16 +9,19 @@ using Mapster;
9 using Microsoft.AspNetCore.Http; 9 using Microsoft.AspNetCore.Http;
10 using Microsoft.AspNetCore.Mvc; 10 using Microsoft.AspNetCore.Mvc;
11 using NCC.Common.Core.Manager; 11 using NCC.Common.Core.Manager;
  12 +using NCC.Common.Extension;
12 using NCC.Common.Filter; 13 using NCC.Common.Filter;
13 using NCC.Common.Helper; 14 using NCC.Common.Helper;
14 using NCC.Dependency; 15 using NCC.Dependency;
15 using NCC.DynamicApiController; 16 using NCC.DynamicApiController;
  17 +using NCC.Extend.Entitys.Dto.Common;
16 using NCC.Extend.Entitys.Dto.LqEvent; 18 using NCC.Extend.Entitys.Dto.LqEvent;
17 using NCC.Extend.Entitys.Dto.LqEventUser; 19 using NCC.Extend.Entitys.Dto.LqEventUser;
18 using NCC.Extend.Entitys.Enum; 20 using NCC.Extend.Entitys.Enum;
19 using NCC.Extend.Entitys.lq_event; 21 using NCC.Extend.Entitys.lq_event;
20 using NCC.Extend.Entitys.lq_eventuser; 22 using NCC.Extend.Entitys.lq_eventuser;
21 using NCC.Extend.Entitys.lq_mdxx; 23 using NCC.Extend.Entitys.lq_mdxx;
  24 +using NCC.Extend.Entitys.lq_tkjlb;
22 using NCC.Extend.Interfaces.LqEvent; 25 using NCC.Extend.Interfaces.LqEvent;
23 using NCC.FriendlyException; 26 using NCC.FriendlyException;
24 using NCC.System.Entitys.Permission; 27 using NCC.System.Entitys.Permission;
@@ -136,13 +139,36 @@ namespace NCC.Extend.LqEvent @@ -136,13 +139,36 @@ namespace NCC.Extend.LqEvent
136 throw NCCException.Oh("拓客活动不存在"); 139 throw NCCException.Oh("拓客活动不存在");
137 } 140 }
138 141
139 - var output = entity.Adapt<LqEventInfoOutput>();  
140 -  
141 - // 2. 获取拓客活动成员信息  
142 - var members = await _db.Queryable<LqEventUserEntity>().Where(u => u.EventId == id.ToString()).ToListAsync();  
143 -  
144 - // 3. 转换为输出格式  
145 - output.Members = members.Adapt<List<LqEventUserInfoOutput>>(); 142 + // 2. 手动映射到输出格式
  143 + var output = new LqEventInfoOutput
  144 + {
  145 + id = entity.Id,
  146 + eventName = entity.EventName,
  147 + startTime = entity.StartTime,
  148 + endTime = entity.EndTime,
  149 + eventCoordinator = entity.EventCoordinator,
  150 + eventNumber = entity.EventNumber,
  151 + eventType = entity.EventType,
  152 + };
  153 +
  154 + // 3. 获取拓客活动成员信息
  155 + var members = await _db.Queryable<LqEventUserEntity>().Where(u => u.EventId == id).ToListAsync();
  156 +
  157 + // 4. 手动映射成员信息
  158 + output.Members = members
  159 + .Select(m => new LqEventUserInfoOutput
  160 + {
  161 + id = m.Id,
  162 + eventId = m.EventId,
  163 + userId = m.UserId,
  164 + depId = m.DepId,
  165 + teamName = m.TeamName,
  166 + creationTime = m.CreationTime,
  167 + creationUser = m.CreationUser,
  168 + targetCount = m.EventTarget,
  169 + storeId = m.StoreId,
  170 + })
  171 + .ToList();
146 172
147 return output; 173 return output;
148 } 174 }
@@ -233,6 +259,7 @@ namespace NCC.Extend.LqEvent @@ -233,6 +259,7 @@ namespace NCC.Extend.LqEvent
233 CreationTime = DateTime.Now, 259 CreationTime = DateTime.Now,
234 CreationUser = userInfo?.userName, 260 CreationUser = userInfo?.userName,
235 StoreId = member.StoreId, 261 StoreId = member.StoreId,
  262 + EventTarget = member.TargetCount,
236 } 263 }
237 ); 264 );
238 } 265 }
@@ -325,6 +352,7 @@ namespace NCC.Extend.LqEvent @@ -325,6 +352,7 @@ namespace NCC.Extend.LqEvent
325 CreationTime = DateTime.Now, 352 CreationTime = DateTime.Now,
326 CreationUser = userInfo?.userName, 353 CreationUser = userInfo?.userName,
327 StoreId = member.StoreId, 354 StoreId = member.StoreId,
  355 + EventTarget = member.TargetCount,
328 } 356 }
329 ); 357 );
330 } 358 }
@@ -503,6 +531,188 @@ namespace NCC.Extend.LqEvent @@ -503,6 +531,188 @@ namespace NCC.Extend.LqEvent
503 } 531 }
504 #endregion 532 #endregion
505 533
  534 + #region 根据用户ID获取当前参与的拓客活动
  535 + /// <summary>
  536 + /// 根据用户ID获取当前参与的拓客活动列表
  537 + /// </summary>
  538 + /// <remarks>
  539 + /// 根据用户ID查询当前正在进行的拓客活动信息
  540 + /// 返回用户参与的所有活动详情,包括活动基本信息、用户目标、门店信息等
  541 + /// 如果没有当前活动,返回空列表
  542 + ///
  543 + /// 示例请求:
  544 + /// ```json
  545 + /// GET /api/Extend/LqEvent/user/{userId}/current
  546 + /// ```
  547 + ///
  548 + /// 参数说明:
  549 + /// - userId: 用户ID,必填参数
  550 + ///
  551 + /// 返回信息包括:
  552 + /// - 活动基本信息(ID、名称、编号、负责人、时间)
  553 + /// - 用户参与信息(用户ID、部门ID、战队名称、目标数量)
  554 + /// - 门店信息(门店ID、门店名称)
  555 + /// - 创建信息(创建时间、创建用户)
  556 + /// </remarks>
  557 + /// <param name="userId">用户ID</param>
  558 + /// <returns>用户当前参与的拓客活动列表,无活动时返回空列表</returns>
  559 + /// <response code="200">成功返回活动列表(可能为空)</response>
  560 + /// <response code="400">参数错误,用户ID不能为空</response>
  561 + [HttpGet("user/{userId}/current")]
  562 + public async Task<dynamic> GetCurrentEvent(string userId)
  563 + {
  564 + if (string.IsNullOrEmpty(userId))
  565 + {
  566 + throw NCCException.Oh("用户ID不能为空");
  567 + }
  568 + try
  569 + {
  570 + var currentTime = DateTime.Now;
  571 + // 先检查用户是否有活动记录
  572 + var userEventCount = await _db.Queryable<LqEventUserEntity>().Where(eu => eu.UserId == userId).CountAsync();
  573 + if (userEventCount == 0)
  574 + {
  575 + return null;
  576 + }
  577 + // 使用内存合并的方式,避免复杂的SqlFunc问题
  578 + // 1. 查询用户参与的活动信息
  579 + var userEvents = await _db.Queryable<LqEventUserEntity>().Where(eventUser => eventUser.UserId == userId).ToListAsync();
  580 +
  581 + if (userEvents == null || userEvents.Count == 0)
  582 + {
  583 + return new List<LqEventUserEventOutput>();
  584 + }
  585 +
  586 + // 2. 查询当前正在进行的活动详情
  587 + var eventIds = userEvents.Select(u => u.EventId).ToList();
  588 + var currentEvents = await _db.Queryable<LqEventEntity>().Where(e => eventIds.Contains(e.Id) && e.StartTime <= currentTime && e.EndTime >= currentTime).ToListAsync();
  589 +
  590 + if (currentEvents == null || currentEvents.Count == 0)
  591 + {
  592 + return new List<LqEventUserEventOutput>();
  593 + }
  594 +
  595 + // 3. 在内存中合并数据
  596 + var eventUsers = userEvents
  597 + .Where(userEvent => currentEvents.Any(e => e.Id == userEvent.EventId))
  598 + .Select(userEvent =>
  599 + {
  600 + var eventInfo = currentEvents.First(e => e.Id == userEvent.EventId);
  601 + return new LqEventUserEventOutput
  602 + {
  603 + EventId = userEvent.EventId,
  604 + EventName = eventInfo.EventName,
  605 + EventNumber = eventInfo.EventNumber,
  606 + EventCoordinator = eventInfo.EventCoordinator,
  607 + StartTime = eventInfo.StartTime,
  608 + EndTime = eventInfo.EndTime,
  609 + UserId = userEvent.UserId,
  610 + DepId = userEvent.DepId,
  611 + TeamName = userEvent.TeamName,
  612 + EventTarget = userEvent.EventTarget,
  613 + CreationTime = userEvent.CreationTime,
  614 + CreationUser = userEvent.CreationUser,
  615 + StoreId = userEvent.StoreId,
  616 + StoreName = null, // 不需要门店信息
  617 + };
  618 + })
  619 + .ToList();
  620 +
  621 + // 如果没有查询到当前活动,返回空列表
  622 + return eventUsers ?? new List<LqEventUserEventOutput>();
  623 + }
  624 + catch (Exception ex)
  625 + {
  626 + throw NCCException.Oh($"查询用户 {userId} 当前活动失败: {ex.Message}", ex);
  627 + }
  628 + }
  629 + #endregion
  630 +
  631 + #region 根据活动ID获取战队统计数据
  632 + /// <summary>
  633 + /// 根据活动ID获取战队统计数据
  634 + /// </summary>
  635 + /// <remarks>
  636 + /// 根据活动ID查询该活动下所有门店和战队的统计数据
  637 + /// 返回按门店和战队分组的拓客数据
  638 + ///
  639 + /// 示例请求:
  640 + /// ```json
  641 + /// GET /api/Extend/LqEvent/team-data/{eventId}
  642 + /// ```
  643 + ///
  644 + /// 参数说明:
  645 + /// - eventId: 活动ID,必填参数
  646 + ///
  647 + /// 返回信息包括:
  648 + /// - 门店信息(门店ID、门店名称)
  649 + /// - 战队信息(战队名称)
  650 + /// - 用户信息(用户ID、用户姓名、拓客数量、活动目标)
  651 + /// </remarks>
  652 + /// <param name="eventId">活动ID</param>
  653 + /// <returns>按门店和战队分组的统计数据</returns>
  654 + /// <response code="200">成功返回统计数据</response>
  655 + /// <response code="400">参数错误,活动ID不能为空</response>
  656 + [HttpGet("team-data/{eventId}")]
  657 + public async Task<dynamic> GetTeamDataByEventId(string eventId)
  658 + {
  659 + if (string.IsNullOrEmpty(eventId))
  660 + {
  661 + throw NCCException.Oh("活动ID不能为空");
  662 + }
  663 +
  664 + try
  665 + {
  666 + // 使用SqlFunc子查询,一次性获取所有需要的数据,避免多次查询和内存合并
  667 + var teamData = await _db.Queryable<LqEventUserEntity>()
  668 + .Where(eventUser => eventUser.EventId == eventId)
  669 + .Select(eventUser => new
  670 + {
  671 + StoreId = eventUser.StoreId,
  672 + StoreName = SqlFunc.Subqueryable<LqMdxxEntity>().Where(md => md.Id == eventUser.StoreId).Select(md => md.Dm),
  673 + TeamName = eventUser.TeamName,
  674 + ExpansionUserId = eventUser.UserId,
  675 + ExpansionUserName = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == eventUser.UserId).Select(u => u.RealName),
  676 + EventTarget = eventUser.EventTarget,
  677 + ExpansionCount = SqlFunc.Subqueryable<LqTkjlbEntity>().Where(tkjlb => tkjlb.EventId == eventId && tkjlb.ExpansionUserId == eventUser.UserId).Count(),
  678 + })
  679 + .ToListAsync();
  680 +
  681 + // 按门店和战队分组数据
  682 + var result = teamData
  683 + .GroupBy(x => new { x.StoreId, x.StoreName })
  684 + .Select(storeGroup => new StoreTeamDataOutput
  685 + {
  686 + StoreId = storeGroup.Key.StoreId,
  687 + StoreName = storeGroup.Key.StoreName,
  688 + TeamList = storeGroup
  689 + .GroupBy(x => x.TeamName)
  690 + .Select(teamGroup => new TeamInfoOutput
  691 + {
  692 + TeamName = teamGroup.Key,
  693 + TeamUserInfo = teamGroup
  694 + .Select(user => new TeamUserInfoOutput
  695 + {
  696 + ExpansionUserId = user.ExpansionUserId,
  697 + ExpansionUserName = user.ExpansionUserName,
  698 + ExpansionCount = user.ExpansionCount,
  699 + EventTarget = user.EventTarget,
  700 + })
  701 + .ToList(),
  702 + })
  703 + .ToList(),
  704 + })
  705 + .ToList();
  706 +
  707 + return result;
  708 + }
  709 + catch (Exception ex)
  710 + {
  711 + throw NCCException.Oh($"查询活动 {eventId} 战队统计数据失败: {ex.Message}", ex);
  712 + }
  713 + }
  714 + #endregion
  715 +
506 #region Excel导入拓客活动用户 716 #region Excel导入拓客活动用户
507 717
508 /// <summary> 718 /// <summary>
@@ -698,7 +908,7 @@ namespace NCC.Extend.LqEvent @@ -698,7 +908,7 @@ namespace NCC.Extend.LqEvent
698 // 调试信息:输出每一行读取的数据 908 // 调试信息:输出每一行读取的数据
699 Console.WriteLine($"第{i + 1}行数据: 手机号={mobilePhone}, 姓名={name}, 战队={teamName}, 门店={storeName}, 目标={targetCountStr}"); 909 Console.WriteLine($"第{i + 1}行数据: 手机号={mobilePhone}, 姓名={name}, 战队={teamName}, 门店={storeName}, 目标={targetCountStr}");
700 910
701 - int? targetCount = null; 911 + int targetCount = 0;
702 if (!string.IsNullOrEmpty(targetCountStr) && int.TryParse(targetCountStr, out int target)) 912 if (!string.IsNullOrEmpty(targetCountStr) && int.TryParse(targetCountStr, out int target))
703 { 913 {
704 targetCount = target; 914 targetCount = target;
@@ -746,7 +956,7 @@ namespace NCC.Extend.LqEvent @@ -746,7 +956,7 @@ namespace NCC.Extend.LqEvent
746 public string Name { get; set; } 956 public string Name { get; set; }
747 public string TeamName { get; set; } 957 public string TeamName { get; set; }
748 public string StoreName { get; set; } 958 public string StoreName { get; set; }
749 - public int? TargetCount { get; set; } 959 + public int TargetCount { get; set; } = 0;
750 } 960 }
751 961
752 #endregion 962 #endregion
@@ -758,30 +968,16 @@ namespace NCC.Extend.LqEvent @@ -758,30 +968,16 @@ namespace NCC.Extend.LqEvent
758 /// </summary> 968 /// </summary>
759 /// <returns>拓客类型枚举列表</returns> 969 /// <returns>拓客类型枚举列表</returns>
760 [HttpGet("event-types")] 970 [HttpGet("event-types")]
761 - public List<EventTypeEnumOutput> GetEventTypes() 971 + public List<EnumOutput> GetEventTypes()
762 { 972 {
763 - var result = new List<EventTypeEnumOutput>();  
764 -  
765 - // 获取所有枚举值  
766 - var enumValues = Enum.GetValues<EventType>();  
767 -  
768 - foreach (var enumValue in enumValues)  
769 - {  
770 - // 获取枚举的Description特性  
771 - var field = enumValue.GetType().GetField(enumValue.ToString());  
772 - var descriptionAttribute = field?.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute;  
773 -  
774 - result.Add(  
775 - new EventTypeEnumOutput  
776 - {  
777 - Value = (int)enumValue,  
778 - Name = enumValue.ToString(),  
779 - Description = descriptionAttribute?.Description ?? enumValue.ToString(),  
780 - }  
781 - );  
782 - }  
783 -  
784 - return result; 973 + return Enum.GetValues<EventType>()
  974 + .Select(e => new EnumOutput
  975 + {
  976 + Value = (int)e,
  977 + Name = e.ToString(),
  978 + Description = e.GetDescription(),
  979 + })
  980 + .ToList();
785 } 981 }
786 982
787 #endregion 983 #endregion
netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
@@ -223,18 +223,19 @@ namespace NCC.Extend.LqHytkHytk @@ -223,18 +223,19 @@ namespace NCC.Extend.LqHytkHytk
223 var lqHytkMxEntity = new LqHytkMxEntity 223 var lqHytkMxEntity = new LqHytkMxEntity
224 { 224 {
225 Id = YitIdHelper.NextId().ToString(), 225 Id = YitIdHelper.NextId().ToString(),
226 - Gltkbh = newEntity.Id,  
227 - F_CreateTime = DateTime.Now,  
228 - F_CreateUser = userInfo.userId,  
229 - F_DeleteMark = 0, 226 + RefundInfoId = newEntity.Id,
  227 + BillingItemId = item.billingItemId,
  228 + CreateTime = DateTime.Now,
  229 + CreateUser = userInfo.userId,
  230 + DeleteMark = 0,
230 Px = item.px, 231 Px = item.px,
231 Pxmc = item.pxmc, 232 Pxmc = item.pxmc,
232 Pxjg = item.pxjg, 233 Pxjg = item.pxjg,
233 Tkje = item.tkje, 234 Tkje = item.tkje,
234 - F_ProjectNumber = item.F_ProjectNumber ?? 1,  
235 - F_IsEnabled = item.F_IsEnabled ?? 1,  
236 - F_SourceType = item.F_SourceType,  
237 - F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), 235 + ProjectNumber = item.F_ProjectNumber ?? 1,
  236 + IsEnabled = item.F_IsEnabled ?? 1,
  237 + SourceType = item.F_SourceType,
  238 + TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)),
238 }; 239 };
239 allMxEntities.Add(lqHytkMxEntity); 240 allMxEntities.Add(lqHytkMxEntity);
240 241
@@ -356,7 +357,7 @@ namespace NCC.Extend.LqHytkHytk @@ -356,7 +357,7 @@ namespace NCC.Extend.LqHytkHytk
356 await _db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync(); 357 await _db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync();
357 358
358 // 删除原有的关联数据 359 // 删除原有的关联数据
359 - await _db.Deleteable<LqHytkMxEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); 360 + await _db.Deleteable<LqHytkMxEntity>().Where(x => x.RefundInfoId == id).ExecuteCommandAsync();
360 await _db.Deleteable<LqHytkJksyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); 361 await _db.Deleteable<LqHytkJksyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync();
361 await _db.Deleteable<LqHytkKjbsyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); 362 await _db.Deleteable<LqHytkKjbsyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync();
362 363
@@ -374,18 +375,19 @@ namespace NCC.Extend.LqHytkHytk @@ -374,18 +375,19 @@ namespace NCC.Extend.LqHytkHytk
374 var lqHytkMxEntity = new LqHytkMxEntity 375 var lqHytkMxEntity = new LqHytkMxEntity
375 { 376 {
376 Id = YitIdHelper.NextId().ToString(), 377 Id = YitIdHelper.NextId().ToString(),
377 - Gltkbh = id,  
378 - F_CreateTime = DateTime.Now,  
379 - F_CreateUser = userInfo.userId,  
380 - F_DeleteMark = 0, 378 + RefundInfoId = id,
  379 + BillingItemId = item.billingItemId,
  380 + CreateTime = DateTime.Now,
  381 + CreateUser = userInfo.userId,
  382 + DeleteMark = 0,
381 Px = item.px, 383 Px = item.px,
382 Pxmc = item.pxmc, 384 Pxmc = item.pxmc,
383 Pxjg = item.pxjg, 385 Pxjg = item.pxjg,
384 Tkje = item.tkje, 386 Tkje = item.tkje,
385 - F_ProjectNumber = item.F_ProjectNumber ?? 1,  
386 - F_IsEnabled = item.F_IsEnabled ?? 1,  
387 - F_SourceType = item.F_SourceType,  
388 - F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), 387 + ProjectNumber = item.F_ProjectNumber ?? 1,
  388 + IsEnabled = item.F_IsEnabled ?? 1,
  389 + SourceType = item.F_SourceType,
  390 + TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)),
389 }; 391 };
390 allMxEntities.Add(lqHytkMxEntity); 392 allMxEntities.Add(lqHytkMxEntity);
391 393
@@ -523,7 +525,7 @@ namespace NCC.Extend.LqHytkHytk @@ -523,7 +525,7 @@ namespace NCC.Extend.LqHytkHytk
523 var output = entity.Adapt<LqHytkHytkInfoOutput>(); 525 var output = entity.Adapt<LqHytkHytkInfoOutput>();
524 526
525 // 2. 查询品项明细列表 527 // 2. 查询品项明细列表
526 - var lqHytkMxList = await _db.Queryable<LqHytkMxEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync(); 528 + var lqHytkMxList = await _db.Queryable<LqHytkMxEntity>().Where(w => w.RefundInfoId == entity.Id).ToListAsync();
527 529
528 // 3. 查询健康师业绩列表 530 // 3. 查询健康师业绩列表
529 var lqHytkJksyjList = await _db.Queryable<LqHytkJksyjEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync(); 531 var lqHytkJksyjList = await _db.Queryable<LqHytkJksyjEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync();
@@ -538,15 +540,16 @@ namespace NCC.Extend.LqHytkHytk @@ -538,15 +540,16 @@ namespace NCC.Extend.LqHytkHytk
538 var mxOutput = new LqHytkMxInfoOutput 540 var mxOutput = new LqHytkMxInfoOutput
539 { 541 {
540 id = mx.Id, 542 id = mx.Id,
541 - gltkbh = mx.Gltkbh, 543 + refundInfoId = mx.RefundInfoId,
  544 + billingItemId = mx.BillingItemId,
542 px = mx.Px, 545 px = mx.Px,
543 pxmc = mx.Pxmc, 546 pxmc = mx.Pxmc,
544 pxjg = mx.Pxjg, 547 pxjg = mx.Pxjg,
545 tkje = mx.Tkje, 548 tkje = mx.Tkje,
546 - F_ProjectNumber = mx.F_ProjectNumber,  
547 - F_IsEnabled = mx.F_IsEnabled,  
548 - F_SourceType = mx.F_SourceType,  
549 - F_TotalPrice = mx.F_TotalPrice, 549 + projectNumber = mx.ProjectNumber,
  550 + isEnabled = mx.IsEnabled,
  551 + sourceType = mx.SourceType,
  552 + totalPrice = mx.TotalPrice,
550 }; 553 };
551 554
552 // 关联该品项的健康师业绩 555 // 关联该品项的健康师业绩
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -16,8 +16,11 @@ using NCC.Common.Model.NPOI; @@ -16,8 +16,11 @@ using NCC.Common.Model.NPOI;
16 using NCC.DataEncryption; 16 using NCC.DataEncryption;
17 using NCC.Dependency; 17 using NCC.Dependency;
18 using NCC.DynamicApiController; 18 using NCC.DynamicApiController;
  19 +using NCC.Extend.Entitys.Dto.Common;
19 using NCC.Extend.Entitys.Dto.LqKdKdjlb; 20 using NCC.Extend.Entitys.Dto.LqKdKdjlb;
  21 +using NCC.Extend.Entitys.Enum;
20 using NCC.Extend.Entitys.lq_jinsanjiao_user; 22 using NCC.Extend.Entitys.lq_jinsanjiao_user;
  23 +using NCC.Extend.Entitys.lq_kd_deductinfo;
21 using NCC.Extend.Entitys.lq_kd_jksyj; 24 using NCC.Extend.Entitys.lq_kd_jksyj;
22 using NCC.Extend.Entitys.lq_kd_kdjlb; 25 using NCC.Extend.Entitys.lq_kd_kdjlb;
23 using NCC.Extend.Entitys.lq_kd_kjbsyj; 26 using NCC.Extend.Entitys.lq_kd_kjbsyj;
@@ -266,7 +269,20 @@ namespace NCC.Extend.LqKdKdjlb @@ -266,7 +269,20 @@ namespace NCC.Extend.LqKdKdjlb
266 var allPxmxEntities = new List<LqKdPxmxEntity>(); 269 var allPxmxEntities = new List<LqKdPxmxEntity>();
267 var allJksyjEntities = new List<LqKdJksyjEntity>(); 270 var allJksyjEntities = new List<LqKdJksyjEntity>();
268 var allKjbsyjEntities = new List<LqKdKjbsyjEntity>(); 271 var allKjbsyjEntities = new List<LqKdKjbsyjEntity>();
269 - 272 + var allDeductEntities = new List<LqKdDeductinfoEntity>();
  273 + // 处理扣款信息列表
  274 + foreach (var item in input.lqKdKdjlbDeductList)
  275 + {
  276 + var lqKdDeductEntity = new LqKdDeductinfoEntity
  277 + {
  278 + Id = YitIdHelper.NextId().ToString(),
  279 + BillingId = newEntity.Id,
  280 + DeductId = item.DeductId,
  281 + DeductType = item.DeductType,
  282 + Amount = item.Amount,
  283 + };
  284 + allDeductEntities.Add(lqKdDeductEntity);
  285 + }
270 // 处理品项明细列表 286 // 处理品项明细列表
271 foreach (var item in input.lqKdPxmxList) 287 foreach (var item in input.lqKdPxmxList)
272 { 288 {
@@ -331,7 +347,11 @@ namespace NCC.Extend.LqKdKdjlb @@ -331,7 +347,11 @@ namespace NCC.Extend.LqKdKdjlb
331 } 347 }
332 } 348 }
333 } 349 }
334 - 350 + // 批量插入扣款信息
  351 + if (allDeductEntities.Any())
  352 + {
  353 + await _db.Insertable(allDeductEntities).ExecuteCommandAsync();
  354 + }
335 // 批量插入品项明细 355 // 批量插入品项明细
336 if (allPxmxEntities.Any()) 356 if (allPxmxEntities.Any())
337 { 357 {
@@ -347,6 +367,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -347,6 +367,7 @@ namespace NCC.Extend.LqKdKdjlb
347 { 367 {
348 await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); 368 await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
349 } 369 }
  370 +
350 //关闭事务 371 //关闭事务
351 _db.CommitTran(); 372 _db.CommitTran();
352 373
@@ -755,5 +776,24 @@ namespace NCC.Extend.LqKdKdjlb @@ -755,5 +776,24 @@ namespace NCC.Extend.LqKdKdjlb
755 } 776 }
756 } 777 }
757 #endregion 778 #endregion
  779 +
  780 + #region 获取扣款类型枚举内容
  781 + /// <summary>
  782 + /// 获取扣款类型枚举内容
  783 + /// </summary>
  784 + /// <returns>扣款类型枚举列表</returns>
  785 + [HttpGet("deduct-types")]
  786 + public List<EnumOutput> GetDeductTypes()
  787 + {
  788 + return Enum.GetValues<DeductTypeEnum>()
  789 + .Select(e => new EnumOutput
  790 + {
  791 + Value = (int)e,
  792 + Name = e.ToString(),
  793 + Description = e.GetDescription(),
  794 + })
  795 + .ToList();
  796 + }
  797 + #endregion
758 } 798 }
759 } 799 }
netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
@@ -548,155 +548,34 @@ namespace NCC.Extend.LqKhxx @@ -548,155 +548,34 @@ namespace NCC.Extend.LqKhxx
548 { 548 {
549 throw NCCException.Oh(ErrorCode.COM1000, "会员ID不能为空"); 549 throw NCCException.Oh(ErrorCode.COM1000, "会员ID不能为空");
550 } 550 }
551 -  
552 try 551 try
553 { 552 {
554 - _logger.LogInformation("开始查询会员剩余品项,会员ID:{MemberId}", memberId);  
555 -  
556 // 1. 查询会员基本信息 553 // 1. 查询会员基本信息
557 var memberInfo = await _db.Queryable<LqKhxxEntity>().Where(x => x.Id == memberId).FirstAsync(); 554 var memberInfo = await _db.Queryable<LqKhxxEntity>().Where(x => x.Id == memberId).FirstAsync();
558 -  
559 if (memberInfo == null) 555 if (memberInfo == null)
560 { 556 {
561 _logger.LogWarning("会员不存在,会员ID:{MemberId}", memberId); 557 _logger.LogWarning("会员不存在,会员ID:{MemberId}", memberId);
562 - throw NCCException.Oh(ErrorCode.COM1005, "会员不存在"); 558 + throw NCCException.Oh("会员不存在");
563 } 559 }
564 -  
565 - _logger.LogInformation("会员信息查询成功,会员姓名:{MemberName}", memberInfo.Khmc);  
566 -  
567 // 2. 查询开单记录ID列表 560 // 2. 查询开单记录ID列表
568 - _logger.LogInformation("开始查询开单记录ID列表");  
569 - var orderIds = await _db.Queryable<LqKdKdjlbEntity>().Where(kd => kd.Kdhy == memberId).Select(kd => kd.Id).ToListAsync();  
570 -  
571 - _logger.LogInformation("开单记录ID列表查询成功,数量:{Count}", orderIds.Count);  
572 -  
573 - // 3. 查询开单品项统计(按品项ID、名称、价格和来源类型分组)  
574 - _logger.LogInformation("开始查询开单品项统计");  
575 - var purchasedItems = new List<dynamic>();  
576 - if (orderIds.Any())  
577 - {  
578 - var tempPurchasedItems = await _db.Queryable<LqKdPxmxEntity>()  
579 - .Where(px => orderIds.Contains(px.Glkdbh))  
580 - .GroupBy(px => new  
581 - {  
582 - px.Px,  
583 - px.Pxmc,  
584 - px.Pxjg,  
585 - px.SourceType,  
586 - })  
587 - .Select(px => new  
588 - {  
589 - ItemId = px.Px,  
590 - ItemName = px.Pxmc,  
591 - ItemPrice = px.Pxjg,  
592 - SourceType = SqlFunc.IsNull(px.SourceType, "未知"),  
593 - TotalPurchased = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.ProjectNumber)),  
594 - })  
595 - .ToListAsync();  
596 -  
597 - purchasedItems = tempPurchasedItems.Cast<dynamic>().ToList();  
598 - _logger.LogInformation("开单品项统计查询成功,数量:{Count}", purchasedItems.Count);  
599 -  
600 - // 调试:输出前几条记录查看SourceType字段  
601 - foreach (var item in purchasedItems.Take(3))  
602 - {  
603 - _logger.LogInformation($"调试 - 品项ID: {item.ItemId}, 品项名称: {item.ItemName}, 来源类型: {item.SourceType}");  
604 - }  
605 - }  
606 -  
607 - // 4. 查询耗卡记录ID列表  
608 - _logger.LogInformation("开始查询耗卡记录ID列表");  
609 - var consumeIds = await _db.Queryable<LqXhHyhkEntity>().Where(hk => hk.Hy == memberId).Select(hk => hk.Id).ToListAsync();  
610 -  
611 - _logger.LogInformation("耗卡记录ID列表查询成功,数量:{Count}", consumeIds.Count);  
612 -  
613 - // 5. 查询耗卡品项统计(按品项ID和来源类型分组)  
614 - _logger.LogInformation("开始查询耗卡品项统计");  
615 - var consumedItems = new List<dynamic>();  
616 - if (consumeIds.Any())  
617 - {  
618 - var tempConsumedItems = await _db.Queryable<LqXhPxmxEntity>()  
619 - .Where(px => consumeIds.Contains(px.Glkdbh))  
620 - .GroupBy(px => new { px.Px, px.SourceType })  
621 - .Select(px => new  
622 - {  
623 - ItemId = px.Px,  
624 - SourceType = SqlFunc.IsNull(px.SourceType, "未知"),  
625 - ConsumedCount = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.ProjectNumber)),  
626 - })  
627 - .ToListAsync();  
628 -  
629 - consumedItems = tempConsumedItems.Cast<dynamic>().ToList();  
630 - _logger.LogInformation("耗卡品项统计查询成功,数量:{Count}", consumedItems.Count);  
631 - }  
632 -  
633 - // 6. 查询退卡记录ID列表  
634 - _logger.LogInformation("开始查询退卡记录ID列表");  
635 - var refundIds = await _db.Queryable<LqHytkHytkEntity>().Where(tk => tk.Hy == memberId && tk.F_DeleteMark != 1).Select(tk => tk.Id).ToListAsync();  
636 -  
637 - _logger.LogInformation("退卡记录ID列表查询成功,数量:{Count}", refundIds.Count);  
638 -  
639 - // 7. 查询退卡品项统计(按品项ID和来源类型分组)  
640 - _logger.LogInformation("开始查询退卡品项统计");  
641 - var refundedItems = new List<dynamic>();  
642 - if (refundIds.Any())  
643 - {  
644 - var tempRefundedItems = await _db.Queryable<LqHytkMxEntity>()  
645 - .Where(px => refundIds.Contains(px.Gltkbh) && px.F_DeleteMark != 1)  
646 - .GroupBy(px => new { px.Px, px.F_SourceType })  
647 - .Select(px => new  
648 - {  
649 - ItemId = px.Px,  
650 - SourceType = SqlFunc.IsNull(px.F_SourceType, "未知"),  
651 - RefundedCount = SqlFunc.AggregateSum(SqlFunc.ToDecimal(px.F_ProjectNumber)),  
652 - })  
653 - .ToListAsync();  
654 -  
655 - refundedItems = tempRefundedItems.Cast<dynamic>().ToList();  
656 - _logger.LogInformation("退卡品项统计查询成功,数量:{Count}", refundedItems.Count);  
657 - }  
658 -  
659 - // 8. 合并计算剩余品项(按品项ID和来源类型匹配)  
660 - _logger.LogInformation("开始合并计算剩余品项");  
661 - var remainingItems = new List<RemainingItemInfo>();  
662 -  
663 - // 处理有购买记录的品项  
664 - foreach (var purchased in purchasedItems)  
665 - {  
666 - // 按品项ID和来源类型匹配耗卡记录  
667 - var consumed = consumedItems.FirstOrDefault(x => x.ItemId == purchased.ItemId && x.SourceType == purchased.SourceType);  
668 - var consumedCount = consumed?.ConsumedCount ?? 0;  
669 -  
670 - // 按品项ID和来源类型匹配退卡记录  
671 - var refunded = refundedItems.FirstOrDefault(x => x.ItemId == purchased.ItemId && x.SourceType == purchased.SourceType);  
672 - var refundedCount = refunded?.RefundedCount ?? 0;  
673 -  
674 - // 计算剩余数量:购买数量 - 消费数量 - 退卡数量  
675 - var remainingCount = purchased.TotalPurchased - consumedCount - refundedCount;  
676 -  
677 - if (remainingCount > 0) 561 + var remainingItems = await _db.Queryable<LqKdPxmxEntity>()
  562 + .Where(x => x.MemberId == memberId)
  563 + .Select(x => new RemainingItemInfo
678 { 564 {
679 - remainingItems.Add(  
680 - new RemainingItemInfo  
681 - {  
682 - ItemId = purchased.ItemId,  
683 - ItemName = purchased.ItemName,  
684 - ItemPrice = purchased.ItemPrice,  
685 - SourceType = purchased.SourceType?.ToString() ?? "未知",  
686 - TotalPurchased = purchased.TotalPurchased,  
687 - ConsumedCount = consumedCount,  
688 - RefundedCount = refundedCount,  
689 - RemainingCount = remainingCount,  
690 - }  
691 - );  
692 - }  
693 - }  
694 -  
695 - // 7. 按剩余数量降序排列  
696 - remainingItems = remainingItems.OrderByDescending(x => x.RemainingCount).ToList();  
697 -  
698 - _logger.LogInformation("剩余品项计算完成,数量:{Count}", remainingItems.Count);  
699 - 565 + BillingItemId = x.Id,
  566 + ItemId = x.Px,
  567 + ItemName = x.Pxmc,
  568 + ItemPrice = x.Pxjg,
  569 + SourceType = x.SourceType,
  570 + TotalPurchased = x.ProjectNumber,
  571 + ConsumedCount = SqlFunc.Subqueryable<LqXhPxmxEntity>().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)),
  572 + RefundedCount = SqlFunc.Subqueryable<LqHytkMxEntity>().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)),
  573 + RemainingCount =
  574 + x.ProjectNumber
  575 + - SqlFunc.Subqueryable<LqXhPxmxEntity>().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber))
  576 + - SqlFunc.Subqueryable<LqHytkMxEntity>().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)),
  577 + })
  578 + .ToListAsync();
700 return new MemberRemainingItemsOutput 579 return new MemberRemainingItemsOutput
701 { 580 {
702 MemberId = memberId, 581 MemberId = memberId,
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
@@ -33,7 +33,7 @@ namespace NCC.Extend.LqTkjlb @@ -33,7 +33,7 @@ namespace NCC.Extend.LqTkjlb
33 /// <summary> 33 /// <summary>
34 /// 拓客管理服务 34 /// 拓客管理服务
35 /// </summary> 35 /// </summary>
36 - [ApiDescriptionSettings(Tag = "Extend", Name = "LqTkjlb", Order = 200)] 36 + [ApiDescriptionSettings(Tag = "绿纤拓客管理服务", Name = "LqTkjlb", Order = 200)]
37 [Route("api/Extend/[controller]")] 37 [Route("api/Extend/[controller]")]
38 public class LqTkjlbService : ILqTkjlbService, IDynamicApiController, ITransient 38 public class LqTkjlbService : ILqTkjlbService, IDynamicApiController, ITransient
39 { 39 {
@@ -60,10 +60,29 @@ namespace NCC.Extend.LqTkjlb @@ -60,10 +60,29 @@ namespace NCC.Extend.LqTkjlb
60 [HttpGet("{id}")] 60 [HttpGet("{id}")]
61 public async Task<dynamic> GetInfo(string id) 61 public async Task<dynamic> GetInfo(string id)
62 { 62 {
63 - var entity = await _db.Queryable<LqTkjlbEntity>().FirstAsync(p => p.Id == id);  
64 - var output = entity.Adapt<LqTkjlbInfoOutput>();  
65 - output.eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(u => u.Id == entity.EventId).Select(u => u.EventName);  
66 - return output; 63 + // 使用SqlFunc在查询时直接获取用户名和活动名称
  64 + var result = await _db.Queryable<LqTkjlbEntity>()
  65 + .Where(p => p.Id == id)
  66 + .Select(p => new LqTkjlbInfoOutput
  67 + {
  68 + id = p.Id,
  69 + expansionTime = p.ExpansionTime,
  70 + expansionUserId = p.ExpansionUserId,
  71 + expansionUserName = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == p.ExpansionUserId).Select(u => u.RealName),
  72 + customerName = p.CustomerName,
  73 + customerPhone = p.CustomerPhone,
  74 + buyNumber = p.BuyNumber,
  75 + paymentMethod = p.PaymentMethod,
  76 + isAddWeChat = p.IsAddWeChat,
  77 + remarks = p.Remarks,
  78 + storeId = p.StoreId,
  79 + teamName = p.TeamName,
  80 + eventId = p.EventId,
  81 + eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(e => e.Id == p.EventId).Select(e => e.EventName),
  82 + })
  83 + .FirstAsync();
  84 +
  85 + return result;
67 } 86 }
68 #endregion 87 #endregion
69 88
@@ -78,36 +97,37 @@ namespace NCC.Extend.LqTkjlb @@ -78,36 +97,37 @@ namespace NCC.Extend.LqTkjlb
78 public async Task<dynamic> GetList([FromQuery] LqTkjlbListQueryInput input) 97 public async Task<dynamic> GetList([FromQuery] LqTkjlbListQueryInput input)
79 { 98 {
80 var sidx = input.sidx == null ? "id" : input.sidx; 99 var sidx = input.sidx == null ? "id" : input.sidx;
81 - List<string> queryTksj = input.tksj != null ? input.tksj.Split(',').ToObeject<List<string>>() : null; 100 + List<string> queryTksj = input.expansionTime != null ? input.expansionTime.Split(',').ToObeject<List<string>>() : null;
82 DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null; 101 DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null;
83 DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null; 102 DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null;
84 var data = await _db.Queryable<LqTkjlbEntity>() 103 var data = await _db.Queryable<LqTkjlbEntity>()
85 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) 104 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
86 - .WhereIF(queryTksj != null, p => p.Tksj >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0))  
87 - .WhereIF(queryTksj != null, p => p.Tksj <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59))  
88 - .WhereIF(!string.IsNullOrEmpty(input.tkry), p => p.Tkry.Equals(input.tkry))  
89 - .WhereIF(!string.IsNullOrEmpty(input.gkxm), p => p.Gkxm.Contains(input.gkxm))  
90 - .WhereIF(!string.IsNullOrEmpty(input.dhhm), p => p.Dhhm.Contains(input.dhhm))  
91 - .WhereIF(!string.IsNullOrEmpty(input.gmzs), p => p.Gmzs.Equals(input.gmzs))  
92 - .WhereIF(!string.IsNullOrEmpty(input.zffs), p => p.Zffs.Equals(input.zffs))  
93 - .WhereIF(!string.IsNullOrEmpty(input.sfjwx), p => p.Sfjwx.Equals(input.sfjwx))  
94 - .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz))  
95 - .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd))  
96 - .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) 105 + .WhereIF(queryTksj != null, p => p.ExpansionTime >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0))
  106 + .WhereIF(queryTksj != null, p => p.ExpansionTime <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59))
  107 + .WhereIF(!string.IsNullOrEmpty(input.expansionUserId), p => p.ExpansionUserId.Equals(input.expansionUserId))
  108 + .WhereIF(!string.IsNullOrEmpty(input.customerName), p => p.CustomerName.Contains(input.customerName))
  109 + .WhereIF(!string.IsNullOrEmpty(input.customerPhone), p => p.CustomerPhone.Contains(input.customerPhone))
  110 + .WhereIF(!string.IsNullOrEmpty(input.buyNumber), p => p.BuyNumber.Equals(input.buyNumber))
  111 + .WhereIF(!string.IsNullOrEmpty(input.paymentMethod), p => p.PaymentMethod.Equals(input.paymentMethod))
  112 + .WhereIF(!string.IsNullOrEmpty(input.isAddWeChat), p => p.IsAddWeChat.Equals(input.isAddWeChat))
  113 + .WhereIF(!string.IsNullOrEmpty(input.remarks), p => p.Remarks.Contains(input.remarks))
  114 + .WhereIF(!string.IsNullOrEmpty(input.storeId), p => p.StoreId.Contains(input.storeId))
  115 + .WhereIF(!string.IsNullOrEmpty(input.teamName), p => p.TeamName.Contains(input.teamName))
  116 + .WhereIF(!string.IsNullOrEmpty(input.eventId), p => p.EventId.Contains(input.eventId))
97 .Select(it => new LqTkjlbListOutput 117 .Select(it => new LqTkjlbListOutput
98 { 118 {
99 id = it.Id, 119 id = it.Id,
100 - tksj = it.Tksj,  
101 - // tkry=it.Tkry,  
102 - tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName),  
103 - gkxm = it.Gkxm,  
104 - dhhm = it.Dhhm,  
105 - gmzs = it.Gmzs,  
106 - zffs = it.Zffs,  
107 - sfjwx = it.Sfjwx,  
108 - bz = it.Bz,  
109 - ssmd = it.Ssmd,  
110 - sszd = it.Sszd, 120 + expansionTime = it.ExpansionTime,
  121 + expansionUserId = it.ExpansionUserId,
  122 + expansionUserName = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.ExpansionUserId).Select(u => u.RealName),
  123 + customerName = it.CustomerName,
  124 + customerPhone = it.CustomerPhone,
  125 + buyNumber = it.BuyNumber,
  126 + paymentMethod = it.PaymentMethod,
  127 + isAddWeChat = it.IsAddWeChat,
  128 + remarks = it.Remarks,
  129 + storeId = it.StoreId,
  130 + teamName = it.TeamName,
111 eventId = it.EventId, 131 eventId = it.EventId,
112 eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(u => u.Id == it.EventId).Select(u => u.EventName), 132 eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(u => u.Id == it.EventId).Select(u => u.EventName),
113 }) 133 })
@@ -129,7 +149,7 @@ namespace NCC.Extend.LqTkjlb @@ -129,7 +149,7 @@ namespace NCC.Extend.LqTkjlb
129 { 149 {
130 var userInfo = await _userManager.GetUserInfo(); 150 var userInfo = await _userManager.GetUserInfo();
131 //通过input.dhhm去查询用户信息 151 //通过input.dhhm去查询用户信息
132 - var user = _db.Queryable<LqKhxxEntity>().Where(u => u.Sjh == input.dhhm).Any(); 152 + var user = _db.Queryable<LqKhxxEntity>().Where(u => u.Sjh == input.customerPhone).Any();
133 if (user) 153 if (user)
134 { 154 {
135 throw NCCException.Oh("该手机号码已存在于会员或线索池中"); 155 throw NCCException.Oh("该手机号码已存在于会员或线索池中");
@@ -138,7 +158,7 @@ namespace NCC.Extend.LqTkjlb @@ -138,7 +158,7 @@ namespace NCC.Extend.LqTkjlb
138 var result = await _db.Ado.UseTranAsync(async () => 158 var result = await _db.Ado.UseTranAsync(async () =>
139 { 159 {
140 //通过input.eventId去查询拓客活动信息 160 //通过input.eventId去查询拓客活动信息
141 - var eventUserInfoList = await _db.Queryable<LqEventUserEntity>().Where(u => u.EventId == input.eventId && u.UserId == input.tkry).ToListAsync(); 161 + var eventUserInfoList = await _db.Queryable<LqEventUserEntity>().Where(u => u.EventId == input.eventId && u.UserId == input.expansionUserId).ToListAsync();
142 if (eventUserInfoList == null || eventUserInfoList.Count == 0) 162 if (eventUserInfoList == null || eventUserInfoList.Count == 0)
143 { 163 {
144 throw NCCException.Oh("未找到对应的拓客活动用户信息,请确认活动ID和用户ID是否正确"); 164 throw NCCException.Oh("未找到对应的拓客活动用户信息,请确认活动ID和用户ID是否正确");
@@ -147,15 +167,18 @@ namespace NCC.Extend.LqTkjlb @@ -147,15 +167,18 @@ namespace NCC.Extend.LqTkjlb
147 // 创建拓客记录 167 // 创建拓客记录
148 var entity = input.Adapt<LqTkjlbEntity>(); 168 var entity = input.Adapt<LqTkjlbEntity>();
149 entity.Id = YitIdHelper.NextId().ToString(); 169 entity.Id = YitIdHelper.NextId().ToString();
150 - entity.Sszd = eventUserInfo.TeamName; 170 + entity.TeamName = eventUserInfo.TeamName;
  171 + entity.StoreId = eventUserInfo.StoreId;
  172 + entity.DepId = eventUserInfo.DepId;
  173 + entity.ExpansionTime = DateTime.Now;
151 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 174 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
152 if (!(isOk > 0)) 175 if (!(isOk > 0))
153 throw NCCException.Oh("创建拓客记录失败"); 176 throw NCCException.Oh("创建拓客记录失败");
154 // 创建客户信息 177 // 创建客户信息
155 LqKhxxEntity MemberInfo = new LqKhxxEntity(); 178 LqKhxxEntity MemberInfo = new LqKhxxEntity();
156 MemberInfo.Id = YitIdHelper.NextId().ToString(); 179 MemberInfo.Id = YitIdHelper.NextId().ToString();
157 - MemberInfo.Khmc = entity.Gkxm;  
158 - MemberInfo.Sjh = input.dhhm; // 设置手机号 180 + MemberInfo.Khmc = entity.CustomerName;
  181 + MemberInfo.Sjh = input.customerPhone; // 设置手机号
159 MemberInfo.Khmqgs = "线索池"; 182 MemberInfo.Khmqgs = "线索池";
160 MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss"); 183 MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss");
161 var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 184 var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
@@ -181,35 +204,42 @@ namespace NCC.Extend.LqTkjlb @@ -181,35 +204,42 @@ namespace NCC.Extend.LqTkjlb
181 public async Task<dynamic> GetNoPagingList([FromQuery] LqTkjlbListQueryInput input) 204 public async Task<dynamic> GetNoPagingList([FromQuery] LqTkjlbListQueryInput input)
182 { 205 {
183 var sidx = input.sidx == null ? "id" : input.sidx; 206 var sidx = input.sidx == null ? "id" : input.sidx;
184 - List<string> queryTksj = input.tksj != null ? input.tksj.Split(',').ToObeject<List<string>>() : null;  
185 - DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null;  
186 - DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null; 207 + List<string> queryExpansionTime = input.expansionTime != null ? input.expansionTime.Split(',').ToObeject<List<string>>() : null;
  208 + DateTime? startExpansionTime = queryExpansionTime != null ? Ext.GetDateTime(queryExpansionTime.First()) : null;
  209 + DateTime? endExpansionTime = queryExpansionTime != null ? Ext.GetDateTime(queryExpansionTime.Last()) : null;
187 var data = await _db.Queryable<LqTkjlbEntity>() 210 var data = await _db.Queryable<LqTkjlbEntity>()
188 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) 211 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
189 - .WhereIF(queryTksj != null, p => p.Tksj >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0))  
190 - .WhereIF(queryTksj != null, p => p.Tksj <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59))  
191 - .WhereIF(!string.IsNullOrEmpty(input.tkry), p => p.Tkry.Equals(input.tkry))  
192 - .WhereIF(!string.IsNullOrEmpty(input.gkxm), p => p.Gkxm.Contains(input.gkxm))  
193 - .WhereIF(!string.IsNullOrEmpty(input.dhhm), p => p.Dhhm.Contains(input.dhhm))  
194 - .WhereIF(!string.IsNullOrEmpty(input.gmzs), p => p.Gmzs.Equals(input.gmzs))  
195 - .WhereIF(!string.IsNullOrEmpty(input.zffs), p => p.Zffs.Equals(input.zffs))  
196 - .WhereIF(!string.IsNullOrEmpty(input.sfjwx), p => p.Sfjwx.Equals(input.sfjwx))  
197 - .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz))  
198 - .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd))  
199 - .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) 212 + .WhereIF(
  213 + queryExpansionTime != null,
  214 + p => p.ExpansionTime >= new DateTime(startExpansionTime.ToDate().Year, startExpansionTime.ToDate().Month, startExpansionTime.ToDate().Day, 0, 0, 0)
  215 + )
  216 + .WhereIF(queryExpansionTime != null, p => p.ExpansionTime <= new DateTime(endExpansionTime.ToDate().Year, endExpansionTime.ToDate().Month, endExpansionTime.ToDate().Day, 23, 59, 59))
  217 + .WhereIF(!string.IsNullOrEmpty(input.expansionUserId), p => p.ExpansionUserId.Equals(input.expansionUserId))
  218 + .WhereIF(!string.IsNullOrEmpty(input.customerName), p => p.CustomerName.Contains(input.customerName))
  219 + .WhereIF(!string.IsNullOrEmpty(input.customerPhone), p => p.CustomerPhone.Contains(input.customerPhone))
  220 + .WhereIF(!string.IsNullOrEmpty(input.buyNumber), p => p.BuyNumber.ToString().Equals(input.buyNumber))
  221 + .WhereIF(!string.IsNullOrEmpty(input.paymentMethod), p => p.PaymentMethod.Equals(input.paymentMethod))
  222 + .WhereIF(!string.IsNullOrEmpty(input.isAddWeChat), p => p.IsAddWeChat.Equals(input.isAddWeChat))
  223 + .WhereIF(!string.IsNullOrEmpty(input.remarks), p => p.Remarks.Contains(input.remarks))
  224 + .WhereIF(!string.IsNullOrEmpty(input.storeId), p => p.StoreId.Contains(input.storeId))
  225 + .WhereIF(!string.IsNullOrEmpty(input.teamName), p => p.TeamName.Contains(input.teamName))
  226 + .WhereIF(!string.IsNullOrEmpty(input.eventId), p => p.EventId.Equals(input.eventId))
200 .Select(it => new LqTkjlbListOutput 227 .Select(it => new LqTkjlbListOutput
201 { 228 {
202 id = it.Id, 229 id = it.Id,
203 - tksj = it.Tksj,  
204 - tkry = it.Tkry,  
205 - gkxm = it.Gkxm,  
206 - dhhm = it.Dhhm,  
207 - gmzs = it.Gmzs,  
208 - zffs = it.Zffs,  
209 - sfjwx = it.Sfjwx,  
210 - bz = it.Bz,  
211 - ssmd = it.Ssmd,  
212 - sszd = it.Sszd, 230 + expansionTime = it.ExpansionTime,
  231 + expansionUserId = it.ExpansionUserId,
  232 + expansionUserName = it.ExpansionUserId, // 这里需要根据实际业务逻辑获取用户名
  233 + customerName = it.CustomerName,
  234 + customerPhone = it.CustomerPhone,
  235 + buyNumber = it.BuyNumber,
  236 + paymentMethod = it.PaymentMethod,
  237 + isAddWeChat = it.IsAddWeChat,
  238 + remarks = it.Remarks,
  239 + storeId = it.StoreId,
  240 + teamName = it.TeamName,
  241 + eventId = it.EventId,
  242 + eventName = it.EventId, // 这里需要根据实际业务逻辑获取活动名称
213 }) 243 })
214 .MergeTable() 244 .MergeTable()
215 .OrderBy(sidx + " " + input.sort) 245 .OrderBy(sidx + " " + input.sort)
@@ -336,10 +366,13 @@ namespace NCC.Extend.LqTkjlb @@ -336,10 +366,13 @@ namespace NCC.Extend.LqTkjlb
336 [HttpGet("Actions/GetRanking")] 366 [HttpGet("Actions/GetRanking")]
337 public async Task<dynamic> GetRanking() 367 public async Task<dynamic> GetRanking()
338 { 368 {
339 - var data = await _db.Queryable<LqTkjlbEntity>().GroupBy(it => it.Sszd).Select(it => new LqTkjlbRankingOutput { sszd = it.Sszd, tkrs = SqlFunc.AggregateCount(it.Id) }).ToListAsync(); 369 + var data = await _db.Queryable<LqTkjlbEntity>()
  370 + .GroupBy(it => it.TeamName)
  371 + .Select(it => new LqTkjlbRankingOutput { teamName = it.TeamName, expansionUserCount = SqlFunc.AggregateCount(it.Id) })
  372 + .ToListAsync();
340 373
341 // 在内存中排序并添加排名 374 // 在内存中排序并添加排名
342 - var sortedData = data.OrderByDescending(it => it.tkrs).ToList(); 375 + var sortedData = data.OrderByDescending(it => it.expansionUserCount).ToList();
343 for (int i = 0; i < sortedData.Count; i++) 376 for (int i = 0; i < sortedData.Count; i++)
344 { 377 {
345 sortedData[i].ranking = i + 1; 378 sortedData[i].ranking = i + 1;
@@ -360,18 +393,18 @@ namespace NCC.Extend.LqTkjlb @@ -360,18 +393,18 @@ namespace NCC.Extend.LqTkjlb
360 var result = new List<LqTkjlbTeamDetailOutput>(); 393 var result = new List<LqTkjlbTeamDetailOutput>();
361 394
362 // 获取所有战队 395 // 获取所有战队
363 - var teams = await _db.Queryable<LqTkjlbEntity>().GroupBy(it => it.Sszd).Select(it => it.Sszd).ToListAsync(); 396 + var teams = await _db.Queryable<LqTkjlbEntity>().GroupBy(it => it.TeamName).Select(it => it.TeamName).ToListAsync();
364 397
365 foreach (var team in teams) 398 foreach (var team in teams)
366 { 399 {
367 // 获取该战队所有人员的拓客数据 400 // 获取该战队所有人员的拓客数据
368 var teamMembers = await _db.Queryable<LqTkjlbEntity>() 401 var teamMembers = await _db.Queryable<LqTkjlbEntity>()
369 - .Where(it => it.Sszd == team)  
370 - .GroupBy(it => it.Tkry) 402 + .Where(it => it.TeamName == team)
  403 + .GroupBy(it => it.ExpansionUserId)
371 .Select(it => new 404 .Select(it => new
372 { 405 {
373 // tkry = it.Tkry, 406 // tkry = it.Tkry,
374 - tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), 407 + tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.Id == it.ExpansionUserId).Select(u => u.RealName),
375 tkrs = SqlFunc.AggregateCount(it.Id), 408 tkrs = SqlFunc.AggregateCount(it.Id),
376 }) 409 })
377 .ToListAsync(); 410 .ToListAsync();
netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
@@ -105,7 +105,7 @@ namespace NCC.Extend.LqXhHyhk @@ -105,7 +105,7 @@ namespace NCC.Extend.LqXhHyhk
105 var output = entity.Adapt<LqXhHyhkInfoOutput>(); 105 var output = entity.Adapt<LqXhHyhkInfoOutput>();
106 106
107 // 2. 查询品项明细列表 107 // 2. 查询品项明细列表
108 - var lqXhPxmxList = await _db.Queryable<LqXhPxmxEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync(); 108 + var lqXhPxmxList = await _db.Queryable<LqXhPxmxEntity>().Where(w => w.ConsumeInfoId == entity.Id).ToListAsync();
109 109
110 // 3. 查询健康师业绩列表 110 // 3. 查询健康师业绩列表
111 var lqXhJksyjList = await _db.Queryable<LqXhJksyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync(); 111 var lqXhJksyjList = await _db.Queryable<LqXhJksyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync();
@@ -120,11 +120,11 @@ namespace NCC.Extend.LqXhHyhk @@ -120,11 +120,11 @@ namespace NCC.Extend.LqXhHyhk
120 var pxmxOutput = new LqXhPxmxInfoOutput 120 var pxmxOutput = new LqXhPxmxInfoOutput
121 { 121 {
122 id = pxmx.Id, 122 id = pxmx.Id,
123 - glkdbh = pxmx.Glkdbh, 123 + consumeInfoId = pxmx.ConsumeInfoId,
  124 + billingItemId = pxmx.BillingItemId,
124 px = pxmx.Px, 125 px = pxmx.Px,
125 pxmc = pxmx.Pxmc, 126 pxmc = pxmx.Pxmc,
126 pxjg = pxmx.Pxjg, 127 pxjg = pxmx.Pxjg,
127 - xfzs = pxmx.Xfzs,  
128 memberId = pxmx.MemberId, 128 memberId = pxmx.MemberId,
129 createTime = pxmx.CreateTIme, 129 createTime = pxmx.CreateTIme,
130 projectNumber = pxmx.ProjectNumber, 130 projectNumber = pxmx.ProjectNumber,
@@ -281,7 +281,8 @@ namespace NCC.Extend.LqXhHyhk @@ -281,7 +281,8 @@ namespace NCC.Extend.LqXhHyhk
281 var lqXhPxmxEntity = new LqXhPxmxEntity 281 var lqXhPxmxEntity = new LqXhPxmxEntity
282 { 282 {
283 Id = YitIdHelper.NextId().ToString(), 283 Id = YitIdHelper.NextId().ToString(),
284 - Glkdbh = newEntity.Id, 284 + ConsumeInfoId = newEntity.Id,
  285 + BillingItemId = item.billingItemId,
285 CreateTIme = DateTime.Now, 286 CreateTIme = DateTime.Now,
286 MemberId = entity.Hy, 287 MemberId = entity.Hy,
287 IsEnabled = 0, 288 IsEnabled = 0,
@@ -290,7 +291,6 @@ namespace NCC.Extend.LqXhHyhk @@ -290,7 +291,6 @@ namespace NCC.Extend.LqXhHyhk
290 Px = item.px, 291 Px = item.px,
291 Pxmc = item.pxmc, 292 Pxmc = item.pxmc,
292 Pxjg = item.pxjg, 293 Pxjg = item.pxjg,
293 - Xfzs = item.xfzs,  
294 SourceType = item.sourceType, 294 SourceType = item.sourceType,
295 }; 295 };
296 allPxmxEntities.Add(lqXhPxmxEntity); 296 allPxmxEntities.Add(lqXhPxmxEntity);
@@ -494,7 +494,7 @@ namespace NCC.Extend.LqXhHyhk @@ -494,7 +494,7 @@ namespace NCC.Extend.LqXhHyhk
494 await _db.Deleteable<LqXhKjbsyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync(); 494 await _db.Deleteable<LqXhKjbsyjEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync();
495 495
496 //清空子表数据 496 //清空子表数据
497 - await _db.Deleteable<LqXhPxmxEntity>().In(u => u.Glkdbh, ids).ExecuteCommandAsync(); 497 + await _db.Deleteable<LqXhPxmxEntity>().In(u => u.ConsumeInfoId, ids).ExecuteCommandAsync();
498 //关闭事务 498 //关闭事务
499 _db.CommitTran(); 499 _db.CommitTran();
500 } 500 }
@@ -532,7 +532,7 @@ namespace NCC.Extend.LqXhHyhk @@ -532,7 +532,7 @@ namespace NCC.Extend.LqXhHyhk
532 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 532 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
533 533
534 //清空原有数据 534 //清空原有数据
535 - await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 535 + await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
536 536
537 // 收集所有需要插入的实体,然后批量插入 537 // 收集所有需要插入的实体,然后批量插入
538 var allPxmxEntities = new List<LqXhPxmxEntity>(); 538 var allPxmxEntities = new List<LqXhPxmxEntity>();
@@ -548,7 +548,8 @@ namespace NCC.Extend.LqXhHyhk @@ -548,7 +548,8 @@ namespace NCC.Extend.LqXhHyhk
548 var lqXhPxmxEntity = new LqXhPxmxEntity 548 var lqXhPxmxEntity = new LqXhPxmxEntity
549 { 549 {
550 Id = YitIdHelper.NextId().ToString(), 550 Id = YitIdHelper.NextId().ToString(),
551 - Glkdbh = entity.Id, 551 + ConsumeInfoId = entity.Id,
  552 + BillingItemId = item.billingItemId,
552 CreateTIme = DateTime.Now, 553 CreateTIme = DateTime.Now,
553 MemberId = entity.Hy, 554 MemberId = entity.Hy,
554 IsEnabled = 0, 555 IsEnabled = 0,
@@ -557,7 +558,6 @@ namespace NCC.Extend.LqXhHyhk @@ -557,7 +558,6 @@ namespace NCC.Extend.LqXhHyhk
557 Px = item.px, 558 Px = item.px,
558 Pxmc = item.pxmc, 559 Pxmc = item.pxmc,
559 Pxjg = item.pxjg, 560 Pxjg = item.pxjg,
560 - Xfzs = item.xfzs,  
561 SourceType = item.sourceType, 561 SourceType = item.sourceType,
562 }; 562 };
563 allPxmxEntities.Add(lqXhPxmxEntity); 563 allPxmxEntities.Add(lqXhPxmxEntity);
@@ -664,7 +664,7 @@ namespace NCC.Extend.LqXhHyhk @@ -664,7 +664,7 @@ namespace NCC.Extend.LqXhHyhk
664 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 664 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
665 665
666 //清空子表数据 666 //清空子表数据
667 - await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 667 + await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
668 668
669 //关闭事务 669 //关闭事务
670 _db.CommitTran(); 670 _db.CommitTran();
netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs
1 -using NCC.Common.Core.Manager; 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 NCC.ClayObject;
  8 +using NCC.Common.Configuration;
  9 +using NCC.Common.Core.Manager;
2 using NCC.Common.Enum; 10 using NCC.Common.Enum;
3 using NCC.Common.Extension; 11 using NCC.Common.Extension;
4 using NCC.Common.Filter; 12 using NCC.Common.Filter;
  13 +using NCC.Common.Helper;
  14 +using NCC.Common.Model.NPOI;
  15 +using NCC.DataEncryption;
5 using NCC.Dependency; 16 using NCC.Dependency;
6 using NCC.DynamicApiController; 17 using NCC.DynamicApiController;
7 -using NCC.FriendlyException; 18 +using NCC.Extend.Entitys.Dto.LqXhmxb;
  19 +using NCC.Extend.Entitys.lq_xhmxb;
8 using NCC.Extend.Interfaces.LqXhmxb; 20 using NCC.Extend.Interfaces.LqXhmxb;
9 -using Mapster;  
10 -using Microsoft.AspNetCore.Mvc; 21 +using NCC.FriendlyException;
  22 +using NCC.JsonSerialization;
11 using SqlSugar; 23 using SqlSugar;
12 -using System;  
13 -using System.Collections.Generic;  
14 -using System.Linq;  
15 -using System.Threading.Tasks;  
16 -using NCC.Extend.Entitys.lq_xhmxb;  
17 -using NCC.Extend.Entitys.Dto.LqXhmxb;  
18 using Yitter.IdGenerator; 24 using Yitter.IdGenerator;
19 -using NCC.Common.Helper;  
20 -using NCC.JsonSerialization;  
21 -using NCC.Common.Model.NPOI;  
22 -using NCC.Common.Configuration;  
23 -using NCC.DataEncryption;  
24 -using NCC.ClayObject;  
25 25
26 namespace NCC.Extend.LqXhmxb 26 namespace NCC.Extend.LqXhmxb
27 { 27 {
28 /// <summary> 28 /// <summary>
29 /// 消耗明细表服务 29 /// 消耗明细表服务
30 /// </summary> 30 /// </summary>
31 - [ApiDescriptionSettings(Tag = "Extend",Name = "LqXhmxb", Order = 200)] 31 + [ApiDescriptionSettings(Tag = "Extend", Name = "LqXhmxb", Order = 200)]
32 [Route("api/Extend/[controller]")] 32 [Route("api/Extend/[controller]")]
33 public class LqXhmxbService : ILqXhmxbService, IDynamicApiController, ITransient 33 public class LqXhmxbService : ILqXhmxbService, IDynamicApiController, ITransient
34 { 34 {
@@ -39,11 +39,9 @@ namespace NCC.Extend.LqXhmxb @@ -39,11 +39,9 @@ namespace NCC.Extend.LqXhmxb
39 /// <summary> 39 /// <summary>
40 /// 初始化一个<see cref="LqXhmxbService"/>类型的新实例 40 /// 初始化一个<see cref="LqXhmxbService"/>类型的新实例
41 /// </summary> 41 /// </summary>
42 - public LqXhmxbService(  
43 - ISqlSugarRepository<LqXhmxbEntity> lqXhmxbRepository,  
44 - IUserManager userManager) 42 + public LqXhmxbService(ISqlSugarRepository<LqXhmxbEntity> lqXhmxbRepository, IUserManager userManager)
45 { 43 {
46 - _lqXhmxbRepository = lqXhmxbRepository; 44 + _lqXhmxbRepository = lqXhmxbRepository;
47 _db = _lqXhmxbRepository.Context; 45 _db = _lqXhmxbRepository.Context;
48 _userManager = userManager; 46 _userManager = userManager;
49 } 47 }
@@ -62,10 +60,10 @@ namespace NCC.Extend.LqXhmxb @@ -62,10 +60,10 @@ namespace NCC.Extend.LqXhmxb
62 } 60 }
63 61
64 /// <summary> 62 /// <summary>
65 - /// 获取消耗明细表列表  
66 - /// </summary>  
67 - /// <param name="input">请求参数</param>  
68 - /// <returns></returns> 63 + /// 获取消耗明细表列表
  64 + /// </summary>
  65 + /// <param name="input">请求参数</param>
  66 + /// <returns></returns>
69 [HttpGet("")] 67 [HttpGet("")]
70 public async Task<dynamic> GetList([FromQuery] LqXhmxbListQueryInput input) 68 public async Task<dynamic> GetList([FromQuery] LqXhmxbListQueryInput input)
71 { 69 {
@@ -85,24 +83,27 @@ namespace NCC.Extend.LqXhmxb @@ -85,24 +83,27 @@ namespace NCC.Extend.LqXhmxb
85 .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) 83 .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2))
86 .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) 84 .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3))
87 .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) 85 .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj))
88 - .Select(it=> new LqXhmxbListOutput 86 + .Select(it => new LqXhmxbListOutput
89 { 87 {
90 id = it.Id, 88 id = it.Id,
91 - mdbh=it.Mdbh,  
92 - mdmc=it.Mdmc,  
93 - bmbh=it.Bmbh,  
94 - bmmc=it.Bmmc,  
95 - ygbh=it.Ygbh,  
96 - ygmc=it.Ygmc,  
97 - xms=it.Xms,  
98 - xh=it.Xh,  
99 - sg=it.Sg,  
100 - qtsg1=it.Qtsg1,  
101 - qtsg2=it.Qtsg2,  
102 - qtsg3=it.Qtsg3,  
103 - sghj=it.Sghj,  
104 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize);  
105 - return PageResult<LqXhmxbListOutput>.SqlSugarPageResult(data); 89 + mdbh = it.Mdbh,
  90 + mdmc = it.Mdmc,
  91 + bmbh = it.Bmbh,
  92 + bmmc = it.Bmmc,
  93 + ygbh = it.Ygbh,
  94 + ygmc = it.Ygmc,
  95 + xms = it.Xms,
  96 + xh = it.Xh,
  97 + sg = it.Sg,
  98 + qtsg1 = it.Qtsg1,
  99 + qtsg2 = it.Qtsg2,
  100 + qtsg3 = it.Qtsg3,
  101 + sghj = it.Sghj,
  102 + })
  103 + .MergeTable()
  104 + .OrderBy(sidx + " " + input.sort)
  105 + .ToPagedListAsync(input.currentPage, input.pageSize);
  106 + return PageResult<LqXhmxbListOutput>.SqlSugarPageResult(data);
106 } 107 }
107 108
108 /// <summary> 109 /// <summary>
@@ -117,14 +118,15 @@ namespace NCC.Extend.LqXhmxb @@ -117,14 +118,15 @@ namespace NCC.Extend.LqXhmxb
117 var entity = input.Adapt<LqXhmxbEntity>(); 118 var entity = input.Adapt<LqXhmxbEntity>();
118 entity.Id = YitIdHelper.NextId().ToString(); 119 entity.Id = YitIdHelper.NextId().ToString();
119 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 120 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
120 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); 121 + if (!(isOk > 0))
  122 + throw NCCException.Oh(ErrorCode.COM1000);
121 } 123 }
122 124
123 /// <summary> 125 /// <summary>
124 - /// 获取消耗明细表无分页列表  
125 - /// </summary>  
126 - /// <param name="input">请求参数</param>  
127 - /// <returns></returns> 126 + /// 获取消耗明细表无分页列表
  127 + /// </summary>
  128 + /// <param name="input">请求参数</param>
  129 + /// <returns></returns>
128 [NonAction] 130 [NonAction]
129 public async Task<dynamic> GetNoPagingList([FromQuery] LqXhmxbListQueryInput input) 131 public async Task<dynamic> GetNoPagingList([FromQuery] LqXhmxbListQueryInput input)
130 { 132 {
@@ -144,31 +146,34 @@ namespace NCC.Extend.LqXhmxb @@ -144,31 +146,34 @@ namespace NCC.Extend.LqXhmxb
144 .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2)) 146 .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2))
145 .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3)) 147 .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3))
146 .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj)) 148 .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj))
147 - .Select(it=> new LqXhmxbListOutput 149 + .Select(it => new LqXhmxbListOutput
148 { 150 {
149 id = it.Id, 151 id = it.Id,
150 - mdbh=it.Mdbh,  
151 - mdmc=it.Mdmc,  
152 - bmbh=it.Bmbh,  
153 - bmmc=it.Bmmc,  
154 - ygbh=it.Ygbh,  
155 - ygmc=it.Ygmc,  
156 - xms=it.Xms,  
157 - xh=it.Xh,  
158 - sg=it.Sg,  
159 - qtsg1=it.Qtsg1,  
160 - qtsg2=it.Qtsg2,  
161 - qtsg3=it.Qtsg3,  
162 - sghj=it.Sghj,  
163 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync();  
164 - return data; 152 + mdbh = it.Mdbh,
  153 + mdmc = it.Mdmc,
  154 + bmbh = it.Bmbh,
  155 + bmmc = it.Bmmc,
  156 + ygbh = it.Ygbh,
  157 + ygmc = it.Ygmc,
  158 + xms = it.Xms,
  159 + xh = it.Xh,
  160 + sg = it.Sg,
  161 + qtsg1 = it.Qtsg1,
  162 + qtsg2 = it.Qtsg2,
  163 + qtsg3 = it.Qtsg3,
  164 + sghj = it.Sghj,
  165 + })
  166 + .MergeTable()
  167 + .OrderBy(sidx + " " + input.sort)
  168 + .ToListAsync();
  169 + return data;
165 } 170 }
166 171
167 /// <summary> 172 /// <summary>
168 - /// 导出消耗明细表  
169 - /// </summary>  
170 - /// <param name="input">请求参数</param>  
171 - /// <returns></returns> 173 + /// 导出消耗明细表
  174 + /// </summary>
  175 + /// <param name="input">请求参数</param>
  176 + /// <returns></returns>
172 [HttpGet("Actions/Export")] 177 [HttpGet("Actions/Export")]
173 public async Task<dynamic> Export([FromQuery] LqXhmxbListQueryInput input) 178 public async Task<dynamic> Export([FromQuery] LqXhmxbListQueryInput input)
174 { 179 {
@@ -183,7 +188,8 @@ namespace NCC.Extend.LqXhmxb @@ -183,7 +188,8 @@ namespace NCC.Extend.LqXhmxb
183 { 188 {
184 exportData = await this.GetNoPagingList(input); 189 exportData = await this.GetNoPagingList(input);
185 } 190 }
186 - List<ParamsModel> paramList = "[{\"value\":\"消耗编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList<ParamsModel>(); 191 + List<ParamsModel> paramList =
  192 + "[{\"value\":\"消耗编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList<ParamsModel>();
187 ExcelConfig excelconfig = new ExcelConfig(); 193 ExcelConfig excelconfig = new ExcelConfig();
188 excelconfig.FileName = "消耗明细表.xls"; 194 excelconfig.FileName = "消耗明细表.xls";
189 excelconfig.HeadFont = "微软雅黑"; 195 excelconfig.HeadFont = "微软雅黑";
@@ -202,11 +208,7 @@ namespace NCC.Extend.LqXhmxb @@ -202,11 +208,7 @@ namespace NCC.Extend.LqXhmxb
202 var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; 208 var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
203 ExcelExportHelper<LqXhmxbListOutput>.Export(exportData, excelconfig, addPath); 209 ExcelExportHelper<LqXhmxbListOutput>.Export(exportData, excelconfig, addPath);
204 var fileName = _userManager.UserId + "|" + addPath + "|xls"; 210 var fileName = _userManager.UserId + "|" + addPath + "|xls";
205 - var output = new  
206 - {  
207 - name = excelconfig.FileName,  
208 - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")  
209 - }; 211 + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
210 return output; 212 return output;
211 } 213 }
212 214
@@ -226,7 +228,7 @@ namespace NCC.Extend.LqXhmxb @@ -226,7 +228,7 @@ namespace NCC.Extend.LqXhmxb
226 //开启事务 228 //开启事务
227 _db.BeginTran(); 229 _db.BeginTran();
228 //批量删除消耗明细表 230 //批量删除消耗明细表
229 - await _db.Deleteable<LqXhmxbEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); 231 + await _db.Deleteable<LqXhmxbEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
230 //关闭事务 232 //关闭事务
231 _db.CommitTran(); 233 _db.CommitTran();
232 } 234 }
@@ -250,7 +252,8 @@ namespace NCC.Extend.LqXhmxb @@ -250,7 +252,8 @@ namespace NCC.Extend.LqXhmxb
250 { 252 {
251 var entity = input.Adapt<LqXhmxbEntity>(); 253 var entity = input.Adapt<LqXhmxbEntity>();
252 var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); 254 var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
253 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); 255 + if (!(isOk > 0))
  256 + throw NCCException.Oh(ErrorCode.COM1001);
254 } 257 }
255 258
256 /// <summary> 259 /// <summary>
@@ -263,7 +266,8 @@ namespace NCC.Extend.LqXhmxb @@ -263,7 +266,8 @@ namespace NCC.Extend.LqXhmxb
263 var entity = await _db.Queryable<LqXhmxbEntity>().FirstAsync(p => p.Id == id); 266 var entity = await _db.Queryable<LqXhmxbEntity>().FirstAsync(p => p.Id == id);
264 _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); 267 _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
265 var isOk = await _db.Deleteable<LqXhmxbEntity>().Where(d => d.Id == id).ExecuteCommandAsync(); 268 var isOk = await _db.Deleteable<LqXhmxbEntity>().Where(d => d.Id == id).ExecuteCommandAsync();
266 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); 269 + if (!(isOk > 0))
  270 + throw NCCException.Oh(ErrorCode.COM1002);
267 } 271 }
268 } 272 }
269 } 273 }