diff --git a/src/main/java/com/ycwl/basic/pricing/dto/resp/VoucherCodeResp.java b/src/main/java/com/ycwl/basic/pricing/dto/resp/VoucherCodeResp.java index 359dc573..db7b23d2 100644 --- a/src/main/java/com/ycwl/basic/pricing/dto/resp/VoucherCodeResp.java +++ b/src/main/java/com/ycwl/basic/pricing/dto/resp/VoucherCodeResp.java @@ -7,6 +7,15 @@ import java.util.Date; @Data public class VoucherCodeResp { + /** + * 领取是否成功 + */ + private Boolean success; + /** + * 结果描述(失败时为原因说明) + */ + private String message; + private Long id; private Long batchId; private String batchName; 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 9af9ed69..ad5806bc 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 @@ -80,7 +80,7 @@ public VoucherCodeResp claimVoucher(VoucherClaimReq req) { Long userId = Long.valueOf(BaseContextHandler.getUserId()); - // 验证券码是否存在且未被领取 + // 查询券码 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(PriceVoucherCode::getCode, req.getCode()) .eq(PriceVoucherCode::getDeleted, 0); @@ -90,18 +90,29 @@ public VoucherCodeResp claimVoucher(VoucherClaimReq req) { throw new BizException(400, "券码不存在"); } + // 查询批次信息,用于构建响应 + PriceVoucherBatchConfig batch = voucherBatchMapper.selectById(voucherCode.getBatchId()); + + // 券码已找到,后续校验失败时仍返回 scenicId 等信息 if (!Objects.equals(voucherCode.getStatus(), VoucherCodeStatus.UNCLAIMED.getCode())) { - throw new BizException(400, "券码已被领取或已使用"); + VoucherCodeResp resp = convertToResp(voucherCode, batch); + resp.setSuccess(false); + resp.setMessage("券码已被领取或已使用"); + return resp; } if (!canClaimVoucher(userId, voucherCode.getScenicId())) { - throw new BizException(400, "该用户在此景区已领取过券码"); + VoucherCodeResp resp = convertToResp(voucherCode, batch); + resp.setSuccess(false); + resp.setMessage("该用户在此景区已领取过券码"); + return resp; } - // 获取券码所属批次 - PriceVoucherBatchConfig batch = voucherBatchMapper.selectById(voucherCode.getBatchId()); if (batch == null || batch.getDeleted() == 1) { - throw new BizException(400, "券码批次不存在"); + VoucherCodeResp resp = convertToResp(voucherCode, batch); + resp.setSuccess(false); + resp.setMessage("券码批次不存在"); + return resp; } // 更新券码状态 @@ -117,7 +128,10 @@ public VoucherCodeResp claimVoucher(VoucherClaimReq req) { voucherBatchService.updateBatchClaimedCount(batch.getId()); - return convertToResp(voucherCode, batch); + VoucherCodeResp resp = convertToResp(voucherCode, batch); + resp.setSuccess(true); + resp.setMessage("领取成功"); + return resp; } @Override