using Vo; using Microsoft.AspNetCore.Mvc; using Model; using Services; using Model.Base; using Vo.Admin; using Mapster; using Infrastructure; using Dto.Client; using Custom; using Feign; using Common; using Util; using System.Linq; namespace Controllers.Client { public class MakeCodeController : BaseController { private readonly IDatabaseInfoService _DatabaseInfoService; private readonly IDatabaseTableService _DatabaseTableService; private readonly IApiGroupService _ApiGroupService; private readonly IApiInfoService _ApiInfoService; public MakeCodeController(IDatabaseInfoService DatabaseInfoService, IDatabaseTableService DatabaseTableService, IApiGroupService ApiGroupService, IApiInfoService ApiInfoService) { _DatabaseInfoService = DatabaseInfoService; _DatabaseTableService = DatabaseTableService; _ApiGroupService = ApiGroupService; _ApiInfoService = ApiInfoService; } /// /// 生成代码 /// /// 参数 /// 生成代码 [HttpPost("/v1/omega_source/vscode/makerFile")] public IActionResult makerFile([FromBody] MakeCodeDto param) { try { TokenModel loginUser = JwtUtil.GetLoginUser(HttpContext); Utils.WriteLog(loginUser.username, "测试生成代码"); Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(param), "测试生成代码"); ProjectService baseInfo = IProject.getProjectService(param.serverId); string versionNo = baseInfo.devLanguage + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); Utils.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(baseInfo), "测试生成代码"); List databaseIds = baseInfo.databaseList.ToList(); Utils.WriteLog("databaseIds:" + databaseIds.Count.ToString(), "测试生成代码"); foreach(var databaseId in databaseIds) { var tables = _DatabaseTableService.GetList(a => a.databaseId == databaseId).OrderBy(a => a.tableName).ToList(); Utils.WriteLog("tables:" + tables.Count.ToString(), "测试生成代码"); foreach(var table in tables) { if(baseInfo.devLanguage == "Java") { _DatabaseTableService.makeJavaModel(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeJavaService(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeJavaServiceImpl(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeJavaMapper(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeJavaMapperXml(baseInfo, table, loginUser, versionNo); } else if(baseInfo.devLanguage == "CSharp") { _DatabaseTableService.makeCSharpModel(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeCSharpService(baseInfo, table, loginUser, versionNo); _DatabaseTableService.makeCSharpIService(baseInfo, table, loginUser, versionNo); } } } var apiGroups = _ApiGroupService.GetList(a => a.serviceId == param.serverId); Utils.WriteLog("apiGroups:" + apiGroups.Count.ToString(), "测试生成代码"); foreach(var apiGroup in apiGroups) { var apiInfos = _ApiInfoService.GetList(a => a.groupId == apiGroup.id).OrderBy(a => a.linkTableName).ToList(); Utils.WriteLog("apiInfos:" + apiInfos.Count.ToString(), "测试生成代码"); foreach(var apiInfo in apiInfos) { if(apiInfo.apiParamCount > 1) { if(baseInfo.devLanguage == "Java") { _DatabaseTableService.makeJavaDto(baseInfo, apiInfo, loginUser, versionNo); } } if(apiInfo.apiParamCount > 0 && apiInfo.apiKind < 3) { if(baseInfo.devLanguage == "CSharp") { _DatabaseTableService.makeCSharpDto(baseInfo, apiInfo, loginUser, versionNo); } } if(apiInfo.apiResParamCount > 0) { if(baseInfo.devLanguage == "Java") { _DatabaseTableService.makeJavaVo(baseInfo, apiInfo, loginUser, versionNo); } else if(baseInfo.devLanguage == "CSharp") { _DatabaseTableService.makeCSharpVo(baseInfo, apiInfo, loginUser, versionNo); } } } List controllerNameList = _ApiInfoService.GetList(a => a.groupId == apiGroup.id).Select(m => m.controllerName).Distinct().ToList(); foreach(var controllerName in controllerNameList) { if(baseInfo.devLanguage == "Java") { _DatabaseTableService.makeJavaController(baseInfo, apiGroup, controllerName, loginUser, versionNo); } else if(baseInfo.devLanguage == "CSharp") { _DatabaseTableService.makeCSharpController(baseInfo, apiGroup, controllerName, loginUser, versionNo); } } } Utils.WriteLog("end\n\n\n", "测试生成代码"); IMake.addVersion(baseInfo.projectId, param.serverId, (int)loginUser.userId, versionNo); } catch(Exception ex) { Utils.WriteLog(ex.ToString(), "测试生成代码异常"); } return SUCCESS(IMake.versions(param.serverId)); } } }