FileCreateV3.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using VberAdmin.Models;
  5. using VberAdmin.Templates.V3;
  6. namespace VberAdmin.Generating;
  7. public class FileCreateV3 : FileCreateBase, IFileCreate
  8. {
  9. public async Task CreateAsync(TemplateViewModel viewModel)
  10. {
  11. await CreateDtoAsync(viewModel);
  12. await CreateApplicationAsync(viewModel);
  13. await CreateWebAsync(viewModel);
  14. }
  15. /// <summary>
  16. /// 生成DTO
  17. /// </summary>
  18. private async Task CreateDtoAsync(TemplateViewModel viewModel)
  19. {
  20. List<string> dtoFiles = new List<string>();
  21. if (viewModel.IsCreateDto)
  22. {
  23. if (await CreateT4Async<CreateDto>(viewModel, viewModel.CreateDtoName))
  24. dtoFiles.Add(viewModel.DtoFolder + viewModel.CreateDtoName);
  25. }
  26. if (viewModel.IsUpdateDto)
  27. {
  28. if (await CreateT4Async<UpdateDto>(viewModel, viewModel.UpdateDtoName))
  29. dtoFiles.Add(viewModel.DtoFolder + viewModel.UpdateDtoName);
  30. }
  31. if (viewModel.IsUpdateDto)
  32. {
  33. if (await CreateT4Async<ListDto>(viewModel, viewModel.ListDtoName))
  34. dtoFiles.Add(viewModel.DtoFolder + viewModel.ListDtoName);
  35. }
  36. if (dtoFiles.Any())
  37. await AddFilesToProjectAsync(viewModel.ApplicationName, dtoFiles);
  38. }
  39. /// <summary>
  40. /// 生成Application
  41. /// </summary>
  42. private async Task CreateApplicationAsync(TemplateViewModel viewModel)
  43. {
  44. List<string> applicationFileList = new List<string>();
  45. if (viewModel.IsApplicationService)
  46. {
  47. if (await CreateT4Async<Service>(viewModel, viewModel.ServiceName, 1))
  48. applicationFileList.Add(viewModel.ServiceFolder + viewModel.ServiceName);
  49. }
  50. if (viewModel.IsIApplicationService)
  51. {
  52. if (await CreateT4Async<ServiceInterface>(viewModel, viewModel.ServiceInterfaceName, 1))
  53. applicationFileList.Add(viewModel.ServiceFolder + viewModel.ServiceInterfaceName);
  54. }
  55. if (applicationFileList.Any())
  56. await AddFilesToProjectAsync(viewModel.ApplicationName, applicationFileList);
  57. }
  58. /// <summary>
  59. /// 生成Web
  60. /// </summary>
  61. private async Task CreateWebAsync(TemplateViewModel viewModel)
  62. {
  63. List<string> webFileList = new List<string>();
  64. if (viewModel.IsController)
  65. {
  66. if (await CreateT4Async<WebController>(viewModel, viewModel.ControllerName, 2))
  67. webFileList.Add(viewModel.ControllerFolder + viewModel.ControllerName);
  68. }
  69. if (viewModel.IsView)
  70. {
  71. if (await CreateT4Async<WebView>(viewModel, viewModel.ViewsName, 3))
  72. webFileList.Add(viewModel.ViewsFolder + viewModel.ViewsName);
  73. }
  74. if (webFileList.Any())
  75. await AddFilesToProjectAsync(viewModel.WebName, webFileList);
  76. }
  77. }