Files
2026-05-15 23:22:48 +08:00

150 lines
5.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using VolPro.Builder.IServices;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using VolPro.Core.Filters;
using VolPro.Entity.DomainModels;
using VolPro.Core.Utilities;
using System.Linq;
using VolPro.Core.Extensions;
using static System.Runtime.InteropServices.Marshalling.IIUnknownCacheStrategy;
using VolPro.Builder.IRepositories;
using Microsoft.EntityFrameworkCore;
namespace VolPro.WebApi.Controllers.Builder
{
[JWTAuthorize]
[Route("/api/Builder")]
public class BuilderController : Controller
{
private ISys_TableInfoService Service;
private ISys_TableInfoRepository _repository;
public BuilderController(ISys_TableInfoService service, ISys_TableInfoRepository repository)
{
Service = service;
_repository = repository;
}
[HttpPost]
[Route("GetTableTree")]
//[ApiActionPermission(ActionRolePermission.SuperAdmin)]
public async Task<ActionResult> GetTableTree()
{
try
{
(string, string) builderInfo = await Service.GetTableTree();
return Json(new { list = builderInfo.Item1, nameSpace = builderInfo.Item2 });
}
catch (Exception ex)
{
return Json(new { list = ex.Message + ex.StackTrace + ex.Source, nameSpace = ex.InnerException?.Message });
}
}
[Route("CreateVuePage")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public ActionResult CreateVuePage([FromBody] Sys_TableInfo sysTableInfo, string vuePath, int tableId, string table)
{
return Content(Service.CreateVuePage(sysTableInfo, vuePath, tableId, table));
}
[Route("loadOptions")]
[HttpPost]
public ActionResult CreateVuePage(int tableId, string table)
{
var res = Service.CreateVuePage(null, null, tableId, table);
return Json(new { status = res.Contains("fun"), content = res });
}
[Route("CreateModel")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public ActionResult CreateEntityModel([FromBody] Sys_TableInfo tableInfo)
{
return Content(Service.CreateEntityModel(tableInfo));
}
[Route("Save")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public ActionResult SaveEidt([FromBody] Sys_TableInfo tableInfo)
{
return Json(Service.SaveEidt(tableInfo));
}
[Route("CreateServices")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public ActionResult CreateServices(string tableName, string nameSpace, string foldername, bool? partial, bool? api)
{
return Content(Service.CreateServices(tableName, nameSpace, foldername, false, true));
}
[Route("LoadTableInfo")]
[HttpPost]
public ActionResult LoadTable([FromBody] Sys_TableInfo sysTableInfo, int parentId, string tableName, string columnCNName, string nameSpace, string foldername, int table_Id, bool isTreeLoad, string dbServer, bool gengeneric)
{
tableName = (tableName ?? "").Replace("", ",");
if (isTreeLoad || !tableName.Contains(','))
{
return Json(Service.LoadTable(sysTableInfo, parentId, tableName, columnCNName, nameSpace, foldername, table_Id, isTreeLoad, dbServer));
}
var tables = tableName.Split(",").Distinct();
foreach (var table in tables)
{
var res = Service.LoadTable(sysTableInfo, parentId, table, table, nameSpace, foldername, 0, false, dbServer);
//无代码不生成实际文件
if (!gengeneric)
{
WebResponseContent webResponse = res as WebResponseContent;
if (webResponse == null || !webResponse.Status)
{
Console.WriteLine(res.Serialize());
}
var tableInfo = webResponse.Data as Sys_TableInfo;
string message = Service.CreateEntityModel(tableInfo);
Console.WriteLine($"表[{table}]生成实体类:{message}");
message = Service.CreateServices(table, nameSpace, foldername, false, true);
Console.WriteLine($"表[{table}]生成业务类:{message}");
}
}
return Json(new { status = false, message = "批量生成完成,请刷新页面后配置查询、编辑信息再点击生成页面" });
}
[Route("delTree")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public async Task<ActionResult> DelTree(int table_Id)
{
return Json(await Service.DelTree(table_Id));
}
[Route("syncTable")]
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost]
public async Task<ActionResult> SyncTable(string tableName)
{
return Json(await Service.SyncTable(tableName));
}
[Route("getDyTable")]
[HttpPost]
public async Task<ActionResult> GetDyTable()
{
var data = await _repository.FindAsIQueryable(x => x.DyPage == 1 || x.DyScript != null)
.Select(s => new { table = s.TableName, dyPage = s.DyPage == 1, dyScript = s.DyScript != null })
.ToListAsync();
return Json(data);
}
[Route("getDyScript")]
[HttpPost]
public async Task<ActionResult> GetDyScript(string table)
{
var data = await _repository.FindAsIQueryable(x => x.TableName == table)
.Select(s => s.DyScript)
.FirstAsync();
return Json(new { data });
}
}
}