@@ -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' |
@@ -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)); | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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); |