using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Dto.Admin; using Infrastructure; namespace Services { /// /// 接口信息Service业务层处理 /// [AppService(ServiceType = typeof(IApiInfoService), ServiceLifetime = LifeTime.Transient)] public class ApiInfoService : BaseService, IApiInfoService { /// /// 接口信息-列表 /// /// 参数请求体 /// 分页参数 /// 列表 public PagedInfo getApiInfoList([FromQuery] PagerInfo page, [FromQuery] ApiInfo param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.serviceId > 0, m => m.serviceId == param.serviceId); predicate = predicate.AndIF(param.groupId > 0, m => m.groupId == param.groupId); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.tabName), m => m.tabName.Contains(param.tabName)); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.apiName), m => m.apiName.Contains(param.apiName)); predicate = predicate.AndIF(param.apiKind > 0, m => m.apiKind == param.apiKind); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 接口信息-字段关联接口列表 /// /// 参数请求体 /// 分页参数 /// 字段关联接口列表 public PagedInfo getApiInfoListByProId([FromQuery] PagerInfo page, [FromQuery] ApiInfo param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.serviceId > 0, m => m.serviceId == param.serviceId); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 克隆接口 /// /// 参数请求体 public void copyApiInfo([FromBody] CopyApiInfoDto param, ApiGroup group) { // var group = _ApiGroupService.GetFirst(m => m.id == param.targetGroupId) ?? new ApiGroup(); List apiIdList = param.sourceApiId.ToList(); var sourceApis = GetList(m => apiIdList.Contains(m.id)).ToList(); foreach(ApiInfo sourceApi in sourceApis) { ApiInfo newApi = new ApiInfo(); newApi.serviceId = group.serviceId; newApi.groupId = param.targetGroupId; newApi.tabName = sourceApi.tabName; newApi.apiName = sourceApi.apiName; newApi.controllerFilePath = sourceApi.controllerFilePath; newApi.usageScenarios = sourceApi.usageScenarios; newApi.apiKind = sourceApi.apiKind; newApi.methodName = sourceApi.methodName; newApi.apiDetail = sourceApi.apiDetail; newApi.apiParam = sourceApi.apiParam; newApi.createTime = DateTime.Now; Add(newApi); } } /// /// 初始化接口 /// public void initApiInfo([FromBody] InitApiInfoDto param) { var _DatabaseInfoService = App.GetService(); var _DatabaseTableService = App.GetService(); var _DatabaseFieldService = App.GetService(); var _ApiGroupService = App.GetService(); var apiGroup = _ApiGroupService.GetFirst(m => m.id == param.groupId) ?? new ApiGroup(); foreach(int tableId in param.sourceTableId) { var table = _DatabaseTableService.GetById(tableId) ?? new DatabaseTable(); var database = _DatabaseInfoService.GetFirst(m => m.id == table.databaseId) ?? new DatabaseInfo(); var fields = _DatabaseFieldService.GetList(m => m.tableId == table.id); for (int apiKind = 1; apiKind <= 5; apiKind++) { var apiParam = new List(); foreach(var field in fields) { bool reqParam = false; bool resParam = false; if((field.showQuery && apiKind == 1) || (field.showEdit && (apiKind == 3 || apiKind == 4))) { reqParam = true; } if((apiKind == 2 || apiKind == 4 || apiKind == 5) && field.primaryKey) { reqParam = true; } if(field.showList && (apiKind == 1 || apiKind == 2)) { resParam = true; } apiParam.Add(new ApiParamObject() { id = field.id, fieldTitle = field.fieldTitle ?? "", fieldName = field.fieldName ?? "", fieldType = field.fieldType ?? "", reqParam = reqParam, resParam = resParam, resType = field.fieldType ?? "", checkAttribute = !string.IsNullOrEmpty(field.validateAttribute) ? field.validateAttribute.Split(',') : Array.Empty(), fieldDetail = field.fieldDetail ?? "", }); } Add(new ApiInfo() { serviceId = apiGroup.serviceId, groupId = param.groupId, tabName = "基本信息", apiName = table.tableTitle + (apiKind == 1 ? "列表" : apiKind == 2 ? "详情" : apiKind == 3 ? "添加" : apiKind == 4 ? "修改" : "删除"), controllerFilePath = table.tableNameUpper, usageScenarios = 1, apiKind = apiKind, methodName = apiKind == 1 ? "get" + table.tableNameFirstUpper + "List" : apiKind == 2 ? "get" + table.tableNameFirstUpper + "Query" : apiKind == 3 ? "add" + table.tableNameFirstUpper : apiKind == 4 ? "update" + table.tableNameFirstUpper : "delete" + table.tableNameFirstUpper, apiDetail = apiKind == 1 ? "根据查询条件查询" + table.tableTitle + "列表数据" : apiKind == 2 ? "根据Id查询" + table.tableTitle + "某一条详情数据" : apiKind == 3 ? "添加" + table.tableTitle + "数据" : apiKind == 4 ? "修改" + table.tableTitle + "数据" : "根据Id删除" + table.tableTitle + "数据", apiParam = apiParam, createTime = DateTime.Now, linkTableId = tableId, pageFlag = apiKind == 1, createBy = App.UserName, }); } } } } }