Commit 0ef471940284ab1bd1c589f0becc0583a33a0fb4
1 parent
61e869f0
Refactor LqHytkHytkService and related DTOs to improve clarity and structure; up…
…date multiple .DS_Store files for project consistency.
Showing
34 changed files
with
1868 additions
and
458 deletions
.DS_Store
No preview for this file type
netcore/netcore/.DS_Store
No preview for this file type
netcore/src/.DS_Store
No preview for this file type
netcore/src/Application/.DS_Store
No preview for this file type
netcore/src/Application/NCC.API/.DS_Store
No preview for this file type
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventCrInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.ComponentModel.DataAnnotations; | |
| 4 | +using NCC.Extend.Entitys.Dto.LqEventUser; | |
| 5 | + | |
| 6 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 7 | +{ | |
| 8 | + /// <summary> | |
| 9 | + /// 拓客活动创建输入参数 | |
| 10 | + /// </summary> | |
| 11 | + /// <remarks> | |
| 12 | + /// 用于创建新拓客活动的参数类,包含活动基础信息和参与成员列表。 | |
| 13 | + /// 系统会自动生成活动ID,无需手动指定。 | |
| 14 | + /// </remarks> | |
| 15 | + public class LqEventCrInput | |
| 16 | + { | |
| 17 | + /// <summary> | |
| 18 | + /// 活动名称 | |
| 19 | + /// </summary> | |
| 20 | + /// <remarks> | |
| 21 | + /// 拓客活动的名称,必填字段 | |
| 22 | + /// 最大长度:255个字符 | |
| 23 | + /// 示例:春节拓客活动、夏季促销活动 | |
| 24 | + /// </remarks> | |
| 25 | + [Required(ErrorMessage = "活动名称不能为空")] | |
| 26 | + [StringLength(255, ErrorMessage = "活动名称长度不能超过255个字符")] | |
| 27 | + public string EventName { get; set; } | |
| 28 | + | |
| 29 | + /// <summary> | |
| 30 | + /// 开始时间 | |
| 31 | + /// </summary> | |
| 32 | + /// <remarks> | |
| 33 | + /// 拓客活动的开始时间,可选字段 | |
| 34 | + /// 格式:yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd | |
| 35 | + /// 示例:2024-01-15 09:00:00 | |
| 36 | + /// </remarks> | |
| 37 | + public DateTime? StartTime { get; set; } | |
| 38 | + | |
| 39 | + /// <summary> | |
| 40 | + /// 结束时间 | |
| 41 | + /// </summary> | |
| 42 | + /// <remarks> | |
| 43 | + /// 拓客活动的结束时间,可选字段 | |
| 44 | + /// 格式:yyyy-MM-dd HH:mm:ss 或 yyyy-MM-dd | |
| 45 | + /// 示例:2024-01-20 18:00:00 | |
| 46 | + /// 建议:结束时间应晚于开始时间 | |
| 47 | + /// </remarks> | |
| 48 | + public DateTime? EndTime { get; set; } | |
| 49 | + | |
| 50 | + /// <summary> | |
| 51 | + /// 活动负责人 | |
| 52 | + /// </summary> | |
| 53 | + /// <remarks> | |
| 54 | + /// 拓客活动的负责人id | |
| 55 | + /// 最大长度:255个字符 | |
| 56 | + /// </remarks> | |
| 57 | + [StringLength(255, ErrorMessage = "活动负责人长度不能超过255个字符")] | |
| 58 | + public string EventCoordinator { get; set; } | |
| 59 | + | |
| 60 | + /// <summary> | |
| 61 | + /// 活动编号 | |
| 62 | + /// </summary> | |
| 63 | + /// <remarks> | |
| 64 | + /// 拓客活动的编号,可选字段 | |
| 65 | + /// 最大长度:255个字符 | |
| 66 | + /// 建议格式:TK + 年份 + 序号,如:TK2024001 | |
| 67 | + /// </remarks> | |
| 68 | + [StringLength(255, ErrorMessage = "活动编号长度不能超过255个字符")] | |
| 69 | + public string EventNumber { get; set; } | |
| 70 | + | |
| 71 | + /// <summary> | |
| 72 | + /// 拓客活动成员列表 | |
| 73 | + /// </summary> | |
| 74 | + /// <remarks> | |
| 75 | + /// 参与拓客活动的成员列表,可选字段 | |
| 76 | + /// 可以为空,表示暂时不添加成员 | |
| 77 | + /// 每个成员包含:用户ID、部门ID、战队名称等信息 | |
| 78 | + /// </remarks> | |
| 79 | + public List<LqEventUserCrInput> Members { get; set; } = new List<LqEventUserCrInput>(); | |
| 80 | + } | |
| 81 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventInfoOutput.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using NCC.Extend.Entitys.Dto.LqEventUser; | |
| 4 | + | |
| 5 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 6 | +{ | |
| 7 | + /// <summary> | |
| 8 | + /// 拓客活动详情输出 | |
| 9 | + /// </summary> | |
| 10 | + public class LqEventInfoOutput | |
| 11 | + { | |
| 12 | + /// <summary> | |
| 13 | + /// 主键ID | |
| 14 | + /// </summary> | |
| 15 | + public string id { get; set; } | |
| 16 | + | |
| 17 | + /// <summary> | |
| 18 | + /// 活动名称 | |
| 19 | + /// </summary> | |
| 20 | + public string eventName { get; set; } | |
| 21 | + | |
| 22 | + /// <summary> | |
| 23 | + /// 开始时间 | |
| 24 | + /// </summary> | |
| 25 | + public DateTime? startTime { get; set; } | |
| 26 | + | |
| 27 | + /// <summary> | |
| 28 | + /// 结束时间 | |
| 29 | + /// </summary> | |
| 30 | + public DateTime? endTime { get; set; } | |
| 31 | + | |
| 32 | + /// <summary> | |
| 33 | + /// 活动负责人 | |
| 34 | + /// </summary> | |
| 35 | + public string eventCoordinator { get; set; } | |
| 36 | + | |
| 37 | + /// <summary> | |
| 38 | + /// 活动编号 | |
| 39 | + /// </summary> | |
| 40 | + public string eventNumber { get; set; } | |
| 41 | + | |
| 42 | + /// <summary> | |
| 43 | + /// 拓客活动成员列表 | |
| 44 | + /// </summary> | |
| 45 | + public List<LqEventUserInfoOutput> Members { get; set; } = new List<LqEventUserInfoOutput>(); | |
| 46 | + } | |
| 47 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListOutput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 拓客活动列表输出 | |
| 7 | + /// </summary> | |
| 8 | + public class LqEventListOutput | |
| 9 | + { | |
| 10 | + /// <summary> | |
| 11 | + /// 主键ID | |
| 12 | + /// </summary> | |
| 13 | + public string id { get; set; } | |
| 14 | + | |
| 15 | + /// <summary> | |
| 16 | + /// 活动名称 | |
| 17 | + /// </summary> | |
| 18 | + public string eventName { get; set; } | |
| 19 | + | |
| 20 | + /// <summary> | |
| 21 | + /// 开始时间 | |
| 22 | + /// </summary> | |
| 23 | + public DateTime? startTime { get; set; } | |
| 24 | + | |
| 25 | + /// <summary> | |
| 26 | + /// 结束时间 | |
| 27 | + /// </summary> | |
| 28 | + public DateTime? endTime { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 活动负责人 | |
| 32 | + /// </summary> | |
| 33 | + public string eventCoordinator { get; set; } | |
| 34 | + | |
| 35 | + /// <summary> | |
| 36 | + /// 活动编号 | |
| 37 | + /// </summary> | |
| 38 | + public string eventNumber { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 成员数量 | |
| 42 | + /// </summary> | |
| 43 | + public int memberCount { get; set; } | |
| 44 | + } | |
| 45 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventListQueryInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 拓客活动列表查询输入参数 | |
| 7 | + /// </summary> | |
| 8 | + /// <remarks> | |
| 9 | + /// 用于拓客活动列表查询的参数类,支持分页、排序和多条件筛选。 | |
| 10 | + /// 所有筛选条件都是可选的,支持模糊查询和时间范围查询。 | |
| 11 | + /// </remarks> | |
| 12 | + public class LqEventListQueryInput | |
| 13 | + { | |
| 14 | + /// <summary> | |
| 15 | + /// 拓客活动ID | |
| 16 | + /// </summary> | |
| 17 | + /// <remarks> | |
| 18 | + /// 精确匹配查询,用于根据特定ID查询活动 | |
| 19 | + /// </remarks> | |
| 20 | + public string Id { get; set; } | |
| 21 | + | |
| 22 | + /// <summary> | |
| 23 | + /// 活动名称 | |
| 24 | + /// </summary> | |
| 25 | + /// <remarks> | |
| 26 | + /// 模糊查询,支持部分匹配活动名称 | |
| 27 | + /// 示例:输入"春节"可以匹配"春节拓客活动" | |
| 28 | + /// </remarks> | |
| 29 | + public string EventName { get; set; } | |
| 30 | + | |
| 31 | + /// <summary> | |
| 32 | + /// 活动编号 | |
| 33 | + /// </summary> | |
| 34 | + /// <remarks> | |
| 35 | + /// 模糊查询,支持部分匹配活动编号 | |
| 36 | + /// 示例:输入"TK2024"可以匹配"TK2024001" | |
| 37 | + /// </remarks> | |
| 38 | + public string EventNumber { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 活动负责人 | |
| 42 | + /// </summary> | |
| 43 | + /// <remarks> | |
| 44 | + /// 模糊查询,支持部分匹配负责人姓名 | |
| 45 | + /// 示例:输入"张"可以匹配"张三" | |
| 46 | + /// </remarks> | |
| 47 | + public string EventCoordinator { get; set; } | |
| 48 | + | |
| 49 | + /// <summary> | |
| 50 | + /// 排序字段 | |
| 51 | + /// </summary> | |
| 52 | + /// <remarks> | |
| 53 | + /// 指定按哪个字段排序,支持以下字段: | |
| 54 | + /// - Id: 活动ID | |
| 55 | + /// - EventName: 活动名称 | |
| 56 | + /// - EventNumber: 活动编号 | |
| 57 | + /// - EventCoordinator: 活动负责人 | |
| 58 | + /// - StartTime: 开始时间 | |
| 59 | + /// - EndTime: 结束时间 | |
| 60 | + /// 默认为"Id" | |
| 61 | + /// </remarks> | |
| 62 | + public string sidx { get; set; } | |
| 63 | + | |
| 64 | + /// <summary> | |
| 65 | + /// 排序方式 | |
| 66 | + /// </summary> | |
| 67 | + /// <remarks> | |
| 68 | + /// 指定排序方向: | |
| 69 | + /// - asc: 升序(从小到大) | |
| 70 | + /// - desc: 降序(从大到小) | |
| 71 | + /// 默认为"desc" | |
| 72 | + /// </remarks> | |
| 73 | + public string sord { get; set; } | |
| 74 | + | |
| 75 | + /// <summary> | |
| 76 | + /// 页码 | |
| 77 | + /// </summary> | |
| 78 | + /// <remarks> | |
| 79 | + /// 分页查询的页码,从1开始 | |
| 80 | + /// 默认为1 | |
| 81 | + /// </remarks> | |
| 82 | + public int page { get; set; } = 1; | |
| 83 | + | |
| 84 | + /// <summary> | |
| 85 | + /// 每页记录数 | |
| 86 | + /// </summary> | |
| 87 | + /// <remarks> | |
| 88 | + /// 每页返回的记录数量 | |
| 89 | + /// 默认为10,建议范围:1-100 | |
| 90 | + /// </remarks> | |
| 91 | + public int rows { get; set; } = 10; | |
| 92 | + } | |
| 93 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUpInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.ComponentModel.DataAnnotations; | |
| 4 | +using NCC.Extend.Entitys.Dto.LqEventUser; | |
| 5 | + | |
| 6 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 7 | +{ | |
| 8 | + /// <summary> | |
| 9 | + /// 拓客活动更新输入参数 | |
| 10 | + /// </summary> | |
| 11 | + public class LqEventUpInput : LqEventCrInput | |
| 12 | + { | |
| 13 | + /// <summary> | |
| 14 | + /// 主键ID | |
| 15 | + /// </summary> | |
| 16 | + [Required(ErrorMessage = "活动ID不能为空")] | |
| 17 | + public new int? Id { get; set; } | |
| 18 | + | |
| 19 | + /// <summary> | |
| 20 | + /// 活动名称 | |
| 21 | + /// </summary> | |
| 22 | + [Required(ErrorMessage = "活动名称不能为空")] | |
| 23 | + [StringLength(255, ErrorMessage = "活动名称长度不能超过255个字符")] | |
| 24 | + public new string EventName { get; set; } | |
| 25 | + } | |
| 26 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEvent/LqEventUserEventOutput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEvent | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 用户参与的拓客活动输出 | |
| 7 | + /// </summary> | |
| 8 | + public class LqEventUserEventOutput | |
| 9 | + { | |
| 10 | + /// <summary> | |
| 11 | + /// 活动ID | |
| 12 | + /// </summary> | |
| 13 | + public string EventId { get; set; } | |
| 14 | + | |
| 15 | + /// <summary> | |
| 16 | + /// 活动名称 | |
| 17 | + /// </summary> | |
| 18 | + public string EventName { get; set; } | |
| 19 | + | |
| 20 | + /// <summary> | |
| 21 | + /// 活动编号 | |
| 22 | + /// </summary> | |
| 23 | + public string EventNumber { get; set; } | |
| 24 | + | |
| 25 | + /// <summary> | |
| 26 | + /// 活动负责人 | |
| 27 | + /// </summary> | |
| 28 | + public string EventCoordinator { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 开始时间 | |
| 32 | + /// </summary> | |
| 33 | + public DateTime? StartTime { get; set; } | |
| 34 | + | |
| 35 | + /// <summary> | |
| 36 | + /// 结束时间 | |
| 37 | + /// </summary> | |
| 38 | + public DateTime? EndTime { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 用户ID | |
| 42 | + /// </summary> | |
| 43 | + public string UserId { get; set; } | |
| 44 | + | |
| 45 | + /// <summary> | |
| 46 | + /// 部门ID | |
| 47 | + /// </summary> | |
| 48 | + public string DepId { get; set; } | |
| 49 | + | |
| 50 | + /// <summary> | |
| 51 | + /// 战队名称 | |
| 52 | + /// </summary> | |
| 53 | + public string TeamName { get; set; } | |
| 54 | + | |
| 55 | + /// <summary> | |
| 56 | + /// 拓客目标数量 | |
| 57 | + /// </summary> | |
| 58 | + public int EventTarget { get; set; } | |
| 59 | + | |
| 60 | + /// <summary> | |
| 61 | + /// 创建时间 | |
| 62 | + /// </summary> | |
| 63 | + public DateTime? CreationTime { get; set; } | |
| 64 | + | |
| 65 | + /// <summary> | |
| 66 | + /// 创建用户 | |
| 67 | + /// </summary> | |
| 68 | + public string CreationUser { get; set; } | |
| 69 | + } | |
| 70 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserCrInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.ComponentModel.DataAnnotations; | |
| 3 | + | |
| 4 | +namespace NCC.Extend.Entitys.Dto.LqEventUser | |
| 5 | +{ | |
| 6 | + /// <summary> | |
| 7 | + /// 拓客活动用户创建输入参数 | |
| 8 | + /// </summary> | |
| 9 | + public class LqEventUserCrInput | |
| 10 | + { | |
| 11 | + /// <summary> | |
| 12 | + /// 主键 | |
| 13 | + /// </summary> | |
| 14 | + public string Id { get; set; } | |
| 15 | + | |
| 16 | + /// <summary> | |
| 17 | + /// 拓客活动ID | |
| 18 | + /// </summary> | |
| 19 | + public string EventId { get; set; } | |
| 20 | + | |
| 21 | + /// <summary> | |
| 22 | + /// 用户ID | |
| 23 | + /// </summary> | |
| 24 | + [Required(ErrorMessage = "用户ID不能为空")] | |
| 25 | + public string UserId { get; set; } | |
| 26 | + | |
| 27 | + /// <summary> | |
| 28 | + /// 部门ID | |
| 29 | + /// </summary> | |
| 30 | + public string DepId { get; set; } | |
| 31 | + | |
| 32 | + /// <summary> | |
| 33 | + /// 战队名称 | |
| 34 | + /// </summary> | |
| 35 | + public string TeamName { get; set; } | |
| 36 | + } | |
| 37 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserInfoOutput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEventUser | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 拓客活动用户详情输出 | |
| 7 | + /// </summary> | |
| 8 | + public class LqEventUserInfoOutput | |
| 9 | + { | |
| 10 | + /// <summary> | |
| 11 | + /// 主键 | |
| 12 | + /// </summary> | |
| 13 | + public string id { get; set; } | |
| 14 | + | |
| 15 | + /// <summary> | |
| 16 | + /// 拓客活动ID | |
| 17 | + /// </summary> | |
| 18 | + public string eventId { get; set; } | |
| 19 | + | |
| 20 | + /// <summary> | |
| 21 | + /// 用户ID | |
| 22 | + /// </summary> | |
| 23 | + public string userId { get; set; } | |
| 24 | + | |
| 25 | + /// <summary> | |
| 26 | + /// 部门ID | |
| 27 | + /// </summary> | |
| 28 | + public string depId { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 战队名称 | |
| 32 | + /// </summary> | |
| 33 | + public string teamName { get; set; } | |
| 34 | + | |
| 35 | + /// <summary> | |
| 36 | + /// 创建时间 | |
| 37 | + /// </summary> | |
| 38 | + public DateTime? creationTime { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 创建用户 | |
| 42 | + /// </summary> | |
| 43 | + public string creationUser { get; set; } | |
| 44 | + } | |
| 45 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserListOutput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEventUser | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 拓客活动用户列表输出 | |
| 7 | + /// </summary> | |
| 8 | + public class LqEventUserListOutput | |
| 9 | + { | |
| 10 | + /// <summary> | |
| 11 | + /// 主键 | |
| 12 | + /// </summary> | |
| 13 | + public string Id { get; set; } | |
| 14 | + | |
| 15 | + /// <summary> | |
| 16 | + /// 拓客活动ID | |
| 17 | + /// </summary> | |
| 18 | + public string EventId { get; set; } | |
| 19 | + | |
| 20 | + /// <summary> | |
| 21 | + /// 用户ID | |
| 22 | + /// </summary> | |
| 23 | + public string UserId { get; set; } | |
| 24 | + | |
| 25 | + /// <summary> | |
| 26 | + /// 部门ID | |
| 27 | + /// </summary> | |
| 28 | + public string DepId { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 战队名称 | |
| 32 | + /// </summary> | |
| 33 | + public string TeamName { get; set; } | |
| 34 | + | |
| 35 | + /// <summary> | |
| 36 | + /// 创建时间 | |
| 37 | + /// </summary> | |
| 38 | + public DateTime? CreationTime { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 创建用户 | |
| 42 | + /// </summary> | |
| 43 | + public string CreationUser { get; set; } | |
| 44 | + } | |
| 45 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserListQueryInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | + | |
| 3 | +namespace NCC.Extend.Entitys.Dto.LqEventUser | |
| 4 | +{ | |
| 5 | + /// <summary> | |
| 6 | + /// 拓客活动用户列表查询输入 | |
| 7 | + /// </summary> | |
| 8 | + public class LqEventUserListQueryInput | |
| 9 | + { | |
| 10 | + /// <summary> | |
| 11 | + /// 主键 | |
| 12 | + /// </summary> | |
| 13 | + public string Id { get; set; } | |
| 14 | + | |
| 15 | + /// <summary> | |
| 16 | + /// 拓客活动ID | |
| 17 | + /// </summary> | |
| 18 | + public string EventId { get; set; } | |
| 19 | + | |
| 20 | + /// <summary> | |
| 21 | + /// 用户ID | |
| 22 | + /// </summary> | |
| 23 | + public string UserId { get; set; } | |
| 24 | + | |
| 25 | + /// <summary> | |
| 26 | + /// 部门ID | |
| 27 | + /// </summary> | |
| 28 | + public string DepId { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 战队名称 | |
| 32 | + /// </summary> | |
| 33 | + public string TeamName { get; set; } | |
| 34 | + | |
| 35 | + /// <summary> | |
| 36 | + /// 创建时间(开始) | |
| 37 | + /// </summary> | |
| 38 | + public DateTime? CreationTimeBegin { get; set; } | |
| 39 | + | |
| 40 | + /// <summary> | |
| 41 | + /// 创建时间(结束) | |
| 42 | + /// </summary> | |
| 43 | + public DateTime? CreationTimeEnd { get; set; } | |
| 44 | + | |
| 45 | + /// <summary> | |
| 46 | + /// 排序字段 | |
| 47 | + /// </summary> | |
| 48 | + public string sidx { get; set; } | |
| 49 | + | |
| 50 | + /// <summary> | |
| 51 | + /// 排序方式 | |
| 52 | + /// </summary> | |
| 53 | + public string sord { get; set; } | |
| 54 | + | |
| 55 | + /// <summary> | |
| 56 | + /// 页码 | |
| 57 | + /// </summary> | |
| 58 | + public int page { get; set; } = 1; | |
| 59 | + | |
| 60 | + /// <summary> | |
| 61 | + /// 每页数量 | |
| 62 | + /// </summary> | |
| 63 | + public int rows { get; set; } = 10; | |
| 64 | + } | |
| 65 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqEventUser/LqEventUserUpInput.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.ComponentModel.DataAnnotations; | |
| 3 | + | |
| 4 | +namespace NCC.Extend.Entitys.Dto.LqEventUser | |
| 5 | +{ | |
| 6 | + /// <summary> | |
| 7 | + /// 拓客活动用户更新输入参数 | |
| 8 | + /// </summary> | |
| 9 | + public class LqEventUserUpInput : LqEventUserCrInput | |
| 10 | + { | |
| 11 | + /// <summary> | |
| 12 | + /// 主键 | |
| 13 | + /// </summary> | |
| 14 | + [Required(ErrorMessage = "主键不能为空")] | |
| 15 | + public new string Id { get; set; } | |
| 16 | + | |
| 17 | + /// <summary> | |
| 18 | + /// 拓客活动ID | |
| 19 | + /// </summary> | |
| 20 | + [Required(ErrorMessage = "拓客活动ID不能为空")] | |
| 21 | + public new string EventId { get; set; } | |
| 22 | + | |
| 23 | + /// <summary> | |
| 24 | + /// 用户ID | |
| 25 | + /// </summary> | |
| 26 | + [Required(ErrorMessage = "用户ID不能为空")] | |
| 27 | + public new string UserId { get; set; } | |
| 28 | + } | |
| 29 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkCrInput.cs
| 1 | 1 | using System; |
| 2 | 2 | using System.Collections.Generic; |
| 3 | -using NCC.Extend.Entitys.Dto.LqHytkMx; | |
| 4 | 3 | using NCC.Extend.Entitys.Dto.LqHytkJksyj; |
| 5 | 4 | using NCC.Extend.Entitys.Dto.LqHytkKjbsyj; |
| 5 | +using NCC.Extend.Entitys.Dto.LqHytkMx; | |
| 6 | 6 | |
| 7 | 7 | namespace NCC.Extend.Entitys.Dto.LqHytkHytk |
| 8 | 8 | { |
| ... | ... | @@ -15,72 +15,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk |
| 15 | 15 | /// 退卡编号 |
| 16 | 16 | /// </summary> |
| 17 | 17 | public string id { get; set; } |
| 18 | - | |
| 18 | + | |
| 19 | 19 | /// <summary> |
| 20 | 20 | /// 门店 |
| 21 | 21 | /// </summary> |
| 22 | 22 | public string md { get; set; } |
| 23 | - | |
| 23 | + | |
| 24 | 24 | /// <summary> |
| 25 | 25 | /// 门店编号 |
| 26 | 26 | /// </summary> |
| 27 | 27 | public string mdbh { get; set; } |
| 28 | - | |
| 28 | + | |
| 29 | 29 | /// <summary> |
| 30 | 30 | /// 门店名称 |
| 31 | 31 | /// </summary> |
| 32 | 32 | public string mdmc { get; set; } |
| 33 | - | |
| 33 | + | |
| 34 | 34 | /// <summary> |
| 35 | 35 | /// 会员 |
| 36 | 36 | /// </summary> |
| 37 | 37 | public string hy { get; set; } |
| 38 | - | |
| 38 | + | |
| 39 | 39 | /// <summary> |
| 40 | 40 | /// 会员姓名 |
| 41 | 41 | /// </summary> |
| 42 | 42 | public string hymc { get; set; } |
| 43 | - | |
| 43 | + | |
| 44 | 44 | /// <summary> |
| 45 | 45 | /// 会员账号 |
| 46 | 46 | /// </summary> |
| 47 | 47 | public string hyzh { get; set; } |
| 48 | - | |
| 48 | + | |
| 49 | 49 | /// <summary> |
| 50 | 50 | /// 顾客类型 |
| 51 | 51 | /// </summary> |
| 52 | 52 | public string gklx { get; set; } |
| 53 | - | |
| 53 | + | |
| 54 | 54 | /// <summary> |
| 55 | 55 | /// 退卡总金额 |
| 56 | 56 | /// </summary> |
| 57 | 57 | public decimal? tkje { get; set; } |
| 58 | - | |
| 58 | + | |
| 59 | 59 | /// <summary> |
| 60 | 60 | /// 手工费用 |
| 61 | 61 | /// </summary> |
| 62 | 62 | public decimal? sgfy { get; set; } |
| 63 | - | |
| 63 | + | |
| 64 | 64 | /// <summary> |
| 65 | 65 | /// 备注 |
| 66 | 66 | /// </summary> |
| 67 | 67 | public string bz { get; set; } |
| 68 | - | |
| 68 | + | |
| 69 | 69 | /// <summary> |
| 70 | 70 | /// 退卡时间 |
| 71 | 71 | /// </summary> |
| 72 | 72 | public DateTime? tksj { get; set; } |
| 73 | - | |
| 73 | + | |
| 74 | 74 | /// <summary> |
| 75 | 75 | /// 操作人员 |
| 76 | 76 | /// </summary> |
| 77 | 77 | public string czry { get; set; } |
| 78 | - | |
| 78 | + | |
| 79 | 79 | /// <summary> |
| 80 | 80 | /// 退卡状态 |
| 81 | 81 | /// </summary> |
| 82 | 82 | public string tkzt { get; set; } |
| 83 | - | |
| 83 | + | |
| 84 | 84 | /// <summary> |
| 85 | 85 | /// 退卡原因 |
| 86 | 86 | /// </summary> |
| ... | ... | @@ -90,21 +90,20 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk |
| 90 | 90 | /// 退卡附件 |
| 91 | 91 | /// </summary> |
| 92 | 92 | public string fileUrl { get; set; } |
| 93 | - | |
| 93 | + | |
| 94 | 94 | /// <summary> |
| 95 | 95 | /// 退卡品项明细列表 |
| 96 | 96 | /// </summary> |
| 97 | 97 | public List<LqHytkMxCrInput> lqHytkMxList { get; set; } |
| 98 | - | |
| 98 | + | |
| 99 | 99 | /// <summary> |
| 100 | 100 | /// 退卡健康师业绩列表 |
| 101 | 101 | /// </summary> |
| 102 | 102 | public List<LqHytkJksyjCrInput> lqHytkJksyjList { get; set; } |
| 103 | - | |
| 103 | + | |
| 104 | 104 | /// <summary> |
| 105 | 105 | /// 退卡科技部老师业绩列表 |
| 106 | 106 | /// </summary> |
| 107 | 107 | public List<LqHytkKjbsyjCrInput> lqHytkKjbsyjList { get; set; } |
| 108 | - | |
| 109 | 108 | } |
| 110 | 109 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkJksyj/LqHytkJksyjCrInput.cs
| ... | ... | @@ -11,56 +11,55 @@ namespace NCC.Extend.Entitys.Dto.LqHytkJksyj |
| 11 | 11 | /// 业绩编号 |
| 12 | 12 | /// </summary> |
| 13 | 13 | public string id { get; set; } |
| 14 | - | |
| 14 | + | |
| 15 | 15 | /// <summary> |
| 16 | 16 | /// 关联退卡编号 |
| 17 | 17 | /// </summary> |
| 18 | 18 | public string gltkbh { get; set; } |
| 19 | - | |
| 19 | + | |
| 20 | 20 | /// <summary> |
| 21 | 21 | /// 健康师 |
| 22 | 22 | /// </summary> |
| 23 | 23 | public string jks { get; set; } |
| 24 | - | |
| 24 | + | |
| 25 | 25 | /// <summary> |
| 26 | 26 | /// 健康师姓名 |
| 27 | 27 | /// </summary> |
| 28 | 28 | public string jksxm { get; set; } |
| 29 | - | |
| 29 | + | |
| 30 | 30 | /// <summary> |
| 31 | 31 | /// 健康师账号 |
| 32 | 32 | /// </summary> |
| 33 | 33 | public string jkszh { get; set; } |
| 34 | - | |
| 34 | + | |
| 35 | 35 | /// <summary> |
| 36 | 36 | /// 健康师业绩 |
| 37 | 37 | /// </summary> |
| 38 | 38 | public decimal? jksyj { get; set; } |
| 39 | - | |
| 39 | + | |
| 40 | 40 | /// <summary> |
| 41 | 41 | /// 退卡时间 |
| 42 | 42 | /// </summary> |
| 43 | 43 | public DateTime? tksj { get; set; } |
| 44 | - | |
| 44 | + | |
| 45 | 45 | /// <summary> |
| 46 | 46 | /// 金三角id |
| 47 | 47 | /// </summary> |
| 48 | 48 | public string F_jsjid { get; set; } |
| 49 | - | |
| 49 | + | |
| 50 | 50 | /// <summary> |
| 51 | 51 | /// 关联项目资料表ID |
| 52 | 52 | /// </summary> |
| 53 | 53 | public string F_tkpxid { get; set; } |
| 54 | - | |
| 54 | + | |
| 55 | 55 | /// <summary> |
| 56 | 56 | /// 手工费 |
| 57 | 57 | /// </summary> |
| 58 | 58 | public decimal? F_LaborCost { get; set; } |
| 59 | - | |
| 59 | + | |
| 60 | 60 | /// <summary> |
| 61 | 61 | /// 退卡品项次数 |
| 62 | 62 | /// </summary> |
| 63 | 63 | public decimal? F_tkpxNumber { get; set; } |
| 64 | - | |
| 65 | 64 | } |
| 66 | 65 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxCrInput.cs
| ... | ... | @@ -14,61 +14,60 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx |
| 14 | 14 | /// 明细编号 |
| 15 | 15 | /// </summary> |
| 16 | 16 | public string id { get; set; } |
| 17 | - | |
| 17 | + | |
| 18 | 18 | /// <summary> |
| 19 | 19 | /// 关联退卡编号 |
| 20 | 20 | /// </summary> |
| 21 | 21 | public string gltkbh { get; set; } |
| 22 | - | |
| 22 | + | |
| 23 | 23 | /// <summary> |
| 24 | 24 | /// 品项 |
| 25 | 25 | /// </summary> |
| 26 | 26 | public string px { get; set; } |
| 27 | - | |
| 27 | + | |
| 28 | 28 | /// <summary> |
| 29 | 29 | /// 品项名称 |
| 30 | 30 | /// </summary> |
| 31 | 31 | public string pxmc { get; set; } |
| 32 | - | |
| 32 | + | |
| 33 | 33 | /// <summary> |
| 34 | 34 | /// 品项价格 |
| 35 | 35 | /// </summary> |
| 36 | 36 | public decimal? pxjg { get; set; } |
| 37 | - | |
| 37 | + | |
| 38 | 38 | /// <summary> |
| 39 | 39 | /// 退款金额 |
| 40 | 40 | /// </summary> |
| 41 | 41 | public decimal? tkje { get; set; } |
| 42 | - | |
| 42 | + | |
| 43 | 43 | /// <summary> |
| 44 | 44 | /// 项目次数 |
| 45 | 45 | /// </summary> |
| 46 | 46 | public int? F_ProjectNumber { get; set; } |
| 47 | - | |
| 47 | + | |
| 48 | 48 | /// <summary> |
| 49 | 49 | /// 是否有效 |
| 50 | 50 | /// </summary> |
| 51 | 51 | public int? F_IsEnabled { get; set; } |
| 52 | - | |
| 52 | + | |
| 53 | 53 | /// <summary> |
| 54 | 54 | /// 来源类型 |
| 55 | 55 | /// </summary> |
| 56 | 56 | public string F_SourceType { get; set; } |
| 57 | - | |
| 57 | + | |
| 58 | 58 | /// <summary> |
| 59 | 59 | /// 合计金额 |
| 60 | 60 | /// </summary> |
| 61 | 61 | public decimal? F_TotalPrice { get; set; } |
| 62 | - | |
| 62 | + | |
| 63 | 63 | /// <summary> |
| 64 | 64 | /// 退卡健康师业绩列表 |
| 65 | 65 | /// </summary> |
| 66 | 66 | public List<LqHytkJksyjCrInput> lqHytkJksyjList { get; set; } |
| 67 | - | |
| 67 | + | |
| 68 | 68 | /// <summary> |
| 69 | 69 | /// 退卡科技部老师业绩列表 |
| 70 | 70 | /// </summary> |
| 71 | 71 | public List<LqHytkKjbsyjCrInput> lqHytkKjbsyjList { get; set; } |
| 72 | - | |
| 73 | 72 | } |
| 74 | 73 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkMx/LqHytkMxInfoOutput.cs
| ... | ... | @@ -14,47 +14,47 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx |
| 14 | 14 | /// 明细编号 |
| 15 | 15 | /// </summary> |
| 16 | 16 | public string id { get; set; } |
| 17 | - | |
| 17 | + | |
| 18 | 18 | /// <summary> |
| 19 | 19 | /// 关联退卡编号 |
| 20 | 20 | /// </summary> |
| 21 | 21 | public string gltkbh { get; set; } |
| 22 | - | |
| 22 | + | |
| 23 | 23 | /// <summary> |
| 24 | 24 | /// 品项编号 |
| 25 | 25 | /// </summary> |
| 26 | 26 | public string px { get; set; } |
| 27 | - | |
| 27 | + | |
| 28 | 28 | /// <summary> |
| 29 | 29 | /// 品项名称 |
| 30 | 30 | /// </summary> |
| 31 | 31 | public string pxmc { get; set; } |
| 32 | - | |
| 32 | + | |
| 33 | 33 | /// <summary> |
| 34 | 34 | /// 品项价格 |
| 35 | 35 | /// </summary> |
| 36 | 36 | public decimal? pxjg { get; set; } |
| 37 | - | |
| 37 | + | |
| 38 | 38 | /// <summary> |
| 39 | 39 | /// 退款金额 |
| 40 | 40 | /// </summary> |
| 41 | 41 | public decimal? tkje { get; set; } |
| 42 | - | |
| 42 | + | |
| 43 | 43 | /// <summary> |
| 44 | 44 | /// 项目次数 |
| 45 | 45 | /// </summary> |
| 46 | 46 | public int? F_ProjectNumber { get; set; } |
| 47 | - | |
| 47 | + | |
| 48 | 48 | /// <summary> |
| 49 | 49 | /// 是否有效 |
| 50 | 50 | /// </summary> |
| 51 | 51 | public int? F_IsEnabled { get; set; } |
| 52 | - | |
| 52 | + | |
| 53 | 53 | /// <summary> |
| 54 | 54 | /// 来源类型(开卡/赠送/其他) |
| 55 | 55 | /// </summary> |
| 56 | 56 | public string F_SourceType { get; set; } |
| 57 | - | |
| 57 | + | |
| 58 | 58 | /// <summary> |
| 59 | 59 | /// 合计金额(品项价格 × 项目次数) |
| 60 | 60 | /// </summary> |
| ... | ... | @@ -69,6 +69,5 @@ namespace NCC.Extend.Entitys.Dto.LqHytkMx |
| 69 | 69 | /// 科技部老师业绩列表 |
| 70 | 70 | /// </summary> |
| 71 | 71 | public List<LqHytkKjbsyjInfoOutput> lqHytkKjbsyjList { get; set; } |
| 72 | - | |
| 73 | 72 | } |
| 74 | -} | |
| 75 | 73 | \ No newline at end of file |
| 74 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs
| 1 | 1 | using System; |
| 2 | -using System.Collections.Generic; | |
| 2 | +using System.ComponentModel.DataAnnotations; | |
| 3 | 3 | |
| 4 | 4 | namespace NCC.Extend.Entitys.Dto.LqYxhdfa |
| 5 | 5 | { |
| 6 | 6 | /// <summary> |
| 7 | - /// 营销活动方案修改输入参数 | |
| 7 | + /// 营销活动方案创建输入参数 | |
| 8 | 8 | /// </summary> |
| 9 | 9 | public class LqYxhdfaCrInput |
| 10 | 10 | { |
| ... | ... | @@ -12,26 +12,28 @@ namespace NCC.Extend.Entitys.Dto.LqYxhdfa |
| 12 | 12 | /// 方案编号 |
| 13 | 13 | /// </summary> |
| 14 | 14 | public string id { get; set; } |
| 15 | - | |
| 15 | + | |
| 16 | 16 | /// <summary> |
| 17 | 17 | /// 营销活动编号 |
| 18 | 18 | /// </summary> |
| 19 | + [Required(ErrorMessage = "营销活动编号不能为空")] | |
| 19 | 20 | public string yxhdbh { get; set; } |
| 20 | - | |
| 21 | + | |
| 21 | 22 | /// <summary> |
| 22 | 23 | /// 活动名称 |
| 23 | 24 | /// </summary> |
| 25 | + [Required(ErrorMessage = "活动名称不能为空")] | |
| 26 | + [StringLength(200, ErrorMessage = "活动名称长度不能超过200个字符")] | |
| 24 | 27 | public string hdmc { get; set; } |
| 25 | - | |
| 28 | + | |
| 26 | 29 | /// <summary> |
| 27 | 30 | /// 张数奖 |
| 28 | 31 | /// </summary> |
| 29 | 32 | public string zsj { get; set; } |
| 30 | - | |
| 33 | + | |
| 31 | 34 | /// <summary> |
| 32 | 35 | /// 金额奖 |
| 33 | 36 | /// </summary> |
| 34 | 37 | public string jej { get; set; } |
| 35 | - | |
| 36 | 38 | } |
| 37 | 39 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs
| 1 | 1 | using System; |
| 2 | -using System.Collections.Generic; | |
| 3 | 2 | |
| 4 | 3 | namespace NCC.Extend.Entitys.Dto.LqYxhdfa |
| 5 | 4 | { |
| ... | ... | @@ -12,26 +11,25 @@ namespace NCC.Extend.Entitys.Dto.LqYxhdfa |
| 12 | 11 | /// 方案编号 |
| 13 | 12 | /// </summary> |
| 14 | 13 | public string id { get; set; } |
| 15 | - | |
| 14 | + | |
| 16 | 15 | /// <summary> |
| 17 | 16 | /// 营销活动编号 |
| 18 | 17 | /// </summary> |
| 19 | 18 | public string yxhdbh { get; set; } |
| 20 | - | |
| 19 | + | |
| 21 | 20 | /// <summary> |
| 22 | 21 | /// 活动名称 |
| 23 | 22 | /// </summary> |
| 24 | 23 | public string hdmc { get; set; } |
| 25 | - | |
| 24 | + | |
| 26 | 25 | /// <summary> |
| 27 | 26 | /// 张数奖 |
| 28 | 27 | /// </summary> |
| 29 | 28 | public string zsj { get; set; } |
| 30 | - | |
| 29 | + | |
| 31 | 30 | /// <summary> |
| 32 | 31 | /// 金额奖 |
| 33 | 32 | /// </summary> |
| 34 | 33 | public string jej { get; set; } |
| 35 | - | |
| 36 | 34 | } |
| 37 | 35 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_event/LqEventEntity.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using SqlSugar; | |
| 3 | + | |
| 4 | +namespace NCC.Extend.Entitys.lq_event | |
| 5 | +{ | |
| 6 | + /// <summary> | |
| 7 | + /// 活动事件表 | |
| 8 | + /// </summary> | |
| 9 | + [SugarTable("lq_Event")] | |
| 10 | + public class LqEventEntity | |
| 11 | + { | |
| 12 | + /// <summary> | |
| 13 | + /// 主键ID | |
| 14 | + /// </summary> | |
| 15 | + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] | |
| 16 | + public string Id { get; set; } | |
| 17 | + | |
| 18 | + /// <summary> | |
| 19 | + /// 活动名称 | |
| 20 | + /// </summary> | |
| 21 | + [SugarColumn(ColumnName = "F_EventName")] | |
| 22 | + public string EventName { get; set; } | |
| 23 | + | |
| 24 | + /// <summary> | |
| 25 | + /// 开始时间 | |
| 26 | + /// </summary> | |
| 27 | + [SugarColumn(ColumnName = "F_StartTime")] | |
| 28 | + public DateTime? StartTime { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 结束时间 | |
| 32 | + /// </summary> | |
| 33 | + [SugarColumn(ColumnName = "F_EndTime")] | |
| 34 | + public DateTime? EndTime { get; set; } | |
| 35 | + | |
| 36 | + /// <summary> | |
| 37 | + /// 活动负责人 | |
| 38 | + /// </summary> | |
| 39 | + [SugarColumn(ColumnName = "F_EventCoordinator")] | |
| 40 | + public string EventCoordinator { get; set; } | |
| 41 | + | |
| 42 | + /// <summary> | |
| 43 | + /// 活动编号 | |
| 44 | + /// </summary> | |
| 45 | + [SugarColumn(ColumnName = "F_EventNumber")] | |
| 46 | + public string EventNumber { get; set; } | |
| 47 | + } | |
| 48 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_eventuser/LqEventUserEntity.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using SqlSugar; | |
| 3 | + | |
| 4 | +namespace NCC.Extend.Entitys.lq_eventuser | |
| 5 | +{ | |
| 6 | + /// <summary> | |
| 7 | + /// 拓客活动用户表 | |
| 8 | + /// </summary> | |
| 9 | + [SugarTable("lq_eventuser")] | |
| 10 | + public class LqEventUserEntity | |
| 11 | + { | |
| 12 | + /// <summary> | |
| 13 | + /// 主键 | |
| 14 | + /// </summary> | |
| 15 | + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] | |
| 16 | + public string Id { get; set; } | |
| 17 | + | |
| 18 | + /// <summary> | |
| 19 | + /// 拓客活动ID | |
| 20 | + /// </summary> | |
| 21 | + [SugarColumn(ColumnName = "F_EventId")] | |
| 22 | + public string EventId { get; set; } | |
| 23 | + | |
| 24 | + /// <summary> | |
| 25 | + /// 用户ID | |
| 26 | + /// </summary> | |
| 27 | + [SugarColumn(ColumnName = "F_UserId")] | |
| 28 | + public string UserId { get; set; } | |
| 29 | + | |
| 30 | + /// <summary> | |
| 31 | + /// 部门ID | |
| 32 | + /// </summary> | |
| 33 | + [SugarColumn(ColumnName = "F_DepId")] | |
| 34 | + public string DepId { get; set; } | |
| 35 | + | |
| 36 | + /// <summary> | |
| 37 | + /// 战队名称 | |
| 38 | + /// </summary> | |
| 39 | + [SugarColumn(ColumnName = "F_TeamName")] | |
| 40 | + public string TeamName { get; set; } | |
| 41 | + | |
| 42 | + /// <summary> | |
| 43 | + /// 创建时间 | |
| 44 | + /// </summary> | |
| 45 | + [SugarColumn(ColumnName = "F_CreationTime")] | |
| 46 | + public DateTime? CreationTime { get; set; } | |
| 47 | + | |
| 48 | + /// <summary> | |
| 49 | + /// 创建用户 | |
| 50 | + /// </summary> | |
| 51 | + [SugarColumn(ColumnName = "F_CreationUser")] | |
| 52 | + public string CreationUser { get; set; } | |
| 53 | + | |
| 54 | + /// <summary> | |
| 55 | + /// 拓客目标数量 | |
| 56 | + /// </summary> | |
| 57 | + [SugarColumn(ColumnName = "F_EventTarget")] | |
| 58 | + public int EventTarget { get; set; } | |
| 59 | + } | |
| 60 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs
| 1 | +using System; | |
| 1 | 2 | using NCC.Common.Const; |
| 2 | 3 | using SqlSugar; |
| 3 | -using System; | |
| 4 | 4 | |
| 5 | 5 | namespace NCC.Extend.Entitys.lq_hytk_jksyj |
| 6 | 6 | { |
| ... | ... | @@ -16,96 +16,101 @@ namespace NCC.Extend.Entitys.lq_hytk_jksyj |
| 16 | 16 | /// </summary> |
| 17 | 17 | [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] |
| 18 | 18 | public string Id { get; set; } |
| 19 | - | |
| 19 | + | |
| 20 | 20 | /// <summary> |
| 21 | 21 | /// 关联退卡编号 |
| 22 | 22 | /// </summary> |
| 23 | - [SugarColumn(ColumnName = "gltkbh")] | |
| 23 | + [SugarColumn(ColumnName = "gltkbh")] | |
| 24 | 24 | public string Gltkbh { get; set; } |
| 25 | - | |
| 25 | + | |
| 26 | 26 | /// <summary> |
| 27 | 27 | /// 健康师 |
| 28 | 28 | /// </summary> |
| 29 | - [SugarColumn(ColumnName = "jks")] | |
| 29 | + [SugarColumn(ColumnName = "jks")] | |
| 30 | 30 | public string Jks { get; set; } |
| 31 | - | |
| 31 | + | |
| 32 | 32 | /// <summary> |
| 33 | 33 | /// 健康师姓名 |
| 34 | 34 | /// </summary> |
| 35 | - [SugarColumn(ColumnName = "jksxm")] | |
| 35 | + [SugarColumn(ColumnName = "jksxm")] | |
| 36 | 36 | public string Jksxm { get; set; } |
| 37 | - | |
| 37 | + | |
| 38 | 38 | /// <summary> |
| 39 | 39 | /// 健康师账号 |
| 40 | 40 | /// </summary> |
| 41 | - [SugarColumn(ColumnName = "jkszh")] | |
| 41 | + [SugarColumn(ColumnName = "jkszh")] | |
| 42 | 42 | public string Jkszh { get; set; } |
| 43 | - | |
| 43 | + | |
| 44 | 44 | /// <summary> |
| 45 | 45 | /// 健康师业绩 |
| 46 | 46 | /// </summary> |
| 47 | - [SugarColumn(ColumnName = "jksyj")] | |
| 47 | + [SugarColumn(ColumnName = "jksyj")] | |
| 48 | 48 | public decimal? Jksyj { get; set; } |
| 49 | - | |
| 49 | + | |
| 50 | 50 | /// <summary> |
| 51 | 51 | /// 退卡时间 |
| 52 | 52 | /// </summary> |
| 53 | - [SugarColumn(ColumnName = "tksj")] | |
| 53 | + [SugarColumn(ColumnName = "tksj")] | |
| 54 | 54 | public DateTime? Tksj { get; set; } |
| 55 | - | |
| 55 | + | |
| 56 | 56 | /// <summary> |
| 57 | 57 | /// 金三角id |
| 58 | 58 | /// </summary> |
| 59 | - [SugarColumn(ColumnName = "F_jsjid")] | |
| 59 | + [SugarColumn(ColumnName = "F_jsjid")] | |
| 60 | 60 | public string F_jsjid { get; set; } |
| 61 | - | |
| 61 | + | |
| 62 | 62 | /// <summary> |
| 63 | 63 | /// 关联项目资料表ID |
| 64 | 64 | /// </summary> |
| 65 | - [SugarColumn(ColumnName = "F_tkpxid")] | |
| 65 | + [SugarColumn(ColumnName = "F_tkpxid")] | |
| 66 | 66 | public string F_tkpxid { get; set; } |
| 67 | - | |
| 67 | + | |
| 68 | 68 | /// <summary> |
| 69 | 69 | /// 手工费 |
| 70 | 70 | /// </summary> |
| 71 | - [SugarColumn(ColumnName = "F_LaborCost")] | |
| 71 | + [SugarColumn(ColumnName = "F_LaborCost")] | |
| 72 | 72 | public decimal? F_LaborCost { get; set; } |
| 73 | - | |
| 73 | + | |
| 74 | 74 | /// <summary> |
| 75 | 75 | /// 退卡品项次数 |
| 76 | 76 | /// </summary> |
| 77 | - [SugarColumn(ColumnName = "F_tkpxNumber")] | |
| 77 | + [SugarColumn(ColumnName = "F_tkpxNumber")] | |
| 78 | 78 | public decimal? F_tkpxNumber { get; set; } |
| 79 | - | |
| 79 | + | |
| 80 | 80 | /// <summary> |
| 81 | 81 | /// 创建时间 |
| 82 | 82 | /// </summary> |
| 83 | - [SugarColumn(ColumnName = "F_CreateTime")] | |
| 83 | + [SugarColumn(ColumnName = "F_CreateTime")] | |
| 84 | 84 | public DateTime? F_CreateTime { get; set; } |
| 85 | - | |
| 85 | + | |
| 86 | 86 | /// <summary> |
| 87 | 87 | /// 创建用户 |
| 88 | 88 | /// </summary> |
| 89 | - [SugarColumn(ColumnName = "F_CreateUser")] | |
| 89 | + [SugarColumn(ColumnName = "F_CreateUser")] | |
| 90 | 90 | public string F_CreateUser { get; set; } |
| 91 | - | |
| 91 | + | |
| 92 | 92 | /// <summary> |
| 93 | 93 | /// 修改时间 |
| 94 | 94 | /// </summary> |
| 95 | - [SugarColumn(ColumnName = "F_ModifyTime")] | |
| 95 | + [SugarColumn(ColumnName = "F_ModifyTime")] | |
| 96 | 96 | public DateTime? F_ModifyTime { get; set; } |
| 97 | - | |
| 97 | + | |
| 98 | 98 | /// <summary> |
| 99 | 99 | /// 修改用户 |
| 100 | 100 | /// </summary> |
| 101 | - [SugarColumn(ColumnName = "F_ModifyUser")] | |
| 101 | + [SugarColumn(ColumnName = "F_ModifyUser")] | |
| 102 | 102 | public string F_ModifyUser { get; set; } |
| 103 | - | |
| 103 | + | |
| 104 | 104 | /// <summary> |
| 105 | 105 | /// 删除标记 |
| 106 | 106 | /// </summary> |
| 107 | - [SugarColumn(ColumnName = "F_DeleteMark")] | |
| 107 | + [SugarColumn(ColumnName = "F_DeleteMark")] | |
| 108 | 108 | public int? F_DeleteMark { get; set; } |
| 109 | - | |
| 109 | + | |
| 110 | + /// <summary> | |
| 111 | + /// 退卡品项明细id | |
| 112 | + /// </summary> | |
| 113 | + [SugarColumn(ColumnName = "F_CardReturn")] | |
| 114 | + public string CardReturn { get; set; } | |
| 110 | 115 | } |
| 111 | 116 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs
| 1 | +using System; | |
| 1 | 2 | using NCC.Common.Const; |
| 2 | 3 | using SqlSugar; |
| 3 | -using System; | |
| 4 | 4 | |
| 5 | 5 | namespace NCC.Extend.Entitys.lq_hytk_kjbsyj |
| 6 | 6 | { |
| ... | ... | @@ -16,90 +16,95 @@ namespace NCC.Extend.Entitys.lq_hytk_kjbsyj |
| 16 | 16 | /// </summary> |
| 17 | 17 | [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] |
| 18 | 18 | public string Id { get; set; } |
| 19 | - | |
| 19 | + | |
| 20 | 20 | /// <summary> |
| 21 | 21 | /// 关联退卡编号 |
| 22 | 22 | /// </summary> |
| 23 | - [SugarColumn(ColumnName = "gltkbh")] | |
| 23 | + [SugarColumn(ColumnName = "gltkbh")] | |
| 24 | 24 | public string Gltkbh { get; set; } |
| 25 | - | |
| 25 | + | |
| 26 | 26 | /// <summary> |
| 27 | 27 | /// 科技部老师 |
| 28 | 28 | /// </summary> |
| 29 | - [SugarColumn(ColumnName = "kjbls")] | |
| 29 | + [SugarColumn(ColumnName = "kjbls")] | |
| 30 | 30 | public string Kjbls { get; set; } |
| 31 | - | |
| 31 | + | |
| 32 | 32 | /// <summary> |
| 33 | 33 | /// 科技部老师姓名 |
| 34 | 34 | /// </summary> |
| 35 | - [SugarColumn(ColumnName = "kjblsxm")] | |
| 35 | + [SugarColumn(ColumnName = "kjblsxm")] | |
| 36 | 36 | public string Kjblsxm { get; set; } |
| 37 | - | |
| 37 | + | |
| 38 | 38 | /// <summary> |
| 39 | 39 | /// 科技部老师账号 |
| 40 | 40 | /// </summary> |
| 41 | - [SugarColumn(ColumnName = "kjblszh")] | |
| 41 | + [SugarColumn(ColumnName = "kjblszh")] | |
| 42 | 42 | public string Kjblszh { get; set; } |
| 43 | - | |
| 43 | + | |
| 44 | 44 | /// <summary> |
| 45 | 45 | /// 科技部老师业绩 |
| 46 | 46 | /// </summary> |
| 47 | - [SugarColumn(ColumnName = "kjblsyj")] | |
| 47 | + [SugarColumn(ColumnName = "kjblsyj")] | |
| 48 | 48 | public decimal? Kjblsyj { get; set; } |
| 49 | - | |
| 49 | + | |
| 50 | 50 | /// <summary> |
| 51 | 51 | /// 退卡时间 |
| 52 | 52 | /// </summary> |
| 53 | - [SugarColumn(ColumnName = "tksj")] | |
| 53 | + [SugarColumn(ColumnName = "tksj")] | |
| 54 | 54 | public DateTime? Tksj { get; set; } |
| 55 | - | |
| 55 | + | |
| 56 | 56 | /// <summary> |
| 57 | 57 | /// 关联项目资料表ID |
| 58 | 58 | /// </summary> |
| 59 | - [SugarColumn(ColumnName = "F_tkpxid")] | |
| 59 | + [SugarColumn(ColumnName = "F_tkpxid")] | |
| 60 | 60 | public string F_tkpxid { get; set; } |
| 61 | - | |
| 61 | + | |
| 62 | 62 | /// <summary> |
| 63 | 63 | /// 手工费 |
| 64 | 64 | /// </summary> |
| 65 | - [SugarColumn(ColumnName = "F_LaborCost")] | |
| 65 | + [SugarColumn(ColumnName = "F_LaborCost")] | |
| 66 | 66 | public decimal? F_LaborCost { get; set; } |
| 67 | - | |
| 67 | + | |
| 68 | 68 | /// <summary> |
| 69 | 69 | /// 退卡品项次数 |
| 70 | 70 | /// </summary> |
| 71 | - [SugarColumn(ColumnName = "F_tkpxNumber")] | |
| 71 | + [SugarColumn(ColumnName = "F_tkpxNumber")] | |
| 72 | 72 | public decimal? F_tkpxNumber { get; set; } |
| 73 | - | |
| 73 | + | |
| 74 | 74 | /// <summary> |
| 75 | 75 | /// 创建时间 |
| 76 | 76 | /// </summary> |
| 77 | - [SugarColumn(ColumnName = "F_CreateTime")] | |
| 77 | + [SugarColumn(ColumnName = "F_CreateTime")] | |
| 78 | 78 | public DateTime? F_CreateTime { get; set; } |
| 79 | - | |
| 79 | + | |
| 80 | 80 | /// <summary> |
| 81 | 81 | /// 创建用户 |
| 82 | 82 | /// </summary> |
| 83 | - [SugarColumn(ColumnName = "F_CreateUser")] | |
| 83 | + [SugarColumn(ColumnName = "F_CreateUser")] | |
| 84 | 84 | public string F_CreateUser { get; set; } |
| 85 | - | |
| 85 | + | |
| 86 | 86 | /// <summary> |
| 87 | 87 | /// 修改时间 |
| 88 | 88 | /// </summary> |
| 89 | - [SugarColumn(ColumnName = "F_ModifyTime")] | |
| 89 | + [SugarColumn(ColumnName = "F_ModifyTime")] | |
| 90 | 90 | public DateTime? F_ModifyTime { get; set; } |
| 91 | - | |
| 91 | + | |
| 92 | 92 | /// <summary> |
| 93 | 93 | /// 修改用户 |
| 94 | 94 | /// </summary> |
| 95 | - [SugarColumn(ColumnName = "F_ModifyUser")] | |
| 95 | + [SugarColumn(ColumnName = "F_ModifyUser")] | |
| 96 | 96 | public string F_ModifyUser { get; set; } |
| 97 | - | |
| 97 | + | |
| 98 | 98 | /// <summary> |
| 99 | 99 | /// 删除标记 |
| 100 | 100 | /// </summary> |
| 101 | - [SugarColumn(ColumnName = "F_DeleteMark")] | |
| 101 | + [SugarColumn(ColumnName = "F_DeleteMark")] | |
| 102 | 102 | public int? F_DeleteMark { get; set; } |
| 103 | - | |
| 103 | + | |
| 104 | + /// <summary> | |
| 105 | + /// 退卡品项明细id | |
| 106 | + /// </summary> | |
| 107 | + [SugarColumn(ColumnName = "F_CardReturn")] | |
| 108 | + public string CardReturn { get; set; } | |
| 104 | 109 | } |
| 105 | 110 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
| 1 | -using NCC.Common.Const; | |
| 1 | +using System; | |
| 2 | 2 | using SqlSugar; |
| 3 | -using System; | |
| 4 | 3 | |
| 5 | 4 | namespace NCC.Extend.Entitys.lq_tkjlb |
| 6 | 5 | { |
| 7 | 6 | /// <summary> |
| 8 | - /// 拓客管理 | |
| 7 | + /// 拓客基础信息表 | |
| 9 | 8 | /// </summary> |
| 10 | 9 | [SugarTable("lq_tkjlb")] |
| 11 | - [Tenant(ClaimConst.TENANT_ID)] | |
| 12 | 10 | public class LqTkjlbEntity |
| 13 | 11 | { |
| 14 | 12 | /// <summary> |
| ... | ... | @@ -16,66 +14,65 @@ namespace NCC.Extend.Entitys.lq_tkjlb |
| 16 | 14 | /// </summary> |
| 17 | 15 | [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] |
| 18 | 16 | public string Id { get; set; } |
| 19 | - | |
| 17 | + | |
| 20 | 18 | /// <summary> |
| 21 | 19 | /// 拓客时间 |
| 22 | 20 | /// </summary> |
| 23 | - [SugarColumn(ColumnName = "tksj")] | |
| 21 | + [SugarColumn(ColumnName = "tksj")] | |
| 24 | 22 | public DateTime? Tksj { get; set; } |
| 25 | - | |
| 23 | + | |
| 26 | 24 | /// <summary> |
| 27 | 25 | /// 拓客人员 |
| 28 | 26 | /// </summary> |
| 29 | - [SugarColumn(ColumnName = "tkry")] | |
| 27 | + [SugarColumn(ColumnName = "tkry")] | |
| 30 | 28 | public string Tkry { get; set; } |
| 31 | - | |
| 29 | + | |
| 32 | 30 | /// <summary> |
| 33 | 31 | /// 顾客姓名 |
| 34 | 32 | /// </summary> |
| 35 | - [SugarColumn(ColumnName = "gkxm")] | |
| 33 | + [SugarColumn(ColumnName = "gkxm")] | |
| 36 | 34 | public string Gkxm { get; set; } |
| 37 | - | |
| 35 | + | |
| 38 | 36 | /// <summary> |
| 39 | 37 | /// 电话号码 |
| 40 | 38 | /// </summary> |
| 41 | - [SugarColumn(ColumnName = "dhhm")] | |
| 39 | + [SugarColumn(ColumnName = "dhhm")] | |
| 42 | 40 | public string Dhhm { get; set; } |
| 43 | - | |
| 41 | + | |
| 44 | 42 | /// <summary> |
| 45 | 43 | /// 购买张数 |
| 46 | 44 | /// </summary> |
| 47 | - [SugarColumn(ColumnName = "gmzs")] | |
| 45 | + [SugarColumn(ColumnName = "gmzs")] | |
| 48 | 46 | public int? Gmzs { get; set; } |
| 49 | - | |
| 47 | + | |
| 50 | 48 | /// <summary> |
| 51 | 49 | /// 支付方式 |
| 52 | 50 | /// </summary> |
| 53 | - [SugarColumn(ColumnName = "zffs")] | |
| 51 | + [SugarColumn(ColumnName = "zffs")] | |
| 54 | 52 | public string Zffs { get; set; } |
| 55 | - | |
| 53 | + | |
| 56 | 54 | /// <summary> |
| 57 | 55 | /// 是否加微信 |
| 58 | 56 | /// </summary> |
| 59 | - [SugarColumn(ColumnName = "sfjwx")] | |
| 57 | + [SugarColumn(ColumnName = "sfjwx")] | |
| 60 | 58 | public string Sfjwx { get; set; } |
| 61 | - | |
| 59 | + | |
| 62 | 60 | /// <summary> |
| 63 | 61 | /// 备注 |
| 64 | 62 | /// </summary> |
| 65 | - [SugarColumn(ColumnName = "bz")] | |
| 63 | + [SugarColumn(ColumnName = "bz")] | |
| 66 | 64 | public string Bz { get; set; } |
| 67 | - | |
| 65 | + | |
| 68 | 66 | /// <summary> |
| 69 | 67 | /// 所属门店 |
| 70 | 68 | /// </summary> |
| 71 | - [SugarColumn(ColumnName = "ssmd")] | |
| 69 | + [SugarColumn(ColumnName = "ssmd")] | |
| 72 | 70 | public string Ssmd { get; set; } |
| 73 | - | |
| 71 | + | |
| 74 | 72 | /// <summary> |
| 75 | 73 | /// 所属战队 |
| 76 | 74 | /// </summary> |
| 77 | - [SugarColumn(ColumnName = "sszd")] | |
| 75 | + [SugarColumn(ColumnName = "sszd")] | |
| 78 | 76 | public string Sszd { get; set; } |
| 79 | - | |
| 80 | 77 | } |
| 81 | -} | |
| 82 | 78 | \ No newline at end of file |
| 79 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqEvent/ILqEventService.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.Threading.Tasks; | |
| 4 | +using NCC.Common.Filter; | |
| 5 | +using NCC.Extend.Entitys.Dto.LqEvent; | |
| 6 | + | |
| 7 | +namespace NCC.Extend.Interfaces.LqEvent | |
| 8 | +{ | |
| 9 | + /// <summary> | |
| 10 | + /// 拓客活动服务接口 | |
| 11 | + /// </summary> | |
| 12 | + /// <remarks> | |
| 13 | + /// 提供拓客活动的完整管理功能,包括活动基础信息和成员管理。 | |
| 14 | + /// 支持创建、查询、更新、删除拓客活动,以及管理每个活动的参与成员。 | |
| 15 | + /// </remarks> | |
| 16 | + public interface ILqEventService | |
| 17 | + { | |
| 18 | + /// <summary> | |
| 19 | + /// 获取拓客活动列表 | |
| 20 | + /// </summary> | |
| 21 | + /// <remarks> | |
| 22 | + /// 分页查询拓客活动列表,支持多条件筛选和排序。 | |
| 23 | + /// 返回结果包含每个活动的成员数量统计。 | |
| 24 | + /// | |
| 25 | + /// 示例请求: | |
| 26 | + /// ```json | |
| 27 | + /// { | |
| 28 | + /// "page": 1, | |
| 29 | + /// "rows": 10, | |
| 30 | + /// "sidx": "Id", | |
| 31 | + /// "sord": "desc", | |
| 32 | + /// "eventName": "春节拓客活动", | |
| 33 | + /// "eventNumber": "TK2024001", | |
| 34 | + /// "eventCoordinator": "张三", | |
| 35 | + /// "startTimeBegin": "2024-01-01", | |
| 36 | + /// "startTimeEnd": "2024-12-31" | |
| 37 | + /// } | |
| 38 | + /// ``` | |
| 39 | + /// | |
| 40 | + /// 参数说明: | |
| 41 | + /// - page: 页码,从1开始 | |
| 42 | + /// - rows: 每页记录数 | |
| 43 | + /// - sidx: 排序字段(Id、EventName、EventNumber、EventCoordinator、StartTime、EndTime) | |
| 44 | + /// - sord: 排序方向(asc、desc) | |
| 45 | + /// - eventName: 活动名称(模糊查询) | |
| 46 | + /// - eventNumber: 活动编号(模糊查询) | |
| 47 | + /// - eventCoordinator: 活动负责人(模糊查询) | |
| 48 | + /// - startTimeBegin: 开始时间范围-开始 | |
| 49 | + /// - startTimeEnd: 开始时间范围-结束 | |
| 50 | + /// - endTimeBegin: 结束时间范围-开始 | |
| 51 | + /// - endTimeEnd: 结束时间范围-结束 | |
| 52 | + /// </remarks> | |
| 53 | + /// <param name="input">查询参数</param> | |
| 54 | + /// <returns>分页的拓客活动列表,包含成员数量统计</returns> | |
| 55 | + /// <response code="200">成功返回拓客活动列表</response> | |
| 56 | + /// <response code="400">请求参数错误</response> | |
| 57 | + /// <response code="500">服务器内部错误</response> | |
| 58 | + Task<dynamic> GetList(LqEventListQueryInput input); | |
| 59 | + | |
| 60 | + /// <summary> | |
| 61 | + /// 获取拓客活动详情 | |
| 62 | + /// </summary> | |
| 63 | + /// <remarks> | |
| 64 | + /// 根据活动ID获取拓客活动的详细信息,包括基础信息和所有参与成员列表。 | |
| 65 | + /// | |
| 66 | + /// 示例请求: | |
| 67 | + /// GET /api/Extend/LqEvent/1234567890123456789 | |
| 68 | + /// | |
| 69 | + /// 返回数据包含: | |
| 70 | + /// - 活动基础信息(名称、编号、负责人、时间等) | |
| 71 | + /// - 成员列表(用户ID、部门ID、战队名称等) | |
| 72 | + /// </remarks> | |
| 73 | + /// <param name="id">拓客活动ID</param> | |
| 74 | + /// <returns>拓客活动详情,包含成员信息</returns> | |
| 75 | + /// <response code="200">成功返回拓客活动详情</response> | |
| 76 | + /// <response code="404">拓客活动不存在</response> | |
| 77 | + /// <response code="500">服务器内部错误</response> | |
| 78 | + Task<dynamic> GetInfo(string id); | |
| 79 | + | |
| 80 | + /// <summary> | |
| 81 | + /// 创建拓客活动 | |
| 82 | + /// </summary> | |
| 83 | + /// <remarks> | |
| 84 | + /// 创建新的拓客活动,可以同时添加参与成员。 | |
| 85 | + /// 系统会自动生成活动ID,并记录创建用户信息。 | |
| 86 | + /// | |
| 87 | + /// 示例请求: | |
| 88 | + /// ```json | |
| 89 | + /// { | |
| 90 | + /// "eventName": "春节拓客活动", | |
| 91 | + /// "eventNumber": "TK2024001", | |
| 92 | + /// "eventCoordinator": "张三", | |
| 93 | + /// "startTime": "2024-01-15T09:00:00", | |
| 94 | + /// "endTime": "2024-01-20T18:00:00", | |
| 95 | + /// "members": [ | |
| 96 | + /// { | |
| 97 | + /// "userId": "user001", | |
| 98 | + /// "depId": "dept001", | |
| 99 | + /// "teamName": "第一战队" | |
| 100 | + /// }, | |
| 101 | + /// { | |
| 102 | + /// "userId": "user002", | |
| 103 | + /// "depId": "dept001", | |
| 104 | + /// "teamName": "第二战队" | |
| 105 | + /// } | |
| 106 | + /// ] | |
| 107 | + /// } | |
| 108 | + /// ``` | |
| 109 | + /// | |
| 110 | + /// 参数说明: | |
| 111 | + /// - eventName: 活动名称(必填) | |
| 112 | + /// - eventNumber: 活动编号(可选) | |
| 113 | + /// - eventCoordinator: 活动负责人(可选) | |
| 114 | + /// - startTime: 开始时间(可选) | |
| 115 | + /// - endTime: 结束时间(可选) | |
| 116 | + /// - members: 参与成员列表(可选) | |
| 117 | + /// - userId: 用户ID(必填) | |
| 118 | + /// - depId: 部门ID(可选) | |
| 119 | + /// - teamName: 战队名称(可选) | |
| 120 | + /// </remarks> | |
| 121 | + /// <param name="input">创建参数</param> | |
| 122 | + /// <returns>无返回值</returns> | |
| 123 | + /// <response code="200">拓客活动创建成功</response> | |
| 124 | + /// <response code="400">请求参数错误或验证失败</response> | |
| 125 | + /// <response code="500">服务器内部错误</response> | |
| 126 | + Task Create(LqEventCrInput input); | |
| 127 | + | |
| 128 | + /// <summary> | |
| 129 | + /// 更新拓客活动 | |
| 130 | + /// </summary> | |
| 131 | + /// <remarks> | |
| 132 | + /// 更新拓客活动信息,包括基础信息和成员列表。 | |
| 133 | + /// 更新时会先删除原有成员,再添加新成员。 | |
| 134 | + /// | |
| 135 | + /// 示例请求: | |
| 136 | + /// ```json | |
| 137 | + /// { | |
| 138 | + /// "id": "1234567890123456789", | |
| 139 | + /// "eventName": "春节拓客活动(更新)", | |
| 140 | + /// "eventNumber": "TK2024001", | |
| 141 | + /// "eventCoordinator": "李四", | |
| 142 | + /// "startTime": "2024-01-15T09:00:00", | |
| 143 | + /// "endTime": "2024-01-25T18:00:00", | |
| 144 | + /// "members": [ | |
| 145 | + /// { | |
| 146 | + /// "userId": "user003", | |
| 147 | + /// "depId": "dept002", | |
| 148 | + /// "teamName": "精英战队" | |
| 149 | + /// } | |
| 150 | + /// ] | |
| 151 | + /// } | |
| 152 | + /// ``` | |
| 153 | + /// | |
| 154 | + /// 参数说明: | |
| 155 | + /// - id: 拓客活动ID(必填) | |
| 156 | + /// - eventName: 活动名称(必填) | |
| 157 | + /// - eventNumber: 活动编号(可选) | |
| 158 | + /// - eventCoordinator: 活动负责人(可选) | |
| 159 | + /// - startTime: 开始时间(可选) | |
| 160 | + /// - endTime: 结束时间(可选) | |
| 161 | + /// - members: 参与成员列表(可选,为空则清空所有成员) | |
| 162 | + /// </remarks> | |
| 163 | + /// <param name="input">更新参数</param> | |
| 164 | + /// <returns>无返回值</returns> | |
| 165 | + /// <response code="200">拓客活动更新成功</response> | |
| 166 | + /// <response code="400">请求参数错误或验证失败</response> | |
| 167 | + /// <response code="404">拓客活动不存在</response> | |
| 168 | + /// <response code="500">服务器内部错误</response> | |
| 169 | + Task Update(LqEventUpInput input); | |
| 170 | + | |
| 171 | + /// <summary> | |
| 172 | + /// 删除拓客活动 | |
| 173 | + /// </summary> | |
| 174 | + /// <remarks> | |
| 175 | + /// 删除指定的拓客活动,会同时删除该活动的所有成员记录。 | |
| 176 | + /// 删除操作不可恢复,请谨慎使用。 | |
| 177 | + /// | |
| 178 | + /// 示例请求: | |
| 179 | + /// DELETE /api/Extend/LqEvent/1234567890123456789 | |
| 180 | + /// | |
| 181 | + /// 删除顺序: | |
| 182 | + /// 1. 先删除所有相关成员记录 | |
| 183 | + /// 2. 再删除拓客活动记录 | |
| 184 | + /// </remarks> | |
| 185 | + /// <param name="id">拓客活动ID</param> | |
| 186 | + /// <returns>无返回值</returns> | |
| 187 | + /// <response code="200">拓客活动删除成功</response> | |
| 188 | + /// <response code="404">拓客活动不存在</response> | |
| 189 | + /// <response code="500">服务器内部错误</response> | |
| 190 | + Task Delete(string id); | |
| 191 | + | |
| 192 | + /// <summary> | |
| 193 | + /// 根据用户ID获取参与的拓客活动 | |
| 194 | + /// </summary> | |
| 195 | + /// <remarks> | |
| 196 | + /// 根据用户ID查询该用户参与的所有拓客活动,支持时间范围筛选。 | |
| 197 | + /// 返回结果包含活动基础信息和用户在该活动中的详细信息。 | |
| 198 | + /// | |
| 199 | + /// 示例请求: | |
| 200 | + /// GET /api/Extend/LqEvent/user/user001?startTime=2024-01-01&endTime=2024-12-31 | |
| 201 | + /// | |
| 202 | + /// 参数说明: | |
| 203 | + /// - userId: 用户ID(必填) | |
| 204 | + /// - startTime: 开始时间(可选),查询在此时间之后开始的活动 | |
| 205 | + /// - endTime: 结束时间(可选),查询在此时间之前结束的活动 | |
| 206 | + /// | |
| 207 | + /// 返回数据包含: | |
| 208 | + /// - 活动基础信息(ID、名称、编号、负责人、开始时间、结束时间) | |
| 209 | + /// - 用户参与信息(部门ID、战队名称、目标数量等) | |
| 210 | + /// </remarks> | |
| 211 | + /// <param name="userId">用户ID</param> | |
| 212 | + /// <param name="startTime">开始时间(可选)</param> | |
| 213 | + /// <param name="endTime">结束时间(可选)</param> | |
| 214 | + /// <returns>用户参与的拓客活动列表</returns> | |
| 215 | + /// <response code="200">成功返回用户参与的拓客活动列表</response> | |
| 216 | + /// <response code="400">请求参数错误</response> | |
| 217 | + /// <response code="500">服务器内部错误</response> | |
| 218 | + Task<List<LqEventUserEventOutput>> GetUserEvents(string userId, DateTime? startTime = null, DateTime? endTime = null); | |
| 219 | + } | |
| 220 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
0 → 100644
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.Linq; | |
| 4 | +using System.Threading.Tasks; | |
| 5 | +using Mapster; | |
| 6 | +using Microsoft.AspNetCore.Mvc; | |
| 7 | +using NCC.Common.Core.Manager; | |
| 8 | +using NCC.Common.Filter; | |
| 9 | +using NCC.Dependency; | |
| 10 | +using NCC.DynamicApiController; | |
| 11 | +using NCC.Extend.Entitys.Dto.LqEvent; | |
| 12 | +using NCC.Extend.Entitys.Dto.LqEventUser; | |
| 13 | +using NCC.Extend.Entitys.lq_event; | |
| 14 | +using NCC.Extend.Entitys.lq_eventuser; | |
| 15 | +using NCC.Extend.Interfaces.LqEvent; | |
| 16 | +using NCC.FriendlyException; | |
| 17 | +using SqlSugar; | |
| 18 | +using Yitter.IdGenerator; | |
| 19 | + | |
| 20 | +namespace NCC.Extend.LqEvent | |
| 21 | +{ | |
| 22 | + /// <summary> | |
| 23 | + /// 拓客活动服务 | |
| 24 | + /// </summary> | |
| 25 | + [ApiDescriptionSettings(Tag = "绿纤拓客活动服务", Name = "LqEvent", Order = 200)] | |
| 26 | + [Route("api/Extend/[controller]")] | |
| 27 | + [ApiController] | |
| 28 | + public class LqEventService : ILqEventService, IDynamicApiController, ITransient | |
| 29 | + { | |
| 30 | + private readonly ISqlSugarClient _db; | |
| 31 | + private readonly IUserManager _userManager; | |
| 32 | + | |
| 33 | + public LqEventService(ISqlSugarClient db, IUserManager userManager) | |
| 34 | + { | |
| 35 | + _db = db; | |
| 36 | + _userManager = userManager; | |
| 37 | + } | |
| 38 | + | |
| 39 | + #region 获取拓客活动列表 | |
| 40 | + /// <summary> | |
| 41 | + /// 获取拓客活动列表 | |
| 42 | + /// </summary> | |
| 43 | + /// <remarks> | |
| 44 | + /// 分页查询拓客活动列表,支持多条件筛选和排序。 | |
| 45 | + /// 返回结果包含每个活动的成员数量统计。 | |
| 46 | + /// | |
| 47 | + /// 示例请求: | |
| 48 | + /// GET /api/Extend/LqEvent?page=1&rows=10&sidx=Id&sord=desc&eventName=春节拓客活动 | |
| 49 | + /// | |
| 50 | + /// 支持的条件筛选: | |
| 51 | + /// - 活动名称模糊查询 | |
| 52 | + /// - 活动编号模糊查询 | |
| 53 | + /// - 活动负责人模糊查询 | |
| 54 | + /// - 开始时间范围查询 | |
| 55 | + /// - 结束时间范围查询 | |
| 56 | + /// | |
| 57 | + /// 支持的排序字段: | |
| 58 | + /// - Id: 活动ID | |
| 59 | + /// - EventName: 活动名称 | |
| 60 | + /// - EventNumber: 活动编号 | |
| 61 | + /// - EventCoordinator: 活动负责人 | |
| 62 | + /// - StartTime: 开始时间 | |
| 63 | + /// - EndTime: 结束时间 | |
| 64 | + /// </remarks> | |
| 65 | + /// <param name="input">查询参数</param> | |
| 66 | + /// <returns>分页的拓客活动列表,包含成员数量统计</returns> | |
| 67 | + [HttpGet("")] | |
| 68 | + public async Task<dynamic> GetList([FromQuery] LqEventListQueryInput input) | |
| 69 | + { | |
| 70 | + var sidx = input.sidx == null ? "id" : input.sidx; | |
| 71 | + var sord = input.sord == null ? "desc" : input.sord; | |
| 72 | + // 先查询活动列表 | |
| 73 | + var Data = await _db.Queryable<LqEventEntity>() | |
| 74 | + .WhereIF(!string.IsNullOrEmpty(input.EventName), e => e.EventName.Contains(input.EventName)) | |
| 75 | + .WhereIF(!string.IsNullOrEmpty(input.EventNumber), e => e.EventNumber.Contains(input.EventNumber)) | |
| 76 | + .Select(e => new LqEventListOutput | |
| 77 | + { | |
| 78 | + id = e.Id, | |
| 79 | + eventName = e.EventName, | |
| 80 | + startTime = e.StartTime, | |
| 81 | + endTime = e.EndTime, | |
| 82 | + eventCoordinator = e.EventCoordinator, | |
| 83 | + eventNumber = e.EventNumber, | |
| 84 | + memberCount = SqlFunc.Subqueryable<LqEventUserEntity>().Where(u => u.EventId == e.Id).Count(), | |
| 85 | + }) | |
| 86 | + .MergeTable() | |
| 87 | + .OrderBy(sidx + " " + sord) | |
| 88 | + .ToPagedListAsync(input.page, input.rows); | |
| 89 | + return PageResult<LqEventListOutput>.SqlSugarPageResult(Data); | |
| 90 | + } | |
| 91 | + #endregion | |
| 92 | + | |
| 93 | + #region 获取拓客活动详情 | |
| 94 | + | |
| 95 | + /// <summary> | |
| 96 | + /// 获取拓客活动详情 | |
| 97 | + /// </summary> | |
| 98 | + /// <remarks> | |
| 99 | + /// 根据活动ID获取拓客活动的详细信息,包括基础信息和所有参与成员列表。 | |
| 100 | + /// | |
| 101 | + /// 示例请求: | |
| 102 | + /// GET /api/Extend/LqEvent/1234567890123456789 | |
| 103 | + /// | |
| 104 | + /// 返回数据包含: | |
| 105 | + /// - 活动基础信息(ID、名称、编号、负责人、开始时间、结束时间) | |
| 106 | + /// - 成员列表(用户ID、部门ID、战队名称、创建时间、创建用户) | |
| 107 | + /// | |
| 108 | + /// 如果活动不存在,将返回404错误。 | |
| 109 | + /// </remarks> | |
| 110 | + /// <param name="id">拓客活动ID</param> | |
| 111 | + /// <returns>拓客活动详情,包含成员信息</returns> | |
| 112 | + /// <response code="200">成功返回拓客活动详情</response> | |
| 113 | + /// <response code="404">拓客活动不存在</response> | |
| 114 | + /// <response code="500">服务器内部错误</response> | |
| 115 | + [HttpGet("{id}")] | |
| 116 | + public async Task<dynamic> GetInfo(string id) | |
| 117 | + { | |
| 118 | + // 1. 获取拓客活动基本信息 | |
| 119 | + var entity = await _db.Queryable<LqEventEntity>().FirstAsync(p => p.Id == id); | |
| 120 | + if (entity == null) | |
| 121 | + { | |
| 122 | + throw NCCException.Oh("拓客活动不存在"); | |
| 123 | + } | |
| 124 | + | |
| 125 | + var output = entity.Adapt<LqEventInfoOutput>(); | |
| 126 | + | |
| 127 | + // 2. 获取拓客活动成员信息 | |
| 128 | + var members = await _db.Queryable<LqEventUserEntity>().Where(u => u.EventId == id.ToString()).ToListAsync(); | |
| 129 | + | |
| 130 | + // 3. 转换为输出格式 | |
| 131 | + output.Members = members.Adapt<List<LqEventUserInfoOutput>>(); | |
| 132 | + | |
| 133 | + return output; | |
| 134 | + } | |
| 135 | + #endregion | |
| 136 | + | |
| 137 | + #region 创建拓客活动 | |
| 138 | + /// <summary> | |
| 139 | + /// 创建拓客活动 | |
| 140 | + /// </summary> | |
| 141 | + /// <remarks> | |
| 142 | + /// 创建新的拓客活动,可以同时添加参与成员。 | |
| 143 | + /// 系统会自动生成活动ID,并记录创建用户信息。 | |
| 144 | + /// | |
| 145 | + /// 示例请求: | |
| 146 | + /// POST /api/Extend/LqEvent | |
| 147 | + /// Content-Type: application/json | |
| 148 | + /// | |
| 149 | + /// ```json | |
| 150 | + /// { | |
| 151 | + /// "eventName": "春节拓客活动", | |
| 152 | + /// "eventNumber": "TK2024001", | |
| 153 | + /// "eventCoordinator": "张三", | |
| 154 | + /// "startTime": "2024-01-15T09:00:00", | |
| 155 | + /// "endTime": "2024-01-20T18:00:00", | |
| 156 | + /// "members": [ | |
| 157 | + /// { | |
| 158 | + /// "userId": "user001", | |
| 159 | + /// "depId": "dept001", | |
| 160 | + /// "teamName": "第一战队" | |
| 161 | + /// }, | |
| 162 | + /// { | |
| 163 | + /// "userId": "user002", | |
| 164 | + /// "depId": "dept001", | |
| 165 | + /// "teamName": "第二战队" | |
| 166 | + /// } | |
| 167 | + /// ] | |
| 168 | + /// } | |
| 169 | + /// ``` | |
| 170 | + /// | |
| 171 | + /// 参数验证: | |
| 172 | + /// - eventName: 必填,最大长度255字符 | |
| 173 | + /// - eventNumber: 可选,最大长度255字符 | |
| 174 | + /// - eventCoordinator: 可选,最大长度255字符 | |
| 175 | + /// - members: 可选,成员列表 | |
| 176 | + /// - userId: 必填 | |
| 177 | + /// - depId: 可选 | |
| 178 | + /// - teamName: 可选 | |
| 179 | + /// | |
| 180 | + /// 创建流程: | |
| 181 | + /// 1. 生成新的活动ID | |
| 182 | + /// 2. 插入拓客活动记录 | |
| 183 | + /// 3. 插入成员记录(如果有) | |
| 184 | + /// </remarks> | |
| 185 | + /// <param name="input">创建参数</param> | |
| 186 | + /// <returns>无返回值</returns> | |
| 187 | + /// <response code="200">拓客活动创建成功</response> | |
| 188 | + /// <response code="400">请求参数错误或验证失败</response> | |
| 189 | + /// <response code="500">服务器内部错误</response> | |
| 190 | + [HttpPost("")] | |
| 191 | + public async Task Create([FromBody] LqEventCrInput input) | |
| 192 | + { | |
| 193 | + var userInfo = await _userManager.GetUserInfo(); | |
| 194 | + var entity = input.Adapt<LqEventEntity>(); | |
| 195 | + | |
| 196 | + // 生成新的ID | |
| 197 | + entity.Id = YitIdHelper.NextId().ToString(); | |
| 198 | + | |
| 199 | + // 插入拓客活动 | |
| 200 | + var isOk = await _db.Insertable(entity).ExecuteCommandAsync(); | |
| 201 | + if (!(isOk > 0)) | |
| 202 | + throw NCCException.Oh("创建拓客活动失败"); | |
| 203 | + | |
| 204 | + // 插入拓客活动成员 | |
| 205 | + if (input.Members != null && input.Members.Count > 0) | |
| 206 | + { | |
| 207 | + var memberEntities = new List<LqEventUserEntity>(); | |
| 208 | + foreach (var member in input.Members) | |
| 209 | + { | |
| 210 | + memberEntities.Add( | |
| 211 | + new LqEventUserEntity | |
| 212 | + { | |
| 213 | + Id = YitIdHelper.NextId().ToString(), | |
| 214 | + EventId = entity.Id.ToString(), | |
| 215 | + UserId = member.UserId, | |
| 216 | + DepId = member.DepId, | |
| 217 | + TeamName = member.TeamName, | |
| 218 | + CreationTime = DateTime.Now, | |
| 219 | + CreationUser = userInfo?.userName, | |
| 220 | + } | |
| 221 | + ); | |
| 222 | + } | |
| 223 | + | |
| 224 | + await _db.Insertable(memberEntities).ExecuteCommandAsync(); | |
| 225 | + } | |
| 226 | + } | |
| 227 | + #endregion | |
| 228 | + | |
| 229 | + #region 更新拓客活动 | |
| 230 | + /// <summary> | |
| 231 | + /// 更新拓客活动 | |
| 232 | + /// </summary> | |
| 233 | + /// <remarks> | |
| 234 | + /// 更新拓客活动信息,包括基础信息和成员列表。 | |
| 235 | + /// 更新时会先删除原有成员,再添加新成员。 | |
| 236 | + /// | |
| 237 | + /// 示例请求: | |
| 238 | + /// PUT /api/Extend/LqEvent | |
| 239 | + /// Content-Type: application/json | |
| 240 | + /// | |
| 241 | + /// ```json | |
| 242 | + /// { | |
| 243 | + /// "id": "1234567890123456789", | |
| 244 | + /// "eventName": "春节拓客活动(更新)", | |
| 245 | + /// "eventNumber": "TK2024001", | |
| 246 | + /// "eventCoordinator": "李四", | |
| 247 | + /// "startTime": "2024-01-15T09:00:00", | |
| 248 | + /// "endTime": "2024-01-25T18:00:00", | |
| 249 | + /// "members": [ | |
| 250 | + /// { | |
| 251 | + /// "userId": "user003", | |
| 252 | + /// "depId": "dept002", | |
| 253 | + /// "teamName": "精英战队" | |
| 254 | + /// } | |
| 255 | + /// ] | |
| 256 | + /// } | |
| 257 | + /// ``` | |
| 258 | + /// | |
| 259 | + /// 参数验证: | |
| 260 | + /// - id: 必填,拓客活动ID | |
| 261 | + /// - eventName: 必填,最大长度255字符 | |
| 262 | + /// - eventNumber: 可选,最大长度255字符 | |
| 263 | + /// - eventCoordinator: 可选,最大长度255字符 | |
| 264 | + /// - members: 可选,成员列表(为空则清空所有成员) | |
| 265 | + /// | |
| 266 | + /// 更新流程: | |
| 267 | + /// 1. 更新拓客活动记录 | |
| 268 | + /// 2. 删除原有成员记录 | |
| 269 | + /// 3. 插入新成员记录(如果有) | |
| 270 | + /// </remarks> | |
| 271 | + /// <param name="input">更新参数</param> | |
| 272 | + /// <returns>无返回值</returns> | |
| 273 | + /// <response code="200">拓客活动更新成功</response> | |
| 274 | + /// <response code="400">请求参数错误或验证失败</response> | |
| 275 | + /// <response code="404">拓客活动不存在</response> | |
| 276 | + /// <response code="500">服务器内部错误</response> | |
| 277 | + [HttpPut("")] | |
| 278 | + public async Task Update([FromBody] LqEventUpInput input) | |
| 279 | + { | |
| 280 | + var userInfo = await _userManager.GetUserInfo(); | |
| 281 | + var entity = input.Adapt<LqEventEntity>(); | |
| 282 | + | |
| 283 | + // 更新拓客活动 | |
| 284 | + var isOk = await _db.Updateable(entity).ExecuteCommandAsync(); | |
| 285 | + if (!(isOk > 0)) | |
| 286 | + throw NCCException.Oh("更新拓客活动失败"); | |
| 287 | + | |
| 288 | + // 删除原有成员 | |
| 289 | + await _db.Deleteable<LqEventUserEntity>().Where(u => u.EventId == entity.Id.ToString()).ExecuteCommandAsync(); | |
| 290 | + | |
| 291 | + // 插入新成员 | |
| 292 | + if (input.Members != null && input.Members.Count > 0) | |
| 293 | + { | |
| 294 | + var memberEntities = new List<LqEventUserEntity>(); | |
| 295 | + foreach (var member in input.Members) | |
| 296 | + { | |
| 297 | + memberEntities.Add( | |
| 298 | + new LqEventUserEntity | |
| 299 | + { | |
| 300 | + Id = YitIdHelper.NextId().ToString(), | |
| 301 | + EventId = entity.Id.ToString(), | |
| 302 | + UserId = member.UserId, | |
| 303 | + DepId = member.DepId, | |
| 304 | + TeamName = member.TeamName, | |
| 305 | + CreationTime = DateTime.Now, | |
| 306 | + CreationUser = userInfo?.userName, | |
| 307 | + } | |
| 308 | + ); | |
| 309 | + } | |
| 310 | + | |
| 311 | + await _db.Insertable(memberEntities).ExecuteCommandAsync(); | |
| 312 | + } | |
| 313 | + } | |
| 314 | + #endregion | |
| 315 | + | |
| 316 | + #region 删除拓客活动 | |
| 317 | + /// <summary> | |
| 318 | + /// 删除拓客活动 | |
| 319 | + /// </summary> | |
| 320 | + /// <remarks> | |
| 321 | + /// 删除指定的拓客活动,会同时删除该活动的所有成员记录。 | |
| 322 | + /// 删除操作不可恢复,请谨慎使用。 | |
| 323 | + /// | |
| 324 | + /// 示例请求: | |
| 325 | + /// DELETE /api/Extend/LqEvent/1234567890123456789 | |
| 326 | + /// | |
| 327 | + /// 删除顺序: | |
| 328 | + /// 1. 先删除所有相关成员记录 | |
| 329 | + /// 2. 再删除拓客活动记录 | |
| 330 | + /// | |
| 331 | + /// 注意事项: | |
| 332 | + /// - 删除操作不可恢复 | |
| 333 | + /// - 会级联删除所有相关成员记录 | |
| 334 | + /// - 如果活动不存在,将返回404错误 | |
| 335 | + /// - 建议在删除前先查询确认活动信息 | |
| 336 | + /// </remarks> | |
| 337 | + /// <param name="id">拓客活动ID</param> | |
| 338 | + /// <returns>无返回值</returns> | |
| 339 | + /// <response code="200">拓客活动删除成功</response> | |
| 340 | + /// <response code="404">拓客活动不存在</response> | |
| 341 | + /// <response code="500">服务器内部错误</response> | |
| 342 | + [HttpDelete("{id}")] | |
| 343 | + public async Task Delete(string id) | |
| 344 | + { | |
| 345 | + // 删除拓客活动成员 | |
| 346 | + await _db.Deleteable<LqEventUserEntity>().Where(u => u.EventId == id.ToString()).ExecuteCommandAsync(); | |
| 347 | + | |
| 348 | + // 删除拓客活动 | |
| 349 | + var isOk = await _db.Deleteable<LqEventEntity>().Where(p => p.Id == id).ExecuteCommandAsync(); | |
| 350 | + | |
| 351 | + if (!(isOk > 0)) | |
| 352 | + throw NCCException.Oh("删除拓客活动失败"); | |
| 353 | + } | |
| 354 | + #endregion | |
| 355 | + | |
| 356 | + #region 更新拓客目标数量 | |
| 357 | + /// <summary> | |
| 358 | + /// 更新拓客目标数量 | |
| 359 | + /// </summary> | |
| 360 | + /// <param name="id">拓客活动ID</param> | |
| 361 | + /// <param name="target">拓客目标数量</param> | |
| 362 | + /// <returns></returns> | |
| 363 | + [HttpPut("{id}/target")] | |
| 364 | + public async Task UpdateTarget(string id, int target) | |
| 365 | + { | |
| 366 | + var isOk = await _db.Updateable<LqEventUserEntity>().SetColumns(it => new LqEventUserEntity { EventTarget = target }).Where(x => x.EventId == id).ExecuteCommandAsync(); | |
| 367 | + if (!(isOk > 0)) | |
| 368 | + throw NCCException.Oh("更新拓客目标数量失败"); | |
| 369 | + } | |
| 370 | + #endregion | |
| 371 | + | |
| 372 | + #region 获取拓客目标数量 | |
| 373 | + /// <summary> | |
| 374 | + /// 获取拓客目标数量 | |
| 375 | + /// </summary> | |
| 376 | + /// <param name="id">拓客活动ID</param> | |
| 377 | + /// <returns></returns> | |
| 378 | + [HttpGet("{id}/target")] | |
| 379 | + public async Task<int> GetTarget(string id) | |
| 380 | + { | |
| 381 | + return await _db.Queryable<LqEventUserEntity>().Where(x => x.EventId == id).Select(x => x.EventTarget).FirstAsync(); | |
| 382 | + } | |
| 383 | + #endregion | |
| 384 | + | |
| 385 | + #region 根据用户ID获取参与的拓客活动 | |
| 386 | + | |
| 387 | + /// <summary> | |
| 388 | + /// 根据用户ID获取参与的拓客活动 | |
| 389 | + /// </summary> | |
| 390 | + /// <remarks> | |
| 391 | + /// 根据用户ID查询该用户参与的所有拓客活动,支持时间范围筛选。 | |
| 392 | + /// 返回结果包含活动基础信息和用户在该活动中的详细信息。 | |
| 393 | + /// | |
| 394 | + /// 示例请求: | |
| 395 | + /// GET /api/Extend/LqEvent/user/user001?startTime=2024-01-01&endTime=2024-12-31 | |
| 396 | + /// | |
| 397 | + /// 参数说明: | |
| 398 | + /// - userId: 用户ID(必填) | |
| 399 | + /// - startTime: 开始时间(可选),查询在此时间之后开始的活动 | |
| 400 | + /// - endTime: 结束时间(可选),查询在此时间之前结束的活动 | |
| 401 | + /// | |
| 402 | + /// 返回数据包含: | |
| 403 | + /// - 活动基础信息(ID、名称、编号、负责人、开始时间、结束时间) | |
| 404 | + /// - 用户参与信息(部门ID、战队名称、目标数量等) | |
| 405 | + /// </remarks> | |
| 406 | + /// <param name="userId">用户ID</param> | |
| 407 | + /// <param name="startTime">开始时间(可选)</param> | |
| 408 | + /// <param name="endTime">结束时间(可选)</param> | |
| 409 | + /// <returns>用户参与的拓客活动列表</returns> | |
| 410 | + /// <response code="200">成功返回用户参与的拓客活动列表</response> | |
| 411 | + /// <response code="400">请求参数错误</response> | |
| 412 | + /// <response code="500">服务器内部错误</response> | |
| 413 | + [HttpGet("user/{userId}")] | |
| 414 | + [ProducesResponseType(typeof(List<LqEventUserEventOutput>), 200)] | |
| 415 | + [ProducesResponseType(400)] | |
| 416 | + [ProducesResponseType(500)] | |
| 417 | + public async Task<List<LqEventUserEventOutput>> GetUserEvents(string userId, [FromQuery] DateTime? startTime = null, [FromQuery] DateTime? endTime = null) | |
| 418 | + { | |
| 419 | + try | |
| 420 | + { | |
| 421 | + // 先测试简单的查询 | |
| 422 | + var eventUsers = await _db.Queryable<LqEventUserEntity>().Where(u => u.UserId == userId).ToListAsync(); | |
| 423 | + | |
| 424 | + if (!eventUsers.Any()) | |
| 425 | + { | |
| 426 | + return new List<LqEventUserEventOutput>(); | |
| 427 | + } | |
| 428 | + | |
| 429 | + var eventIds = eventUsers.Select(u => u.EventId).ToList(); | |
| 430 | + | |
| 431 | + // 查询活动信息 | |
| 432 | + var events = await _db.Queryable<LqEventEntity>().Where(e => eventIds.Contains(e.Id)).ToListAsync(); | |
| 433 | + | |
| 434 | + // 时间范围筛选 | |
| 435 | + if (startTime.HasValue) | |
| 436 | + { | |
| 437 | + events = events.Where(e => e.StartTime >= startTime.Value).ToList(); | |
| 438 | + } | |
| 439 | + | |
| 440 | + if (endTime.HasValue) | |
| 441 | + { | |
| 442 | + events = events.Where(e => e.EndTime <= endTime.Value).ToList(); | |
| 443 | + } | |
| 444 | + | |
| 445 | + // 构建结果 | |
| 446 | + var result = new List<LqEventUserEventOutput>(); | |
| 447 | + foreach (var eventUser in eventUsers) | |
| 448 | + { | |
| 449 | + var eventInfo = events.FirstOrDefault(e => e.Id == eventUser.EventId); | |
| 450 | + if (eventInfo != null) | |
| 451 | + { | |
| 452 | + result.Add( | |
| 453 | + new LqEventUserEventOutput | |
| 454 | + { | |
| 455 | + // 活动基础信息 | |
| 456 | + EventId = eventInfo.Id, | |
| 457 | + EventName = eventInfo.EventName, | |
| 458 | + EventNumber = eventInfo.EventNumber, | |
| 459 | + EventCoordinator = eventInfo.EventCoordinator, | |
| 460 | + StartTime = eventInfo.StartTime, | |
| 461 | + EndTime = eventInfo.EndTime, | |
| 462 | + // 用户参与信息 | |
| 463 | + UserId = eventUser.UserId, | |
| 464 | + DepId = eventUser.DepId, | |
| 465 | + TeamName = eventUser.TeamName, | |
| 466 | + EventTarget = eventUser.EventTarget, | |
| 467 | + CreationTime = eventUser.CreationTime, | |
| 468 | + CreationUser = eventUser.CreationUser, | |
| 469 | + } | |
| 470 | + ); | |
| 471 | + } | |
| 472 | + } | |
| 473 | + | |
| 474 | + // 按开始时间降序排列 | |
| 475 | + return result.OrderByDescending(x => x.StartTime).ToList(); | |
| 476 | + } | |
| 477 | + catch (Exception ex) | |
| 478 | + { | |
| 479 | + throw NCCException.Oh("获取用户参与的拓客活动失败", ex); | |
| 480 | + } | |
| 481 | + } | |
| 482 | + #endregion | |
| 483 | + } | |
| 484 | +} | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
| ... | ... | @@ -64,6 +64,7 @@ namespace NCC.Extend.LqHytkHytk |
| 64 | 64 | _userManager = userManager; |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | + #region 获取退卡信息列表 | |
| 67 | 68 | /// <summary> |
| 68 | 69 | /// 获取退卡信息列表 |
| 69 | 70 | /// </summary> |
| ... | ... | @@ -73,8 +74,7 @@ namespace NCC.Extend.LqHytkHytk |
| 73 | 74 | public async Task<dynamic> GetList([FromQuery] LqHytkHytkListQueryInput input) |
| 74 | 75 | { |
| 75 | 76 | var sidx = input.sidx == null ? "id" : input.sidx; |
| 76 | - List<string> queryTksj = | |
| 77 | - input.tksj != null ? input.tksj.Split(',').ToObeject<List<string>>() : null; | |
| 77 | + List<string> queryTksj = input.tksj != null ? input.tksj.Split(',').ToObeject<List<string>>() : null; | |
| 78 | 78 | DateTime? startTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.First()) : null; |
| 79 | 79 | DateTime? endTksj = queryTksj != null ? Ext.GetDateTime(queryTksj.Last()) : null; |
| 80 | 80 | var data = await _db.Queryable<LqHytkHytkEntity>() |
| ... | ... | @@ -91,36 +91,9 @@ namespace NCC.Extend.LqHytkHytk |
| 91 | 91 | .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz)) |
| 92 | 92 | .WhereIF(!string.IsNullOrEmpty(input.tkzt), p => p.Tkzt.Contains(input.tkzt)) |
| 93 | 93 | .WhereIF(!string.IsNullOrEmpty(input.tkyy), p => p.Tkyy.Contains(input.tkyy)) |
| 94 | - .WhereIF( | |
| 95 | - !string.IsNullOrEmpty(input.fileUrl), | |
| 96 | - p => p.FileUrl.Contains(input.fileUrl) | |
| 97 | - ) | |
| 98 | - .WhereIF( | |
| 99 | - queryTksj != null, | |
| 100 | - p => | |
| 101 | - p.Tksj | |
| 102 | - >= new DateTime( | |
| 103 | - startTksj.ToDate().Year, | |
| 104 | - startTksj.ToDate().Month, | |
| 105 | - startTksj.ToDate().Day, | |
| 106 | - 0, | |
| 107 | - 0, | |
| 108 | - 0 | |
| 109 | - ) | |
| 110 | - ) | |
| 111 | - .WhereIF( | |
| 112 | - queryTksj != null, | |
| 113 | - p => | |
| 114 | - p.Tksj | |
| 115 | - <= new DateTime( | |
| 116 | - endTksj.ToDate().Year, | |
| 117 | - endTksj.ToDate().Month, | |
| 118 | - endTksj.ToDate().Day, | |
| 119 | - 23, | |
| 120 | - 59, | |
| 121 | - 59 | |
| 122 | - ) | |
| 123 | - ) | |
| 94 | + .WhereIF(!string.IsNullOrEmpty(input.fileUrl), p => p.FileUrl.Contains(input.fileUrl)) | |
| 95 | + .WhereIF(queryTksj != null, p => p.Tksj >= new DateTime(startTksj.ToDate().Year, startTksj.ToDate().Month, startTksj.ToDate().Day, 0, 0, 0)) | |
| 96 | + .WhereIF(queryTksj != null, p => p.Tksj <= new DateTime(endTksj.ToDate().Year, endTksj.ToDate().Month, endTksj.ToDate().Day, 23, 59, 59)) | |
| 124 | 97 | .WhereIF(!string.IsNullOrEmpty(input.czry), p => p.Czry.Equals(input.czry)) |
| 125 | 98 | .Select(it => new LqHytkHytkListOutput |
| 126 | 99 | { |
| ... | ... | @@ -146,7 +119,9 @@ namespace NCC.Extend.LqHytkHytk |
| 146 | 119 | .ToPagedListAsync(input.currentPage, input.pageSize); |
| 147 | 120 | return PageResult<LqHytkHytkListOutput>.SqlSugarPageResult(data); |
| 148 | 121 | } |
| 122 | + #endregion | |
| 149 | 123 | |
| 124 | + #region 创建退卡信息及其关联的品项明细、健康师业绩、科技部老师业绩信息 | |
| 150 | 125 | /// <summary> |
| 151 | 126 | /// 创建退卡信息及其关联的品项明细、健康师业绩、科技部老师业绩信息 |
| 152 | 127 | /// </summary> |
| ... | ... | @@ -233,9 +208,7 @@ namespace NCC.Extend.LqHytkHytk |
| 233 | 208 | _db.BeginTran(); |
| 234 | 209 | |
| 235 | 210 | // 新增退卡主表记录 |
| 236 | - var newEntity = await _db.Insertable(entity) | |
| 237 | - .IgnoreColumns(ignoreNullColumn: true) | |
| 238 | - .ExecuteReturnEntityAsync(); | |
| 211 | + var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync(); | |
| 239 | 212 | |
| 240 | 213 | // 收集所有需要插入的实体,然后批量插入 |
| 241 | 214 | var allMxEntities = new List<LqHytkMxEntity>(); |
| ... | ... | @@ -262,8 +235,7 @@ namespace NCC.Extend.LqHytkHytk |
| 262 | 235 | F_ProjectNumber = item.F_ProjectNumber ?? 1, |
| 263 | 236 | F_IsEnabled = item.F_IsEnabled ?? 1, |
| 264 | 237 | F_SourceType = item.F_SourceType, |
| 265 | - F_TotalPrice = | |
| 266 | - item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), | |
| 238 | + F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), | |
| 267 | 239 | }; |
| 268 | 240 | allMxEntities.Add(lqHytkMxEntity); |
| 269 | 241 | |
| ... | ... | @@ -289,6 +261,7 @@ namespace NCC.Extend.LqHytkHytk |
| 289 | 261 | F_CreateTime = DateTime.Now, |
| 290 | 262 | F_CreateUser = userInfo.userId, |
| 291 | 263 | F_DeleteMark = 0, |
| 264 | + CardReturn = lqHytkMxEntity.Id, | |
| 292 | 265 | } |
| 293 | 266 | ); |
| 294 | 267 | } |
| ... | ... | @@ -315,6 +288,7 @@ namespace NCC.Extend.LqHytkHytk |
| 315 | 288 | F_CreateTime = DateTime.Now, |
| 316 | 289 | F_CreateUser = userInfo.userId, |
| 317 | 290 | F_DeleteMark = 0, |
| 291 | + CardReturn = lqHytkMxEntity.Id, | |
| 318 | 292 | } |
| 319 | 293 | ); |
| 320 | 294 | } |
| ... | ... | @@ -349,7 +323,9 @@ namespace NCC.Extend.LqHytkHytk |
| 349 | 323 | throw NCCException.Oh(ErrorCode.COM1005, ex.Message); |
| 350 | 324 | } |
| 351 | 325 | } |
| 326 | + #endregion | |
| 352 | 327 | |
| 328 | + #region 更新退卡信息及其关联的品项明细、健康师业绩、科技部老师业绩信息 | |
| 353 | 329 | /// <summary> |
| 354 | 330 | /// 更新退卡信息及其关联的品项明细、健康师业绩、科技部老师业绩信息 |
| 355 | 331 | /// </summary> |
| ... | ... | @@ -381,15 +357,9 @@ namespace NCC.Extend.LqHytkHytk |
| 381 | 357 | await _db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync(); |
| 382 | 358 | |
| 383 | 359 | // 删除原有的关联数据 |
| 384 | - await _db.Deleteable<LqHytkMxEntity>() | |
| 385 | - .Where(x => x.Gltkbh == id) | |
| 386 | - .ExecuteCommandAsync(); | |
| 387 | - await _db.Deleteable<LqHytkJksyjEntity>() | |
| 388 | - .Where(x => x.Gltkbh == id) | |
| 389 | - .ExecuteCommandAsync(); | |
| 390 | - await _db.Deleteable<LqHytkKjbsyjEntity>() | |
| 391 | - .Where(x => x.Gltkbh == id) | |
| 392 | - .ExecuteCommandAsync(); | |
| 360 | + await _db.Deleteable<LqHytkMxEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); | |
| 361 | + await _db.Deleteable<LqHytkJksyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); | |
| 362 | + await _db.Deleteable<LqHytkKjbsyjEntity>().Where(x => x.Gltkbh == id).ExecuteCommandAsync(); | |
| 393 | 363 | |
| 394 | 364 | // 收集所有需要插入的实体,然后批量插入 |
| 395 | 365 | var allMxEntities = new List<LqHytkMxEntity>(); |
| ... | ... | @@ -416,8 +386,7 @@ namespace NCC.Extend.LqHytkHytk |
| 416 | 386 | F_ProjectNumber = item.F_ProjectNumber ?? 1, |
| 417 | 387 | F_IsEnabled = item.F_IsEnabled ?? 1, |
| 418 | 388 | F_SourceType = item.F_SourceType, |
| 419 | - F_TotalPrice = | |
| 420 | - item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), | |
| 389 | + F_TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), | |
| 421 | 390 | }; |
| 422 | 391 | allMxEntities.Add(lqHytkMxEntity); |
| 423 | 392 | |
| ... | ... | @@ -501,7 +470,9 @@ namespace NCC.Extend.LqHytkHytk |
| 501 | 470 | throw NCCException.Oh(ErrorCode.COM1005, ex.Message); |
| 502 | 471 | } |
| 503 | 472 | } |
| 473 | + #endregion | |
| 504 | 474 | |
| 475 | + #region 删除退卡信息 | |
| 505 | 476 | /// <summary> |
| 506 | 477 | /// 删除退卡信息 |
| 507 | 478 | /// </summary> |
| ... | ... | @@ -517,7 +488,9 @@ namespace NCC.Extend.LqHytkHytk |
| 517 | 488 | await _lqHytkHytkRepository.UpdateAsync(entity); |
| 518 | 489 | } |
| 519 | 490 | } |
| 491 | + #endregion | |
| 520 | 492 | |
| 493 | + #region 获取退卡信息详情 | |
| 521 | 494 | /// <summary> |
| 522 | 495 | /// 获取退卡信息详情 |
| 523 | 496 | /// </summary> |
| ... | ... | @@ -551,19 +524,13 @@ namespace NCC.Extend.LqHytkHytk |
| 551 | 524 | var output = entity.Adapt<LqHytkHytkInfoOutput>(); |
| 552 | 525 | |
| 553 | 526 | // 2. 查询品项明细列表 |
| 554 | - var lqHytkMxList = await _db.Queryable<LqHytkMxEntity>() | |
| 555 | - .Where(w => w.Gltkbh == entity.Id) | |
| 556 | - .ToListAsync(); | |
| 527 | + var lqHytkMxList = await _db.Queryable<LqHytkMxEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync(); | |
| 557 | 528 | |
| 558 | 529 | // 3. 查询健康师业绩列表 |
| 559 | - var lqHytkJksyjList = await _db.Queryable<LqHytkJksyjEntity>() | |
| 560 | - .Where(w => w.Gltkbh == entity.Id) | |
| 561 | - .ToListAsync(); | |
| 530 | + var lqHytkJksyjList = await _db.Queryable<LqHytkJksyjEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync(); | |
| 562 | 531 | |
| 563 | 532 | // 4. 查询科技部老师业绩列表 |
| 564 | - var lqHytkKjbsyjList = await _db.Queryable<LqHytkKjbsyjEntity>() | |
| 565 | - .Where(w => w.Gltkbh == entity.Id) | |
| 566 | - .ToListAsync(); | |
| 533 | + var lqHytkKjbsyjList = await _db.Queryable<LqHytkKjbsyjEntity>().Where(w => w.Gltkbh == entity.Id).ToListAsync(); | |
| 567 | 534 | |
| 568 | 535 | // 5. 构建品项明细输出,每个品项关联对应的业绩信息 |
| 569 | 536 | var mxOutputList = new List<LqHytkMxInfoOutput>(); |
| ... | ... | @@ -584,11 +551,11 @@ namespace NCC.Extend.LqHytkHytk |
| 584 | 551 | }; |
| 585 | 552 | |
| 586 | 553 | // 关联该品项的健康师业绩 |
| 587 | - var jksyjForMx = lqHytkJksyjList.Where(j => j.F_tkpxid == mx.Id).ToList(); | |
| 554 | + var jksyjForMx = lqHytkJksyjList.Where(j => j.CardReturn == mx.Id).ToList(); | |
| 588 | 555 | mxOutput.lqHytkJksyjList = jksyjForMx.Adapt<List<LqHytkJksyjInfoOutput>>(); |
| 589 | 556 | |
| 590 | 557 | // 关联该品项的科技部老师业绩 |
| 591 | - var kjbsyjForMx = lqHytkKjbsyjList.Where(k => k.F_tkpxid == mx.Id).ToList(); | |
| 558 | + var kjbsyjForMx = lqHytkKjbsyjList.Where(k => k.CardReturn == mx.Id).ToList(); | |
| 592 | 559 | mxOutput.lqHytkKjbsyjList = kjbsyjForMx.Adapt<List<LqHytkKjbsyjInfoOutput>>(); |
| 593 | 560 | |
| 594 | 561 | mxOutputList.Add(mxOutput); |
| ... | ... | @@ -608,5 +575,6 @@ namespace NCC.Extend.LqHytkHytk |
| 608 | 575 | throw NCCException.Oh(ErrorCode.COM1000, "获取退卡记录失败"); |
| 609 | 576 | } |
| 610 | 577 | } |
| 578 | + #endregion | |
| 611 | 579 | } |
| 612 | 580 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend/LqJlmxbService.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 | 10 | using NCC.Common.Enum; |
| 3 | 11 | using NCC.Common.Extension; |
| 4 | 12 | using NCC.Common.Filter; |
| 13 | +using NCC.Common.Helper; | |
| 14 | +using NCC.Common.Model.NPOI; | |
| 15 | +using NCC.DataEncryption; | |
| 5 | 16 | using NCC.Dependency; |
| 6 | 17 | using NCC.DynamicApiController; |
| 7 | -using NCC.FriendlyException; | |
| 18 | +using NCC.Extend.Entitys.Dto.LqJlmxb; | |
| 19 | +using NCC.Extend.Entitys.lq_jlmxb; | |
| 8 | 20 | using NCC.Extend.Interfaces.LqJlmxb; |
| 9 | -using Mapster; | |
| 10 | -using Microsoft.AspNetCore.Mvc; | |
| 21 | +using NCC.FriendlyException; | |
| 22 | +using NCC.JsonSerialization; | |
| 11 | 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_jlmxb; | |
| 17 | -using NCC.Extend.Entitys.Dto.LqJlmxb; | |
| 18 | 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 | 26 | namespace NCC.Extend.LqJlmxb |
| 27 | 27 | { |
| 28 | 28 | /// <summary> |
| 29 | 29 | /// 奖励统计表服务 |
| 30 | 30 | /// </summary> |
| 31 | - [ApiDescriptionSettings(Tag = "Extend",Name = "LqJlmxb", Order = 200)] | |
| 31 | + [ApiDescriptionSettings(Tag = "Extend", Name = "LqJlmxb", Order = 200)] | |
| 32 | 32 | [Route("api/Extend/[controller]")] |
| 33 | 33 | public class LqJlmxbService : ILqJlmxbService, IDynamicApiController, ITransient |
| 34 | 34 | { |
| ... | ... | @@ -39,11 +39,9 @@ namespace NCC.Extend.LqJlmxb |
| 39 | 39 | /// <summary> |
| 40 | 40 | /// 初始化一个<see cref="LqJlmxbService"/>类型的新实例 |
| 41 | 41 | /// </summary> |
| 42 | - public LqJlmxbService( | |
| 43 | - ISqlSugarRepository<LqJlmxbEntity> lqJlmxbRepository, | |
| 44 | - IUserManager userManager) | |
| 42 | + public LqJlmxbService(ISqlSugarRepository<LqJlmxbEntity> lqJlmxbRepository, IUserManager userManager) | |
| 45 | 43 | { |
| 46 | - _lqJlmxbRepository = lqJlmxbRepository; | |
| 44 | + _lqJlmxbRepository = lqJlmxbRepository; | |
| 47 | 45 | _db = _lqJlmxbRepository.Context; |
| 48 | 46 | _userManager = userManager; |
| 49 | 47 | } |
| ... | ... | @@ -62,10 +60,10 @@ namespace NCC.Extend.LqJlmxb |
| 62 | 60 | } |
| 63 | 61 | |
| 64 | 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 | 67 | [HttpGet("")] |
| 70 | 68 | public async Task<dynamic> GetList([FromQuery] LqJlmxbListQueryInput input) |
| 71 | 69 | { |
| ... | ... | @@ -87,26 +85,29 @@ namespace NCC.Extend.LqJlmxb |
| 87 | 85 | .WhereIF(!string.IsNullOrEmpty(input.hj), p => p.Hj.Contains(input.hj)) |
| 88 | 86 | .WhereIF(!string.IsNullOrEmpty(input.kcmx), p => p.Kcmx.Contains(input.kcmx)) |
| 89 | 87 | .WhereIF(!string.IsNullOrEmpty(input.bhjb), p => p.Bhjb.Contains(input.bhjb)) |
| 90 | - .Select(it=> new LqJlmxbListOutput | |
| 88 | + .Select(it => new LqJlmxbListOutput | |
| 91 | 89 | { |
| 92 | 90 | id = it.Id, |
| 93 | - mdbh=it.Mdbh, | |
| 94 | - mdmc=it.Mdmc, | |
| 95 | - gw=it.Gw, | |
| 96 | - jks=it.Jks, | |
| 97 | - ymmsk=it.Ymmsk, | |
| 98 | - kjbmsk=it.Kjbmsk, | |
| 99 | - cjj=it.Cjj, | |
| 100 | - pk=it.Pk, | |
| 101 | - ty=it.Ty, | |
| 102 | - db=it.Db, | |
| 103 | - cs=it.Cs, | |
| 104 | - jb=it.Jb, | |
| 105 | - hj=it.Hj, | |
| 106 | - kcmx=it.Kcmx, | |
| 107 | - bhjb=it.Bhjb, | |
| 108 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize); | |
| 109 | - return PageResult<LqJlmxbListOutput>.SqlSugarPageResult(data); | |
| 91 | + mdbh = it.Mdbh, | |
| 92 | + mdmc = it.Mdmc, | |
| 93 | + gw = it.Gw, | |
| 94 | + jks = it.Jks, | |
| 95 | + ymmsk = it.Ymmsk, | |
| 96 | + kjbmsk = it.Kjbmsk, | |
| 97 | + cjj = it.Cjj, | |
| 98 | + pk = it.Pk, | |
| 99 | + ty = it.Ty, | |
| 100 | + db = it.Db, | |
| 101 | + cs = it.Cs, | |
| 102 | + jb = it.Jb, | |
| 103 | + hj = it.Hj, | |
| 104 | + kcmx = it.Kcmx, | |
| 105 | + bhjb = it.Bhjb, | |
| 106 | + }) | |
| 107 | + .MergeTable() | |
| 108 | + .OrderBy(sidx + " " + input.sort) | |
| 109 | + .ToPagedListAsync(input.currentPage, input.pageSize); | |
| 110 | + return PageResult<LqJlmxbListOutput>.SqlSugarPageResult(data); | |
| 110 | 111 | } |
| 111 | 112 | |
| 112 | 113 | /// <summary> |
| ... | ... | @@ -121,14 +122,15 @@ namespace NCC.Extend.LqJlmxb |
| 121 | 122 | var entity = input.Adapt<LqJlmxbEntity>(); |
| 122 | 123 | entity.Id = YitIdHelper.NextId().ToString(); |
| 123 | 124 | var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); |
| 124 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); | |
| 125 | + if (!(isOk > 0)) | |
| 126 | + throw NCCException.Oh(ErrorCode.COM1000); | |
| 125 | 127 | } |
| 126 | 128 | |
| 127 | 129 | /// <summary> |
| 128 | - /// 获取奖励统计表无分页列表 | |
| 129 | - /// </summary> | |
| 130 | - /// <param name="input">请求参数</param> | |
| 131 | - /// <returns></returns> | |
| 130 | + /// 获取奖励统计表无分页列表 | |
| 131 | + /// </summary> | |
| 132 | + /// <param name="input">请求参数</param> | |
| 133 | + /// <returns></returns> | |
| 132 | 134 | [NonAction] |
| 133 | 135 | public async Task<dynamic> GetNoPagingList([FromQuery] LqJlmxbListQueryInput input) |
| 134 | 136 | { |
| ... | ... | @@ -150,33 +152,36 @@ namespace NCC.Extend.LqJlmxb |
| 150 | 152 | .WhereIF(!string.IsNullOrEmpty(input.hj), p => p.Hj.Contains(input.hj)) |
| 151 | 153 | .WhereIF(!string.IsNullOrEmpty(input.kcmx), p => p.Kcmx.Contains(input.kcmx)) |
| 152 | 154 | .WhereIF(!string.IsNullOrEmpty(input.bhjb), p => p.Bhjb.Contains(input.bhjb)) |
| 153 | - .Select(it=> new LqJlmxbListOutput | |
| 155 | + .Select(it => new LqJlmxbListOutput | |
| 154 | 156 | { |
| 155 | 157 | id = it.Id, |
| 156 | - mdbh=it.Mdbh, | |
| 157 | - mdmc=it.Mdmc, | |
| 158 | - gw=it.Gw, | |
| 159 | - jks=it.Jks, | |
| 160 | - ymmsk=it.Ymmsk, | |
| 161 | - kjbmsk=it.Kjbmsk, | |
| 162 | - cjj=it.Cjj, | |
| 163 | - pk=it.Pk, | |
| 164 | - ty=it.Ty, | |
| 165 | - db=it.Db, | |
| 166 | - cs=it.Cs, | |
| 167 | - jb=it.Jb, | |
| 158 | + mdbh = it.Mdbh, | |
| 159 | + mdmc = it.Mdmc, | |
| 160 | + gw = it.Gw, | |
| 161 | + jks = it.Jks, | |
| 162 | + ymmsk = it.Ymmsk, | |
| 163 | + kjbmsk = it.Kjbmsk, | |
| 164 | + cjj = it.Cjj, | |
| 165 | + pk = it.Pk, | |
| 166 | + ty = it.Ty, | |
| 167 | + db = it.Db, | |
| 168 | + cs = it.Cs, | |
| 169 | + jb = it.Jb, | |
| 168 | 170 | hj = it.Hj, |
| 169 | - kcmx=it.Kcmx, | |
| 170 | - bhjb=it.Bhjb, | |
| 171 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync(); | |
| 172 | - return data; | |
| 171 | + kcmx = it.Kcmx, | |
| 172 | + bhjb = it.Bhjb, | |
| 173 | + }) | |
| 174 | + .MergeTable() | |
| 175 | + .OrderBy(sidx + " " + input.sort) | |
| 176 | + .ToListAsync(); | |
| 177 | + return data; | |
| 173 | 178 | } |
| 174 | 179 | |
| 175 | 180 | /// <summary> |
| 176 | - /// 导出奖励统计表 | |
| 177 | - /// </summary> | |
| 178 | - /// <param name="input">请求参数</param> | |
| 179 | - /// <returns></returns> | |
| 181 | + /// 导出奖励统计表 | |
| 182 | + /// </summary> | |
| 183 | + /// <param name="input">请求参数</param> | |
| 184 | + /// <returns></returns> | |
| 180 | 185 | [HttpGet("Actions/Export")] |
| 181 | 186 | public async Task<dynamic> Export([FromQuery] LqJlmxbListQueryInput input) |
| 182 | 187 | { |
| ... | ... | @@ -191,7 +196,8 @@ namespace NCC.Extend.LqJlmxb |
| 191 | 196 | { |
| 192 | 197 | exportData = await this.GetNoPagingList(input); |
| 193 | 198 | } |
| 194 | - List<ParamsModel> paramList = "[{\"value\":\"奖励编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"岗位\",\"field\":\"gw\"},{\"value\":\"健康师\",\"field\":\"jks\"},{\"value\":\"医美秒杀卡\",\"field\":\"ymmsk\"},{\"value\":\"科技部秒杀卡\",\"field\":\"kjbmsk\"},{\"value\":\"成交奖\",\"field\":\"cjj\"},{\"value\":\"PK\",\"field\":\"pk\"},{\"value\":\"体验\",\"field\":\"ty\"},{\"value\":\"打版\",\"field\":\"db\"},{\"value\":\"沉睡\",\"field\":\"cs\"},{\"value\":\"嘉宾\",\"field\":\"jb\"},{\"value\":\"合计\",\"field\":\"hj\"},{\"value\":\"扣除明细\",\"field\":\"kcmx\"},{\"value\":\"不含嘉宾\",\"field\":\"bhjb\"},]".ToList<ParamsModel>(); | |
| 199 | + List<ParamsModel> paramList = | |
| 200 | + "[{\"value\":\"奖励编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"岗位\",\"field\":\"gw\"},{\"value\":\"健康师\",\"field\":\"jks\"},{\"value\":\"医美秒杀卡\",\"field\":\"ymmsk\"},{\"value\":\"科技部秒杀卡\",\"field\":\"kjbmsk\"},{\"value\":\"成交奖\",\"field\":\"cjj\"},{\"value\":\"PK\",\"field\":\"pk\"},{\"value\":\"体验\",\"field\":\"ty\"},{\"value\":\"打版\",\"field\":\"db\"},{\"value\":\"沉睡\",\"field\":\"cs\"},{\"value\":\"嘉宾\",\"field\":\"jb\"},{\"value\":\"合计\",\"field\":\"hj\"},{\"value\":\"扣除明细\",\"field\":\"kcmx\"},{\"value\":\"不含嘉宾\",\"field\":\"bhjb\"},]".ToList<ParamsModel>(); | |
| 195 | 201 | ExcelConfig excelconfig = new ExcelConfig(); |
| 196 | 202 | excelconfig.FileName = "奖励统计表.xls"; |
| 197 | 203 | excelconfig.HeadFont = "微软雅黑"; |
| ... | ... | @@ -210,11 +216,7 @@ namespace NCC.Extend.LqJlmxb |
| 210 | 216 | var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; |
| 211 | 217 | ExcelExportHelper<LqJlmxbListOutput>.Export(exportData, excelconfig, addPath); |
| 212 | 218 | var fileName = _userManager.UserId + "|" + addPath + "|xls"; |
| 213 | - var output = new | |
| 214 | - { | |
| 215 | - name = excelconfig.FileName, | |
| 216 | - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") | |
| 217 | - }; | |
| 219 | + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") }; | |
| 218 | 220 | return output; |
| 219 | 221 | } |
| 220 | 222 | |
| ... | ... | @@ -234,7 +236,7 @@ namespace NCC.Extend.LqJlmxb |
| 234 | 236 | //开启事务 |
| 235 | 237 | _db.BeginTran(); |
| 236 | 238 | //批量删除奖励统计表 |
| 237 | - await _db.Deleteable<LqJlmxbEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); | |
| 239 | + await _db.Deleteable<LqJlmxbEntity>().In(d => d.Id, ids).ExecuteCommandAsync(); | |
| 238 | 240 | //关闭事务 |
| 239 | 241 | _db.CommitTran(); |
| 240 | 242 | } |
| ... | ... | @@ -258,7 +260,8 @@ namespace NCC.Extend.LqJlmxb |
| 258 | 260 | { |
| 259 | 261 | var entity = input.Adapt<LqJlmxbEntity>(); |
| 260 | 262 | var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); |
| 261 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); | |
| 263 | + if (!(isOk > 0)) | |
| 264 | + throw NCCException.Oh(ErrorCode.COM1001); | |
| 262 | 265 | } |
| 263 | 266 | |
| 264 | 267 | /// <summary> |
| ... | ... | @@ -271,7 +274,8 @@ namespace NCC.Extend.LqJlmxb |
| 271 | 274 | var entity = await _db.Queryable<LqJlmxbEntity>().FirstAsync(p => p.Id == id); |
| 272 | 275 | _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); |
| 273 | 276 | var isOk = await _db.Deleteable<LqJlmxbEntity>().Where(d => d.Id == id).ExecuteCommandAsync(); |
| 274 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); | |
| 277 | + if (!(isOk > 0)) | |
| 278 | + throw NCCException.Oh(ErrorCode.COM1002); | |
| 275 | 279 | } |
| 276 | 280 | } |
| 277 | 281 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.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 | 10 | using NCC.Common.Enum; |
| 3 | 11 | using NCC.Common.Extension; |
| 4 | 12 | using NCC.Common.Filter; |
| 13 | +using NCC.Common.Helper; | |
| 14 | +using NCC.Common.Model.NPOI; | |
| 15 | +using NCC.DataEncryption; | |
| 5 | 16 | using NCC.Dependency; |
| 6 | 17 | using NCC.DynamicApiController; |
| 7 | -using NCC.FriendlyException; | |
| 8 | -using NCC.Extend.Interfaces.LqTkjlb; | |
| 9 | -using Mapster; | |
| 10 | -using Microsoft.AspNetCore.Mvc; | |
| 11 | -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_tkjlb; | |
| 17 | -using NCC.Extend.Entitys.lq_ryzl; | |
| 18 | 18 | using NCC.Extend.Entitys.Dto.LqTkjlb; |
| 19 | -using Yitter.IdGenerator; | |
| 20 | -using NCC.Common.Helper; | |
| 19 | +using NCC.Extend.Entitys.lq_ryzl; | |
| 20 | +using NCC.Extend.Entitys.lq_tkjlb; | |
| 21 | +using NCC.Extend.Interfaces.LqTkjlb; | |
| 22 | +using NCC.FriendlyException; | |
| 21 | 23 | using NCC.JsonSerialization; |
| 22 | -using NCC.Common.Model.NPOI; | |
| 23 | -using NCC.Common.Configuration; | |
| 24 | -using NCC.DataEncryption; | |
| 25 | -using NCC.ClayObject; | |
| 26 | 24 | using NCC.System.Entitys.Permission; |
| 25 | +using SqlSugar; | |
| 26 | +using Yitter.IdGenerator; | |
| 27 | 27 | |
| 28 | 28 | namespace NCC.Extend.LqTkjlb |
| 29 | 29 | { |
| 30 | 30 | /// <summary> |
| 31 | 31 | /// 拓客管理服务 |
| 32 | 32 | /// </summary> |
| 33 | - [ApiDescriptionSettings(Tag = "Extend",Name = "LqTkjlb", Order = 200)] | |
| 33 | + [ApiDescriptionSettings(Tag = "Extend", Name = "LqTkjlb", Order = 200)] | |
| 34 | 34 | [Route("api/Extend/[controller]")] |
| 35 | 35 | public class LqTkjlbService : ILqTkjlbService, IDynamicApiController, ITransient |
| 36 | 36 | { |
| ... | ... | @@ -41,15 +41,14 @@ namespace NCC.Extend.LqTkjlb |
| 41 | 41 | /// <summary> |
| 42 | 42 | /// 初始化一个<see cref="LqTkjlbService"/>类型的新实例 |
| 43 | 43 | /// </summary> |
| 44 | - public LqTkjlbService( | |
| 45 | - ISqlSugarRepository<LqTkjlbEntity> lqTkjlbRepository, | |
| 46 | - IUserManager userManager) | |
| 44 | + public LqTkjlbService(ISqlSugarRepository<LqTkjlbEntity> lqTkjlbRepository, IUserManager userManager) | |
| 47 | 45 | { |
| 48 | - _lqTkjlbRepository = lqTkjlbRepository; | |
| 46 | + _lqTkjlbRepository = lqTkjlbRepository; | |
| 49 | 47 | _db = _lqTkjlbRepository.Context; |
| 50 | 48 | _userManager = userManager; |
| 51 | 49 | } |
| 52 | 50 | |
| 51 | + #region 获取拓客管理 | |
| 53 | 52 | /// <summary> |
| 54 | 53 | /// 获取拓客管理 |
| 55 | 54 | /// </summary> |
| ... | ... | @@ -62,12 +61,14 @@ namespace NCC.Extend.LqTkjlb |
| 62 | 61 | var output = entity.Adapt<LqTkjlbInfoOutput>(); |
| 63 | 62 | return output; |
| 64 | 63 | } |
| 64 | + #endregion | |
| 65 | + #region 获取拓客管理列表 | |
| 65 | 66 | |
| 66 | 67 | /// <summary> |
| 67 | - /// 获取拓客管理列表 | |
| 68 | - /// </summary> | |
| 69 | - /// <param name="input">请求参数</param> | |
| 70 | - /// <returns></returns> | |
| 68 | + /// 获取拓客管理列表 | |
| 69 | + /// </summary> | |
| 70 | + /// <param name="input">请求参数</param> | |
| 71 | + /// <returns></returns> | |
| 71 | 72 | [HttpGet("")] |
| 72 | 73 | public async Task<dynamic> GetList([FromQuery] LqTkjlbListQueryInput input) |
| 73 | 74 | { |
| ... | ... | @@ -88,25 +89,29 @@ namespace NCC.Extend.LqTkjlb |
| 88 | 89 | .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz)) |
| 89 | 90 | .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd)) |
| 90 | 91 | .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) |
| 91 | - .Select(it=> new LqTkjlbListOutput | |
| 92 | + .Select(it => new LqTkjlbListOutput | |
| 92 | 93 | { |
| 93 | 94 | id = it.Id, |
| 94 | - tksj=it.Tksj, | |
| 95 | - // tkry=it.Tkry, | |
| 95 | + tksj = it.Tksj, | |
| 96 | + // tkry=it.Tkry, | |
| 96 | 97 | tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), |
| 97 | 98 | |
| 98 | - gkxm=it.Gkxm, | |
| 99 | - dhhm=it.Dhhm, | |
| 100 | - gmzs=it.Gmzs, | |
| 101 | - zffs=it.Zffs, | |
| 102 | - sfjwx=it.Sfjwx, | |
| 103 | - bz=it.Bz, | |
| 104 | - ssmd=it.Ssmd, | |
| 105 | - sszd=it.Sszd, | |
| 106 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize); | |
| 107 | - return PageResult<LqTkjlbListOutput>.SqlSugarPageResult(data); | |
| 99 | + gkxm = it.Gkxm, | |
| 100 | + dhhm = it.Dhhm, | |
| 101 | + gmzs = it.Gmzs, | |
| 102 | + zffs = it.Zffs, | |
| 103 | + sfjwx = it.Sfjwx, | |
| 104 | + bz = it.Bz, | |
| 105 | + ssmd = it.Ssmd, | |
| 106 | + sszd = it.Sszd, | |
| 107 | + }) | |
| 108 | + .MergeTable() | |
| 109 | + .OrderBy(sidx + " " + input.sort) | |
| 110 | + .ToPagedListAsync(input.currentPage, input.pageSize); | |
| 111 | + return PageResult<LqTkjlbListOutput>.SqlSugarPageResult(data); | |
| 108 | 112 | } |
| 109 | - | |
| 113 | + #endregion | |
| 114 | + #region 新建拓客管理 | |
| 110 | 115 | /// <summary> |
| 111 | 116 | /// 新建拓客管理 |
| 112 | 117 | /// </summary> |
| ... | ... | @@ -127,14 +132,16 @@ namespace NCC.Extend.LqTkjlb |
| 127 | 132 | } |
| 128 | 133 | |
| 129 | 134 | var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); |
| 130 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); | |
| 135 | + if (!(isOk > 0)) | |
| 136 | + throw NCCException.Oh(ErrorCode.COM1000); | |
| 131 | 137 | } |
| 132 | - | |
| 138 | + #endregion | |
| 139 | + #region 获取拓客管理无分页列表 | |
| 133 | 140 | /// <summary> |
| 134 | - /// 获取拓客管理无分页列表 | |
| 135 | - /// </summary> | |
| 136 | - /// <param name="input">请求参数</param> | |
| 137 | - /// <returns></returns> | |
| 141 | + /// 获取拓客管理无分页列表 | |
| 142 | + /// </summary> | |
| 143 | + /// <param name="input">请求参数</param> | |
| 144 | + /// <returns></returns> | |
| 138 | 145 | [NonAction] |
| 139 | 146 | public async Task<dynamic> GetNoPagingList([FromQuery] LqTkjlbListQueryInput input) |
| 140 | 147 | { |
| ... | ... | @@ -155,28 +162,32 @@ namespace NCC.Extend.LqTkjlb |
| 155 | 162 | .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz)) |
| 156 | 163 | .WhereIF(!string.IsNullOrEmpty(input.ssmd), p => p.Ssmd.Contains(input.ssmd)) |
| 157 | 164 | .WhereIF(!string.IsNullOrEmpty(input.sszd), p => p.Sszd.Contains(input.sszd)) |
| 158 | - .Select(it=> new LqTkjlbListOutput | |
| 165 | + .Select(it => new LqTkjlbListOutput | |
| 159 | 166 | { |
| 160 | 167 | id = it.Id, |
| 161 | - tksj=it.Tksj, | |
| 162 | - tkry=it.Tkry, | |
| 163 | - gkxm=it.Gkxm, | |
| 164 | - dhhm=it.Dhhm, | |
| 165 | - gmzs=it.Gmzs, | |
| 166 | - zffs=it.Zffs, | |
| 167 | - sfjwx=it.Sfjwx, | |
| 168 | - bz=it.Bz, | |
| 169 | - ssmd=it.Ssmd, | |
| 170 | - sszd=it.Sszd, | |
| 171 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync(); | |
| 172 | - return data; | |
| 168 | + tksj = it.Tksj, | |
| 169 | + tkry = it.Tkry, | |
| 170 | + gkxm = it.Gkxm, | |
| 171 | + dhhm = it.Dhhm, | |
| 172 | + gmzs = it.Gmzs, | |
| 173 | + zffs = it.Zffs, | |
| 174 | + sfjwx = it.Sfjwx, | |
| 175 | + bz = it.Bz, | |
| 176 | + ssmd = it.Ssmd, | |
| 177 | + sszd = it.Sszd, | |
| 178 | + }) | |
| 179 | + .MergeTable() | |
| 180 | + .OrderBy(sidx + " " + input.sort) | |
| 181 | + .ToListAsync(); | |
| 182 | + return data; | |
| 173 | 183 | } |
| 174 | - | |
| 184 | + #endregion | |
| 185 | + #region 导出拓客管理 | |
| 175 | 186 | /// <summary> |
| 176 | - /// 导出拓客管理 | |
| 177 | - /// </summary> | |
| 178 | - /// <param name="input">请求参数</param> | |
| 179 | - /// <returns></returns> | |
| 187 | + /// 导出拓客管理 | |
| 188 | + /// </summary> | |
| 189 | + /// <param name="input">请求参数</param> | |
| 190 | + /// <returns></returns> | |
| 180 | 191 | [HttpGet("Actions/Export")] |
| 181 | 192 | public async Task<dynamic> Export([FromQuery] LqTkjlbListQueryInput input) |
| 182 | 193 | { |
| ... | ... | @@ -191,7 +202,8 @@ namespace NCC.Extend.LqTkjlb |
| 191 | 202 | { |
| 192 | 203 | exportData = await this.GetNoPagingList(input); |
| 193 | 204 | } |
| 194 | - List<ParamsModel> paramList = "[{\"value\":\"拓客编号\",\"field\":\"id\"},{\"value\":\"拓客人员\",\"field\":\"tkry\"},{\"value\":\"拓客时间\",\"field\":\"tksj\"},{\"value\":\"顾客姓名\",\"field\":\"gkxm\"},{\"value\":\"电话号码\",\"field\":\"dhhm\"},{\"value\":\"购买张数\",\"field\":\"gmzs\"},{\"value\":\"支付方式\",\"field\":\"zffs\"},{\"value\":\"是否加微信\",\"field\":\"sfjwx\"},{\"value\":\"备注\",\"field\":\"bz\"},{\"value\":\"所属门店\",\"field\":\"ssmd\"},{\"value\":\"所属战队\",\"field\":\"sszd\"},]".ToList<ParamsModel>(); | |
| 205 | + List<ParamsModel> paramList = | |
| 206 | + "[{\"value\":\"拓客编号\",\"field\":\"id\"},{\"value\":\"拓客人员\",\"field\":\"tkry\"},{\"value\":\"拓客时间\",\"field\":\"tksj\"},{\"value\":\"顾客姓名\",\"field\":\"gkxm\"},{\"value\":\"电话号码\",\"field\":\"dhhm\"},{\"value\":\"购买张数\",\"field\":\"gmzs\"},{\"value\":\"支付方式\",\"field\":\"zffs\"},{\"value\":\"是否加微信\",\"field\":\"sfjwx\"},{\"value\":\"备注\",\"field\":\"bz\"},{\"value\":\"所属门店\",\"field\":\"ssmd\"},{\"value\":\"所属战队\",\"field\":\"sszd\"},]".ToList<ParamsModel>(); | |
| 195 | 207 | ExcelConfig excelconfig = new ExcelConfig(); |
| 196 | 208 | excelconfig.FileName = "拓客管理.xls"; |
| 197 | 209 | excelconfig.HeadFont = "微软雅黑"; |
| ... | ... | @@ -210,13 +222,11 @@ namespace NCC.Extend.LqTkjlb |
| 210 | 222 | var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; |
| 211 | 223 | ExcelExportHelper<LqTkjlbListOutput>.Export(exportData, excelconfig, addPath); |
| 212 | 224 | var fileName = _userManager.UserId + "|" + addPath + "|xls"; |
| 213 | - var output = new | |
| 214 | - { | |
| 215 | - name = excelconfig.FileName, | |
| 216 | - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") | |
| 217 | - }; | |
| 225 | + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") }; | |
| 218 | 226 | return output; |
| 219 | 227 | } |
| 228 | + #endregion | |
| 229 | + #region 批量删除拓客管理 | |
| 220 | 230 | |
| 221 | 231 | /// <summary> |
| 222 | 232 | /// 批量删除拓客管理 |
| ... | ... | @@ -234,7 +244,7 @@ namespace NCC.Extend.LqTkjlb |
| 234 | 244 | //开启事务 |
| 235 | 245 | _db.BeginTran(); |
| 236 | 246 | //批量删除拓客管理 |
| 237 | - await _db.Deleteable<LqTkjlbEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); | |
| 247 | + await _db.Deleteable<LqTkjlbEntity>().In(d => d.Id, ids).ExecuteCommandAsync(); | |
| 238 | 248 | //关闭事务 |
| 239 | 249 | _db.CommitTran(); |
| 240 | 250 | } |
| ... | ... | @@ -246,7 +256,8 @@ namespace NCC.Extend.LqTkjlb |
| 246 | 256 | } |
| 247 | 257 | } |
| 248 | 258 | } |
| 249 | - | |
| 259 | + #endregion | |
| 260 | + #region 更新拓客管理 | |
| 250 | 261 | /// <summary> |
| 251 | 262 | /// 更新拓客管理 |
| 252 | 263 | /// </summary> |
| ... | ... | @@ -258,9 +269,11 @@ namespace NCC.Extend.LqTkjlb |
| 258 | 269 | { |
| 259 | 270 | var entity = input.Adapt<LqTkjlbEntity>(); |
| 260 | 271 | var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); |
| 261 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); | |
| 272 | + if (!(isOk > 0)) | |
| 273 | + throw NCCException.Oh(ErrorCode.COM1001); | |
| 262 | 274 | } |
| 263 | - | |
| 275 | + #endregion | |
| 276 | + #region 删除拓客管理 | |
| 264 | 277 | /// <summary> |
| 265 | 278 | /// 删除拓客管理 |
| 266 | 279 | /// </summary> |
| ... | ... | @@ -271,9 +284,11 @@ namespace NCC.Extend.LqTkjlb |
| 271 | 284 | var entity = await _db.Queryable<LqTkjlbEntity>().FirstAsync(p => p.Id == id); |
| 272 | 285 | _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); |
| 273 | 286 | var isOk = await _db.Deleteable<LqTkjlbEntity>().Where(d => d.Id == id).ExecuteCommandAsync(); |
| 274 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); | |
| 287 | + if (!(isOk > 0)) | |
| 288 | + throw NCCException.Oh(ErrorCode.COM1002); | |
| 275 | 289 | } |
| 276 | - | |
| 290 | + #endregion | |
| 291 | + #region 获取拓客排行榜 | |
| 277 | 292 | /// <summary> |
| 278 | 293 | /// 获取拓客排行榜 |
| 279 | 294 | /// </summary> |
| ... | ... | @@ -281,14 +296,7 @@ namespace NCC.Extend.LqTkjlb |
| 281 | 296 | [HttpGet("Actions/GetRanking")] |
| 282 | 297 | public async Task<dynamic> GetRanking() |
| 283 | 298 | { |
| 284 | - var data = await _db.Queryable<LqTkjlbEntity>() | |
| 285 | - .GroupBy(it => it.Sszd) | |
| 286 | - .Select(it => new LqTkjlbRankingOutput | |
| 287 | - { | |
| 288 | - sszd = it.Sszd, | |
| 289 | - tkrs = SqlFunc.AggregateCount(it.Id) | |
| 290 | - }) | |
| 291 | - .ToListAsync(); | |
| 299 | + var data = await _db.Queryable<LqTkjlbEntity>().GroupBy(it => it.Sszd).Select(it => new LqTkjlbRankingOutput { sszd = it.Sszd, tkrs = SqlFunc.AggregateCount(it.Id) }).ToListAsync(); | |
| 292 | 300 | |
| 293 | 301 | // 在内存中排序并添加排名 |
| 294 | 302 | var sortedData = data.OrderByDescending(it => it.tkrs).ToList(); |
| ... | ... | @@ -299,7 +307,8 @@ namespace NCC.Extend.LqTkjlb |
| 299 | 307 | |
| 300 | 308 | return sortedData; |
| 301 | 309 | } |
| 302 | - | |
| 310 | + #endregion | |
| 311 | + #region 获取战队人员详细报表 | |
| 303 | 312 | /// <summary> |
| 304 | 313 | /// 获取战队人员详细报表 |
| 305 | 314 | /// </summary> |
| ... | ... | @@ -310,10 +319,7 @@ namespace NCC.Extend.LqTkjlb |
| 310 | 319 | var result = new List<LqTkjlbTeamDetailOutput>(); |
| 311 | 320 | |
| 312 | 321 | // 获取所有战队 |
| 313 | - var teams = await _db.Queryable<LqTkjlbEntity>() | |
| 314 | - .GroupBy(it => it.Sszd) | |
| 315 | - .Select(it => it.Sszd) | |
| 316 | - .ToListAsync(); | |
| 322 | + var teams = await _db.Queryable<LqTkjlbEntity>().GroupBy(it => it.Sszd).Select(it => it.Sszd).ToListAsync(); | |
| 317 | 323 | |
| 318 | 324 | foreach (var team in teams) |
| 319 | 325 | { |
| ... | ... | @@ -323,15 +329,15 @@ namespace NCC.Extend.LqTkjlb |
| 323 | 329 | .GroupBy(it => it.Tkry) |
| 324 | 330 | .Select(it => new |
| 325 | 331 | { |
| 326 | - // tkry = it.Tkry, | |
| 327 | - tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), | |
| 328 | - tkrs = SqlFunc.AggregateCount(it.Id) | |
| 332 | + // tkry = it.Tkry, | |
| 333 | + tkry = SqlFunc.Subqueryable<UserEntity>().Where(u => u.MobilePhone == it.Tkry).Select(u => u.RealName), | |
| 334 | + tkrs = SqlFunc.AggregateCount(it.Id), | |
| 329 | 335 | }) |
| 330 | 336 | .ToListAsync(); |
| 331 | 337 | |
| 332 | 338 | // 按拓客数量排序 |
| 333 | 339 | var sortedMembers = teamMembers.OrderByDescending(m => m.tkrs).ToList(); |
| 334 | - | |
| 340 | + | |
| 335 | 341 | // 计算战队总拓客数量 |
| 336 | 342 | var totalCount = sortedMembers.Sum(m => m.tkrs); |
| 337 | 343 | |
| ... | ... | @@ -340,7 +346,7 @@ namespace NCC.Extend.LqTkjlb |
| 340 | 346 | { |
| 341 | 347 | sszd = team, |
| 342 | 348 | totalCount = totalCount, |
| 343 | - members = new List<TeamMemberDetail>() | |
| 349 | + members = new List<TeamMemberDetail>(), | |
| 344 | 350 | }; |
| 345 | 351 | |
| 346 | 352 | // 添加成员详情 |
| ... | ... | @@ -348,14 +354,16 @@ namespace NCC.Extend.LqTkjlb |
| 348 | 354 | { |
| 349 | 355 | var member = sortedMembers[i]; |
| 350 | 356 | var percentage = totalCount > 0 ? (int)Math.Round((double)member.tkrs / totalCount * 100) : 0; |
| 351 | - | |
| 352 | - teamDetail.members.Add(new TeamMemberDetail | |
| 353 | - { | |
| 354 | - tkry = member.tkry, | |
| 355 | - tkrs = member.tkrs, | |
| 356 | - teamRanking = i + 1, | |
| 357 | - percentage = percentage | |
| 358 | - }); | |
| 357 | + | |
| 358 | + teamDetail.members.Add( | |
| 359 | + new TeamMemberDetail | |
| 360 | + { | |
| 361 | + tkry = member.tkry, | |
| 362 | + tkrs = member.tkrs, | |
| 363 | + teamRanking = i + 1, | |
| 364 | + percentage = percentage, | |
| 365 | + } | |
| 366 | + ); | |
| 359 | 367 | } |
| 360 | 368 | |
| 361 | 369 | result.Add(teamDetail); |
| ... | ... | @@ -364,5 +372,6 @@ namespace NCC.Extend.LqTkjlb |
| 364 | 372 | // 按战队总拓客数量排序 |
| 365 | 373 | return result.OrderByDescending(t => t.totalCount).ToList(); |
| 366 | 374 | } |
| 375 | + #endregion | |
| 367 | 376 | } |
| 368 | 377 | } | ... | ... |
netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.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 | 10 | using NCC.Common.Enum; |
| 3 | 11 | using NCC.Common.Extension; |
| 4 | 12 | using NCC.Common.Filter; |
| 13 | +using NCC.Common.Helper; | |
| 14 | +using NCC.Common.Model.NPOI; | |
| 15 | +using NCC.DataEncryption; | |
| 5 | 16 | using NCC.Dependency; |
| 6 | 17 | using NCC.DynamicApiController; |
| 7 | -using NCC.FriendlyException; | |
| 18 | +using NCC.Extend.Entitys.Dto.LqYxhdfa; | |
| 19 | +using NCC.Extend.Entitys.lq_yxhdfa; | |
| 8 | 20 | using NCC.Extend.Interfaces.LqYxhdfa; |
| 9 | -using Mapster; | |
| 10 | -using Microsoft.AspNetCore.Mvc; | |
| 21 | +using NCC.FriendlyException; | |
| 22 | +using NCC.JsonSerialization; | |
| 11 | 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_yxhdfa; | |
| 17 | -using NCC.Extend.Entitys.Dto.LqYxhdfa; | |
| 18 | 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 | 26 | namespace NCC.Extend.LqYxhdfa |
| 27 | 27 | { |
| 28 | 28 | /// <summary> |
| 29 | 29 | /// 营销活动方案服务 |
| 30 | 30 | /// </summary> |
| 31 | - [ApiDescriptionSettings(Tag = "Extend",Name = "LqYxhdfa", Order = 200)] | |
| 31 | + [ApiDescriptionSettings(Tag = "Extend", Name = "LqYxhdfa", Order = 200)] | |
| 32 | 32 | [Route("api/Extend/[controller]")] |
| 33 | 33 | public class LqYxhdfaService : ILqYxhdfaService, IDynamicApiController, ITransient |
| 34 | 34 | { |
| ... | ... | @@ -39,11 +39,9 @@ namespace NCC.Extend.LqYxhdfa |
| 39 | 39 | /// <summary> |
| 40 | 40 | /// 初始化一个<see cref="LqYxhdfaService"/>类型的新实例 |
| 41 | 41 | /// </summary> |
| 42 | - public LqYxhdfaService( | |
| 43 | - ISqlSugarRepository<LqYxhdfaEntity> lqYxhdfaRepository, | |
| 44 | - IUserManager userManager) | |
| 42 | + public LqYxhdfaService(ISqlSugarRepository<LqYxhdfaEntity> lqYxhdfaRepository, IUserManager userManager) | |
| 45 | 43 | { |
| 46 | - _lqYxhdfaRepository = lqYxhdfaRepository; | |
| 44 | + _lqYxhdfaRepository = lqYxhdfaRepository; | |
| 47 | 45 | _db = _lqYxhdfaRepository.Context; |
| 48 | 46 | _userManager = userManager; |
| 49 | 47 | } |
| ... | ... | @@ -62,10 +60,10 @@ namespace NCC.Extend.LqYxhdfa |
| 62 | 60 | } |
| 63 | 61 | |
| 64 | 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 | 67 | [HttpGet("")] |
| 70 | 68 | public async Task<dynamic> GetList([FromQuery] LqYxhdfaListQueryInput input) |
| 71 | 69 | { |
| ... | ... | @@ -76,15 +74,18 @@ namespace NCC.Extend.LqYxhdfa |
| 76 | 74 | .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc)) |
| 77 | 75 | .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj)) |
| 78 | 76 | .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej)) |
| 79 | - .Select(it=> new LqYxhdfaListOutput | |
| 77 | + .Select(it => new LqYxhdfaListOutput | |
| 80 | 78 | { |
| 81 | 79 | id = it.Id, |
| 82 | - yxhdbh=it.Yxhdbh, | |
| 83 | - hdmc=it.Hdmc, | |
| 84 | - zsj=it.Zsj, | |
| 85 | - jej=it.Jej, | |
| 86 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToPagedListAsync(input.currentPage, input.pageSize); | |
| 87 | - return PageResult<LqYxhdfaListOutput>.SqlSugarPageResult(data); | |
| 80 | + yxhdbh = it.Yxhdbh, | |
| 81 | + hdmc = it.Hdmc, | |
| 82 | + zsj = it.Zsj, | |
| 83 | + jej = it.Jej, | |
| 84 | + }) | |
| 85 | + .MergeTable() | |
| 86 | + .OrderBy(sidx + " " + input.sort) | |
| 87 | + .ToPagedListAsync(input.currentPage, input.pageSize); | |
| 88 | + return PageResult<LqYxhdfaListOutput>.SqlSugarPageResult(data); | |
| 88 | 89 | } |
| 89 | 90 | |
| 90 | 91 | /// <summary> |
| ... | ... | @@ -99,14 +100,15 @@ namespace NCC.Extend.LqYxhdfa |
| 99 | 100 | var entity = input.Adapt<LqYxhdfaEntity>(); |
| 100 | 101 | entity.Id = YitIdHelper.NextId().ToString(); |
| 101 | 102 | var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync(); |
| 102 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000); | |
| 103 | + if (!(isOk > 0)) | |
| 104 | + throw NCCException.Oh(ErrorCode.COM1000); | |
| 103 | 105 | } |
| 104 | 106 | |
| 105 | 107 | /// <summary> |
| 106 | - /// 获取营销活动方案无分页列表 | |
| 107 | - /// </summary> | |
| 108 | - /// <param name="input">请求参数</param> | |
| 109 | - /// <returns></returns> | |
| 108 | + /// 获取营销活动方案无分页列表 | |
| 109 | + /// </summary> | |
| 110 | + /// <param name="input">请求参数</param> | |
| 111 | + /// <returns></returns> | |
| 110 | 112 | [NonAction] |
| 111 | 113 | public async Task<dynamic> GetNoPagingList([FromQuery] LqYxhdfaListQueryInput input) |
| 112 | 114 | { |
| ... | ... | @@ -117,22 +119,25 @@ namespace NCC.Extend.LqYxhdfa |
| 117 | 119 | .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc)) |
| 118 | 120 | .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj)) |
| 119 | 121 | .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej)) |
| 120 | - .Select(it=> new LqYxhdfaListOutput | |
| 122 | + .Select(it => new LqYxhdfaListOutput | |
| 121 | 123 | { |
| 122 | 124 | id = it.Id, |
| 123 | - yxhdbh=it.Yxhdbh, | |
| 124 | - hdmc=it.Hdmc, | |
| 125 | - zsj=it.Zsj, | |
| 126 | - jej=it.Jej, | |
| 127 | - }).MergeTable().OrderBy(sidx+" "+input.sort).ToListAsync(); | |
| 128 | - return data; | |
| 125 | + yxhdbh = it.Yxhdbh, | |
| 126 | + hdmc = it.Hdmc, | |
| 127 | + zsj = it.Zsj, | |
| 128 | + jej = it.Jej, | |
| 129 | + }) | |
| 130 | + .MergeTable() | |
| 131 | + .OrderBy(sidx + " " + input.sort) | |
| 132 | + .ToListAsync(); | |
| 133 | + return data; | |
| 129 | 134 | } |
| 130 | 135 | |
| 131 | 136 | /// <summary> |
| 132 | - /// 导出营销活动方案 | |
| 133 | - /// </summary> | |
| 134 | - /// <param name="input">请求参数</param> | |
| 135 | - /// <returns></returns> | |
| 137 | + /// 导出营销活动方案 | |
| 138 | + /// </summary> | |
| 139 | + /// <param name="input">请求参数</param> | |
| 140 | + /// <returns></returns> | |
| 136 | 141 | [HttpGet("Actions/Export")] |
| 137 | 142 | public async Task<dynamic> Export([FromQuery] LqYxhdfaListQueryInput input) |
| 138 | 143 | { |
| ... | ... | @@ -147,7 +152,8 @@ namespace NCC.Extend.LqYxhdfa |
| 147 | 152 | { |
| 148 | 153 | exportData = await this.GetNoPagingList(input); |
| 149 | 154 | } |
| 150 | - List<ParamsModel> paramList = "[{\"value\":\"方案编号\",\"field\":\"id\"},{\"value\":\"营销活动编号\",\"field\":\"yxhdbh\"},{\"value\":\"活动名称\",\"field\":\"hdmc\"},{\"value\":\"张数奖\",\"field\":\"zsj\"},{\"value\":\"金额奖\",\"field\":\"jej\"},]".ToList<ParamsModel>(); | |
| 155 | + List<ParamsModel> paramList = | |
| 156 | + "[{\"value\":\"方案编号\",\"field\":\"id\"},{\"value\":\"营销活动编号\",\"field\":\"yxhdbh\"},{\"value\":\"活动名称\",\"field\":\"hdmc\"},{\"value\":\"张数奖\",\"field\":\"zsj\"},{\"value\":\"金额奖\",\"field\":\"jej\"},]".ToList<ParamsModel>(); | |
| 151 | 157 | ExcelConfig excelconfig = new ExcelConfig(); |
| 152 | 158 | excelconfig.FileName = "营销活动方案.xls"; |
| 153 | 159 | excelconfig.HeadFont = "微软雅黑"; |
| ... | ... | @@ -166,11 +172,7 @@ namespace NCC.Extend.LqYxhdfa |
| 166 | 172 | var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName; |
| 167 | 173 | ExcelExportHelper<LqYxhdfaListOutput>.Export(exportData, excelconfig, addPath); |
| 168 | 174 | var fileName = _userManager.UserId + "|" + addPath + "|xls"; |
| 169 | - var output = new | |
| 170 | - { | |
| 171 | - name = excelconfig.FileName, | |
| 172 | - url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") | |
| 173 | - }; | |
| 175 | + var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") }; | |
| 174 | 176 | return output; |
| 175 | 177 | } |
| 176 | 178 | |
| ... | ... | @@ -190,7 +192,7 @@ namespace NCC.Extend.LqYxhdfa |
| 190 | 192 | //开启事务 |
| 191 | 193 | _db.BeginTran(); |
| 192 | 194 | //批量删除营销活动方案 |
| 193 | - await _db.Deleteable<LqYxhdfaEntity>().In(d => d.Id,ids).ExecuteCommandAsync(); | |
| 195 | + await _db.Deleteable<LqYxhdfaEntity>().In(d => d.Id, ids).ExecuteCommandAsync(); | |
| 194 | 196 | //关闭事务 |
| 195 | 197 | _db.CommitTran(); |
| 196 | 198 | } |
| ... | ... | @@ -214,7 +216,8 @@ namespace NCC.Extend.LqYxhdfa |
| 214 | 216 | { |
| 215 | 217 | var entity = input.Adapt<LqYxhdfaEntity>(); |
| 216 | 218 | var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); |
| 217 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); | |
| 219 | + if (!(isOk > 0)) | |
| 220 | + throw NCCException.Oh(ErrorCode.COM1001); | |
| 218 | 221 | } |
| 219 | 222 | |
| 220 | 223 | /// <summary> |
| ... | ... | @@ -227,7 +230,8 @@ namespace NCC.Extend.LqYxhdfa |
| 227 | 230 | var entity = await _db.Queryable<LqYxhdfaEntity>().FirstAsync(p => p.Id == id); |
| 228 | 231 | _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005); |
| 229 | 232 | var isOk = await _db.Deleteable<LqYxhdfaEntity>().Where(d => d.Id == id).ExecuteCommandAsync(); |
| 230 | - if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002); | |
| 233 | + if (!(isOk > 0)) | |
| 234 | + throw NCCException.Oh(ErrorCode.COM1002); | |
| 231 | 235 | } |
| 232 | 236 | } |
| 233 | 237 | } | ... | ... |
项目信息-薪酬规则与名词解释.md
| ... | ... | @@ -50,14 +50,17 @@ |
| 50 | 50 | |
| 51 | 51 | ### 门店相关 |
| 52 | 52 | 17. **门店分类**:门店分为A、B、C类,不同类别有不同的底薪 |
| 53 | -18. **新店**:在门店信息中设置时间段,在该时间段内按新店薪酬规则计算 | |
| 54 | -19. **老店**:不在新店时间段内,按老店薪酬规则计算 | |
| 55 | -20. **门店生命线**:每个门店的生命线不一样,对所有角色生效 | |
| 56 | -21. **金三角(战队)**:每月初由不同健康师组成战队,单人也可形成战队 | |
| 53 | +18. **门店类别**:门店分为200平或旗舰店两种类型(仅在新店时设置) | |
| 54 | + - **200平门店**:标准门店类型,按正常薪酬规则计算 | |
| 55 | + - **旗舰店**:特殊门店类型,需要扣除负奖励800元 | |
| 56 | +19. **新店**:在门店信息中设置时间段,在该时间段内按新店薪酬规则计算 | |
| 57 | +20. **老店**:不在新店时间段内,按老店薪酬规则计算 | |
| 58 | +21. **门店生命线**:每个门店的生命线不一样,对所有角色生效 | |
| 59 | +22. **金三角(战队)**:每月初由不同健康师组成战队,单人也可形成战队 | |
| 57 | 60 | |
| 58 | 61 | ### 其他 |
| 59 | -22. **毛利**:销售业绩 - 产品物料 - 合作项目成本 - 店内支出 - 洗毛巾 | |
| 60 | -23. **总经理保底**:总经理工资在一年里可以有一个月保底8000元,保底寒假月份(春节)不能使用 | |
| 62 | +23. **毛利**:销售业绩 - 产品物料 - 合作项目成本 - 店内支出 - 洗毛巾 | |
| 63 | +24. **总经理保底**:总经理工资在一年里可以有一个月保底8000元,保底寒假月份(春节)不能使用 | |
| 61 | 64 | |
| 62 | 65 | --- |
| 63 | 66 | |
| ... | ... | @@ -70,13 +73,32 @@ |
| 70 | 73 | |
| 71 | 74 | ### 健康师薪酬规则 |
| 72 | 75 | |
| 73 | -#### 底薪规则 | |
| 76 | +#### 老店健康师底薪规则 | |
| 74 | 77 | - **一星**:月消耗达到10000元 且 项目数达到96个 → 底薪2000元 |
| 75 | 78 | - **二星**:月消耗达到20000元 且 项目数达到126个 → 底薪2200元 |
| 76 | 79 | - **三星**:月消耗达到40000元 且 项目数达到156个 → 底薪2400元 |
| 77 | 80 | - **0星**:月消耗未达到10000元 且 项目数未达到96个 → 底薪1800元 |
| 78 | 81 | - **特殊情况**:月消耗或项目数中有一个为0星(未达到最低标准),底薪为一星(2000元) |
| 79 | 82 | |
| 83 | +#### 新店健康师薪酬规则 | |
| 84 | +**重要说明**:新店不考核消耗,健康师分成3个阶段: | |
| 85 | + | |
| 86 | +**第一阶段:新客转化阶段** | |
| 87 | +- 主要考核新客转化率 | |
| 88 | +- 提成主要来源于新客转化业绩 | |
| 89 | + | |
| 90 | +**第二阶段:升单人头阶段** | |
| 91 | +- 主要考核升单人头数 | |
| 92 | +- 提成主要来源于升单业绩 | |
| 93 | + | |
| 94 | +**第三阶段:业绩和项目数阶段** | |
| 95 | +- 无新客转化和升单人头提成 | |
| 96 | +- 业绩主要计算提成 | |
| 97 | +- 项目数主要计算底薪 | |
| 98 | + | |
| 99 | +**旗舰店特殊规则**: | |
| 100 | +- 旗舰店类型门店需要扣除负奖励800元 | |
| 101 | + | |
| 80 | 102 | ### 金三角(战队)提成规则 |
| 81 | 103 | |
| 82 | 104 | #### 3人战队 |
| ... | ... | @@ -159,6 +181,8 @@ |
| 159 | 181 | |
| 160 | 182 | #### 新店店长(底薪4000元) |
| 161 | 183 | |
| 184 | +**重要说明**:新店店长涉及全部阶段,都有负奖励机制 | |
| 185 | + | |
| 162 | 186 | **考核指标**: |
| 163 | 187 | - 生命线-业绩、人头-固定 |
| 164 | 188 | - 一个指标未达到:扣800元 |
| ... | ... | @@ -170,6 +194,9 @@ |
| 170 | 194 | |
| 171 | 195 | **提成计算**:毛利 × 业绩提成比例 |
| 172 | 196 | |
| 197 | +**旗舰店特殊规则**: | |
| 198 | +- 旗舰店类型门店需要扣除负奖励800元 | |
| 199 | + | |
| 173 | 200 | ### 主任薪酬规则 |
| 174 | 201 | |
| 175 | 202 | #### 老店主任(底薪3500元) | ... | ... |