You've already forked FrameTour-BE
- 移除了 AppClaimController 中的重复代码 - 在 VoucherPrintServiceImpl 中增加了打印配置的判断和警告日志 - 保留了 FeiETicketPrinter 的调用逻辑,增加了配置判断
92 lines
4.3 KiB
Java
92 lines
4.3 KiB
Java
package com.ycwl.basic.controller.mobile;
|
|
|
|
import com.ycwl.basic.model.mobile.claim.ClaimReq;
|
|
import com.ycwl.basic.model.mobile.claim.ClaimResp;
|
|
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
|
import com.ycwl.basic.pricing.dto.CouponClaimRequest;
|
|
import com.ycwl.basic.pricing.dto.CouponClaimResult;
|
|
import com.ycwl.basic.pricing.dto.req.VoucherPrintReq;
|
|
import com.ycwl.basic.pricing.dto.resp.VoucherPrintResp;
|
|
import com.ycwl.basic.pricing.service.ICouponService;
|
|
import com.ycwl.basic.pricing.service.VoucherPrintService;
|
|
import com.ycwl.basic.repository.FaceRepository;
|
|
import com.ycwl.basic.repository.ScenicRepository;
|
|
import com.ycwl.basic.util.ScenicConfigManager;
|
|
import com.ycwl.basic.utils.ApiResponse;
|
|
import lombok.AllArgsConstructor;
|
|
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;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/mobile/claim/v1")
|
|
@AllArgsConstructor
|
|
public class AppClaimController {
|
|
private final FaceRepository faceRepository;
|
|
private final ScenicRepository scenicRepository;
|
|
private final VoucherPrintService voucherPrintService;
|
|
private final ICouponService couponService;
|
|
|
|
|
|
@PostMapping("tryClaim")
|
|
public ApiResponse<ClaimResp> tryClaim(@RequestBody ClaimReq req) {
|
|
FaceEntity face = faceRepository.getFace(req.getFaceId());
|
|
if (face == null) {
|
|
return ApiResponse.fail("请选择人脸");
|
|
}
|
|
ClaimResp claimResp = new ClaimResp();
|
|
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId());
|
|
if (Boolean.TRUE.equals(scenicConfig.getBoolean("voucher_enable"))) {
|
|
// 可以领券
|
|
VoucherPrintResp voucherPrintResp = voucherPrintService.queryPrintedVoucher(face.getId());
|
|
if (voucherPrintResp == null) {
|
|
// 打印
|
|
if (req.getMorphId() != null) {
|
|
voucherPrintResp = voucherPrintService.printVoucherTicket(new VoucherPrintReq(face.getId(), req.getMorphId(), face.getScenicId()));
|
|
}
|
|
}
|
|
if (voucherPrintResp != null) {
|
|
claimResp.setHasCoupon(false);
|
|
claimResp.setHasPrint(true);
|
|
claimResp.setPrintCode(voucherPrintResp.getCode());
|
|
claimResp.setPrintType(voucherPrintResp.getType());
|
|
return ApiResponse.success(claimResp);
|
|
}
|
|
}
|
|
if (Boolean.TRUE.equals(scenicConfig.getBoolean("booking_enable"))) {
|
|
VoucherPrintResp voucherPrintResp = voucherPrintService.queryPrintedVoucher(face.getId());
|
|
if (voucherPrintResp == null) {
|
|
// 打印
|
|
if (req.getMorphId() != null) {
|
|
voucherPrintResp = voucherPrintService.printBookingTicket(new VoucherPrintReq(face.getId(), req.getMorphId(), face.getScenicId()));
|
|
}
|
|
}
|
|
if (voucherPrintResp != null) {
|
|
claimResp.setHasCoupon(false);
|
|
claimResp.setHasPrint(true);
|
|
claimResp.setPrintCode(voucherPrintResp.getCode());
|
|
claimResp.setPrintType(voucherPrintResp.getType());
|
|
return ApiResponse.success(claimResp);
|
|
}
|
|
}
|
|
if (req.getType() != null) {
|
|
// 第几次进入
|
|
Integer couponId = scenicConfig.getInteger("coupon_id_for_type_" + req.getType());
|
|
if (couponId != null) {
|
|
// 可以领券
|
|
CouponClaimRequest request = new CouponClaimRequest(face.getMemberId(), Long.valueOf(couponId));
|
|
CouponClaimResult claimResult = couponService.claimCoupon(request);
|
|
if (claimResult.isSuccess()) {
|
|
// 领到了
|
|
claimResp.setHasCoupon(true);
|
|
claimResp.setCouponDesc(scenicConfig.getString("coupon_desc_for_type_" + req.getType(), "专属折扣券"));
|
|
claimResp.setCouponCountdown(scenicConfig.getString("coupon_countdown_for_type_" + req.getType(), "送你优惠,保存美好!"));
|
|
return ApiResponse.success(claimResp);
|
|
}
|
|
}
|
|
}
|
|
return ApiResponse.fail("异常");
|
|
}
|
|
}
|