Commit de92a5de06df298002bf91d23cb62df2acf947ad

Authored by 李宇
2 parents 2d733a6a 41da4257

Merge branch 'master' of http://39.98.150.180/antissoft/lvqianmeiye_ERP

Showing 26 changed files with 838 additions and 171 deletions
.vscode/settings.json
@@ -7,6 +7,6 @@ @@ -7,6 +7,6 @@
7 "csharpier.endOfLine": "LF", 7 "csharpier.endOfLine": "LF",
8 "[csharp]": { 8 "[csharp]": {
9 "editor.formatOnSave": true, 9 "editor.formatOnSave": true,
10 - "editor.defaultFormatter": "csharpier.csharpier-vscode" 10 + "editor.defaultFormatter": "ms-dotnettools.csharp"
11 } 11 }
12 } 12 }
[已用]创建门店每日耗卡统计视图.sql
@@ -23,7 +23,7 @@ SELECT @@ -23,7 +23,7 @@ SELECT
23 COUNT(DISTINCT hk.hy) AS member_count, -- 消费会员数 23 COUNT(DISTINCT hk.hy) AS member_count, -- 消费会员数
24 hk.hksj AS create_time -- 创建时间 24 hk.hksj AS create_time -- 创建时间
25 FROM lq_xh_hyhk hk 25 FROM lq_xh_hyhk hk
26 -LEFT JOIN lq_xh_pxmx px ON hk.F_Id = px.glkdbh 26 +LEFT JOIN lq_xh_pxmx px ON hk.F_Id = px.F_ConsumeInfoId
27 WHERE hk.hksj IS NOT NULL 27 WHERE hk.hksj IS NOT NULL
28 GROUP BY hk.md, hk.mdbh, hk.mdmc, DATE(hk.hksj), hk.hksj 28 GROUP BY hk.md, hk.mdbh, hk.mdmc, DATE(hk.hksj), hk.hksj
29 ORDER BY hk.md, DATE(hk.hksj) DESC; 29 ORDER BY hk.md, DATE(hk.hksj) DESC;
netcore/src/Application/NCC.API.Tenant/NCC.API.Tenant/Properties/launchSettings.json
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 }, 17 },
18 "NCC.API.Tenant": { 18 "NCC.API.Tenant": {
19 "commandName": "Project", 19 "commandName": "Project",
20 - "launchBrowser": true, 20 + "launchBrowser": false,
21 "environmentVariables": { 21 "environmentVariables": {
22 "ASPNETCORE_ENVIRONMENT": "Development" 22 "ASPNETCORE_ENVIRONMENT": "Development"
23 }, 23 },
netcore/src/Application/NCC.API/Properties/launchSettings.json
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 "NCC.API": { 18 "NCC.API": {
19 "commandName": "Project", 19 "commandName": "Project",
20 "dotnetRunMessages": "true", 20 "dotnetRunMessages": "true",
21 - "launchBrowser": true, 21 + "launchBrowser": false,
22 "applicationUrl": "http://localhost:2011", //58504 22 "applicationUrl": "http://localhost:2011", //58504
23 "environmentVariables": { 23 "environmentVariables": {
24 "ASPNETCORE_ENVIRONMENT": "Development" 24 "ASPNETCORE_ENVIRONMENT": "Development"
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/PersonDataOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqEvent
  4 +{
  5 + /// <summary>
  6 + /// 人员统计数据输出
  7 + /// </summary>
  8 + public class PersonDataOutput
  9 + {
  10 + /// <summary>
  11 + /// 用户ID
  12 + /// </summary>
  13 + public string UserId { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 用户姓名
  17 + /// </summary>
  18 + public string UserName { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 门店ID
  22 + /// </summary>
  23 + public string StoreId { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 门店名称
  27 + /// </summary>
  28 + public string StoreName { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 战队名称
  32 + /// </summary>
  33 + public string TeamName { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 个人目标数
  37 + /// </summary>
  38 + public int PersonalTarget { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 完成目标数
  42 + /// </summary>
  43 + public int CompletedTarget { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 完成率(百分比)
  47 + /// </summary>
  48 + public decimal CompletionRate { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 排名
  52 + /// </summary>
  53 + public int Ranking { get; set; }
  54 +
  55 + /// <summary>
  56 + /// 最后拓客时间
  57 + /// </summary>
  58 + public DateTime? LastExpansionTime { get; set; }
  59 + }
  60 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/StoreDataOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqEvent
  4 +{
  5 + /// <summary>
  6 + /// 门店统计数据输出
  7 + /// </summary>
  8 + public class StoreDataOutput
  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 int TotalTarget { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 门店完成目标数
  27 + /// </summary>
  28 + public int CompletedTarget { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 完成率(百分比)
  32 + /// </summary>
  33 + public decimal CompletionRate { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 排名
  37 + /// </summary>
  38 + public int Ranking { get; set; }
  39 + }
  40 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs
@@ -49,7 +49,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -49,7 +49,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
49 /// 实付业绩 49 /// 实付业绩
50 /// </summary> 50 /// </summary>
51 public decimal sfyj { get; set; } 51 public decimal sfyj { get; set; }
52 -  
53 /// <summary> 52 /// <summary>
54 /// 欠款 53 /// 欠款
55 /// </summary> 54 /// </summary>
@@ -60,10 +59,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -60,10 +59,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
60 /// </summary> 59 /// </summary>
61 public string ckfs { get; set; } 60 public string ckfs { get; set; }
62 61
63 - /// <summary>  
64 - /// 储扣明细  
65 - /// </summary>  
66 - public string ckmx { get; set; }  
67 62
68 /// <summary> 63 /// <summary>
69 /// 付款方式 64 /// 付款方式
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs
@@ -58,10 +58,10 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -58,10 +58,10 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
58 public string ckfs { get; set; } 58 public string ckfs { get; set; }
59 59
60 /// <summary> 60 /// <summary>
61 - /// 储扣明细 61 + /// 储扣总金额
62 /// </summary> 62 /// </summary>
63 - public string ckmx { get; set; }  
64 - 63 + public decimal deductAmount { get; set; }
  64 +
65 /// <summary> 65 /// <summary>
66 /// 付款方式 66 /// 付款方式
67 /// </summary> 67 /// </summary>
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs
@@ -68,12 +68,7 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -68,12 +68,7 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
68 /// 储扣方式 68 /// 储扣方式
69 /// </summary> 69 /// </summary>
70 public string ckfs { get; set; } 70 public string ckfs { get; set; }
71 -  
72 - /// <summary>  
73 - /// 储扣明细  
74 - /// </summary>  
75 - public string ckmx { get; set; }  
76 - 71 +
77 /// <summary> 72 /// <summary>
78 /// 付款方式 73 /// 付款方式
79 /// </summary> 74 /// </summary>
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxCrInput.cs
@@ -53,10 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx @@ -53,10 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
53 /// </summary> 53 /// </summary>
54 public string zjdlsj { get; set; } 54 public string zjdlsj { get; set; }
55 55
56 - /// <summary>  
57 - /// 客户目前归属  
58 - /// </summary>  
59 - public string khmqgs { get; set; }  
60 56
61 /// <summary> 57 /// <summary>
62 /// 归属门店 58 /// 归属门店
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxInfoOutput.cs
@@ -53,10 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx @@ -53,10 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
53 /// </summary> 53 /// </summary>
54 public string zjdlsj { get; set; } 54 public string zjdlsj { get; set; }
55 55
56 - /// <summary>  
57 - /// 客户目前归属  
58 - /// </summary>  
59 - public string khmqgs { get; set; }  
60 56
61 /// <summary> 57 /// <summary>
62 /// 归属门店 58 /// 归属门店
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListOutput.cs
@@ -53,11 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx @@ -53,11 +53,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
53 public string zjdlsj { get; set; } 53 public string zjdlsj { get; set; }
54 54
55 /// <summary> 55 /// <summary>
56 - /// 客户目前归属  
57 - /// </summary>  
58 - public string khmqgs { get; set; }  
59 -  
60 - /// <summary>  
61 /// 归属门店 56 /// 归属门店
62 /// </summary> 57 /// </summary>
63 public string gsmd { get; set; } 58 public string gsmd { get; set; }
@@ -135,6 +130,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx @@ -135,6 +130,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
135 /// <summary> 130 /// <summary>
136 /// 添加时间 131 /// 添加时间
137 /// </summary> 132 /// </summary>
138 - public string createTime { get; set; } 133 + public DateTime createTime { get; set; }
139 } 134 }
140 } 135 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxListQueryInput.cs
@@ -64,11 +64,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx @@ -64,11 +64,6 @@ namespace NCC.Extend.Entitys.Dto.LqKhxx
64 public string zjdlsj { get; set; } 64 public string zjdlsj { get; set; }
65 65
66 /// <summary> 66 /// <summary>
67 - /// 客户目前归属  
68 - /// </summary>  
69 - public string khmqgs { get; set; }  
70 -  
71 - /// <summary>  
72 /// 归属门店 67 /// 归属门店
73 /// </summary> 68 /// </summary>
74 public string gsmd { get; set; } 69 public string gsmd { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYcsdJsj/LqYcsdJsjByUserMonthOutput.cs
@@ -8,51 +8,51 @@ namespace NCC.Extend.Entitys.Dto.LqYcsdJsj @@ -8,51 +8,51 @@ namespace NCC.Extend.Entitys.Dto.LqYcsdJsj
8 /// <summary> 8 /// <summary>
9 /// 金三角ID 9 /// 金三角ID
10 /// </summary> 10 /// </summary>
11 - public string JsjId { get; set; } 11 + public string jsjId { get; set; }
12 12
13 /// <summary> 13 /// <summary>
14 /// 金三角名称 14 /// 金三角名称
15 /// </summary> 15 /// </summary>
16 - public string JsjName { get; set; } 16 + public string jsjName { get; set; }
17 17
18 /// <summary> 18 /// <summary>
19 /// 月份 19 /// 月份
20 /// </summary> 20 /// </summary>
21 - public string Month { get; set; } 21 + public string month { get; set; }
22 22
23 /// <summary> 23 /// <summary>
24 /// 门店ID 24 /// 门店ID
25 /// </summary> 25 /// </summary>
26 - public string StoreId { get; set; } 26 + public string storeId { get; set; }
27 27
28 /// <summary> 28 /// <summary>
29 /// 门店名称 29 /// 门店名称
30 /// </summary> 30 /// </summary>
31 - public string StoreName { get; set; } 31 + public string storeName { get; set; }
32 32
33 /// <summary> 33 /// <summary>
34 /// 用户ID 34 /// 用户ID
35 /// </summary> 35 /// </summary>
36 - public string UserId { get; set; } 36 + public string userId { get; set; }
37 37
38 /// <summary> 38 /// <summary>
39 /// 用户姓名 39 /// 用户姓名
40 /// </summary> 40 /// </summary>
41 - public string UserName { get; set; } 41 + public string userName { get; set; }
42 42
43 /// <summary> 43 /// <summary>
44 /// 是否顾问 44 /// 是否顾问
45 /// </summary> 45 /// </summary>
46 - public int IsLeader { get; set; } 46 + public int isLeader { get; set; }
47 47
48 /// <summary> 48 /// <summary>
49 /// 状态 49 /// 状态
50 /// </summary> 50 /// </summary>
51 - public string Status { get; set; } 51 + public string status { get; set; }
52 52
53 /// <summary> 53 /// <summary>
54 /// 排序 54 /// 排序
55 /// </summary> 55 /// </summary>
56 - public int SortOrder { get; set; } 56 + public int sortOrder { get; set; }
57 } 57 }
58 } 58 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
@@ -52,6 +52,7 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb @@ -52,6 +52,7 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
52 /// </summary> 52 /// </summary>
53 [SugarColumn(ColumnName = "zdyj")] 53 [SugarColumn(ColumnName = "zdyj")]
54 public decimal Zdyj { get; set; } 54 public decimal Zdyj { get; set; }
  55 +
55 56
56 /// <summary> 57 /// <summary>
57 /// 实付业绩 58 /// 实付业绩
@@ -60,6 +61,12 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb @@ -60,6 +61,12 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
60 public decimal Sfyj { get; set; } 61 public decimal Sfyj { get; set; }
61 62
62 /// <summary> 63 /// <summary>
  64 + /// 储扣总金额
  65 + /// </summary>
  66 + [SugarColumn(ColumnName = "F_DeductAmount")]
  67 + public decimal DeductAmount { get; set; }
  68 +
  69 + /// <summary>
63 /// 欠款 70 /// 欠款
64 /// </summary> 71 /// </summary>
65 [SugarColumn(ColumnName = "qk")] 72 [SugarColumn(ColumnName = "qk")]
@@ -72,12 +79,6 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb @@ -72,12 +79,6 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
72 public string Ckfs { get; set; } 79 public string Ckfs { get; set; }
73 80
74 /// <summary> 81 /// <summary>
75 - /// 储扣明细  
76 - /// </summary>  
77 - [SugarColumn(ColumnName = "ckmx")]  
78 - public string Ckmx { get; set; }  
79 -  
80 - /// <summary>  
81 /// 付款方式 82 /// 付款方式
82 /// </summary> 83 /// </summary>
83 [SugarColumn(ColumnName = "fkfs")] 84 [SugarColumn(ColumnName = "fkfs")]
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs
@@ -66,12 +66,6 @@ namespace NCC.Extend.Entitys.lq_khxx @@ -66,12 +66,6 @@ namespace NCC.Extend.Entitys.lq_khxx
66 public string Zjdlsj { get; set; } 66 public string Zjdlsj { get; set; }
67 67
68 /// <summary> 68 /// <summary>
69 - /// 客户目前归属  
70 - /// </summary>  
71 - [SugarColumn(ColumnName = "khmqgs")]  
72 - public string Khmqgs { get; set; }  
73 -  
74 - /// <summary>  
75 /// 归属门店 69 /// 归属门店
76 /// </summary> 70 /// </summary>
77 [SugarColumn(ColumnName = "gsmd")] 71 [SugarColumn(ColumnName = "gsmd")]
@@ -165,6 +159,6 @@ namespace NCC.Extend.Entitys.lq_khxx @@ -165,6 +159,6 @@ namespace NCC.Extend.Entitys.lq_khxx
165 /// 添加时间 159 /// 添加时间
166 /// </summary> 160 /// </summary>
167 [SugarColumn(ColumnName = "F_CreateTime")] 161 [SugarColumn(ColumnName = "F_CreateTime")]
168 - public string CreateTime { get; set; } 162 + public DateTime CreateTime { get; set; } = DateTime.Now;
169 } 163 }
170 } 164 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_statistics_gold_triangle/LqStatisticsGoldTriangleEntity.cs 0 → 100644
  1 +using NCC.Common.Const;
  2 +using SqlSugar;
  3 +using System;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_statistics_gold_triangle
  6 +{
  7 + /// <summary>
  8 + /// 金三角开卡业绩统计数据表
  9 + /// </summary>
  10 + [SugarTable("lq_statistics_gold_triangle")]
  11 + [Tenant(ClaimConst.TENANT_ID)]
  12 + public class LqStatisticsGoldTriangleEntity
  13 + {
  14 + /// <summary>
  15 + /// 主键ID
  16 + /// </summary>
  17 + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
  18 + public string Id { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 金三角ID
  22 + /// </summary>
  23 + [SugarColumn(ColumnName = "F_GoldTriangleId")]
  24 + public string GoldTriangleId { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 金三角名称
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "F_GoldTriangleName")]
  30 + public string GoldTriangleName { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 统计月份(YYYYMM)
  34 + /// </summary>
  35 + [SugarColumn(ColumnName = "F_StatisticsMonth")]
  36 + public string StatisticsMonth { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 门店ID
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "F_StoreId")]
  42 + public string StoreId { get; set; }
  43 +
  44 + /// <summary>
  45 + /// 门店名称
  46 + /// </summary>
  47 + [SugarColumn(ColumnName = "F_StoreName")]
  48 + public string StoreName { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 订单数量
  52 + /// </summary>
  53 + [SugarColumn(ColumnName = "F_OrderCount")]
  54 + public int OrderCount { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 总业绩金额
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "F_TotalPerformance")]
  60 + public decimal TotalPerformance { get; set; }
  61 +
  62 + /// <summary>
  63 + /// 最后订单日期
  64 + /// </summary>
  65 + [SugarColumn(ColumnName = "F_LastOrderDate")]
  66 + public DateTime? LastOrderDate { get; set; }
  67 +
  68 + /// <summary>
  69 + /// 首次订单日期
  70 + /// </summary>
  71 + [SugarColumn(ColumnName = "F_FirstOrderDate")]
  72 + public DateTime? FirstOrderDate { get; set; }
  73 +
  74 + /// <summary>
  75 + /// 创建时间
  76 + /// </summary>
  77 + [SugarColumn(ColumnName = "F_CreateTime")]
  78 + public DateTime CreateTime { get; set; } = DateTime.Now;
  79 + }
  80 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/MemberTypeEnum.cs 0 → 100644
  1 +using System.ComponentModel;
  2 +
  3 +namespace NCC.Extend.Entitys.Enum
  4 +{
  5 + /// <summary>
  6 + /// 会员类型
  7 + /// </summary>
  8 + public enum MemberTypeEnum
  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 + 新客 = 2,
  27 +
  28 + /// <summary>
  29 + /// 老客
  30 + /// </summary>
  31 + [Description("老客")]
  32 + 老客 = 3,
  33 +
  34 + }
  35 +}
0 \ No newline at end of file 36 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
@@ -694,6 +694,212 @@ namespace NCC.Extend.LqEvent @@ -694,6 +694,212 @@ namespace NCC.Extend.LqEvent
694 } 694 }
695 #endregion 695 #endregion
696 696
  697 + #region 根据活动ID获取门店的统计数据
  698 + /// <summary>
  699 + /// 根据活动ID获取门店的统计数据
  700 + /// </summary>
  701 + /// <remarks>
  702 + /// 根据活动ID查询该活动下所有门店的统计数据
  703 + /// 返回门店的目标完成情况、完成率和排名信息
  704 + ///
  705 + /// 示例请求:
  706 + /// ```json
  707 + /// GET /api/Extend/LqEvent/store-data/{eventId}
  708 + /// ```
  709 + ///
  710 + /// 参数说明:
  711 + /// - eventId: 活动ID,必填参数
  712 + ///
  713 + /// 返回信息包括:
  714 + /// - 门店信息(门店ID、门店名称)
  715 + /// - 目标统计(总目标数、完成目标数、完成率)
  716 + /// - 排名信息(按完成率排序)
  717 + /// </remarks>
  718 + /// <param name="eventId">活动ID</param>
  719 + /// <returns>门店统计数据列表</returns>
  720 + /// <response code="200">成功返回门店统计数据</response>
  721 + /// <response code="400">参数错误,活动ID不能为空</response>
  722 + [HttpGet("store-data/{eventId}")]
  723 + public async Task<dynamic> GetStoreDataByEventId(string eventId)
  724 + {
  725 + if (string.IsNullOrEmpty(eventId))
  726 + {
  727 + throw NCCException.Oh("活动ID不能为空");
  728 + }
  729 +
  730 + try
  731 + {
  732 + // 使用多表查询获取门店统计数据
  733 + var storeData = await _db.Queryable<LqEventUserEntity, LqMdxxEntity, LqTkjlbEntity>(
  734 + (eventUser, store, tkjlb) => eventUser.EventId == eventId && eventUser.StoreId == store.Id && eventUser.UserId == tkjlb.ExpansionUserId && tkjlb.EventId == eventId
  735 + )
  736 + .GroupBy((eventUser, store, tkjlb) => new { StoreId = store.Id, StoreName = store.Dm })
  737 + .Select(
  738 + (eventUser, store, tkjlb) =>
  739 + new StoreDataOutput
  740 + {
  741 + StoreId = store.Id,
  742 + StoreName = store.Dm,
  743 + TotalTarget = SqlFunc.AggregateSum(eventUser.EventTarget),
  744 + CompletedTarget = SqlFunc.AggregateCount(tkjlb.Id),
  745 + CompletionRate = 0, // 将在内存中计算
  746 + Ranking = 0, // 将在内存中计算
  747 + }
  748 + )
  749 + .ToListAsync();
  750 +
  751 + // 计算完成率和排名
  752 + foreach (var store in storeData)
  753 + {
  754 + if (store.TotalTarget > 0)
  755 + {
  756 + store.CompletionRate = Math.Round((decimal)store.CompletedTarget / store.TotalTarget * 100, 2);
  757 + }
  758 + }
  759 +
  760 + // 按完成率降序排序并设置排名
  761 + var rankedStores = storeData.OrderByDescending(s => s.CompletionRate).ThenByDescending(s => s.CompletedTarget).ToList();
  762 +
  763 + for (int i = 0; i < rankedStores.Count; i++)
  764 + {
  765 + rankedStores[i].Ranking = i + 1;
  766 + }
  767 +
  768 + return rankedStores;
  769 + }
  770 + catch (Exception ex)
  771 + {
  772 + throw NCCException.Oh($"查询活动 {eventId} 门店统计数据失败: {ex.Message}", ex);
  773 + }
  774 + }
  775 + #endregion
  776 +
  777 + #region 根据活动ID获取人员统计数据
  778 +
  779 + /// <summary>
  780 + /// 根据活动ID获取人员统计数据
  781 + /// </summary>
  782 + /// <remarks>
  783 + /// 根据活动ID查询该活动下所有参与人员的统计数据
  784 + /// 返回人员的个人目标完成情况、完成率和排名信息
  785 + ///
  786 + /// 示例请求:
  787 + /// ```json
  788 + /// GET /api/Extend/LqEvent/person-data/{eventId}
  789 + /// ```
  790 + ///
  791 + /// 参数说明:
  792 + /// - eventId: 活动ID,必填参数
  793 + ///
  794 + /// 返回信息包括:
  795 + /// - 人员信息(用户ID、用户姓名、门店信息、战队信息)
  796 + /// - 目标统计(个人目标数、完成目标数、完成率)
  797 + /// - 排名信息(按完成率排序)
  798 + /// - 最后拓客时间
  799 + /// </remarks>
  800 + /// <param name="eventId">活动ID</param>
  801 + /// <returns>人员统计数据列表</returns>
  802 + /// <response code="200">成功返回人员统计数据</response>
  803 + /// <response code="400">参数错误,活动ID不能为空</response>
  804 + [HttpGet("person-data/{eventId}")]
  805 + public async Task<dynamic> GetPersonDataByEventId(string eventId)
  806 + {
  807 + if (string.IsNullOrEmpty(eventId))
  808 + {
  809 + throw NCCException.Oh("活动ID不能为空");
  810 + }
  811 +
  812 + try
  813 + {
  814 + // 第一步:获取所有参与活动的人员基本信息
  815 + var eventUsers = await _db.Queryable<LqEventUserEntity, UserEntity, LqMdxxEntity>(
  816 + (eventUser, user, store) => eventUser.EventId == eventId && eventUser.UserId == user.Id && eventUser.StoreId == store.Id
  817 + )
  818 + .Select(
  819 + (eventUser, user, store) =>
  820 + new
  821 + {
  822 + UserId = user.Id,
  823 + UserName = user.RealName,
  824 + StoreId = store.Id,
  825 + StoreName = store.Dm,
  826 + TeamName = eventUser.TeamName,
  827 + PersonalTarget = eventUser.EventTarget,
  828 + }
  829 + )
  830 + .ToListAsync();
  831 + // 第二步:获取每个用户的拓客统计数据
  832 + var userIds = eventUsers.Select(u => u.UserId).ToList();
  833 + var expansionStats = new Dictionary<string, (int Count, DateTime? LastTime)>();
  834 + if (userIds.Any())
  835 + {
  836 + // 分批查询拓客数据,避免IN查询过大
  837 + const int batchSize = 500;
  838 + for (int i = 0; i < userIds.Count; i += batchSize)
  839 + {
  840 + var batch = userIds.Skip(i).Take(batchSize).ToList();
  841 + var stats = await _db.Queryable<LqTkjlbEntity>()
  842 + .Where(tkjlb => tkjlb.EventId == eventId && batch.Contains(tkjlb.ExpansionUserId))
  843 + .GroupBy(tkjlb => tkjlb.ExpansionUserId)
  844 + .Select(tkjlb => new
  845 + {
  846 + UserId = tkjlb.ExpansionUserId,
  847 + Count = SqlFunc.AggregateCount(tkjlb.Id),
  848 + LastTime = SqlFunc.AggregateMax(tkjlb.CreateTime),
  849 + })
  850 + .ToListAsync();
  851 +
  852 + foreach (var stat in stats)
  853 + {
  854 + expansionStats[stat.UserId] = (stat.Count, stat.LastTime);
  855 + }
  856 + }
  857 + }
  858 +
  859 + // 第三步:合并数据
  860 + var personData = eventUsers
  861 + .Select(eventUser => new PersonDataOutput
  862 + {
  863 + UserId = eventUser.UserId,
  864 + UserName = eventUser.UserName,
  865 + StoreId = eventUser.StoreId,
  866 + StoreName = eventUser.StoreName,
  867 + TeamName = eventUser.TeamName,
  868 + PersonalTarget = eventUser.PersonalTarget,
  869 + CompletedTarget = expansionStats.ContainsKey(eventUser.UserId) ? expansionStats[eventUser.UserId].Count : 0,
  870 + CompletionRate = 0, // 将在内存中计算
  871 + Ranking = 0, // 将在内存中计算
  872 + LastExpansionTime = expansionStats.ContainsKey(eventUser.UserId) ? expansionStats[eventUser.UserId].LastTime : null,
  873 + })
  874 + .ToList();
  875 +
  876 + // 计算完成率和排名
  877 + foreach (var person in personData)
  878 + {
  879 + if (person.PersonalTarget > 0)
  880 + {
  881 + person.CompletionRate = Math.Round((decimal)person.CompletedTarget / person.PersonalTarget * 100, 2);
  882 + }
  883 + }
  884 +
  885 + // 按完成率降序排序并设置排名
  886 + var rankedPersons = personData.OrderByDescending(p => p.CompletionRate).ThenByDescending(p => p.CompletedTarget).ToList();
  887 +
  888 + for (int i = 0; i < rankedPersons.Count; i++)
  889 + {
  890 + rankedPersons[i].Ranking = i + 1;
  891 + }
  892 +
  893 + return rankedPersons;
  894 + }
  895 + catch (Exception ex)
  896 + {
  897 + throw NCCException.Oh($"查询活动 {eventId} 人员统计数据失败: {ex.Message}", ex);
  898 + }
  899 + }
  900 +
  901 + #endregion
  902 +
697 #region Excel导入拓客活动用户 903 #region Excel导入拓客活动用户
698 904
699 /// <summary> 905 /// <summary>
netcore/src/Modularity/Extend/NCC.Extend/LqGzService.cs
@@ -26,6 +26,7 @@ using NCC.Extend.Entitys.lq_kd_pxmx; @@ -26,6 +26,7 @@ using NCC.Extend.Entitys.lq_kd_pxmx;
26 using NCC.Extend.Entitys.lq_mdxx; 26 using NCC.Extend.Entitys.lq_mdxx;
27 using NCC.Extend.Entitys.lq_xmzl; 27 using NCC.Extend.Entitys.lq_xmzl;
28 using NCC.Extend.Entitys.lq_ycsd_jsj; 28 using NCC.Extend.Entitys.lq_ycsd_jsj;
  29 +using NCC.Extend.Entitys.lq_statistics_gold_triangle;
29 using NCC.Extend.Interfaces.LqGz; 30 using NCC.Extend.Interfaces.LqGz;
30 using NCC.FriendlyException; 31 using NCC.FriendlyException;
31 using NCC.JsonSerialization; 32 using NCC.JsonSerialization;
@@ -57,6 +58,7 @@ namespace NCC.Extend.LqGz @@ -57,6 +58,7 @@ namespace NCC.Extend.LqGz
57 _logger = logger; 58 _logger = logger;
58 } 59 }
59 60
  61 + #region 获取工资全字段
60 /// <summary> 62 /// <summary>
61 /// 获取工资全字段 63 /// 获取工资全字段
62 /// </summary> 64 /// </summary>
@@ -69,7 +71,9 @@ namespace NCC.Extend.LqGz @@ -69,7 +71,9 @@ namespace NCC.Extend.LqGz
69 var output = entity.Adapt<LqGzInfoOutput>(); 71 var output = entity.Adapt<LqGzInfoOutput>();
70 return output; 72 return output;
71 } 73 }
  74 + #endregion
72 75
  76 + #region 获取工资全字段列表
73 /// <summary> 77 /// <summary>
74 /// 获取工资全字段列表 78 /// 获取工资全字段列表
75 /// </summary> 79 /// </summary>
@@ -286,7 +290,9 @@ namespace NCC.Extend.LqGz @@ -286,7 +290,9 @@ namespace NCC.Extend.LqGz
286 .ToPagedListAsync(input.currentPage, input.pageSize); 290 .ToPagedListAsync(input.currentPage, input.pageSize);
287 return PageResult<LqGzListOutput>.SqlSugarPageResult(data); 291 return PageResult<LqGzListOutput>.SqlSugarPageResult(data);
288 } 292 }
  293 + #endregion
289 294
  295 + #region 新建工资全字段
290 /// <summary> 296 /// <summary>
291 /// 新建工资全字段 297 /// 新建工资全字段
292 /// </summary> 298 /// </summary>
@@ -302,7 +308,9 @@ namespace NCC.Extend.LqGz @@ -302,7 +308,9 @@ namespace NCC.Extend.LqGz
302 if (!(isOk > 0)) 308 if (!(isOk > 0))
303 throw NCCException.Oh(ErrorCode.COM1000); 309 throw NCCException.Oh(ErrorCode.COM1000);
304 } 310 }
  311 + #endregion
305 312
  313 + #region 获取工资全字段无分页列表
306 /// <summary> 314 /// <summary>
307 /// 获取工资全字段无分页列表 315 /// 获取工资全字段无分页列表
308 /// </summary> 316 /// </summary>
@@ -519,6 +527,9 @@ namespace NCC.Extend.LqGz @@ -519,6 +527,9 @@ namespace NCC.Extend.LqGz
519 .ToListAsync(); 527 .ToListAsync();
520 return data; 528 return data;
521 } 529 }
  530 + #endregion
  531 +
  532 + #region 导出工资全字段
522 533
523 /// <summary> 534 /// <summary>
524 /// 导出工资全字段 535 /// 导出工资全字段
@@ -562,7 +573,9 @@ namespace NCC.Extend.LqGz @@ -562,7 +573,9 @@ namespace NCC.Extend.LqGz
562 var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") }; 573 var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
563 return output; 574 return output;
564 } 575 }
  576 + #endregion
565 577
  578 + #region 批量删除工资全字段
566 /// <summary> 579 /// <summary>
567 /// 批量删除工资全字段 580 /// 批量删除工资全字段
568 /// </summary> 581 /// </summary>
@@ -591,7 +604,9 @@ namespace NCC.Extend.LqGz @@ -591,7 +604,9 @@ namespace NCC.Extend.LqGz
591 } 604 }
592 } 605 }
593 } 606 }
  607 + #endregion
594 608
  609 + #region 更新工资全字段
595 /// <summary> 610 /// <summary>
596 /// 更新工资全字段 611 /// 更新工资全字段
597 /// </summary> 612 /// </summary>
@@ -606,7 +621,9 @@ namespace NCC.Extend.LqGz @@ -606,7 +621,9 @@ namespace NCC.Extend.LqGz
606 if (!(isOk > 0)) 621 if (!(isOk > 0))
607 throw NCCException.Oh(ErrorCode.COM1001); 622 throw NCCException.Oh(ErrorCode.COM1001);
608 } 623 }
  624 + #endregion
609 625
  626 + #region 删除工资全字段
610 /// <summary> 627 /// <summary>
611 /// 删除工资全字段 628 /// 删除工资全字段
612 /// </summary> 629 /// </summary>
@@ -620,6 +637,7 @@ namespace NCC.Extend.LqGz @@ -620,6 +637,7 @@ namespace NCC.Extend.LqGz
620 if (!(isOk > 0)) 637 if (!(isOk > 0))
621 throw NCCException.Oh(ErrorCode.COM1002); 638 throw NCCException.Oh(ErrorCode.COM1002);
622 } 639 }
  640 + #endregion
623 641
624 #region 业绩计算相关方法 642 #region 业绩计算相关方法
625 643
@@ -896,5 +914,237 @@ namespace NCC.Extend.LqGz @@ -896,5 +914,237 @@ namespace NCC.Extend.LqGz
896 } 914 }
897 915
898 #endregion 916 #endregion
  917 +
  918 + #region 金三角统计数据保存
  919 +
  920 + /// <summary>
  921 + /// 保存金三角开卡业绩统计数据
  922 + /// </summary>
  923 + /// <remarks>
  924 + /// 根据金三角设定和开单记录统计金三角的业绩数据
  925 + /// 使用直接SQL查询提高效率,完全按照原始SQL逻辑实现
  926 + ///
  927 + /// 示例请求:
  928 + /// ```json
  929 + /// POST /api/Extend/LqGz/save-gold-triangle-statistics
  930 + /// {
  931 + /// "statisticsMonth": "202401"
  932 + /// }
  933 + /// ```
  934 + /// </remarks>
  935 + /// <param name="statisticsMonth">统计月份(YYYYMM格式)</param>
  936 + /// <returns>保存结果</returns>
  937 + /// <response code="200">成功保存统计数据</response>
  938 + /// <response code="400">参数错误</response>
  939 + /// <response code="500">服务器内部错误</response>
  940 + [HttpPost("save-gold-triangle-statistics")]
  941 + public async Task<dynamic> SaveGoldTriangleStatistics(string statisticsMonth)
  942 + {
  943 + if (string.IsNullOrEmpty(statisticsMonth) || statisticsMonth.Length != 6)
  944 + {
  945 + throw NCCException.Oh("统计月份格式错误,请使用YYYYMM格式");
  946 + }
  947 +
  948 + try
  949 + {
  950 + // 使用直接SQL查询,完全按照原始SQL逻辑
  951 + var sql = @"
  952 + SELECT
  953 + jsj.F_Id AS JsjId,
  954 + jsj.jsj AS JsjName,
  955 + jsj.yf AS Month,
  956 + jsj.md AS StoreId,
  957 + md.dm AS StoreName,
  958 + COUNT(DISTINCT jksyj.glkdbh) AS OrderCount,
  959 + SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) AS TotalPerformance,
  960 + MAX(jksyj.yjsj) AS LastOrderDate,
  961 + MIN(jksyj.yjsj) AS FirstOrderDate
  962 + FROM lq_ycsd_jsj jsj
  963 + LEFT JOIN lq_kd_jksyj jksyj ON (
  964 + jsj.F_Id = jksyj.jsj_id
  965 + AND YEAR(jksyj.yjsj) = SUBSTRING(jsj.yf, 1, 4)
  966 + AND MONTH(jksyj.yjsj) = SUBSTRING(jsj.yf, 5, 2)
  967 + )
  968 + LEFT JOIN lq_mdxx md ON jsj.md = md.F_Id
  969 + WHERE jsj.yf = @statisticsMonth
  970 + AND jksyj.yjsj IS NOT NULL
  971 + AND jksyj.jksyj IS NOT NULL
  972 + AND jksyj.jksyj <> ''
  973 + AND jksyj.jksyj <> '0'
  974 + GROUP BY jsj.F_Id, jsj.jsj, jsj.yf, jsj.md, md.dm
  975 + ORDER BY jsj.yf DESC, TotalPerformance DESC";
  976 +
  977 + var statisticsData = await _db.Ado.SqlQueryAsync<dynamic>(sql, new { statisticsMonth });
  978 +
  979 + if (!statisticsData.Any())
  980 + {
  981 + return new
  982 + {
  983 + Success = true,
  984 + Message = $"未找到 {statisticsMonth} 月份的金三角统计数据",
  985 + SavedCount = 0
  986 + };
  987 + }
  988 +
  989 + // 转换为实体对象并保存
  990 + var entities = statisticsData.Select(data => new LqStatisticsGoldTriangleEntity
  991 + {
  992 + Id = YitIdHelper.NextId().ToString(),
  993 + GoldTriangleId = data.JsjId?.ToString(),
  994 + GoldTriangleName = data.JsjName?.ToString(),
  995 + StatisticsMonth = data.Month?.ToString(),
  996 + StoreId = data.StoreId?.ToString(),
  997 + StoreName = data.StoreName?.ToString(),
  998 + OrderCount = Convert.ToInt32(data.OrderCount),
  999 + TotalPerformance = Convert.ToDecimal(data.TotalPerformance),
  1000 + LastOrderDate = data.LastOrderDate as DateTime?,
  1001 + FirstOrderDate = data.FirstOrderDate as DateTime?,
  1002 + CreateTime = DateTime.Now
  1003 + }).ToList();
  1004 +
  1005 + // 先删除该月份的历史数据
  1006 + await _db.Deleteable<LqStatisticsGoldTriangleEntity>()
  1007 + .Where(x => x.StatisticsMonth == statisticsMonth)
  1008 + .ExecuteCommandAsync();
  1009 +
  1010 + // 批量插入新数据
  1011 + var savedCount = await _db.Insertable(entities).ExecuteCommandAsync();
  1012 +
  1013 + _logger.LogInformation($"成功保存金三角统计数据 - 月份: {statisticsMonth}, 记录数: {savedCount}");
  1014 +
  1015 + return new
  1016 + {
  1017 + Success = true,
  1018 + Message = $"成功保存 {savedCount} 条金三角统计数据",
  1019 + SavedCount = savedCount,
  1020 + StatisticsMonth = statisticsMonth
  1021 + };
  1022 + }
  1023 + catch (Exception ex)
  1024 + {
  1025 + _logger.LogError(ex, $"保存金三角统计数据失败 - 月份: {statisticsMonth}");
  1026 + throw NCCException.Oh($"保存金三角统计数据失败: {ex.Message}");
  1027 + }
  1028 + }
  1029 +
  1030 + /// <summary>
  1031 + /// 测试金三角统计SQL查询
  1032 + /// </summary>
  1033 + /// <remarks>
  1034 + /// 直接执行SQL查询,验证统计逻辑是否正确
  1035 + ///
  1036 + /// 示例请求:
  1037 + /// ```json
  1038 + /// GET /api/Extend/LqGz/test-gold-triangle-sql?statisticsMonth=202401
  1039 + /// ```
  1040 + /// </remarks>
  1041 + /// <param name="statisticsMonth">统计月份(YYYYMM格式)</param>
  1042 + /// <returns>原始SQL查询结果</returns>
  1043 + /// <response code="200">成功返回查询结果</response>
  1044 + /// <response code="400">参数错误</response>
  1045 + [HttpGet("test-gold-triangle-sql")]
  1046 + public async Task<dynamic> TestGoldTriangleSql(string statisticsMonth)
  1047 + {
  1048 + if (string.IsNullOrEmpty(statisticsMonth) || statisticsMonth.Length != 6)
  1049 + {
  1050 + throw NCCException.Oh("统计月份格式错误,请使用YYYYMM格式");
  1051 + }
  1052 +
  1053 + try
  1054 + {
  1055 + var sql = @"
  1056 + SELECT
  1057 + jsj.F_Id AS JsjId,
  1058 + jsj.jsj AS JsjName,
  1059 + jsj.yf AS Month,
  1060 + jsj.md AS StoreId,
  1061 + md.dm AS StoreName,
  1062 + COUNT(DISTINCT jksyj.glkdbh) AS OrderCount,
  1063 + SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) AS TotalPerformance,
  1064 + MAX(jksyj.yjsj) AS LastOrderDate,
  1065 + MIN(jksyj.yjsj) AS FirstOrderDate
  1066 + FROM lq_ycsd_jsj jsj
  1067 + LEFT JOIN lq_kd_jksyj jksyj ON (
  1068 + jsj.F_Id = jksyj.jsj_id
  1069 + AND YEAR(jksyj.yjsj) = SUBSTRING(jsj.yf, 1, 4)
  1070 + AND MONTH(jksyj.yjsj) = SUBSTRING(jsj.yf, 5, 2)
  1071 + )
  1072 + LEFT JOIN lq_mdxx md ON jsj.md = md.F_Id
  1073 + WHERE jsj.yf = @statisticsMonth
  1074 + AND jksyj.yjsj IS NOT NULL
  1075 + AND jksyj.jksyj IS NOT NULL
  1076 + AND jksyj.jksyj <> ''
  1077 + AND jksyj.jksyj <> '0'
  1078 + GROUP BY jsj.F_Id, jsj.jsj, jsj.yf, jsj.md, md.dm
  1079 + ORDER BY jsj.yf DESC, TotalPerformance DESC";
  1080 +
  1081 + var result = await _db.Ado.SqlQueryAsync<dynamic>(sql, new { statisticsMonth });
  1082 +
  1083 + return new
  1084 + {
  1085 + Success = true,
  1086 + Data = result,
  1087 + Count = result.Count,
  1088 + StatisticsMonth = statisticsMonth,
  1089 + Sql = sql
  1090 + };
  1091 + }
  1092 + catch (Exception ex)
  1093 + {
  1094 + _logger.LogError(ex, $"测试金三角统计SQL失败 - 月份: {statisticsMonth}");
  1095 + throw NCCException.Oh($"测试金三角统计SQL失败: {ex.Message}");
  1096 + }
  1097 + }
  1098 +
  1099 + /// <summary>
  1100 + /// 获取金三角统计数据
  1101 + /// </summary>
  1102 + /// <remarks>
  1103 + /// 查询指定月份的金三角统计数据
  1104 + ///
  1105 + /// 示例请求:
  1106 + /// ```json
  1107 + /// GET /api/Extend/LqGz/get-gold-triangle-statistics?statisticsMonth=202401
  1108 + /// ```
  1109 + /// </remarks>
  1110 + /// <param name="statisticsMonth">统计月份(YYYYMM格式)</param>
  1111 + /// <returns>统计数据列表</returns>
  1112 + /// <response code="200">成功返回统计数据</response>
  1113 + /// <response code="400">参数错误</response>
  1114 + [HttpGet("get-gold-triangle-statistics")]
  1115 + public async Task<dynamic> GetGoldTriangleStatistics(string statisticsMonth)
  1116 + {
  1117 + if (string.IsNullOrEmpty(statisticsMonth))
  1118 + {
  1119 + throw NCCException.Oh("统计月份不能为空");
  1120 + }
  1121 +
  1122 + try
  1123 + {
  1124 + var statistics = await _db.Queryable<LqStatisticsGoldTriangleEntity>()
  1125 + .Where(x => x.StatisticsMonth == statisticsMonth)
  1126 + .OrderBy(x => x.TotalPerformance, OrderByType.Desc)
  1127 + .ToListAsync();
  1128 +
  1129 + return new
  1130 + {
  1131 + Success = true,
  1132 + Data = statistics,
  1133 + Count = statistics.Count,
  1134 + StatisticsMonth = statisticsMonth
  1135 + };
  1136 + }
  1137 + catch (Exception ex)
  1138 + {
  1139 + _logger.LogError(ex, $"查询金三角统计数据失败 - 月份: {statisticsMonth}");
  1140 + throw NCCException.Oh($"查询金三角统计数据失败: {ex.Message}");
  1141 + }
  1142 + }
  1143 +
  1144 + #endregion
  1145 +
  1146 +
  1147 +
  1148 +
899 } 1149 }
900 } 1150 }
netcore/src/Modularity/Extend/NCC.Extend/LqHzfService.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.LqHzf;
  19 +using NCC.Extend.Entitys.lq_hzf;
8 using NCC.Extend.Interfaces.LqHzf; 20 using NCC.Extend.Interfaces.LqHzf;
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_hzf;  
17 -using NCC.Extend.Entitys.Dto.LqHzf;  
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.LqHzf 26 namespace NCC.Extend.LqHzf
27 { 27 {
28 /// <summary> 28 /// <summary>
29 /// 合作方服务 29 /// 合作方服务
30 /// </summary> 30 /// </summary>
31 - [ApiDescriptionSettings(Tag = "Extend",Name = "LqHzf", Order = 200)] 31 + [ApiDescriptionSettings(Tag = "Extend", Name = "LqHzf", Order = 200)]
32 [Route("api/Extend/[controller]")] 32 [Route("api/Extend/[controller]")]
33 public class LqHzfService : ILqHzfService, IDynamicApiController, ITransient 33 public class LqHzfService : ILqHzfService, IDynamicApiController, ITransient
34 { 34 {
@@ -39,11 +39,9 @@ namespace NCC.Extend.LqHzf @@ -39,11 +39,9 @@ namespace NCC.Extend.LqHzf
39 /// <summary> 39 /// <summary>
40 /// 初始化一个<see cref="LqHzfService"/>类型的新实例 40 /// 初始化一个<see cref="LqHzfService"/>类型的新实例
41 /// </summary> 41 /// </summary>
42 - public LqHzfService(  
43 - ISqlSugarRepository<LqHzfEntity> lqHzfRepository,  
44 - IUserManager userManager) 42 + public LqHzfService(ISqlSugarRepository<LqHzfEntity> lqHzfRepository, IUserManager userManager)
45 { 43 {
46 - _lqHzfRepository = lqHzfRepository; 44 + _lqHzfRepository = lqHzfRepository;
47 _db = _lqHzfRepository.Context; 45 _db = _lqHzfRepository.Context;
48 _userManager = userManager; 46 _userManager = userManager;
49 } 47 }
@@ -62,10 +60,10 @@ namespace NCC.Extend.LqHzf @@ -62,10 +60,10 @@ namespace NCC.Extend.LqHzf
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] LqHzfListQueryInput input) 68 public async Task<dynamic> GetList([FromQuery] LqHzfListQueryInput input)
71 { 69 {
@@ -75,14 +73,17 @@ namespace NCC.Extend.LqHzf @@ -75,14 +73,17 @@ namespace NCC.Extend.LqHzf
75 .WhereIF(!string.IsNullOrEmpty(input.hzmc), p => p.Hzmc.Contains(input.hzmc)) 73 .WhereIF(!string.IsNullOrEmpty(input.hzmc), p => p.Hzmc.Contains(input.hzmc))
76 .WhereIF(!string.IsNullOrEmpty(input.hzfczb), p => p.Hzfczb.Equals(input.hzfczb)) 74 .WhereIF(!string.IsNullOrEmpty(input.hzfczb), p => p.Hzfczb.Equals(input.hzfczb))
77 .WhereIF(!string.IsNullOrEmpty(input.skf), p => p.Skf.Contains(input.skf)) 75 .WhereIF(!string.IsNullOrEmpty(input.skf), p => p.Skf.Contains(input.skf))
78 - .Select(it=> new LqHzfListOutput 76 + .Select(it => new LqHzfListOutput
79 { 77 {
80 id = it.Id, 78 id = it.Id,
81 - hzmc=it.Hzmc,  
82 - hzfczb=it.Hzfczb,  
83 - skf=it.Skf,  
84 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize);  
85 - return PageResult<LqHzfListOutput>.SqlSugarPageResult(data); 79 + hzmc = it.Hzmc,
  80 + hzfczb = it.Hzfczb,
  81 + skf = it.Skf,
  82 + })
  83 + .MergeTable()
  84 + .OrderBy(sidx + " " + input.sort)
  85 + .ToPagedListAsync(input.currentPage, input.pageSize);
  86 + return PageResult<LqHzfListOutput>.SqlSugarPageResult(data);
86 } 87 }
87 88
88 /// <summary> 89 /// <summary>
@@ -97,14 +98,15 @@ namespace NCC.Extend.LqHzf @@ -97,14 +98,15 @@ namespace NCC.Extend.LqHzf
97 var entity = input.Adapt<LqHzfEntity>(); 98 var entity = input.Adapt<LqHzfEntity>();
98 entity.Id = YitIdHelper.NextId().ToString(); 99 entity.Id = YitIdHelper.NextId().ToString();
99 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 100 var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
100 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); 101 + if (!(isOk > 0))
  102 + throw NCCException.Oh(ErrorCode.COM1000);
101 } 103 }
102 104
103 /// <summary> 105 /// <summary>
104 - /// 获取合作方无分页列表  
105 - /// </summary>  
106 - /// <param name="input">请求参数</param>  
107 - /// <returns></returns> 106 + /// 获取合作方无分页列表
  107 + /// </summary>
  108 + /// <param name="input">请求参数</param>
  109 + /// <returns></returns>
108 [NonAction] 110 [NonAction]
109 public async Task<dynamic> GetNoPagingList([FromQuery] LqHzfListQueryInput input) 111 public async Task<dynamic> GetNoPagingList([FromQuery] LqHzfListQueryInput input)
110 { 112 {
@@ -114,21 +116,24 @@ namespace NCC.Extend.LqHzf @@ -114,21 +116,24 @@ namespace NCC.Extend.LqHzf
114 .WhereIF(!string.IsNullOrEmpty(input.hzmc), p => p.Hzmc.Contains(input.hzmc)) 116 .WhereIF(!string.IsNullOrEmpty(input.hzmc), p => p.Hzmc.Contains(input.hzmc))
115 .WhereIF(!string.IsNullOrEmpty(input.hzfczb), p => p.Hzfczb.Equals(input.hzfczb)) 117 .WhereIF(!string.IsNullOrEmpty(input.hzfczb), p => p.Hzfczb.Equals(input.hzfczb))
116 .WhereIF(!string.IsNullOrEmpty(input.skf), p => p.Skf.Contains(input.skf)) 118 .WhereIF(!string.IsNullOrEmpty(input.skf), p => p.Skf.Contains(input.skf))
117 - .Select(it=> new LqHzfListOutput 119 + .Select(it => new LqHzfListOutput
118 { 120 {
119 id = it.Id, 121 id = it.Id,
120 - hzmc=it.Hzmc,  
121 - hzfczb=it.Hzfczb,  
122 - skf=it.Skf,  
123 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync();  
124 - return data; 122 + hzmc = it.Hzmc,
  123 + hzfczb = it.Hzfczb,
  124 + skf = it.Skf,
  125 + })
  126 + .MergeTable()
  127 + .OrderBy(sidx + " " + input.sort)
  128 + .ToListAsync();
  129 + return data;
125 } 130 }
126 131
127 /// <summary> 132 /// <summary>
128 - /// 导出合作方  
129 - /// </summary>  
130 - /// <param name="input">请求参数</param>  
131 - /// <returns></returns> 133 + /// 导出合作方
  134 + /// </summary>
  135 + /// <param name="input">请求参数</param>
  136 + /// <returns></returns>
132 [HttpGet("Actions/Export")] 137 [HttpGet("Actions/Export")]
133 public async Task<dynamic> Export([FromQuery] LqHzfListQueryInput input) 138 public async Task<dynamic> Export([FromQuery] LqHzfListQueryInput input)
134 { 139 {
@@ -143,7 +148,8 @@ namespace NCC.Extend.LqHzf @@ -143,7 +148,8 @@ namespace NCC.Extend.LqHzf
143 { 148 {
144 exportData = await this.GetNoPagingList(input); 149 exportData = await this.GetNoPagingList(input);
145 } 150 }
146 - List<ParamsModel> paramList = "[{\"value\":\"合作编号\",\"field\":\"id\"},{\"value\":\"合作名称\",\"field\":\"hzmc\"},{\"value\":\"合作分成占比\",\"field\":\"hzfczb\"},{\"value\":\"收款方\",\"field\":\"skf\"},]".ToList<ParamsModel>(); 151 + List<ParamsModel> paramList =
  152 + "[{\"value\":\"合作编号\",\"field\":\"id\"},{\"value\":\"合作名称\",\"field\":\"hzmc\"},{\"value\":\"合作分成占比\",\"field\":\"hzfczb\"},{\"value\":\"收款方\",\"field\":\"skf\"},]".ToList<ParamsModel>();
147 ExcelConfig excelconfig = new ExcelConfig(); 153 ExcelConfig excelconfig = new ExcelConfig();
148 excelconfig.FileName = "合作方.xls"; 154 excelconfig.FileName = "合作方.xls";
149 excelconfig.HeadFont = "微软雅黑"; 155 excelconfig.HeadFont = "微软雅黑";
@@ -162,11 +168,7 @@ namespace NCC.Extend.LqHzf @@ -162,11 +168,7 @@ namespace NCC.Extend.LqHzf
162 var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; 168 var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
163 ExcelExportHelper<LqHzfListOutput>.Export(exportData, excelconfig, addPath); 169 ExcelExportHelper<LqHzfListOutput>.Export(exportData, excelconfig, addPath);
164 var fileName = _userManager.UserId + "|" + addPath + "|xls"; 170 var fileName = _userManager.UserId + "|" + addPath + "|xls";
165 - var output = new  
166 - {  
167 - name = excelconfig.FileName,  
168 - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")  
169 - }; 171 + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
170 return output; 172 return output;
171 } 173 }
172 174
@@ -186,7 +188,7 @@ namespace NCC.Extend.LqHzf @@ -186,7 +188,7 @@ namespace NCC.Extend.LqHzf
186 //开启事务 188 //开启事务
187 _db.BeginTran(); 189 _db.BeginTran();
188 //批量删除合作方 190 //批量删除合作方
189 - await _db.Deleteable<LqHzfEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); 191 + await _db.Deleteable<LqHzfEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
190 //关闭事务 192 //关闭事务
191 _db.CommitTran(); 193 _db.CommitTran();
192 } 194 }
@@ -210,7 +212,8 @@ namespace NCC.Extend.LqHzf @@ -210,7 +212,8 @@ namespace NCC.Extend.LqHzf
210 { 212 {
211 var entity = input.Adapt<LqHzfEntity>(); 213 var entity = input.Adapt<LqHzfEntity>();
212 var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); 214 var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
213 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); 215 + if (!(isOk > 0))
  216 + throw NCCException.Oh(ErrorCode.COM1001);
214 } 217 }
215 218
216 /// <summary> 219 /// <summary>
@@ -223,7 +226,8 @@ namespace NCC.Extend.LqHzf @@ -223,7 +226,8 @@ namespace NCC.Extend.LqHzf
223 var entity = await _db.Queryable<LqHzfEntity>().FirstAsync(p => p.Id == id); 226 var entity = await _db.Queryable<LqHzfEntity>().FirstAsync(p => p.Id == id);
224 _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); 227 _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
225 var isOk = await _db.Deleteable<LqHzfEntity>().Where(d => d.Id == id).ExecuteCommandAsync(); 228 var isOk = await _db.Deleteable<LqHzfEntity>().Where(d => d.Id == id).ExecuteCommandAsync();
226 - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); 229 + if (!(isOk > 0))
  230 + throw NCCException.Oh(ErrorCode.COM1002);
227 } 231 }
228 } 232 }
229 } 233 }
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -25,6 +25,7 @@ using NCC.Extend.Entitys.lq_kd_jksyj; @@ -25,6 +25,7 @@ using NCC.Extend.Entitys.lq_kd_jksyj;
25 using NCC.Extend.Entitys.lq_kd_kdjlb; 25 using NCC.Extend.Entitys.lq_kd_kdjlb;
26 using NCC.Extend.Entitys.lq_kd_kjbsyj; 26 using NCC.Extend.Entitys.lq_kd_kjbsyj;
27 using NCC.Extend.Entitys.lq_kd_pxmx; 27 using NCC.Extend.Entitys.lq_kd_pxmx;
  28 +using NCC.Extend.Entitys.lq_khxx;
28 using NCC.Extend.Entitys.lq_xmzl; 29 using NCC.Extend.Entitys.lq_xmzl;
29 using NCC.Extend.Interfaces.LqKdKdjlb; 30 using NCC.Extend.Interfaces.LqKdKdjlb;
30 using NCC.Extend.Utils; 31 using NCC.Extend.Utils;
@@ -191,7 +192,6 @@ namespace NCC.Extend.LqKdKdjlb @@ -191,7 +192,6 @@ namespace NCC.Extend.LqKdKdjlb
191 .WhereIF(!string.IsNullOrEmpty(input.sfyj), p => p.Sfyj.Equals(input.sfyj)) 192 .WhereIF(!string.IsNullOrEmpty(input.sfyj), p => p.Sfyj.Equals(input.sfyj))
192 .WhereIF(!string.IsNullOrEmpty(input.qk), p => p.Qk.Equals(input.qk)) 193 .WhereIF(!string.IsNullOrEmpty(input.qk), p => p.Qk.Equals(input.qk))
193 .WhereIF(!string.IsNullOrEmpty(input.ckfs), p => p.Ckfs.Equals(input.ckfs)) 194 .WhereIF(!string.IsNullOrEmpty(input.ckfs), p => p.Ckfs.Equals(input.ckfs))
194 - .WhereIF(!string.IsNullOrEmpty(input.ckmx), p => p.Ckmx.Contains(input.ckmx))  
195 .WhereIF(!string.IsNullOrEmpty(input.fkfs), p => p.Fkfs.Equals(input.fkfs)) 195 .WhereIF(!string.IsNullOrEmpty(input.fkfs), p => p.Fkfs.Equals(input.fkfs))
196 .WhereIF(!string.IsNullOrEmpty(input.fkyy), p => p.Fkyy.Equals(input.fkyy)) 196 .WhereIF(!string.IsNullOrEmpty(input.fkyy), p => p.Fkyy.Equals(input.fkyy))
197 .WhereIF(!string.IsNullOrEmpty(input.fkpd), p => p.Fkpd.Contains(input.fkpd)) 197 .WhereIF(!string.IsNullOrEmpty(input.fkpd), p => p.Fkpd.Contains(input.fkpd))
@@ -219,12 +219,12 @@ namespace NCC.Extend.LqKdKdjlb @@ -219,12 +219,12 @@ namespace NCC.Extend.LqKdKdjlb
219 sfyj = it.Sfyj, 219 sfyj = it.Sfyj,
220 qk = it.Qk, 220 qk = it.Qk,
221 ckfs = it.Ckfs, 221 ckfs = it.Ckfs,
222 - ckmx = it.Ckmx,  
223 fkfs = it.Fkfs, 222 fkfs = it.Fkfs,
224 fkyy = it.Fkyy, 223 fkyy = it.Fkyy,
225 fkpd = it.Fkpd, 224 fkpd = it.Fkpd,
226 khly = it.Khly, 225 khly = it.Khly,
227 tjr = it.Tjr, 226 tjr = it.Tjr,
  227 + deductAmount = it.DeductAmount,
228 sfskdd = it.Sfskdd, 228 sfskdd = it.Sfskdd,
229 jj = it.Jj, 229 jj = it.Jj,
230 bz = it.Bz, 230 bz = it.Bz,
@@ -263,6 +263,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -263,6 +263,7 @@ namespace NCC.Extend.LqKdKdjlb
263 _db.BeginTran(); 263 _db.BeginTran();
264 //新增开单记录表记录 264 //新增开单记录表记录
265 entity.CreateUser = userInfo.userId; 265 entity.CreateUser = userInfo.userId;
  266 + entity.DeductAmount = input.lqKdKdjlbDeductList.Sum(x => x.Amount ?? 0);//计算储扣总金额
266 var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync(); 267 var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync();
267 //循环品相信息 268 //循环品相信息
268 // 收集所有需要插入的实体,然后批量插入 269 // 收集所有需要插入的实体,然后批量插入
@@ -347,6 +348,10 @@ namespace NCC.Extend.LqKdKdjlb @@ -347,6 +348,10 @@ namespace NCC.Extend.LqKdKdjlb
347 } 348 }
348 } 349 }
349 } 350 }
  351 + //通过会员id查询会员信息
  352 + var memberInfo = await _db.Queryable<LqKhxxEntity>().Where(u => u.Id == entity.Kdhy).FirstAsync();
  353 + memberInfo.Khlx = "老客";
  354 + await _db.Updateable(memberInfo).ExecuteCommandAsync();
350 // 批量插入扣款信息 355 // 批量插入扣款信息
351 if (allDeductEntities.Any()) 356 if (allDeductEntities.Any())
352 { 357 {
@@ -442,7 +447,6 @@ namespace NCC.Extend.LqKdKdjlb @@ -442,7 +447,6 @@ namespace NCC.Extend.LqKdKdjlb
442 .WhereIF(!string.IsNullOrEmpty(input.sfyj), p => p.Sfyj.Equals(input.sfyj)) 447 .WhereIF(!string.IsNullOrEmpty(input.sfyj), p => p.Sfyj.Equals(input.sfyj))
443 .WhereIF(!string.IsNullOrEmpty(input.qk), p => p.Qk.Equals(input.qk)) 448 .WhereIF(!string.IsNullOrEmpty(input.qk), p => p.Qk.Equals(input.qk))
444 .WhereIF(!string.IsNullOrEmpty(input.ckfs), p => p.Ckfs.Equals(input.ckfs)) 449 .WhereIF(!string.IsNullOrEmpty(input.ckfs), p => p.Ckfs.Equals(input.ckfs))
445 - .WhereIF(!string.IsNullOrEmpty(input.ckmx), p => p.Ckmx.Contains(input.ckmx))  
446 .WhereIF(!string.IsNullOrEmpty(input.fkfs), p => p.Fkfs.Equals(input.fkfs)) 450 .WhereIF(!string.IsNullOrEmpty(input.fkfs), p => p.Fkfs.Equals(input.fkfs))
447 .WhereIF(!string.IsNullOrEmpty(input.fkyy), p => p.Fkyy.Equals(input.fkyy)) 451 .WhereIF(!string.IsNullOrEmpty(input.fkyy), p => p.Fkyy.Equals(input.fkyy))
448 .WhereIF(!string.IsNullOrEmpty(input.fkpd), p => p.Fkpd.Contains(input.fkpd)) 452 .WhereIF(!string.IsNullOrEmpty(input.fkpd), p => p.Fkpd.Contains(input.fkpd))
@@ -470,7 +474,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -470,7 +474,7 @@ namespace NCC.Extend.LqKdKdjlb
470 sfyj = it.Sfyj, 474 sfyj = it.Sfyj,
471 qk = it.Qk, 475 qk = it.Qk,
472 ckfs = it.Ckfs, 476 ckfs = it.Ckfs,
473 - ckmx = it.Ckmx, 477 + deductAmount = it.DeductAmount,
474 fkfs = it.Fkfs, 478 fkfs = it.Fkfs,
475 fkyy = it.Fkyy, 479 fkyy = it.Fkyy,
476 fkpd = it.Fkpd, 480 fkpd = it.Fkpd,
netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
@@ -16,8 +16,10 @@ using NCC.Common.Model.NPOI; @@ -16,8 +16,10 @@ 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.LqKhxx; 20 using NCC.Extend.Entitys.Dto.LqKhxx;
20 using NCC.Extend.Entitys.Dto.LqXhHyhk; 21 using NCC.Extend.Entitys.Dto.LqXhHyhk;
  22 +using NCC.Extend.Entitys.Enum;
21 using NCC.Extend.Entitys.lq_hytk_hytk; 23 using NCC.Extend.Entitys.lq_hytk_hytk;
22 using NCC.Extend.Entitys.lq_hytk_mx; 24 using NCC.Extend.Entitys.lq_hytk_mx;
23 using NCC.Extend.Entitys.lq_kd_kdjlb; 25 using NCC.Extend.Entitys.lq_kd_kdjlb;
@@ -90,7 +92,6 @@ namespace NCC.Extend.LqKhxx @@ -90,7 +92,6 @@ namespace NCC.Extend.LqKhxx
90 .WhereIF(!string.IsNullOrEmpty(input.gzhzt), p => p.Gzhzt.Equals(input.gzhzt)) 92 .WhereIF(!string.IsNullOrEmpty(input.gzhzt), p => p.Gzhzt.Equals(input.gzhzt))
91 .WhereIF(!string.IsNullOrEmpty(input.wxnc), p => p.Wxnc.Contains(input.wxnc)) 93 .WhereIF(!string.IsNullOrEmpty(input.wxnc), p => p.Wxnc.Contains(input.wxnc))
92 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt)) 94 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt))
93 - .WhereIF(!string.IsNullOrEmpty(input.khmqgs), p => p.Khmqgs.Equals(input.khmqgs))  
94 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd)) 95 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd))
95 .WhereIF(!string.IsNullOrEmpty(input.khlx), p => p.Khlx.Equals(input.khlx)) 96 .WhereIF(!string.IsNullOrEmpty(input.khlx), p => p.Khlx.Equals(input.khlx))
96 .WhereIF(!string.IsNullOrEmpty(input.khjd), p => p.Khjd.Equals(input.khjd)) 97 .WhereIF(!string.IsNullOrEmpty(input.khjd), p => p.Khjd.Equals(input.khjd))
@@ -114,7 +115,6 @@ namespace NCC.Extend.LqKhxx @@ -114,7 +115,6 @@ namespace NCC.Extend.LqKhxx
114 wxnc = it.Wxnc, 115 wxnc = it.Wxnc,
115 wxxcxzt = it.Wxxcxzt, 116 wxxcxzt = it.Wxxcxzt,
116 zjdlsj = it.Zjdlsj, 117 zjdlsj = it.Zjdlsj,
117 - khmqgs = it.Khmqgs,  
118 gsmd = it.Gsmd, 118 gsmd = it.Gsmd,
119 zcsj = it.Zcsj, 119 zcsj = it.Zcsj,
120 khlx = it.Khlx, 120 khlx = it.Khlx,
@@ -157,7 +157,6 @@ namespace NCC.Extend.LqKhxx @@ -157,7 +157,6 @@ namespace NCC.Extend.LqKhxx
157 } 157 }
158 var entity = input.Adapt<LqKhxxEntity>(); 158 var entity = input.Adapt<LqKhxxEntity>();
159 entity.Id = YitIdHelper.NextId().ToString(); 159 entity.Id = YitIdHelper.NextId().ToString();
160 -  
161 // 处理客户消费字段:将数组转换为逗号分隔的字符串 160 // 处理客户消费字段:将数组转换为逗号分隔的字符串
162 if (input.khxf != null && input.khxf.Count > 0) 161 if (input.khxf != null && input.khxf.Count > 0)
163 { 162 {
@@ -203,7 +202,6 @@ namespace NCC.Extend.LqKhxx @@ -203,7 +202,6 @@ namespace NCC.Extend.LqKhxx
203 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt)) 202 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt))
204 // .WhereIF(queryZjdlsj != null, p => p.Zjdlsj >= new DateTime(startZjdlsj.ToDate().Year, startZjdlsj.ToDate().Month, startZjdlsj.ToDate().Day, 0, 0, 0)) 203 // .WhereIF(queryZjdlsj != null, p => p.Zjdlsj >= new DateTime(startZjdlsj.ToDate().Year, startZjdlsj.ToDate().Month, startZjdlsj.ToDate().Day, 0, 0, 0))
205 // .WhereIF(queryZjdlsj != null, p => p.Zjdlsj <= new DateTime(endZjdlsj.ToDate().Year, endZjdlsj.ToDate().Month, endZjdlsj.ToDate().Day, 23, 59, 59)) 204 // .WhereIF(queryZjdlsj != null, p => p.Zjdlsj <= new DateTime(endZjdlsj.ToDate().Year, endZjdlsj.ToDate().Month, endZjdlsj.ToDate().Day, 23, 59, 59))
206 - .WhereIF(!string.IsNullOrEmpty(input.khmqgs), p => p.Khmqgs.Equals(input.khmqgs))  
207 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd)) 205 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd))
208 .WhereIF(queryZcsj != null, p => p.Zcsj >= new DateTime(startZcsj.ToDate().Year, startZcsj.ToDate().Month, startZcsj.ToDate().Day, 0, 0, 0)) 206 .WhereIF(queryZcsj != null, p => p.Zcsj >= new DateTime(startZcsj.ToDate().Year, startZcsj.ToDate().Month, startZcsj.ToDate().Day, 0, 0, 0))
209 .WhereIF(queryZcsj != null, p => p.Zcsj <= new DateTime(endZcsj.ToDate().Year, endZcsj.ToDate().Month, endZcsj.ToDate().Day, 23, 59, 59)) 207 .WhereIF(queryZcsj != null, p => p.Zcsj <= new DateTime(endZcsj.ToDate().Year, endZcsj.ToDate().Month, endZcsj.ToDate().Day, 23, 59, 59))
@@ -233,7 +231,6 @@ namespace NCC.Extend.LqKhxx @@ -233,7 +231,6 @@ namespace NCC.Extend.LqKhxx
233 wxnc = it.Wxnc, 231 wxnc = it.Wxnc,
234 wxxcxzt = it.Wxxcxzt, 232 wxxcxzt = it.Wxxcxzt,
235 zjdlsj = it.Zjdlsj, 233 zjdlsj = it.Zjdlsj,
236 - khmqgs = it.Khmqgs,  
237 gsmd = it.Gsmd, 234 gsmd = it.Gsmd,
238 zcsj = it.Zcsj, 235 zcsj = it.Zcsj,
239 khlx = it.Khlx, 236 khlx = it.Khlx,
@@ -282,7 +279,7 @@ namespace NCC.Extend.LqKhxx @@ -282,7 +279,7 @@ namespace NCC.Extend.LqKhxx
282 DateTime? endYinlsr = queryYinlsr != null ? Ext.GetDateTime(queryYinlsr.Last()) : null; 279 DateTime? endYinlsr = queryYinlsr != null ? Ext.GetDateTime(queryYinlsr.Last()) : null;
283 280
284 var data = await _db.Queryable<LqKhxxEntity>() 281 var data = await _db.Queryable<LqKhxxEntity>()
285 - .Where(p => p.Khmqgs == "线索池") // 固定查询线索池客户 282 + .Where(p => p.Khlx == "线索") // 固定查询线索池客户
286 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) 283 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
287 .WhereIF(!string.IsNullOrEmpty(input.khmc), p => p.Khmc.Contains(input.khmc)) 284 .WhereIF(!string.IsNullOrEmpty(input.khmc), p => p.Khmc.Contains(input.khmc))
288 .WhereIF(!string.IsNullOrEmpty(input.sjh), p => p.Sjh.Contains(input.sjh)) 285 .WhereIF(!string.IsNullOrEmpty(input.sjh), p => p.Sjh.Contains(input.sjh))
@@ -291,7 +288,6 @@ namespace NCC.Extend.LqKhxx @@ -291,7 +288,6 @@ namespace NCC.Extend.LqKhxx
291 .WhereIF(!string.IsNullOrEmpty(input.gzhzt), p => p.Gzhzt.Equals(input.gzhzt)) 288 .WhereIF(!string.IsNullOrEmpty(input.gzhzt), p => p.Gzhzt.Equals(input.gzhzt))
292 .WhereIF(!string.IsNullOrEmpty(input.wxnc), p => p.Wxnc.Contains(input.wxnc)) 289 .WhereIF(!string.IsNullOrEmpty(input.wxnc), p => p.Wxnc.Contains(input.wxnc))
293 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt)) 290 .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt))
294 - .WhereIF(!string.IsNullOrEmpty(input.khmqgs), p => p.Khmqgs.Equals(input.khmqgs))  
295 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd)) 291 .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd))
296 .WhereIF(queryZcsj != null, p => p.Zcsj >= new DateTime(startZcsj.ToDate().Year, startZcsj.ToDate().Month, startZcsj.ToDate().Day, 0, 0, 0)) 292 .WhereIF(queryZcsj != null, p => p.Zcsj >= new DateTime(startZcsj.ToDate().Year, startZcsj.ToDate().Month, startZcsj.ToDate().Day, 0, 0, 0))
297 .WhereIF(queryZcsj != null, p => p.Zcsj <= new DateTime(endZcsj.ToDate().Year, endZcsj.ToDate().Month, endZcsj.ToDate().Day, 23, 59, 59)) 293 .WhereIF(queryZcsj != null, p => p.Zcsj <= new DateTime(endZcsj.ToDate().Year, endZcsj.ToDate().Month, endZcsj.ToDate().Day, 23, 59, 59))
@@ -321,7 +317,6 @@ namespace NCC.Extend.LqKhxx @@ -321,7 +317,6 @@ namespace NCC.Extend.LqKhxx
321 wxnc = it.Wxnc, 317 wxnc = it.Wxnc,
322 wxxcxzt = it.Wxxcxzt, 318 wxxcxzt = it.Wxxcxzt,
323 zjdlsj = it.Zjdlsj, 319 zjdlsj = it.Zjdlsj,
324 - khmqgs = it.Khmqgs,  
325 gsmd = it.Gsmd, 320 gsmd = it.Gsmd,
326 zcsj = it.Zcsj, 321 zcsj = it.Zcsj,
327 khlx = it.Khlx, 322 khlx = it.Khlx,
@@ -570,10 +565,10 @@ namespace NCC.Extend.LqKhxx @@ -570,10 +565,10 @@ namespace NCC.Extend.LqKhxx
570 TotalPurchased = x.ProjectNumber, 565 TotalPurchased = x.ProjectNumber,
571 ConsumedCount = SqlFunc.Subqueryable<LqXhPxmxEntity>().Where(y => y.BillingItemId == x.Id).Sum(y => SqlFunc.ToDecimal(y.ProjectNumber)), 566 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)), 567 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)), 568 + })
  569 + .Mapper(x =>
  570 + {
  571 + x.RemainingCount = x.TotalPurchased - x.ConsumedCount - x.RefundedCount;
577 }) 572 })
578 .ToListAsync(); 573 .ToListAsync();
579 return new MemberRemainingItemsOutput 574 return new MemberRemainingItemsOutput
@@ -590,5 +585,25 @@ namespace NCC.Extend.LqKhxx @@ -590,5 +585,25 @@ namespace NCC.Extend.LqKhxx
590 } 585 }
591 } 586 }
592 #endregion 587 #endregion
  588 +
  589 + #region 获取会员类型枚举内容
  590 + /// <summary>
  591 + /// 获取会员类型枚举内容
  592 + /// </summary>
  593 + /// <returns>扣款类型枚举列表</returns>
  594 + [HttpGet("deduct-types")]
  595 + public List<EnumOutput> GetDeductTypes()
  596 + {
  597 + return Enum.GetValues<MemberTypeEnum>()
  598 + .Select(e => new EnumOutput
  599 + {
  600 + Value = (int)e,
  601 + Name = e.ToString(),
  602 + Description = e.GetDescription(),
  603 + })
  604 + .ToList();
  605 + }
  606 + #endregion
  607 +
593 } 608 }
594 } 609 }
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
@@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqTkjlb; @@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqTkjlb;
19 using NCC.Extend.Entitys.lq_event; 19 using NCC.Extend.Entitys.lq_event;
20 using NCC.Extend.Entitys.lq_eventuser; 20 using NCC.Extend.Entitys.lq_eventuser;
21 using NCC.Extend.Entitys.lq_khxx; 21 using NCC.Extend.Entitys.lq_khxx;
  22 +using NCC.Extend.Entitys.lq_mdxx;
22 using NCC.Extend.Entitys.lq_ryzl; 23 using NCC.Extend.Entitys.lq_ryzl;
23 using NCC.Extend.Entitys.lq_tkjlb; 24 using NCC.Extend.Entitys.lq_tkjlb;
24 using NCC.Extend.Interfaces.LqTkjlb; 25 using NCC.Extend.Interfaces.LqTkjlb;
@@ -145,14 +146,14 @@ namespace NCC.Extend.LqTkjlb @@ -145,14 +146,14 @@ namespace NCC.Extend.LqTkjlb
145 /// <param name="input">参数</param> 146 /// <param name="input">参数</param>
146 /// <returns></returns> 147 /// <returns></returns>
147 [HttpPost("")] 148 [HttpPost("")]
148 - public async Task Create([FromBody] LqTkjlbCrInput input) 149 + public async Task<dynamic> Create([FromBody] LqTkjlbCrInput input)
149 { 150 {
150 var userInfo = await _userManager.GetUserInfo(); 151 var userInfo = await _userManager.GetUserInfo();
151 //通过input.dhhm去查询用户信息 152 //通过input.dhhm去查询用户信息
152 var user = _db.Queryable<LqKhxxEntity>().Where(u => u.Sjh == input.customerPhone).Any(); 153 var user = _db.Queryable<LqKhxxEntity>().Where(u => u.Sjh == input.customerPhone).Any();
153 if (user) 154 if (user)
154 { 155 {
155 - throw NCCException.Oh("该手机号码已存在于会员或线索池中"); 156 + return NCCException.Oh("该手机号码已存在于会员或线索池中");
156 } 157 }
157 // 使用事务确保数据一致性 158 // 使用事务确保数据一致性
158 var result = await _db.Ado.UseTranAsync(async () => 159 var result = await _db.Ado.UseTranAsync(async () =>
@@ -179,18 +180,22 @@ namespace NCC.Extend.LqTkjlb @@ -179,18 +180,22 @@ namespace NCC.Extend.LqTkjlb
179 MemberInfo.Id = YitIdHelper.NextId().ToString(); 180 MemberInfo.Id = YitIdHelper.NextId().ToString();
180 MemberInfo.Khmc = entity.CustomerName; 181 MemberInfo.Khmc = entity.CustomerName;
181 MemberInfo.Sjh = input.customerPhone; // 设置手机号 182 MemberInfo.Sjh = input.customerPhone; // 设置手机号
182 - MemberInfo.Khmqgs = "线索池"; 183 + MemberInfo.Khlx = "线索";
183 MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss"); 184 MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss");
184 var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); 185 var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
185 if (!(memberResult > 0)) 186 if (!(memberResult > 0))
  187 + {
186 throw NCCException.Oh("创建客户信息失败"); 188 throw NCCException.Oh("创建客户信息失败");
187 - return true; 189 + }
  190 + var storeinfo = await _db.Queryable<LqMdxxEntity>().Where(u => u.Id == eventUserInfo.StoreId).FirstAsync();
  191 + return new { entity = entity, storeinfo = storeinfo };
188 }); 192 });
189 193
190 if (!result.IsSuccess) 194 if (!result.IsSuccess)
191 { 195 {
192 - throw NCCException.Oh($"创建拓客记录失败:{result.ErrorMessage}"); 196 + return NCCException.Oh($"创建拓客记录失败:{result.ErrorMessage}");
193 } 197 }
  198 + return result.Data;
194 } 199 }
195 #endregion 200 #endregion
196 201
netcore/src/Modularity/Extend/NCC.Extend/LqYaoyjlService.cs
@@ -28,7 +28,7 @@ namespace NCC.Extend.LqYaoyjl @@ -28,7 +28,7 @@ namespace NCC.Extend.LqYaoyjl
28 /// <summary> 28 /// <summary>
29 /// 邀约记录服务 29 /// 邀约记录服务
30 /// </summary> 30 /// </summary>
31 - [ApiDescriptionSettings(Tag = "Extend",Name = "LqYaoyjl", Order = 200)] 31 + [ApiDescriptionSettings(Tag = "Extend", Name = "LqYaoyjl", Order = 200)]
32 [Route("api/Extend/[controller]")] 32 [Route("api/Extend/[controller]")]
33 public class LqYaoyjlService : ILqYaoyjlService, IDynamicApiController, ITransient 33 public class LqYaoyjlService : ILqYaoyjlService, IDynamicApiController, ITransient
34 { 34 {
@@ -43,7 +43,7 @@ namespace NCC.Extend.LqYaoyjl @@ -43,7 +43,7 @@ namespace NCC.Extend.LqYaoyjl
43 ISqlSugarRepository<LqYaoyjlEntity> lqYaoyjlRepository, 43 ISqlSugarRepository<LqYaoyjlEntity> lqYaoyjlRepository,
44 IUserManager userManager) 44 IUserManager userManager)
45 { 45 {
46 - _lqYaoyjlRepository = lqYaoyjlRepository; 46 + _lqYaoyjlRepository = lqYaoyjlRepository;
47 _db = _lqYaoyjlRepository.Context; 47 _db = _lqYaoyjlRepository.Context;
48 _userManager = userManager; 48 _userManager = userManager;
49 } 49 }
@@ -87,18 +87,18 @@ namespace NCC.Extend.LqYaoyjl @@ -87,18 +87,18 @@ namespace NCC.Extend.LqYaoyjl
87 .WhereIF(queryLxsj != null, p => p.Lxsj >= new DateTime(startLxsj.ToDate().Year, startLxsj.ToDate().Month, startLxsj.ToDate().Day, 0, 0, 0)) 87 .WhereIF(queryLxsj != null, p => p.Lxsj >= new DateTime(startLxsj.ToDate().Year, startLxsj.ToDate().Month, startLxsj.ToDate().Day, 0, 0, 0))
88 .WhereIF(queryLxsj != null, p => p.Lxsj <= new DateTime(endLxsj.ToDate().Year, endLxsj.ToDate().Month, endLxsj.ToDate().Day, 23, 59, 59)) 88 .WhereIF(queryLxsj != null, p => p.Lxsj <= new DateTime(endLxsj.ToDate().Year, endLxsj.ToDate().Month, endLxsj.ToDate().Day, 23, 59, 59))
89 .WhereIF(!string.IsNullOrEmpty(input.lxjl), p => p.Lxjl.Contains(input.lxjl)) 89 .WhereIF(!string.IsNullOrEmpty(input.lxjl), p => p.Lxjl.Contains(input.lxjl))
90 - .Select(it=> new LqYaoyjlListOutput 90 + .Select(it => new LqYaoyjlListOutput
91 { 91 {
92 id = it.Id, 92 id = it.Id,
93 - yyr=it.Yyr,  
94 - yysj=it.Yysj,  
95 - yykh=it.Yykh,  
96 - yykhxm=it.Yykhxm,  
97 - dhsfyx=it.Dhsfyx,  
98 - lxsj=it.Lxsj,  
99 - lxjl=it.Lxjl,  
100 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize);  
101 - return PageResult<LqYaoyjlListOutput>.SqlSugarPageResult(data); 93 + yyr = it.Yyr,
  94 + yysj = it.Yysj,
  95 + yykh = it.Yykh,
  96 + yykhxm = it.Yykhxm,
  97 + dhsfyx = it.Dhsfyx,
  98 + lxsj = it.Lxsj,
  99 + lxjl = it.Lxjl,
  100 + }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
  101 + return PageResult<LqYaoyjlListOutput>.SqlSugarPageResult(data);
102 } 102 }
103 103
104 /// <summary> 104 /// <summary>
@@ -142,18 +142,18 @@ namespace NCC.Extend.LqYaoyjl @@ -142,18 +142,18 @@ namespace NCC.Extend.LqYaoyjl
142 .WhereIF(queryLxsj != null, p => p.Lxsj >= new DateTime(startLxsj.ToDate().Year, startLxsj.ToDate().Month, startLxsj.ToDate().Day, 0, 0, 0)) 142 .WhereIF(queryLxsj != null, p => p.Lxsj >= new DateTime(startLxsj.ToDate().Year, startLxsj.ToDate().Month, startLxsj.ToDate().Day, 0, 0, 0))
143 .WhereIF(queryLxsj != null, p => p.Lxsj <= new DateTime(endLxsj.ToDate().Year, endLxsj.ToDate().Month, endLxsj.ToDate().Day, 23, 59, 59)) 143 .WhereIF(queryLxsj != null, p => p.Lxsj <= new DateTime(endLxsj.ToDate().Year, endLxsj.ToDate().Month, endLxsj.ToDate().Day, 23, 59, 59))
144 .WhereIF(!string.IsNullOrEmpty(input.lxjl), p => p.Lxjl.Contains(input.lxjl)) 144 .WhereIF(!string.IsNullOrEmpty(input.lxjl), p => p.Lxjl.Contains(input.lxjl))
145 - .Select(it=> new LqYaoyjlListOutput 145 + .Select(it => new LqYaoyjlListOutput
146 { 146 {
147 id = it.Id, 147 id = it.Id,
148 - yyr=it.Yyr,  
149 - yysj=it.Yysj,  
150 - yykh=it.Yykh,  
151 - yykhxm=it.Yykhxm,  
152 - dhsfyx=it.Dhsfyx,  
153 - lxsj=it.Lxsj,  
154 - lxjl=it.Lxjl,  
155 - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync();  
156 - return data; 148 + yyr = it.Yyr,
  149 + yysj = it.Yysj,
  150 + yykh = it.Yykh,
  151 + yykhxm = it.Yykhxm,
  152 + dhsfyx = it.Dhsfyx,
  153 + lxsj = it.Lxsj,
  154 + lxjl = it.Lxjl,
  155 + }).MergeTable().OrderBy(sidx + " " + input.sort).ToListAsync();
  156 + return data;
157 } 157 }
158 158
159 /// <summary> 159 /// <summary>
@@ -175,7 +175,7 @@ namespace NCC.Extend.LqYaoyjl @@ -175,7 +175,7 @@ namespace NCC.Extend.LqYaoyjl
175 { 175 {
176 exportData = await this.GetNoPagingList(input); 176 exportData = await this.GetNoPagingList(input);
177 } 177 }
178 - List<ParamsModel> paramList = "[{\"value\":\"邀约编号\",\"field\":\"id\"},{\"value\":\"邀约人\",\"field\":\"yyr\"},{\"value\":\"邀约时间\",\"field\":\"yysj\"},{\"value\":\"邀约客户\",\"field\":\"yykh\"},{\"value\":\"邀约客户姓名\",\"field\":\"yykhxm\"},{\"value\":\"电话是否有效\",\"field\":\"dhsfyx\"},{\"value\":\"联系时间\",\"field\":\"lxsj\"},{\"value\":\"联系记录\",\"field\":\"lxjl\"},]".ToList<ParamsModel>(); 178 + List<ParamsModel> paramList = "[{\"value\":\"邀约编号\",\"field\":\"id\"},{\"value\":\"邀约人\",\"field\":\"yyr\"},{\"value\":\"邀约时间\",\"field\":\"yysj\"},{\"value\":\"邀约客户\",\"field\":\"yykh\"},{\"value\":\"邀约客户姓名\",\"field\":\"yykhxm\"},{\"value\":\"电话是否有效\",\"field\":\"dhsfyx\"},{\"value\":\"联系时间\",\"field\":\"lxsj\"},{\"value\":\"联系记录\",\"field\":\"lxjl\"},]".ToList<ParamsModel>();
179 ExcelConfig excelconfig = new ExcelConfig(); 179 ExcelConfig excelconfig = new ExcelConfig();
180 excelconfig.FileName = "邀约记录.xls"; 180 excelconfig.FileName = "邀约记录.xls";
181 excelconfig.HeadFont = "微软雅黑"; 181 excelconfig.HeadFont = "微软雅黑";
@@ -218,7 +218,7 @@ namespace NCC.Extend.LqYaoyjl @@ -218,7 +218,7 @@ namespace NCC.Extend.LqYaoyjl
218 //开启事务 218 //开启事务
219 _db.BeginTran(); 219 _db.BeginTran();
220 //批量删除邀约记录 220 //批量删除邀约记录
221 - await _db.Deleteable<LqYaoyjlEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); 221 + await _db.Deleteable<LqYaoyjlEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
222 //关闭事务 222 //关闭事务
223 _db.CommitTran(); 223 _db.CommitTran();
224 } 224 }
netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
@@ -180,13 +180,14 @@ namespace NCC.Extend.LqYcsdJsj @@ -180,13 +180,14 @@ namespace NCC.Extend.LqYcsdJsj
180 } 180 }
181 // 查询门店信息 181 // 查询门店信息
182 var store = await _db.Queryable<LqMdxxEntity>().Where(x => x.Id == jsj.Md).FirstAsync(); 182 var store = await _db.Queryable<LqMdxxEntity>().Where(x => x.Id == jsj.Md).FirstAsync();
183 - return new 183 + return new LqYcsdJsjByUserMonthOutput
184 { 184 {
185 jsjId = jsj.Id, 185 jsjId = jsj.Id,
186 jsjName = jsj.Jsj, 186 jsjName = jsj.Jsj,
187 month = jsj.Yf, 187 month = jsj.Yf,
188 storeId = jsj.Md, 188 storeId = jsj.Md,
189 storeName = store?.Dm, 189 storeName = store?.Dm,
  190 + userId = jsjUser.UserId,
190 userName = jsjUser.UserName, 191 userName = jsjUser.UserName,
191 isLeader = jsjUser.IsLeader, 192 isLeader = jsjUser.IsLeader,
192 status = jsjUser.Status, 193 status = jsjUser.Status,
@@ -256,16 +257,16 @@ namespace NCC.Extend.LqYcsdJsj @@ -256,16 +257,16 @@ namespace NCC.Extend.LqYcsdJsj
256 257
257 return new LqYcsdJsjByUserMonthOutput 258 return new LqYcsdJsjByUserMonthOutput
258 { 259 {
259 - JsjId = jsj.Id,  
260 - JsjName = jsj.Jsj,  
261 - Month = jsj.Yf,  
262 - StoreId = jsj.Md,  
263 - StoreName = store?.Dm,  
264 - UserId = jsjUser.UserId,  
265 - UserName = jsjUser.UserName,  
266 - IsLeader = jsjUser.IsLeader,  
267 - Status = jsjUser.Status,  
268 - SortOrder = jsjUser.SortOrder, 260 + jsjId = jsj.Id,
  261 + jsjName = jsj.Jsj,
  262 + month = jsj.Yf,
  263 + storeId = jsj.Md,
  264 + storeName = store?.Dm,
  265 + userId = jsjUser.UserId,
  266 + userName = jsjUser.UserName,
  267 + isLeader = jsjUser.IsLeader,
  268 + status = jsjUser.Status,
  269 + sortOrder = jsjUser.SortOrder,
269 }; 270 };
270 } 271 }
271 #endregion 272 #endregion