| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- using Vo;
- using Microsoft.AspNetCore.Mvc;
- using Model;
- using Services;
- using Model.Base;
- using Vo.Admin;
- using Mapster;
- using Infrastructure;
- using Dto.Admin;
- using Common;
- using Util;
- using Custom;
- using Nacos.V2.Utils;
- using LitJson;
- namespace Controllers.Admin
- {
- /// <summary>
- /// ApiInfo)Controller
- /// </summary>
- // [Route("${Router}$")]
- // [ApiExplorerSettings(GroupName = "ApiInfo")]
- public class ApiInfoController : BaseController
- {
- /// <summary>
- /// api分组接口
- /// </summary>
- private readonly IApiInfoService _ApiInfoService;
- private readonly IApiGroupService _ApiGroupService;
- private readonly IApiControllerService _ApiControllerService;
- private readonly IDatabaseFieldService _DatabaseFieldService;
- public ApiInfoController(IApiInfoService ApiInfoService, IApiGroupService ApiGroupService, IApiControllerService ApiControllerService, IDatabaseFieldService DatabaseFieldService)
- {
- _ApiInfoService = ApiInfoService;
- _ApiGroupService = ApiGroupService;
- _ApiControllerService = ApiControllerService;
- _DatabaseFieldService = DatabaseFieldService;
- }
- /// <param name="page">分页参数</param>
- /// <summary>
- /// 列表
- /// </summary>
- /// <param name="page">分页对象</param>
- /// <param name="param">参数请求体</param>
- /// <returns>列表</returns>
- [HttpGet]
- [Route("/v1/omega_source/ApiInfo/getApiInfoList")]
- public IActionResult getApiInfoList([FromQuery] PagerInfo page, [FromQuery] ApiInfo param)
- {
- var response = _ApiInfoService.getApiInfoList(page, param);
- return SUCCESS(response);
- }
- /// <summary>
- /// 字段关联接口列表
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>字段关联接口列表</returns>
- [HttpGet]
- [Route("/v1/omega_source/ApiInfo/getApiInfoListByProId")]
- public IActionResult getApiInfoListByProId([FromQuery] PagerInfo page, [FromQuery] ApiInfo param)
- {
- var response = _ApiInfoService.getApiInfoListByProId(page, param);
- return SUCCESS(response);
- }
- /// <summary>
- /// 详情
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>详情</returns>
- [HttpGet]
- [Route("/v1/omega_source/ApiInfo/getApiInfoQuery")]
- public IActionResult getApiInfoQuery([FromQuery] ApiInfo param)
- {
- var response = _ApiInfoService.GetFirst(m => m.id == param.id).Adapt<GetApiInfoQueryVo>();
- int tableId = response.linkTableId;
- var fieldNames = response.apiParam.Select(m => m.fieldName).ToList();
- var databaseFields = _DatabaseFieldService.GetList(m => m.tableId == tableId && !fieldNames.Contains(m.fieldName));
- foreach(var item in databaseFields)
- {
- response.apiParam.Add(new ApiParamObject()
- {
- fieldName = item.fieldName,
- fieldTitle = item.fieldTitle,
- fieldType = item.fieldType,
- editType = _ApiInfoService.getEditType(item.fieldTitle, item.fieldType).name
- });
- }
- foreach(var item in response.apiParam)
- {
- tableId = item.linkTableId;
- if(tableId > 0)
- {
- fieldNames = item.linkParam.Select(m => m.fieldName).ToList();
- databaseFields = _DatabaseFieldService.GetList(m => m.tableId == tableId && !fieldNames.Contains(m.fieldName));
- foreach(var field in databaseFields)
- {
- item.linkParam.Add(new ApiParamObject()
- {
- fieldName = field.fieldName,
- fieldTitle = field.fieldTitle,
- fieldType = field.fieldType,
- editType = _ApiInfoService.getEditType(field.fieldTitle, field.fieldType).name
- });
- }
- }
- }
- return SUCCESS(response);
- }
- /// <summary>
- /// 添加
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>添加</returns>
- [HttpPost]
- [Route("/v1/omega_source/ApiInfo/addApiInfo")]
- public IActionResult addApiInfo([FromBody] AddApiInfoDto param)
- {
- var exists = _ApiInfoService.Any(m => m.apiName == param.apiName && m.tabName == param.tabName && m.methodName == param.methodName);
- if (exists)
- {
- return ToResponse(ResultCode.FAIL, "请勿重复创建相同接口");
- }
- var modal = param.Adapt<ApiInfo>().ToCreate(HttpContext);
- var check = _ApiControllerService.Any(m => m.controllerFilePath == param.controllerFilePath);
- if(!check)
- {
- _ApiControllerService.Add(new ApiController()
- {
- controllerFilePath = param.controllerFilePath,
- serviceId = param.serviceId
- });
- }
- foreach(var item in modal.apiParam)
- {
- var linkTablePrimaryKey = (_DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId && m.primaryKey) ?? _DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId)) ?? new DatabaseField();
- item.linkTablePrimaryKeyName = PublicFunction.transferName(linkTablePrimaryKey.fieldName, 1);
- item.editType = _ApiInfoService.getEditType(item.fieldTitle, item.fieldType).name;
- }
- var response = _ApiInfoService.InsertReturnIdentity(modal);
- return SUCCESS(response);
- }
- /// <summary>
- /// 修改
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>修改</returns>
- [HttpPut]
- [Route("/v1/omega_source/ApiInfo/updateApiInfo")]
- public IActionResult updateApiInfo([FromBody] AddApiInfoDto param)
- {
- var modal = param.Adapt<ApiInfo>().ToUpdate(HttpContext);
- var check = _ApiControllerService.Any(m => m.controllerFilePath == param.controllerFilePath);
- if(!check)
- {
- _ApiControllerService.Add(new ApiController()
- {
- controllerFilePath = param.controllerFilePath,
- serviceId = param.serviceId
- });
- }
- foreach(var item in modal.apiParam)
- {
- var linkTablePrimaryKey = (_DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId && m.primaryKey) ?? _DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId)) ?? new DatabaseField();
- item.linkTablePrimaryKeyName = PublicFunction.transferName(linkTablePrimaryKey.fieldName, 1);
- string newEditType = _ApiInfoService.getEditType(item.fieldTitle, item.fieldType).name;
- if(string.IsNullOrEmpty(item.editType))
- {
- item.editType = newEditType;
- }
- }
- var response = _ApiInfoService.Update(modal, true);
- return SUCCESS(response);
- }
- /// <summary>
- /// 前端接口设置
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>前端接口设置</returns>
- [HttpPut]
- [Route("/v1/omega_source/ApiInfo/updateApiInfoForFrontend")]
- public IActionResult updateApiInfoForFrontend([FromBody] AddApiInfoDto param)
- {
- var modal = param.Adapt<ApiInfo>().ToUpdate(HttpContext);
- foreach(var item in modal.apiParam)
- {
- var linkTablePrimaryKey = (_DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId && m.primaryKey) ?? _DatabaseFieldService.GetFirst(m => m.tableId == item.linkTableId)) ?? new DatabaseField();
- item.linkTablePrimaryKeyName = PublicFunction.transferName(linkTablePrimaryKey.fieldName, 1);
- string newEditType = _ApiInfoService.getEditType(item.fieldTitle, item.fieldType).name;
- if(string.IsNullOrEmpty(item.editType))
- {
- item.editType = newEditType;
- }
- }
- var editItem = _ApiInfoService.GetFirst(m => m.id == modal.id);
- if(editItem != null)
- {
- editItem.apiParam = modal.apiParam;
- _ApiInfoService.Update(editItem);
- }
- return SUCCESS("ok");
- }
- /// <summary>
- /// 删除
- /// </summary>
- /// <param name="id">ID</param>
- /// <returns>删除</returns>
- [HttpDelete]
- [Route("/v1/omega_source/ApiInfo/deleteApiInfo/{id}")]
- public IActionResult deleteApiInfo(int id)
- {
- var response = _ApiInfoService.Delete(id);
- return SUCCESS(response);
- }
- /// <summary>
- /// 批量删除
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>批量删除</returns>
- [HttpPut]
- [Route("/v1/omega_source/ApiInfo/batchDeleteApiInfo")]
- public IActionResult batchDeleteApiInfo([FromBody] BatchDeleteApiInfoDto param)
- {
- foreach(var id in param.idList)
- {
- _ApiInfoService.Delete(id);
- }
- return SUCCESS("ok");
- }
- /// <summary>
- /// 克隆接口
- /// </summary>
- /// <param name="param">参数请求体</param>
- [HttpPost]
- [Route("/v1/omega_source/ApiInfo/copyApiInfo")]
- public IActionResult copyApiInfo([FromBody] CopyApiInfoDto param)
- {
- var group = _ApiGroupService.GetFirst(m => m.id == param.targetApiGroupId) ?? new ApiGroup();
- _ApiInfoService.copyApiInfo(param, group);
- return SUCCESS("ok");
- }
- /// <summary>
- /// 初始化接口
- /// </summary>
- /// <returns>初始化接口</returns>
- [HttpPost]
- [Route("/v1/omega_source/ApiInfo/initApiInfo")]
- public IActionResult initApiInfo([FromBody] InitApiInfoDto param)
- {
- _ApiInfoService.initApiInfo(param);
- return SUCCESS("ok");
- }
- /// <summary>
- /// 获取前端生成数据
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>获取前端生成数据</returns>
- [HttpPost]
- [Route("/v1/omega_source/ApiInfo/downloadJson")]
- public IActionResult downloadJson([FromBody] DownloadJsonDto param)
- {
- List<int> idList = Tools.SpitIntArrary(param.apiId).ToList();
- var editTypes = _ApiInfoService.getEditTypes();
- var list = _ApiInfoService.GetList(m => idList.Contains(m.id));
- foreach(ApiInfo item in list)
- {
- foreach(var paramItem in item.apiParam)
- {
- paramItem.editTypeData = editTypes.FirstOrDefault(m => m.name == paramItem.editType) ?? new EditTypeFrontend();
- }
- }
- return SUCCESS(list);
- }
- /// <summary>
- /// 测试接口
- /// </summary>
- /// <returns>测试接口</returns>
- [HttpPost]
- [Route("/v1/omega_source/ApiInfo/testApiInfo")]
- public IActionResult testApiInfo([FromBody] TestApiInfoDto param)
- {
- var groups = _ApiGroupService.GetList();
- var result = _ApiInfoService.testApiInfo(param, groups);
- return SUCCESS(result);
- }
- }
- }
|