diff --git a/src/main/java/com/ycwl/basic/pricing/dto/req/VoucherClaimReq.java b/src/main/java/com/ycwl/basic/pricing/dto/req/VoucherClaimReq.java
index 9680742..a3b8b0b 100644
--- a/src/main/java/com/ycwl/basic/pricing/dto/req/VoucherClaimReq.java
+++ b/src/main/java/com/ycwl/basic/pricing/dto/req/VoucherClaimReq.java
@@ -5,7 +5,6 @@ import lombok.Data;
@Data
public class VoucherClaimReq {
private Long scenicId;
- private Long brokerId;
private Long faceId;
private String code;
}
\ No newline at end of file
diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherCodeServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherCodeServiceImpl.java
index b2cabfc..d1a90a6 100644
--- a/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherCodeServiceImpl.java
+++ b/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherCodeServiceImpl.java
@@ -74,9 +74,6 @@ public class VoucherCodeServiceImpl implements VoucherCodeService {
if (req.getScenicId() == null) {
throw new BizException(400, "景区ID不能为空");
}
- if (req.getBrokerId() == null) {
- throw new BizException(400, "推客ID不能为空");
- }
if (req.getFaceId() == null) {
throw new BizException(400, "用户faceId不能为空");
}
@@ -108,12 +105,7 @@ public class VoucherCodeServiceImpl implements VoucherCodeService {
if (batch == null || batch.getDeleted() == 1) {
throw new BizException(400, "券码批次不存在");
}
-
- // 验证批次是否可用于该推客
- if (!Objects.equals(batch.getBrokerId(), req.getBrokerId())) {
- throw new BizException(400, "券码不属于该推客");
- }
-
+
// 更新券码状态
voucherCode.setFaceId(req.getFaceId());
voucherCode.setStatus(VoucherCodeStatus.CLAIMED_UNUSED.getCode());
diff --git a/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherPrintServiceImpl.java b/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherPrintServiceImpl.java
index e57ccf2..2cfc072 100644
--- a/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherPrintServiceImpl.java
+++ b/src/main/java/com/ycwl/basic/pricing/service/impl/VoucherPrintServiceImpl.java
@@ -3,6 +3,7 @@ package com.ycwl.basic.pricing.service.impl;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.exception.BaseException;
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
+import com.ycwl.basic.model.pc.mp.MpConfigEntity;
import com.ycwl.basic.pricing.dto.req.VoucherPrintReq;
import com.ycwl.basic.pricing.dto.resp.VoucherPrintResp;
import com.ycwl.basic.pricing.entity.PriceVoucherCode;
@@ -10,7 +11,10 @@ import com.ycwl.basic.pricing.entity.VoucherPrintRecord;
import com.ycwl.basic.pricing.mapper.PriceVoucherCodeMapper;
import com.ycwl.basic.pricing.mapper.VoucherPrintRecordMapper;
import com.ycwl.basic.pricing.service.VoucherPrintService;
+import com.ycwl.basic.printer.ticket.FeiETicketPrinter;
import com.ycwl.basic.repository.FaceRepository;
+import com.ycwl.basic.repository.ScenicRepository;
+import com.ycwl.basic.utils.WxMpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +51,9 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
// 原子计数器,确保流水号唯一性
private static final AtomicLong counter = new AtomicLong(0);
-
+ @Autowired
+ private ScenicRepository scenicRepository;
+
@Override
@Transactional(rollbackFor = Exception.class)
public VoucherPrintResp printVoucherTicket(VoucherPrintReq request) {
@@ -112,15 +118,19 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
printRecord.setDeleted(0);
voucherPrintRecordMapper.insert(printRecord);
-
- // TODO: 调用打印机接口打印小票
- // printTicket(printRecord);
-
- // 暂时标记为打印成功状态(实际应该在打印成功回调中更新)
- printRecord.setPrintStatus(1);
+
+ try {
+ printTicket(printRecord);
+ printRecord.setPrintStatus(1);
+ } catch (Exception e) {
+ log.error("打印失败");
+ printRecord.setPrintStatus(2);
+ }
+
voucherPrintRecordMapper.updatePrintStatus(printRecord.getId(), 1, null);
log.info("成功创建打印记录: {}, 券码: {}", code, availableVoucher.getCode());
+ printRecord.setCode(printRecord.getVoucherCode());
return buildResponse(printRecord);
} finally {
@@ -198,8 +208,32 @@ public class VoucherPrintServiceImpl implements VoucherPrintService {
/**
* 调用打印机接口(待实现)
*/
- private void printTicket(VoucherPrintRecord record) {
- // TODO: 实现打印机接口调用逻辑
- log.info("TODO: 调用打印机打印小票,记录ID: {}, 券码: {}", record.getId(), record.getVoucherCode());
+ private void printTicket(VoucherPrintRecord record) throws Exception {
+ FaceEntity face = faceRepository.getFace(record.getFaceId());
+ MpConfigEntity scenicMpConfig = scenicRepository.getScenicMpConfig(face.getScenicId());
+ String urlLink = WxMpUtil.generateUrlLink(scenicMpConfig.getAppId(), scenicMpConfig.getAppSecret(), "pages/videoSynthesis/index", "code=" + record.getVoucherCode() + "&faceId=" + face.getId());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
+ SimpleDateFormat sdf2 = new SimpleDateFormat("MM月dd日");
+ log.info(" 调用打印机打印小票,记录ID: {}, 券码: {}", record.getId(), record.getVoucherCode());
+ String content;
+ content = "
世界再大
";
+ content += "你永远是这段旅途
";
+ content += "的焦点
";
+ content += "━━━━━━━━━━━━━━━━
";
+ content += "正片主演:旅途中最靓的你
";
+ content += "拍摄地点:剑门关滑道
";
+ content += "拍摄日期:";
+ content += sdf.format(new Date());
+ content += "
";
+ content += "大片内容:包含Vlog、打卡录像与
";
+ content += " 精选照片
";
+ content += ""+urlLink+"";
+ content += "游后微信扫码领取";
+ content += "精彩指数:★★★★★
";
+ content += "━━━━━━━━━━━━━━━━
";
+ content += ""+record.getVoucherCode()+"";
+ content += "赠品码";
+ content += "有效期:"+sdf2.format(new Date())+"";
+ FeiETicketPrinter.doPrint("550519002", content, 1);
}
}
\ No newline at end of file