Переглянути джерело

iaw app提供二维码

master
chenchaod 2 тижднів тому
джерело
коміт
45cd63b231

+ 1
- 0
zhywpt-app-iaw/build.gradle Переглянути файл

@@ -24,6 +24,7 @@ dependencies {
implementation(group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0') {
// exclude group: 'net.bytebuddy',module: 'byte-buddy'
}
implementation 'com.google.zxing:core:3.5.1'
implementation "com.github.xiaoymin:knife4j-spring-boot-starter:3.0.2"
// //MYSQL
// runtimeOnly 'mysql:mysql-connector-java'

+ 11
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/api/issue/OrderController.java Переглянути файл

@@ -14,6 +14,7 @@ import cn.com.taiji.iaw.api.MyValidController;
import cn.com.taiji.iaw.dto.CommRequestDTO;
import cn.com.taiji.iaw.dto.issue.order.*;
import cn.com.taiji.iaw.manager.issue.IssueOrderManage;
import cn.hutool.http.server.HttpServerResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +22,10 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;

/**
* @Author:ChenChao
@@ -196,4 +200,11 @@ public class OrderController extends MyValidController {
issueOrderManage.examine(reqDto);
return ApiResponse.success();
}

@ApiOperation(value = "订单列表二维码-APP")
@PostMapping(value = "/listQRcode")
public ApiResponse<ListQrCodeResDTO> listQRcode(@Valid @RequestBody ListQrCodeReqDTO reqDto) throws ManagerException {
ListQrCodeResDTO resDTO = issueOrderManage.listQRcode(reqDto);
return ApiResponse.of((resDTO));
}
}

+ 22
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/order/ListQrCodeReqDTO.java Переглянути файл

@@ -0,0 +1,22 @@
package cn.com.taiji.iaw.dto.issue.order;

import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
* @Author:ChenChao
* @Date:2025/8/5 14:31
* @Filename:ListQrCodeReqDTO
* @description:
*/
@Data
@ApiModel(description = "订单列表二维码参数")
public class ListQrCodeReqDTO extends AbstractStaffBizRequestDTO {
@NotBlank(message = "订单编号不能为空")
private String orderNo;

// private String context;
}

+ 19
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/order/ListQrCodeResDTO.java Переглянути файл

@@ -0,0 +1,19 @@
package cn.com.taiji.iaw.dto.issue.order;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
* @Author:ChenChao
* @Date:2025/8/5 16:24
* @Filename:ListQrCodeResDTO
* @description:
*/
@ApiModel(description = "订单列表二维码返回参数")
@Data
public class ListQrCodeResDTO {

@ApiModelProperty(value = "二维码base64")
private String qRbase64;
}

+ 5
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/issue/IssueOrderManage.java Переглянути файл

@@ -13,6 +13,9 @@ import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse;
import cn.com.taiji.iaw.dto.CommRequestDTO;
import cn.com.taiji.iaw.dto.issue.order.*;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @Author:ChenChao
* @Date:2025/6/12 11:18
@@ -67,4 +70,6 @@ public interface IssueOrderManage {
void receive(OrderReceiveReqDTO reqDto) throws ManagerException;

void examine(OrderExamineReqDTO reqDto) throws ManagerException;

ListQrCodeResDTO listQRcode(ListQrCodeReqDTO reqDto) throws ManagerException;
}

+ 43
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/issue/IssueOrderManageImpl.java Переглянути файл

@@ -31,10 +31,16 @@ import cn.com.taiji.iaw.manager.AbstractIawManager;
import cn.com.taiji.iaw.repo.jpa.request.issue.IssueOrderaPageRequest;
import cn.com.taiji.iaw.repo.jpa.request.issue.IssueOrdermPageRequest;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.io.*;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
@@ -538,6 +544,43 @@ public class IssueOrderManageImpl extends AbstractIawManager implements IssueOrd
sysPersistOperateLog(OperateType.ORDER_EXAMINE, response.getId(), reqDto.getOrderSource(), findOpenIdByToken(reqDto.getAccessToken()), "发行订单审核");
}

@Override
public ListQrCodeResDTO listQRcode(ListQrCodeReqDTO reqDto) throws ManagerException {
checkOrder(reqDto.getOrderNo());
String context = "https://qtzl.etcjz.cn/default-bucket/order.html";
int qrSize = 300;
int qrMargin = 3;
// 创建二维码配置
QrConfig config = new QrConfig(qrSize, qrSize);
config.setMargin(qrMargin);
config.setBackColor(Color.WHITE);

File file = null; // 需要手动管理文件的创建和删除
InputStream in = null;
String base64 = null;
try {
// 创建临时文件
file = File.createTempFile("signcode", ".png");
QrCodeUtil.generate(context, config, file);
in = new FileInputStream(file);
byte[] bytes = new byte[(int) file.length()];
in.read(bytes);
base64 = new String(Base64.encodeBase64(bytes),"UTF-8");
} catch (Exception e) {
throw new ManagerException("二维码生成失败");
}finally {
// 确保文件被删除
if (file != null && file.exists()) {
if (!file.delete()) {
logger.warn("无法删除临时文件: {}", file.getAbsolutePath());
}
}
}
ListQrCodeResDTO resDTO = new ListQrCodeResDTO();
resDTO.setQRbase64(base64);
return resDTO;
}

//校验发行订单是否存在
private IssueOrderinfo checkOrder(String orderNo) throws ManagerException {
IssueOrderinfo order = issueOrderinfoRepo.findByOrderNo(orderNo);

Завантаження…
Відмінити
Зберегти