You've already forked FrameTour-BE
- 新增 queryPrintedVoucher 方法查询已打印的凭证 - 新增 claimVoucher 方法实现自动领取凭证 - 优化 printVoucherTicket 方法,移除冗余参数 - 更新相关 mapper 和 XML 文件以支持新功能
76 lines
2.9 KiB
Java
76 lines
2.9 KiB
Java
package com.ycwl.basic.controller.mobile;
|
|
|
|
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.pricing.dto.req.VoucherClaimReq;
|
|
import com.ycwl.basic.pricing.dto.req.VoucherPrintReq;
|
|
import com.ycwl.basic.pricing.dto.resp.VoucherCodeResp;
|
|
import com.ycwl.basic.pricing.dto.resp.VoucherPrintResp;
|
|
import com.ycwl.basic.pricing.service.VoucherCodeService;
|
|
import com.ycwl.basic.pricing.service.VoucherPrintService;
|
|
import com.ycwl.basic.repository.FaceRepository;
|
|
import com.ycwl.basic.utils.ApiResponse;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
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.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
@Slf4j
|
|
@RestController
|
|
@RequestMapping("/api/mobile/voucher/v1")
|
|
public class AppVoucherController {
|
|
|
|
@Autowired
|
|
private VoucherPrintService voucherPrintService;
|
|
@Autowired
|
|
private VoucherCodeService voucherCodeService;
|
|
@Autowired
|
|
private FaceRepository faceRepository;
|
|
|
|
/**
|
|
* 打印小票
|
|
* @param request 打印请求
|
|
* @return 打印结果
|
|
*/
|
|
@PostMapping("/print")
|
|
public ApiResponse<VoucherPrintResp> printVoucherTicket(@RequestBody VoucherPrintReq request) {
|
|
log.info("收到打印小票请求: faceId={}, brokerId={}, scenicId={}",
|
|
request.getFaceId(), request.getBrokerId(), request.getScenicId());
|
|
|
|
VoucherPrintResp response = voucherPrintService.printVoucherTicket(request);
|
|
|
|
log.info("打印小票完成: code={}, voucherCode={}, status={}",
|
|
response.getCode(), response.getVoucherCode(), response.getPrintStatus());
|
|
|
|
return ApiResponse.success(response);
|
|
}
|
|
|
|
@GetMapping("/printed")
|
|
public ApiResponse<VoucherPrintResp> queryPrintedVoucher(
|
|
@RequestParam Long faceId
|
|
) {
|
|
return ApiResponse.success(voucherPrintService.queryPrintedVoucher(faceId));
|
|
}
|
|
|
|
@PostMapping("/claim")
|
|
public ApiResponse<VoucherCodeResp> claimVoucher(@RequestBody VoucherClaimReq req) {
|
|
FaceEntity face = faceRepository.getFace(req.getFaceId());
|
|
if (face == null) {
|
|
throw new BaseException("请选择人脸");
|
|
}
|
|
if (!face.getMemberId().equals(Long.valueOf(BaseContextHandler.getUserId()))) {
|
|
throw new BaseException("自动领取失败");
|
|
}
|
|
req.setScenicId(face.getScenicId());
|
|
VoucherCodeResp result = voucherCodeService.claimVoucher(req);
|
|
return ApiResponse.success(result);
|
|
}
|
|
|
|
}
|