InviteCodeController.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Hotline.Application.Snapshot.Contracts;
  2. using Hotline.Repository.SqlSugar.Extensions;
  3. using Hotline.Share.Dtos;
  4. using Hotline.Share.Dtos.Snapshot;
  5. using Hotline.Share.Tools;
  6. using Hotline.Snapshot;
  7. using Hotline.Snapshot.IRepository;
  8. using Microsoft.AspNetCore.Mvc;
  9. using System.ComponentModel;
  10. namespace Hotline.Api.Controllers.Snapshot;
  11. /// <summary>
  12. /// 邀请码管理
  13. /// </summary>
  14. [Description("邀请码管理")]
  15. public class InviteCodeController : BaseController
  16. {
  17. private readonly IInviteCodeApplication _inviteCodeApplication;
  18. public InviteCodeController(IInviteCodeApplication inviteCodeApplication)
  19. {
  20. _inviteCodeApplication = inviteCodeApplication;
  21. }
  22. /// <summary>
  23. /// 获取添加邀请码基础数据
  24. /// </summary>
  25. /// <returns></returns>
  26. [HttpGet("basedata")]
  27. public async Task<Dictionary<string, object>> GetBasedataAsync()
  28. {
  29. return new Dictionary<string, object>
  30. {
  31. { "OrgName", await _inviteCodeApplication.GetInviteCodeItems().Where(m => m.ParentOrgId == null)
  32. .Select(m => new Kv{ Key = m.Id, Value = m.OrgName}).ToListAsync() }
  33. };
  34. }
  35. /// <summary>
  36. /// 获取邀请码集合
  37. /// </summary>
  38. /// <returns></returns>
  39. [HttpGet]
  40. public async Task<PagedDto<InviteCode>> GetInviteCodeItems([FromQuery] GetInviteCodeItemsInDto dto)
  41. => (await _inviteCodeApplication.GetInviteCodeItems().ToPagedListAsync(dto)).ToPaged();
  42. /// <summary>
  43. /// 删除邀请码
  44. /// </summary>
  45. /// <returns></returns>
  46. [HttpDelete]
  47. public async Task DeleteInviteCodeAsync([FromBody] IList<string> ids)
  48. => await _inviteCodeApplication.DeleteInviteCodeAsync(ids);
  49. /// <summary>
  50. /// 邀请码详情
  51. /// </summary>
  52. /// <param name="id"></param>
  53. /// <returns></returns>
  54. [HttpGet("{id}")]
  55. public async Task<InviteCode> GetInviteCodeDetailAsync( string id)
  56. => await _inviteCodeApplication.GetInviteCodeItems().Where(m => m.Id == id).FirstAsync();
  57. /// <summary>
  58. /// 修改邀请码
  59. /// </summary>
  60. /// <param name="dto"></param>
  61. /// <returns></returns>
  62. [HttpPut]
  63. public async Task UpdateInviteCodeAsync([FromBody] UpdateInviteCodeInDto dto)
  64. => await _inviteCodeApplication.UpdateInviteCodeAsync(dto);
  65. /// <summary>
  66. /// 添加部门邀请码
  67. /// </summary>
  68. /// <param name="dto"></param>
  69. /// <returns></returns>
  70. [HttpPost]
  71. public async Task AddInviteCodeAsync([FromBody] AddInviteCodeInDto dto)
  72. => await _inviteCodeApplication.AddInviteCodeAsync(dto);
  73. /// <summary>
  74. /// 邀请码统计
  75. /// </summary>
  76. /// <param name="dto"></param>
  77. /// <returns></returns>
  78. [HttpGet("statistic")]
  79. public async Task<IList<InviteCodeStatisticOutDto>> GetInviteCodeStatisticAsync([FromQuery] GetInviteCodeStatisticInDto dto)
  80. => await _inviteCodeApplication.GetInviteCodeStatisticAsync(dto).ToListAsync();
  81. /// <summary>
  82. /// 邀请码统计明细
  83. /// </summary>
  84. /// <param name="dto"></param>
  85. /// <returns></returns>
  86. [HttpGet("statistic/detail")]
  87. public async Task<PagedDto<InviteCodeStatisticDetailOutDto>> GetInviteCodeStatisticDetail([FromQuery] GetInviteCodeStatisticDetailInDto dto)
  88. => (await _inviteCodeApplication.GetInviteCodeStatisticDetail(dto).ToPagedListAsync(dto)).ToPaged();
  89. }