AppProjectService.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using Attribute;
  2. using Model;
  3. using Model.Base;
  4. using Repository;
  5. using Service;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Vo.Admin;
  8. using Dto.Admin;
  9. using Util;
  10. using Mapster;
  11. using Infrastructure;
  12. using Common;
  13. namespace Services
  14. {
  15. /// <summary>
  16. /// APP项目Service业务层处理
  17. /// </summary>
  18. [AppService(ServiceType = typeof(IAppProjectService), ServiceLifetime = LifeTime.Transient)]
  19. public class AppProjectService : BaseService<AppProject>, IAppProjectService
  20. {
  21. private readonly IAppProjectModuleService _appProjectModuleService;
  22. public AppProjectService(IAppProjectModuleService appProjectModuleService)
  23. {
  24. _appProjectModuleService = appProjectModuleService;
  25. }
  26. /// <summary>
  27. /// APP项目-列表
  28. /// </summary>
  29. /// <param name="param">参数请求体</param>
  30. /// <param name="page">分页参数</param>
  31. /// <returns>列表</returns>
  32. public PagedInfo<GetAppProjectListVo> getAppProjectList([FromQuery] PagerInfo page, [FromQuery] AppProject param)
  33. {
  34. //拼装查询条件
  35. var predicate = Expressionable.Create<AppProject>();
  36. predicate = predicate.AndIF(param.projectId > 0, m => m.projectId == param.projectId);
  37. predicate = predicate.AndIF(!string.IsNullOrEmpty(param.appName), m => m.appName.Contains(param.appName));
  38. predicate = predicate.AndIF(!string.IsNullOrEmpty(param.appKind), m => m.appKind.Contains(param.appKind));
  39. var response = Queryable()
  40. .Where(predicate.ToExpression())
  41. .OrderByDescending(m => m.id)
  42. .ToPage<AppProject, GetAppProjectListVo>(page);
  43. return response;
  44. }
  45. /// <summary>
  46. /// 添加APP项目及模块
  47. /// </summary>
  48. /// <param name="param">参数请求体</param>
  49. /// <param name="httpContext">HttpContext</param>
  50. /// <returns>项目ID</returns>
  51. public int AddAppProjectWithModule(AddAppProjectDto param, HttpContext httpContext)
  52. {
  53. var modal = param.Adapt<AppProject>().ToCreate(httpContext);
  54. var appId = InsertReturnIdentity(modal);
  55. if (!string.IsNullOrEmpty(param.moduleList))
  56. {
  57. var moduleIds = Tools.SpitIntArrary(param.moduleList).ToList();
  58. foreach (var moduleId in moduleIds)
  59. {
  60. _appProjectModuleService.Add(new AppProjectModule()
  61. {
  62. appId = appId,
  63. moduleId = moduleId
  64. });
  65. }
  66. }
  67. return appId;
  68. }
  69. /// <summary>
  70. /// 更新APP项目及模块
  71. /// </summary>
  72. /// <param name="param">参数请求体</param>
  73. /// <param name="httpContext">HttpContext</param>
  74. /// <returns>项目ID</returns>
  75. public int UpdateAppProjectWithModule(AddAppProjectDto param, HttpContext httpContext)
  76. {
  77. int appId = param.id;
  78. var modal = param.Adapt<AppProject>().ToCreate(httpContext);
  79. Update(modal);
  80. if (!string.IsNullOrEmpty(param.moduleList))
  81. {
  82. string check = "," + param.moduleList + ",";
  83. var moduleList = _appProjectModuleService.GetList(m => m.appId == appId);
  84. foreach (var item in moduleList)
  85. {
  86. if (!check.Contains("," + item.moduleId.ToString() + ","))
  87. {
  88. _appProjectModuleService.Delete(item);
  89. }
  90. }
  91. var moduleIds = Tools.SpitIntArrary(param.moduleList).ToList();
  92. foreach (var moduleId in moduleIds)
  93. {
  94. if (!_appProjectModuleService.Any(m => m.appId == appId && m.moduleId == moduleId))
  95. {
  96. _appProjectModuleService.Add(new AppProjectModule()
  97. {
  98. appId = appId,
  99. moduleId = moduleId
  100. });
  101. }
  102. }
  103. }
  104. return appId;
  105. }
  106. }
  107. }