Commit 4605d357 by lijinqi

1.算力资源 展示字段修改、筛选条件修改

2.用户资源管理 展示字段修改、筛选条件修改
3.pdf预览接口修
parent c44ab6a2
...@@ -57,7 +57,7 @@ public class ApiOrderController { ...@@ -57,7 +57,7 @@ public class ApiOrderController {
@Operation(summary = "开具发票") @Operation(summary = "开具发票")
public CommonResult<Boolean> issueInvoice(@RequestBody ApiOrderSaveReqVO saveVO){ public CommonResult<Boolean> issueInvoice(@RequestBody ApiOrderSaveReqVO saveVO){
if(ObjectUtil.isEmpty(saveVO.getInvoiceUrl())){ if(ObjectUtil.isEmpty(saveVO.getInvoiceUrl())){
throw new ServiceException("没有接收到发票图片!"); throw new ServiceException("没有接收到发票文件地址!");
} }
if(saveVO.getInvoiceStatus().equals(INVOICED.getStatus())){ if(saveVO.getInvoiceStatus().equals(INVOICED.getStatus())){
throw new ServiceException("该订单已经开具发票"); throw new ServiceException("该订单已经开具发票");
......
package com.luhu.computility.module.apihub.controller.app.apiorder; package com.luhu.computility.module.apihub.controller.app.apiorder;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.luhu.computility.framework.common.exception.ServiceException;
import com.luhu.computility.framework.common.pojo.CommonResult; import com.luhu.computility.framework.common.pojo.CommonResult;
import com.luhu.computility.framework.common.pojo.PageResult; import com.luhu.computility.framework.common.pojo.PageResult;
import com.luhu.computility.framework.common.util.object.BeanUtils; import com.luhu.computility.framework.common.util.object.BeanUtils;
import com.luhu.computility.framework.security.core.util.SecurityFrameworkUtils; import com.luhu.computility.framework.security.core.util.SecurityFrameworkUtils;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO; import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateRespVO; import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateRespVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderInvoiceReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderPageReqVO; 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.controller.app.apiorder.vo.AppApiOrderRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO; import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
...@@ -28,6 +30,8 @@ import javax.validation.Valid; ...@@ -28,6 +30,8 @@ import javax.validation.Valid;
import java.util.List; import java.util.List;
import static com.luhu.computility.framework.common.pojo.CommonResult.success; import static com.luhu.computility.framework.common.pojo.CommonResult.success;
import static com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum.INVOICED;
import static com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum.INVOICING;
@Tag(name = "用户端 - api订单") @Tag(name = "用户端 - api订单")
@RestController @RestController
...@@ -124,4 +128,17 @@ public class AppApiOrderController { ...@@ -124,4 +128,17 @@ public class AppApiOrderController {
}*/ }*/
@PostMapping("/invoiceRequest")
@Operation(summary = "申请开票")
public CommonResult<Boolean> invoiceRequest(@RequestBody AppApiOrderInvoiceReqVO reqVO){
Integer invoiceStatus = reqVO.getInvoiceStatus();
if(invoiceStatus.equals(INVOICING.getStatus())){
throw new ServiceException("该订单已申请开票,请耐心等待");
}
if(invoiceStatus.equals(INVOICED.getStatus())){
throw new ServiceException("该订单已开票,请勿重复申请");
}
return success(apiOrderService.updateRequestInvoice(reqVO));
}
} }
\ No newline at end of file
package com.luhu.computility.module.apihub.controller.app.apiorder.vo;
import lombok.Data;
/**
* @Author: jony
* @Date : 2025/9/10 09:53
* @VERSION v1.0
*/
@Data
public class AppApiOrderInvoiceReqVO {
private Long id;
//发票图片链接
private String invoiceUrl;
//开票状态
private Integer invoiceStatus;
}
...@@ -4,6 +4,7 @@ import java.util.*; ...@@ -4,6 +4,7 @@ import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.luhu.computility.module.apihub.controller.admin.apiorder.vo.*; import com.luhu.computility.module.apihub.controller.admin.apiorder.vo.*;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO; import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderInvoiceReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderPageReqVO; 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.controller.app.apiorder.vo.AppApiOrderRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO; import com.luhu.computility.module.apihub.dal.dataobject.apiorder.ApiOrderDO;
...@@ -94,4 +95,12 @@ public interface ApiOrderService { ...@@ -94,4 +95,12 @@ public interface ApiOrderService {
boolean updateInvoice(ApiOrderSaveReqVO saveReqVO); boolean updateInvoice(ApiOrderSaveReqVO saveReqVO);
/**
* 用户申请开票 api
*
* @param reqVO
* @return
*/
boolean updateRequestInvoice(AppApiOrderInvoiceReqVO reqVO);
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ import com.luhu.computility.framework.common.util.json.JsonUtils; ...@@ -6,6 +6,7 @@ import com.luhu.computility.framework.common.util.json.JsonUtils;
import com.luhu.computility.framework.common.util.string.StrUtils; import com.luhu.computility.framework.common.util.string.StrUtils;
import com.luhu.computility.module.apihub.config.ApiOrderProperties; import com.luhu.computility.module.apihub.config.ApiOrderProperties;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO; import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderCreateReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderInvoiceReqVO;
import com.luhu.computility.module.apihub.controller.app.apiorder.vo.AppApiOrderPageReqVO; 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.controller.app.apiorder.vo.AppApiOrderRespVO;
import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO; import com.luhu.computility.module.apihub.dal.dataobject.api.ApiDO;
...@@ -46,6 +47,9 @@ import static com.luhu.computility.framework.common.util.servlet.ServletUtils.ge ...@@ -46,6 +47,9 @@ import static com.luhu.computility.framework.common.util.servlet.ServletUtils.ge
import static com.luhu.computility.module.apihub.enums.ApiOrderStatus.PAID; import static com.luhu.computility.module.apihub.enums.ApiOrderStatus.PAID;
import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*; import static com.luhu.computility.module.apihub.enums.ErrorCodeConstants.*;
import static com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum.INVOICED; import static com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum.INVOICED;
import static com.luhu.computility.module.trade.enums.order.TradeOrderInvoiceStatusEnum.INVOICING;
import static com.luhu.computility.module.trade.enums.order.TradeOrderStatusEnum.CANCELED;
import static com.luhu.computility.module.trade.enums.order.TradeOrderStatusEnum.UNPAID;
import static org.apache.commons.lang3.ObjectUtils.notEqual; import static org.apache.commons.lang3.ObjectUtils.notEqual;
/** /**
...@@ -287,4 +291,19 @@ public class ApiOrderServiceImpl implements ApiOrderService { ...@@ -287,4 +291,19 @@ public class ApiOrderServiceImpl implements ApiOrderService {
} }
@Override
public boolean updateRequestInvoice(AppApiOrderInvoiceReqVO reqVO) {
ApiOrderDO apiOrderDO = apiOrderMapper.selectById(reqVO.getId());
Integer status = apiOrderDO.getStatus();//订单状态
if(status.equals(UNPAID.getStatus())){
throw new ServiceException("未支付的订单不能申请开票");
} else if (status.equals(CANCELED.getStatus())) {
throw new ServiceException("已取消的订单不能申请开票!");
}
apiOrderDO.setInvoiceStatus(INVOICING.getStatus());
apiOrderMapper.updateById(apiOrderDO);
return true;
}
} }
\ No newline at end of file
...@@ -17,8 +17,16 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -17,8 +17,16 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.annotation.security.PermitAll; import javax.annotation.security.PermitAll;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import static com.luhu.computility.framework.common.pojo.CommonResult.success; import static com.luhu.computility.framework.common.pojo.CommonResult.success;
@Tag(name = "用户 App - 文件存储") @Tag(name = "用户 App - 文件存储")
...@@ -60,4 +68,35 @@ public class AppFileController { ...@@ -60,4 +68,35 @@ public class AppFileController {
return success(fileService.createFile(createReqVO)); return success(fileService.createFile(createReqVO));
} }
@GetMapping("/preview")
@Operation(summary = "PDF 文件预览")
@PermitAll
public void previewPdf(HttpServletResponse response, String url) throws IOException {
if (url == null || url.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
// 设置响应头(浏览器内嵌预览)
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + URLEncoder.encode("preview.pdf", StandardCharsets.UTF_8.name()) + "\"");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
// 用 HttpURLConnection 读取远程 PDF 流
try (InputStream inputStream = new URL(url).openStream();
OutputStream os = response.getOutputStream()) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.flush();
} catch (IOException e) {
response.setStatus(HttpServletResponse.SC_BAD_GATEWAY); // 502,云端文件无法访问
}
}
} }
...@@ -279,6 +279,7 @@ computility: ...@@ -279,6 +279,7 @@ computility:
ignore-urls: ignore-urls:
- /jmreport/* # 积木报表,无法携带租户编号 - /jmreport/* # 积木报表,无法携带租户编号
- /admin-api/infra/file/preview - /admin-api/infra/file/preview
- /app-api/infra/file/preview
- /open-api/external/** - /open-api/external/**
ignore-visit-urls: ignore-visit-urls:
- /admin-api/system/user/profile/** - /admin-api/system/user/profile/**
......
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