Commit 40d1ac94 by lijinqi

1.行业应用对应的app应用和api接口 完成

parent e54e1376
package com.luhu.computility.module.apihub.api.api;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
import java.util.List;
public interface ApiApi {
/**
* 根据行业应用ID,获取关联的 API 列表(仅包含 apiId、apiName)
* @param industryApplicationId 行业应用ID
* @return API 列表
*/
List<ApiDTO> getApisByIndustryApplicationId(Long industryApplicationId);
}
package com.luhu.computility.module.apihub.api.api.dto;
import lombok.Data;
@Data
public class ApiDTO {
private Long apiId;
private String apiName;
}
package com.luhu.computility.module.apihub.api.apiendpoint;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
import java.util.List;
/**
* @version 1.0
* @Author ljq
......@@ -18,4 +21,11 @@ public interface ApiEndpointApi {
*/
ApiEndpointRespDTO getApiEndpointByPathAndMethod(String path, String method);
/**
* 根据行业应用ID,获取关联的 API 接口列表(仅包含 apiEndpointId、apiEndpointName)
* @param industryApplicationId 行业应用ID
* @return API 接口列表
*/
List<ApiEndpointDTO> getApiEndpointsByIndustryApplicationId(Long industryApplicationId);
}
package com.luhu.computility.module.apihub.api.apiendpoint.dto;
import lombok.Data;
@Data
public class ApiEndpointDTO {
private Long apiEndpointId;
private String apiEndpointName;
}
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.api.ApiApi;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
import com.luhu.computility.module.apihub.dal.mysql.api.ApiMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
@Service
@Validated
public class ApiApiServiceImpl implements ApiApi {
@Resource
private ApiMapper apiMapper;
@Override
public List<ApiDTO> getApisByIndustryApplicationId(Long industryApplicationId) {
return apiMapper.selectApisByIndustryApplicationId(industryApplicationId);
}
}
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
import com.luhu.computility.module.apihub.dal.mysql.apiendpoint.ApiEndpointMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
/**
* API 调用日志 Service 实现类
......@@ -26,4 +28,9 @@ public class ApiEndpointApiServiceImpl implements ApiEndpointApi {
return apiEndpointMapper.getOpenApiEndpointByPathAndMethod(path, method);
}
@Override
public List<ApiEndpointDTO> getApiEndpointsByIndustryApplicationId(Long industryApplicationId) {
return apiEndpointMapper.selectApiEndpointsByIndustryApplicationId(industryApplicationId);
}
}
......@@ -11,7 +11,10 @@ import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.luhu.computility.module.apihub.controller.admin.api.vo.*;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
/**
* API信息 Mapper
......@@ -30,6 +33,13 @@ public interface ApiMapper extends BaseMapperX<ApiDO> {
.orderByDesc(ApiDO::getId));
}
@Select("SELECT DISTINCT a.id AS apiId, a.name AS apiName " +
"FROM apihub_api a " +
"INNER JOIN apihub_api_endpoint_rel r ON r.api_id = a.id AND r.deleted = 0 " +
"INNER JOIN apihub_api_endpoint_application_rel ar ON ar.api_endpoint_id = r.api_endpoint_id AND ar.deleted = 0 " +
"WHERE ar.industry_application_id = #{industryApplicationId} AND a.deleted = 0")
List<ApiDTO> selectApisByIndustryApplicationId(@Param("industryApplicationId") Long industryApplicationId);
default PageResult<ApiRespVO> selectJoinPage(ApiPageReqVO reqVO) {
return selectJoinPage(reqVO, ApiRespVO.class , new MPJLambdaWrapperX<ApiDO>()
.selectAll(ApiDO.class)
......
......@@ -11,7 +11,10 @@ import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
/**
* API 接口 Mapper
......@@ -35,6 +38,12 @@ public interface ApiEndpointMapper extends BaseMapperX<ApiEndpointDO> {
.orderByDesc(ApiEndpointDO::getId));
}
@Select("SELECT DISTINCT e.id AS apiEndpointId, e.name AS apiEndpointName " +
"FROM apihub_api_endpoint e " +
"INNER JOIN apihub_api_endpoint_application_rel ar ON ar.api_endpoint_id = e.id AND ar.deleted = 0 " +
"WHERE ar.industry_application_id = #{industryApplicationId} AND e.deleted = 0")
List<ApiEndpointDTO> selectApiEndpointsByIndustryApplicationId(@Param("industryApplicationId") Long industryApplicationId);
default List<ApiEndpointDO> selectAll() {
return selectList();
}
......
......@@ -2,6 +2,8 @@ package com.luhu.computility.module.apihub.service.api;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
import com.luhu.computility.module.apihub.controller.admin.api.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.framework.common.pojo.PageResult;
......@@ -59,4 +61,12 @@ public interface ApiService {
*/
PageResult<ApiRespVO> getApiPage(ApiPageReqVO pageReqVO);
/**
* 根据行业应用ID,获取关联的 API 列表(仅包含 apiId 与 apiName)
*
* @param industryApplicationId 行业应用ID
* @return API 简要信息列表
*/
List<ApiDTO> getApisByIndustryApplicationId(Long industryApplicationId);
}
package com.luhu.computility.module.apihub.service.api;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
......@@ -78,6 +79,9 @@ public class ApiServiceImpl implements ApiService {
return apiMapper.selectJoinPage(pageReqVO);
}
@Override
public List<ApiDTO> getApisByIndustryApplicationId(Long industryApplicationId) {
return apiMapper.selectApisByIndustryApplicationId(industryApplicationId);
}
}
......@@ -2,6 +2,8 @@ package com.luhu.computility.module.apihub.service.apiendpoint;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.framework.common.pojo.PageResult;
......@@ -77,5 +79,13 @@ public interface ApiEndpointService {
ApiEndpointDO getApiEndpointByPathAndMethod(String path, String method);
/**
* 根据行业应用ID,获取关联的 API 接口列表(仅包含 apiEndpointId 与 apiEndpointName)
*
* @param industryApplicationId 行业应用ID
* @return API 接口简要信息列表
*/
List<ApiEndpointDTO> getApiEndpointsByIndustryApplicationId(Long industryApplicationId);
}
package com.luhu.computility.module.apihub.service.apiendpoint;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
......@@ -90,5 +91,10 @@ public class ApiEndpointServiceImpl implements ApiEndpointService {
}
@Override
public List<ApiEndpointDTO> getApiEndpointsByIndustryApplicationId(Long industryApplicationId) {
return apiEndpointMapper.selectApiEndpointsByIndustryApplicationId(industryApplicationId);
}
}
......@@ -3,9 +3,13 @@ package com.luhu.computility.module.biz.controller.app.industryapplication;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.biz.controller.admin.industryapplication.vo.IndustryApplicationRespVO;
import com.luhu.computility.module.biz.controller.app.industryapplication.vo.AppIndustryApplicationRespVO;
import com.luhu.computility.module.biz.dal.dataobject.industryapplication.IndustryApplicationDO;
import com.luhu.computility.module.biz.service.industryapplication.IndustryApplicationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -25,6 +29,10 @@ public class AppIndustryApplicationController {
@Resource
private IndustryApplicationService industryApplicationService;
@Resource
private com.luhu.computility.module.apihub.api.api.ApiApi apiApi;
@Resource
private com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi apiEndpointApi;
@PermitAll
@GetMapping("/list")
......@@ -42,4 +50,22 @@ public class AppIndustryApplicationController {
List<IndustryApplicationRespVO> result = BeanUtils.toBean(list, IndustryApplicationRespVO.class);
return success(result);
}
@GetMapping("/get")
@Operation(summary = "获得行业应用")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PermitAll
public CommonResult<AppIndustryApplicationRespVO> getIndustryApplication(@RequestParam("id") Long id) {
IndustryApplicationDO industryApplication = industryApplicationService.getIndustryApplication(id);
AppIndustryApplicationRespVO respVO = BeanUtils.toBean(industryApplication, AppIndustryApplicationRespVO.class);
// 附加:行业应用关联的 API 列表与 API 接口列表
respVO.setApis(apiApi.getApisByIndustryApplicationId(id));
respVO.setApiEndpoints(apiEndpointApi.getApiEndpointsByIndustryApplicationId(id));
return success(respVO);
}
}
package com.luhu.computility.module.biz.controller.app.industryapplication.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.luhu.computility.module.apihub.api.api.dto.ApiDTO;
import com.luhu.computility.module.apihub.api.apiendpoint.dto.ApiEndpointDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "用户端 - 行业应用 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppIndustryApplicationRespVO {
@Schema(description = "展示图地址")
@ExcelProperty("展示图地址")
private String image;
@Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("内容")
private String information;
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("标题")
private String title;
@Schema(description = "链接地址", example = "https://www.iocoder.cn")
@ExcelProperty("链接地址")
private String url;
@Schema(description = "描述内容", example = "随便")
@ExcelProperty("描述内容")
private String description;
@Schema(description = "首页展示图片")
@ExcelProperty("首页展示图片")
private String homeImage;
@Schema(description = "行业应用下关联的 API 列表(仅含 id、name)")
@ExcelIgnore
private List<ApiDTO> apis;
@Schema(description = "行业应用下关联的 API 接口列表(仅含 id、name)")
@ExcelIgnore
private List<ApiEndpointDTO> apiEndpoints;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment