You've already forked FrameTour-BE
feat(pricing): 实现首次打印自动发券功能
- 新增自动发券服务接口 IAutoCouponService- 实现自动发券逻辑,包括参数校验、优惠券配置查询和发券记录检查 - 在打印服务中集成自动发券调用,确保首次打印时触发发券- 添加异常处理,避免发券失败影响主流程 - 支持通过优惠券名称和商品类型匹配规则查找目标优惠券
This commit is contained in:
@@ -33,6 +33,7 @@ import com.ycwl.basic.pricing.dto.PriceCalculationRequest;
|
||||
import com.ycwl.basic.pricing.dto.PriceCalculationResult;
|
||||
import com.ycwl.basic.pricing.dto.ProductItem;
|
||||
import com.ycwl.basic.pricing.enums.ProductType;
|
||||
import com.ycwl.basic.pricing.service.IAutoCouponService;
|
||||
import com.ycwl.basic.pricing.service.IPriceCalculationService;
|
||||
import com.ycwl.basic.model.pc.printer.entity.MemberPrintEntity;
|
||||
import com.ycwl.basic.model.pc.printer.entity.PrintTaskEntity;
|
||||
@@ -109,6 +110,8 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
@Autowired
|
||||
private IPriceCalculationService priceCalculationService;
|
||||
@Autowired
|
||||
private IAutoCouponService autoCouponService;
|
||||
@Autowired
|
||||
private ScenicRepository scenicRepository;
|
||||
@Autowired
|
||||
private OrderRepository orderRepository;
|
||||
@@ -586,6 +589,21 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
throw new BaseException("没有可打印的照片");
|
||||
}
|
||||
|
||||
// 【新增】检测并自动发放首次打印优惠券
|
||||
if (mobileCount > 0) {
|
||||
try {
|
||||
autoCouponService.autoGrantFirstPrintCoupon(
|
||||
memberId,
|
||||
faceId,
|
||||
scenicId,
|
||||
ProductType.PHOTO_PRINT_MU
|
||||
);
|
||||
} catch (Exception e) {
|
||||
log.warn("自动发券失败,不影响下单流程: memberId={}, faceId={}, scenicId={}, error={}",
|
||||
memberId, faceId, scenicId, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
OrderEntity order = new OrderEntity();
|
||||
Long orderId = SnowFlakeUtil.getLongId();
|
||||
redisTemplate.opsForValue().set("printer_size:"+orderId, printer.getPreferPaper(), 60, TimeUnit.SECONDS);
|
||||
|
||||
Reference in New Issue
Block a user