Commit 768875ff by lijinqi

Merge branch 'api' into develop

# Conflicts:
#	computility-module-apihub/src/main/java/com/luhu/computility/module/apihub/dal/mysql/apicalllog/ApiCallLogMapper.java
#	computility-module-apihub/src/main/java/com/luhu/computility/module/apihub/dal/mysql/apiorder/ApiOrderMapper.java
#	computility-module-apihub/src/main/java/com/luhu/computility/module/apihub/service/apicalllog/ApiCallLogServiceImpl.java
#	computility-module-apihub/src/main/java/com/luhu/computility/module/apihub/service/apiorder/ApiOrderServiceImpl.java
parent 8d22d6e1
......@@ -52,7 +52,7 @@
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-apihub-biz</artifactId>
<artifactId>computility-module-apihub-api</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
......
......@@ -13,14 +13,14 @@ import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.util.servlet.ServletUtils;
import com.luhu.computility.framework.signature.core.annotation.ApiSignature;
import com.luhu.computility.framework.signature.core.redis.ApiSignatureRedisDAO;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.ApiCallLogSaveReqVO;
import com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.JoinUserApiUsageResult;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.module.apihub.service.apicalllog.ApiCallLogService;
import com.luhu.computility.module.apihub.service.apiendpoint.ApiEndpointService;
import com.luhu.computility.module.apihub.service.appcredential.AppCredentialService;
import com.luhu.computility.module.apihub.service.userapiusage.UserApiUsageService;
import com.luhu.computility.module.apihub.api.apicalllog.ApiCallLogApi;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogSaveReqDTO;
import com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi;
import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
import com.luhu.computility.module.apihub.api.appcredential.AppCredentialApi;
import com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO;
import com.luhu.computility.module.apihub.api.userapiusage.UserApiUsageApi;
import com.luhu.computility.module.apihub.api.userapiusage.dto.JoinUserApiUsageDTO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
......@@ -55,16 +55,16 @@ public class ApiSignatureAspect {
private final ApiSignatureRedisDAO signatureRedisDAO;
@Resource
private AppCredentialService appCredentialService;
private AppCredentialApi appCredentialApi;
@Resource
private ApiEndpointService appEndpointService;
private ApiEndpointApi apiEndpointApi;
@Resource
private ApiCallLogService apiCallLogService;
private ApiCallLogApi apiCallLogApi;
@Resource
private UserApiUsageService userApiUsageService;
private UserApiUsageApi userApiUsageApi;
public ApiSignatureAspect(ApiSignatureRedisDAO signatureRedisDAO) {
this.signatureRedisDAO = signatureRedisDAO;
......@@ -82,9 +82,9 @@ public class ApiSignatureAspect {
//查询appId对应的Secret
String appId = request.getHeader(signature.appId());
AppCredentialDO appCredentialDO = appCredentialService.getAppSecretByAppid(appId);
if (!ObjectUtil.isEmpty(appCredentialDO)) {
Assert.notNull(appCredentialDO.getAppId(), "[appId({})] 找不到对应的 appSecret", appId);
AppCredentialRespDTO appCredentialRespDTO = appCredentialApi.getAppSecretByAppid(appId);
if (!ObjectUtil.isEmpty(appCredentialRespDTO)) {
Assert.notNull(appCredentialRespDTO.getAppId(), "[appId({})] 找不到对应的 appSecret", appId);
} else {
throw new ServiceException(INVALID_APPID);
}
......@@ -98,19 +98,19 @@ public class ApiSignatureAspect {
String path = request.getRequestURI();
String method = request.getMethod();
//2.1是否有该接口
ApiEndpointDO apiEndpoint = appEndpointService.getApiEndpointByPathAndMethod(path, method);
if (Objects.isNull(apiEndpoint)) {
ApiEndpointRespDTO apiEndpointRespDTO = apiEndpointApi.getApiEndpointByPathAndMethod(path, method);
if (Objects.isNull(apiEndpointRespDTO)) {
throw new ServiceException(API_ENDPOINT_NOT_EXISTS);
}
//2.2该接口是否订阅过
List<JoinUserApiUsageResult> joinUserApiUsageResults = userApiUsageService.selectJoinUserApiUsageResult(appCredentialDO.getUserId(), apiEndpoint.getId());
List<JoinUserApiUsageDTO> joinUserApiUsageResults = userApiUsageApi.selectJoinUserApiUsageResult(appCredentialRespDTO.getUserId(), apiEndpointRespDTO.getId());
if (CollectionUtil.isEmpty(joinUserApiUsageResults)){
throw new ServiceException(API_ENDPOINT_NOT_AVAILABLE);
}
//3. 用户套餐校验(只校验,不扣减)如果有一个套餐符合条件,则继续往下走
JoinUserApiUsageResult joinUserApiUsageResult = null;
JoinUserApiUsageDTO joinUserApiUsageResult = null;
LocalDateTime now = LocalDateTime.now();
for (JoinUserApiUsageResult j : joinUserApiUsageResults) {
for (JoinUserApiUsageDTO j : joinUserApiUsageResults) {
// 未过期且有剩余额度
if (j.getExpireTime().isAfter(now) && j.getUsedTimes() < j.getPackageTimes()) {
if (joinUserApiUsageResult == null || j.getExpireTime().isBefore(joinUserApiUsageResult.getExpireTime())) {
......@@ -125,20 +125,20 @@ public class ApiSignatureAspect {
Object result = joinPoint.proceed();
// 5. 只有当接口执行成功才扣减额度
ApiCallLogSaveReqVO apiCallLogSaveReqVO = new ApiCallLogSaveReqVO();
ApiCallLogSaveReqDTO apiCallLogSaveReqVO = new ApiCallLogSaveReqDTO();
if (result instanceof CommonResult) {
if (((CommonResult<?>) result).isSuccess()){
consumeUsage(joinUserApiUsageResults, apiEndpoint.getConsumptionPoints());
consumeUsage(joinUserApiUsageResults, apiEndpointRespDTO.getConsumptionPoints());
apiCallLogSaveReqVO.setResponseStatus(((CommonResult<?>) result).getCode().toString());
}
String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtils.getBody(request) : null;
apiCallLogService.createApiCallLog(
apiCallLogApi.createApiCallLog(
apiCallLogSaveReqVO
.setUserId(appCredentialDO.getUserId())
.setUserId(appCredentialRespDTO.getUserId())
.setCallTime(LocalDateTime.now())
.setMethod(method)
.setPath(path)
.setApiEndpointName(apiEndpoint.getName())
.setApiEndpointName(apiEndpointRespDTO.getName())
.setRequestParams(requestBody)
.setResponseParams(JSON.toJSONString(result))
);
......@@ -150,12 +150,12 @@ public class ApiSignatureAspect {
/** 扣减一次额度(优先扣最近过期的套餐,用 Redis 保证并发安全) */
private void consumeUsage(List<JoinUserApiUsageResult> joinUserApiUsageResults, Integer consumptionPoints) {
JoinUserApiUsageResult target = null;
private void consumeUsage(List<JoinUserApiUsageDTO> joinUserApiUsageDTOS, Integer consumptionPoints) {
JoinUserApiUsageDTO target = null;
LocalDateTime now = LocalDateTime.now();
// 找到过期时间最早且可用的套餐
for (JoinUserApiUsageResult j : joinUserApiUsageResults) {
for (JoinUserApiUsageDTO j : joinUserApiUsageDTOS) {
if (!ObjectUtil.isEmpty(j.getExpireTime()) && j.getExpireTime().isAfter(now)
&& j.getUsedTimes() < j.getPackageTimes()) {
if (ObjectUtil.isEmpty(target) || j.getExpireTime().isBefore(target.getExpireTime())) {
......@@ -172,12 +172,12 @@ public class ApiSignatureAspect {
if (!ObjectUtil.isEmpty(used) && used <= target.getPackageTimes()) {
// 异步回写 DB
userApiUsageService.asyncUpdateUsage(target.getId(), used);
userApiUsageApi.asyncUpdateUsage(target.getId(), used);
}
}
public boolean verifySignature(ApiSignature signature, HttpServletRequest request, AppCredentialDO appCredentialDO) {
public boolean verifySignature(ApiSignature signature, HttpServletRequest request, AppCredentialRespDTO appCredentialDO) {
// 1.2 校验 appId 是否能获取到对应的 appSecret
String appId = request.getHeader(signature.appId());
......
......@@ -2,7 +2,9 @@ package com.luhu.computility.module.apihub.api.apicalllog;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogSaveReqDTO;
import javax.validation.Valid;
import java.util.List;
/**
......@@ -19,4 +21,12 @@ public interface ApiCallLogApi {
*/
List<ApiCallLogRespDTO> getApiCallLogList(ApiCallLogPageReqDTO apiCallLogPageReqDTO);
/**
* 创建API 调用日志
*
* @param createReqDTO 创建信息
* @return 编号
*/
Long createApiCallLog(ApiCallLogSaveReqDTO createReqDTO);
}
......@@ -10,12 +10,16 @@ public class ApiCallLogSaveReqDTO {
private Long id;
@NotNull(message = "调用用户ID不能为空")
private Long userId;
@NotNull(message = "接口名称不能为空")
private String apiEndpointName;
@NotNull(message = "请求方法不能为空")
private String method;
@NotNull(message = "请求地址不能为空")
private String path;
private String requestParams;
......
package com.luhu.computility.module.apihub.api.apiendpoint;
import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
/**
* @version 1.0
* @Author ljq
* @Date 2025/9/13
* @注释
*/
public interface ApiEndpointApi {
/**
* 根据path和方法 获得API 接口
*
* @param path、method 编号
* @return API 接口
*/
ApiEndpointRespDTO getApiEndpointByPathAndMethod(String path, String method);
}
package com.luhu.computility.module.apihub.api.apiendpoint.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEndpointRespDTO {
private Long id;
private String name;
private String path;
private Integer consumptionPoints;
private String method;
private String params;
private String response;
private String authType;
private String rateLimit;
private String remark;
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api.appcredential;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO;
import com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO;
import java.util.List;
/**
* @version 1.0
* @Author ljq
* @Date 2025/9/13
* @注释
*/
public interface AppCredentialApi {
/**
* 获得用户密钥信息
*
* @param appId 编号
* @return 用户密钥信息
*/
AppCredentialRespDTO getAppSecretByAppid(String appId);
}
package com.luhu.computility.module.apihub.api.appcredential.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class AppCredentialRespDTO {
private Long id;
private String appId;
private String appSecret;
private Long userId;
private LocalDateTime createTime;
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api.userapiusage;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO;
import com.luhu.computility.module.apihub.api.userapiusage.dto.JoinUserApiUsageDTO;
import java.util.List;
/**
* @version 1.0
* @Author ljq
* @Date 2025/9/13
* @注释
*/
public interface UserApiUsageApi {
List<JoinUserApiUsageDTO> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint);
void asyncUpdateUsage(Long id, Integer used);
}
package com.luhu.computility.module.apihub.api.userapiusage.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class JoinUserApiUsageDTO {
private Long id;
private Long userId;
private Long apiEndPointId;
private String apiEndPintName;
private String apiName;
private String packageName;
private Integer packageTimes;
private Integer packagePrice;
private Integer packageValidDays;
private Integer usedTimes;
private LocalDateTime expireTime;
private String remark;
private LocalDateTime createTime;
}
\ No newline at end of file
......@@ -25,6 +25,11 @@
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-biz-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-pay</artifactId>
<version>${revision}</version>
</dependency>
......@@ -83,10 +88,5 @@
<artifactId>computility-spring-boot-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-biz</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
</project>
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.api.apicalllog.ApiCallLogApi;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.ApiCallLogPageReqVO;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.ApiCallLogRespVO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogSaveReqDTO;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.ApiCallLogSaveReqVO;
import com.luhu.computility.module.apihub.controller.app.apicalllog.vo.AppApiCallLogPageReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.apicalllog.ApiCallLogDO;
import com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper;
import com.luhu.computility.module.apihub.service.apicalllog.ApiCallLogService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.API_CALL_LOG_NOT_EXISTS;
/**
* API 调用日志 Service 实现类
......@@ -38,4 +32,15 @@ public class ApiCallLogApiServiceImpl implements ApiCallLogApi {
public List<ApiCallLogRespDTO> getApiCallLogList(ApiCallLogPageReqDTO apiCallLogPageReqDTO) {
return apiCallLogMapper.selectList(apiCallLogPageReqDTO);
}
@Override
public Long createApiCallLog(ApiCallLogSaveReqDTO createReqVO) {
// 插入
ApiCallLogDO apiCallLog = BeanUtils.toBean(createReqVO, ApiCallLogDO.class);
apiCallLogMapper.insert(apiCallLog);
// 返回
return apiCallLog.getId();
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi;
import com.luhu.computility.module.apihub.api.apiendpoint.vo.ApiEndpointRespDTO;
import com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper;
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;
/**
* API 调用日志 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class ApiEndpointServiceImpl implements ApiEndpointApi {
@Resource
private ApiEndpointMapper apiEndpointMapper;
@Override
public ApiEndpointRespDTO getApiEndpointByPathAndMethod(String path, String method) {
return apiEndpointMapper.getOpenApiEndpointByPathAndMethod(path, method);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.apicalllog.ApiCallLogApi;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.api.apiorder.ApiOrderApi;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO;
import com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper;
import com.luhu.computility.module.apihub.dal.mysql.apiorder.ApiOrderMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
......
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogPageReqDTO;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.api.apiendpoint.ApiEndpointApi;
import com.luhu.computility.module.apihub.api.appcredential.AppCredentialApi;
import com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper;
import com.luhu.computility.module.apihub.dal.mysql.appcredential.AppCredentialMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
/**
* API 调用日志 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class AppCredentialApiServiceImpl implements AppCredentialApi {
@Resource
private AppCredentialMapper appCredentialMapper;
@Override
public AppCredentialRespDTO getAppSecretByAppid(String appId) {
return appCredentialMapper.selectOpenByAppId(appId);
}
}
\ No newline at end of file
package com.luhu.computility.module.apihub.api;
import com.luhu.computility.module.apihub.api.userapiusage.UserApiUsageApi;
import com.luhu.computility.module.apihub.api.userapiusage.dto.JoinUserApiUsageDTO;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
import com.luhu.computility.module.apihub.dal.mysql.userapiusage.UserApiUsageMapper;
import com.luhu.computility.module.apihub.service.userapiusage.UserApiUsageService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.List;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.USER_API_USAGE_NOT_EXISTS;
/**
* API 调用日志 Service 实现类
*
* @author ljq
*/
@Service
@Validated
public class UserApiUsageApiServiceImpl implements UserApiUsageApi {
@Resource
private UserApiUsageMapper userApiUsageMapper;
@Resource
private UserApiUsageService userApiUsageService;
@Override
public List<JoinUserApiUsageDTO> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint) {
return userApiUsageMapper.selectJoinUserApiUsageResult(userId, apiIdEndpoint);
}
@Override
@Async
public void asyncUpdateUsage(Long id, Integer used) {
// 校验存在
if (userApiUsageMapper.selectById(id) == null) {
throw exception(USER_API_USAGE_NOT_EXISTS);
}
UserApiUsageDO userApiUsage = userApiUsageService.getUserApiUsage(id);
userApiUsage.setUsedTimes(userApiUsage.getUsedTimes() - used);
userApiUsageMapper.updateById(userApiUsage);
}
}
\ No newline at end of file
......@@ -14,7 +14,6 @@ import com.luhu.computility.module.apihub.service.apiendpoint.ApiEndpointService
import com.luhu.computility.module.apihub.service.apiendpointapplicationrel.ApiEndpointApplicationRelService;
import com.luhu.computility.module.apihub.service.apiendpointrel.ApiEndpointRelService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import com.luhu.computility.module.biz.controller.admin.industryapplication.vo.IndustryApplicationRespVO;
import org.checkerframework.checker.units.qual.A;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
......@@ -153,7 +152,7 @@ public class ApiController {
List<ApiEndpointRespVO> apiEndpointRespVOS = apiEndpointRelService.getApiEndpointByApiId(id);
/*
for (ApiEndpointRespVO apiEndpointRespVO : apiEndpointRespVOS) {
for (ApiEndpointRespDTO apiEndpointRespVO : apiEndpointRespVOS) {
List<IndustryApplicationRespVO> industryApplicationRespVOS = apiEndpointApplicationRelService.getApplicationByApiEndpointId(apiEndpointRespVO.getId());
apiEndpointRespVO.setIndustryApplications(industryApplicationRespVOS);
}*/
......
......@@ -49,7 +49,7 @@ public class ApiEndpointSaveReqVO {
@Schema(description = "关联行业应用", example = "[{}]")
@NotEmpty(message = "行业应用至少填写一个")
private List<IndustryApplicationRespVO> industryApplications;
private List<IndustryApplicationRespDTO> industryApplications;
}
\ No newline at end of file
......@@ -17,7 +17,6 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.annotation.security.PermitAll;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
......
......@@ -9,16 +9,11 @@ import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrder
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateRespVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderPageReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.module.apihub.enums.ApiOrderStatus;
import com.luhu.computility.module.apihub.service.api.ApiService;
import com.luhu.computility.module.apihub.service.apiorder.ApiOrderService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......
......@@ -3,9 +3,11 @@ package com.luhu.computility.module.apihub.dal.mysql.apiendpoint;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
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;
......@@ -43,6 +45,14 @@ public interface ApiEndpointMapper extends BaseMapperX<ApiEndpointDO> {
.eqIfPresent(ApiEndpointDO::getPath, path));
}
default ApiEndpointRespDTO getOpenApiEndpointByPathAndMethod(String path, String method) {
ApiEndpointDO apiEndpointDO = selectOne(new LambdaQueryWrapperX<ApiEndpointDO>()
.eqIfPresent(ApiEndpointDO::getMethod, method)
.eqIfPresent(ApiEndpointDO::getPath, path));
return BeanUtils.toBean(apiEndpointDO, ApiEndpointRespDTO.class);
}
......
......@@ -10,6 +10,7 @@ import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEnd
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointapplicationrel.ApiEndpointApplicationRelDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.module.biz.api.industryapplication.dto.IndustryApplicationRespDTO;
import com.luhu.computility.module.biz.controller.admin.industryapplication.vo.IndustryApplicationRespVO;
import com.luhu.computility.module.biz.dal.dataobject.industryapplication.IndustryApplicationDO;
import org.apache.ibatis.annotations.Mapper;
......@@ -36,8 +37,8 @@ public interface ApiEndpointApplicationRelMapper extends BaseMapperX<ApiEndpoint
.eqIfPresent(ApiEndpointApplicationRelDO::getApiEndpointId, apiEndpointId));
}
default List<IndustryApplicationRespVO> getApiEndpointByApiId(Long apiEndpointId) {
return selectJoinList(IndustryApplicationRespVO.class, new MPJLambdaWrapperX<ApiEndpointApplicationRelDO>()
default List<IndustryApplicationRespDTO> getApiEndpointByApiId(Long apiEndpointId) {
return selectJoinList(IndustryApplicationRespDTO.class, new MPJLambdaWrapperX<ApiEndpointApplicationRelDO>()
.selectAs(IndustryApplicationDO::getTitle, IndustryApplicationRespVO::getTitle)
.selectAs(ApiEndpointApplicationRelDO::getIndustryApplicationId, IndustryApplicationRespVO::getId)
.leftJoin(IndustryApplicationDO.class, IndustryApplicationDO::getId, ApiEndpointApplicationRelDO::getIndustryApplicationId)
......
......@@ -10,12 +10,9 @@ import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.apihub.api.apicalllog.dto.ApiCallLogRespDTO;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderPageReqDTO;
import com.luhu.computility.module.apihub.api.apiorder.dto.ApiOrderRespDTO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderPageReqVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
import com.luhu.computility.module.apihub.enums.ApiOrderStatus;
import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO;
......
......@@ -3,8 +3,10 @@ package com.luhu.computility.module.apihub.dal.mysql.appcredential;
import java.util.*;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.module.apihub.api.appcredential.dto.AppCredentialRespDTO;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import org.apache.ibatis.annotations.Mapper;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
......@@ -31,4 +33,12 @@ public interface AppCredentialMapper extends BaseMapperX<AppCredentialDO> {
.eqIfPresent(AppCredentialDO::getAppId, appId));
}
default AppCredentialRespDTO selectOpenByAppId(String appId) {
AppCredentialDO appCredentialDO = selectOne(new LambdaQueryWrapperX<AppCredentialDO>()
.eqIfPresent(AppCredentialDO::getAppId, appId));
return BeanUtils.toBean(appCredentialDO, AppCredentialRespDTO.class);
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.luhu.computility.framework.mybatis.core.mapper.BaseMapperX;
import com.luhu.computility.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.luhu.computility.module.apihub.api.userapiusage.dto.JoinUserApiUsageDTO;
import com.luhu.computility.module.apihub.controller.app.userapiusage.vo.AppUserApiUsageRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
......@@ -50,8 +51,8 @@ public interface UserApiUsageMapper extends BaseMapperX<UserApiUsageDO> {
.orderByDesc(UserApiUsageDO::getCreateTime));
}
default List<JoinUserApiUsageResult> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint) {
return selectJoinList(JoinUserApiUsageResult.class, new MPJLambdaWrapper<UserApiUsageDO>()
default List<JoinUserApiUsageDTO> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint) {
return selectJoinList(JoinUserApiUsageDTO.class, new MPJLambdaWrapper<UserApiUsageDO>()
.select(UserApiUsageDO::getApiName)
.selectAs(UserApiUsageDO::getId, JoinUserApiUsageResult::getId)
.selectAs(ApiEndpointDO::getId, JoinUserApiUsageResult::getApiEndPointId)
......
package com.luhu.computility.module.apihub.service.api;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
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;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.api.ApiMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apicalllog;
import cn.hutool.core.collection.CollUtil;
import com.luhu.computility.module.apihub.controller.app.apicalllog.vo.AppApiCallLogPageReqVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apicalllog.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicalllog.ApiCallLogDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apicalllog.ApiCallLogMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apicategory;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apicategory.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apicategory.ApiCategoryDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apicategory.ApiCategoryMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apiendpoint;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
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;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apiendpoint.ApiEndpointMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apiendpointapplicationrel;
import cn.hutool.core.collection.CollUtil;
import com.luhu.computility.module.biz.controller.admin.industryapplication.vo.IndustryApplicationRespVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpointapplicationrel.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointapplicationrel.ApiEndpointApplicationRelDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apiendpointapplicationrel.ApiEndpointApplicationRelMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apiendpointrel;
import cn.hutool.core.collection.CollUtil;
import com.luhu.computility.module.apihub.controller.admin.apiendpoint.vo.ApiEndpointRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpoint.ApiEndpointDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apiendpointrel.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apiendpointrel.ApiEndpointRelDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apiendpointrel.ApiEndpointRelMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apiorder;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import com.luhu.computility.framework.common.enums.UserTypeEnum;
import com.luhu.computility.framework.common.util.json.JsonUtils;
import com.luhu.computility.framework.common.util.string.StrUtils;
import com.luhu.computility.module.apihub.config.ApiOrderProperties;
......@@ -17,7 +14,6 @@ import com.luhu.computility.module.apihub.enums.ApiOrderRefundStatus;
import com.luhu.computility.module.apihub.enums.ApiOrderStatus;
import com.luhu.computility.module.apihub.service.api.ApiService;
import com.luhu.computility.module.apihub.service.apipackage.ApiPackageService;
import com.luhu.computility.module.member.api.address.dto.MemberAddressRespDTO;
import com.luhu.computility.module.pay.api.order.PayOrderApi;
import com.luhu.computility.module.pay.api.order.dto.PayOrderCreateReqDTO;
import com.luhu.computility.module.pay.api.order.dto.PayOrderRespDTO;
......@@ -44,7 +40,6 @@ import static com.luhu.computility.framework.common.util.collection.CollectionUt
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.getSumValue;
import static com.luhu.computility.framework.common.util.date.LocalDateTimeUtils.addTime;
import static com.luhu.computility.framework.common.util.servlet.ServletUtils.getClientIP;
import static com.luhu.computility.framework.web.core.util.WebFrameworkUtils.getTerminal;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.apipackage;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.apipackage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.apipackage.ApiPackageDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.apipackage.ApiPackageMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
package com.luhu.computility.module.apihub.service.appcredential;
import cn.hutool.core.collection.CollUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.appcredential.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.appcredential.AppCredentialDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.appcredential.AppCredentialMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......
......@@ -2,6 +2,8 @@ package com.luhu.computility.module.apihub.service.userapiusage;
import java.util.*;
import javax.validation.*;
import com.luhu.computility.module.apihub.api.userapiusage.dto.JoinUserApiUsageDTO;
import com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.*;
import com.luhu.computility.module.apihub.controller.app.userapiusage.vo.AppUserApiUsageRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
......@@ -70,7 +72,7 @@ public interface UserApiUsageService {
PageResult<AppUserApiUsageRespVO> getAppUserApiUsagePage(UserApiUsagePageReqVO pageReqVO);
List<JoinUserApiUsageResult> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint);
void asyncUpdateUsage(Long id, Integer used);
}
\ No newline at end of file
package com.luhu.computility.module.apihub.service.userapiusage;
import cn.hutool.core.collection.CollUtil;
import com.luhu.computility.module.apihub.controller.app.userapiusage.vo.AppUserApiUsageRespVO;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.luhu.computility.module.apihub.controller.admin.userapiusage.vo.*;
import com.luhu.computility.module.apihub.dal.dataobject.userapiusage.UserApiUsageDO;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.module.apihub.dal.mysql.userapiusage.UserApiUsageMapper;
import static com.luhu.computility.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.convertList;
import static com.luhu.computility.framework.common.util.collection.CollectionUtils.diffList;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
/**
......@@ -89,21 +84,4 @@ public class UserApiUsageServiceImpl implements UserApiUsageService {
return userApiUsageMapper.selectAppPage(pageReqVO);
}
@Override
public List<JoinUserApiUsageResult> selectJoinUserApiUsageResult(Long userId, Long apiIdEndpoint) {
return userApiUsageMapper.selectJoinUserApiUsageResult(userId, apiIdEndpoint);
}
@Override
@Async
public void asyncUpdateUsage(Long id, Integer used) {
// 校验存在
validateUserApiUsageExists(id);
UserApiUsageDO userApiUsage = getUserApiUsage(id);
userApiUsage.setUsedTimes(userApiUsage.getUsedTimes() - used);
userApiUsageMapper.updateById(userApiUsage);
}
}
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.luhu</groupId>
<artifactId>computility-module-biz</artifactId>
<version>2.6.0-jdk8-SNAPSHOT</version>
</parent>
<artifactId>computility-module-biz-api</artifactId>
<packaging>jar</packaging>
<name>computility-module-biz-api</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
package com.luhu.computility.module.biz.api.industryapplication;
import com.luhu.computility.framework.apilog.core.annotation.ApiAccessLog;
import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.pojo.PageParam;
import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.excel.core.util.ExcelUtils;
import com.luhu.computility.module.biz.api.industryapplication.dto.IndustryApplicationPageReqVO;
import com.luhu.computility.module.biz.api.industryapplication.dto.IndustryApplicationRespDTO;
import com.luhu.computility.module.biz.api.industryapplication.dto.IndustryApplicationSaveReqVO;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static com.luhu.computility.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static com.luhu.computility.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 行业应用")
@RestController
@RequestMapping("/biz/industry-application")
@Validated
public class IndustryApplicationController {
@Resource
private IndustryApplicationService industryApplicationService;
@PostMapping("/create")
@Operation(summary = "创建行业应用")
@PreAuthorize("@ss.hasPermission('biz:industry-application:create')")
public CommonResult<Long> createIndustryApplication(@Valid @RequestBody IndustryApplicationSaveReqVO createReqVO) {
return success(industryApplicationService.createIndustryApplication(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新行业应用")
@PreAuthorize("@ss.hasPermission('biz:industry-application:update')")
public CommonResult<Boolean> updateIndustryApplication(@Valid @RequestBody IndustryApplicationSaveReqVO updateReqVO) {
industryApplicationService.updateIndustryApplication(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除行业应用")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('biz:industry-application:delete')")
public CommonResult<Boolean> deleteIndustryApplication(@RequestParam("id") Long id) {
industryApplicationService.deleteIndustryApplication(id);
return success(true);
}
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除行业应用")
@PreAuthorize("@ss.hasPermission('biz:industry-application:delete')")
public CommonResult<Boolean> deleteIndustryApplicationList(@RequestParam("ids") List<Long> ids) {
industryApplicationService.deleteIndustryApplicationListByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得行业应用")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('biz:industry-application:query')")
public CommonResult<IndustryApplicationRespDTO> getIndustryApplication(@RequestParam("id") Long id) {
IndustryApplicationDO industryApplication = industryApplicationService.getIndustryApplication(id);
IndustryApplicationRespDTO respVO = BeanUtils.toBean(industryApplication, IndustryApplicationRespDTO.class);
return success(respVO);
}
@GetMapping("/page")
@Operation(summary = "获得行业应用分页")
@PreAuthorize("@ss.hasPermission('biz:industry-application:query')")
public CommonResult<PageResult<IndustryApplicationRespDTO>> getIndustryApplicationPage(@Valid IndustryApplicationPageReqVO pageReqVO) {
PageResult<IndustryApplicationDO> pageResult = industryApplicationService.getIndustryApplicationPage(pageReqVO);
PageResult<IndustryApplicationRespDTO> respResult = BeanUtils.toBean(pageResult, IndustryApplicationRespDTO.class);
return success(respResult);
}
@GetMapping("/list")
@Operation(summary = "获得行业应用分页")
@PreAuthorize("@ss.hasPermission('biz:industry-application:query')")
public CommonResult<List<IndustryApplicationRespDTO>> getIndustryApplicationList() {
List<IndustryApplicationDO> list = industryApplicationService.getAllIndustryApplication(); // 新增Service方法
List<IndustryApplicationRespDTO> result = BeanUtils.toBean(list, IndustryApplicationRespDTO.class);
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出行业应用 Excel")
@PreAuthorize("@ss.hasPermission('biz:industry-application:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportIndustryApplicationExcel(@Valid IndustryApplicationPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<IndustryApplicationDO> list = industryApplicationService.getIndustryApplicationPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "行业应用.xls", "数据", IndustryApplicationRespDTO.class,
BeanUtils.toBean(list, IndustryApplicationRespDTO.class));
}
}
\ No newline at end of file
package com.luhu.computility.module.biz.api.industryapplication.dto;
import com.luhu.computility.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.luhu.computility.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 行业应用分页 Request VO")
@Data
public class IndustryApplicationPageReqVO extends PageParam {
@Schema(description = "标题")
private String title;
@Schema(description = "状态:0-已隐藏,1-已显示", example = "1")
private Integer showStatus;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "首页展示图片")
private String homeImage;
@Schema(description = "组件类型:0-全部", example = "1")
private Integer type;
@Schema(description = "排序值")
private Integer orderNum;
}
\ No newline at end of file
package com.luhu.computility.module.biz.api.industryapplication.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 行业应用 Response VO")
@Data
@ExcelIgnoreUnannotated
public class IndustryApplicationRespDTO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@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 = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "首页展示图片")
@ExcelProperty("首页展示图片")
private String homeImage;
@Schema(description = "组件类型:0-全部", example = "1")
@ExcelProperty("组件类型:0-全部")
private Integer type;
@Schema(description = "排序值")
@ExcelProperty("排序值")
private Integer orderNum;
@Schema(description = "状态:0-已隐藏,1-已显示", example = "1")
private Integer showStatus;
}
\ No newline at end of file
package com.luhu.computility.module.biz.api.industryapplication.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 行业应用新增/修改 Request VO")
@Data
public class IndustryApplicationSaveReqVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21619")
private Long id;
@Schema(description = "展示图地址")
private String image;
@Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "内容不能为空")
private String information;
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "标题不能为空")
private String title;
@Schema(description = "链接地址", example = "https://www.iocoder.cn")
private String url;
@Schema(description = "描述内容", example = "随便")
private String description;
@Schema(description = "状态:0-已隐藏,1-已显示", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态:0-已隐藏,1-已显示不能为空")
private Integer showStatus;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "首页展示图片")
private String homeImage;
@Schema(description = "组件类型:0-全部", example = "1")
private Integer type;
@Schema(description = "排序值")
private Integer orderNum;
}
\ No newline at end of file
package com.luhu;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.luhu</groupId>
<artifactId>computility-module-biz</artifactId>
<version>2.6.0-jdk8-SNAPSHOT</version>
</parent>
<artifactId>computility-module-biz-biz</artifactId>
<packaging>jar</packaging>
<name>computility-module-biz-biz</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-biz-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-trade</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-product</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-module-system</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-biz-data-permission</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-biz-tenant</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-test</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>com.luhu</groupId>
<artifactId>computility-spring-boot-starter-excel</artifactId>
</dependency>
</dependencies>
</project>
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