You've already forked FrameTour-BE
feat(pricing): 添加券码管理和使用功能
- 新增券码批次配置和券码实体 - 实现券码创建、领取、使用等接口 - 添加券码状态和优惠类型枚举 - 优化价格计算逻辑,支持券码优惠 - 新增优惠检测和应用相关功能
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
package com.ycwl.basic.pricing.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ycwl.basic.pricing.dto.req.VoucherBatchCreateReq;
|
||||
import com.ycwl.basic.pricing.dto.req.VoucherBatchQueryReq;
|
||||
import com.ycwl.basic.pricing.dto.req.VoucherClaimReq;
|
||||
import com.ycwl.basic.pricing.dto.req.VoucherCodeQueryReq;
|
||||
import com.ycwl.basic.pricing.dto.resp.VoucherBatchResp;
|
||||
import com.ycwl.basic.pricing.dto.resp.VoucherBatchStatsResp;
|
||||
import com.ycwl.basic.pricing.dto.resp.VoucherCodeResp;
|
||||
import com.ycwl.basic.pricing.service.VoucherBatchService;
|
||||
import com.ycwl.basic.pricing.service.VoucherCodeService;
|
||||
import com.ycwl.basic.utils.ApiResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/pricing/voucher")
|
||||
@RequiredArgsConstructor
|
||||
public class VoucherManagementController {
|
||||
|
||||
private final VoucherBatchService voucherBatchService;
|
||||
private final VoucherCodeService voucherCodeService;
|
||||
|
||||
@PostMapping("/batch/create")
|
||||
public ApiResponse<Long> createBatch(@RequestBody VoucherBatchCreateReq req) {
|
||||
Long batchId = voucherBatchService.createBatch(req);
|
||||
return ApiResponse.success(batchId);
|
||||
}
|
||||
|
||||
@PostMapping("/batch/list")
|
||||
public ApiResponse<Page<VoucherBatchResp>> getBatchList(@RequestBody VoucherBatchQueryReq req) {
|
||||
Page<VoucherBatchResp> page = voucherBatchService.queryBatchList(req);
|
||||
return ApiResponse.success(page);
|
||||
}
|
||||
|
||||
@GetMapping("/batch/{id}")
|
||||
public ApiResponse<VoucherBatchResp> getBatchDetail(@PathVariable Long id) {
|
||||
VoucherBatchResp batch = voucherBatchService.getBatchDetail(id);
|
||||
return ApiResponse.success(batch);
|
||||
}
|
||||
|
||||
@GetMapping("/batch/{id}/stats")
|
||||
public ApiResponse<VoucherBatchStatsResp> getBatchStats(@PathVariable Long id) {
|
||||
VoucherBatchStatsResp stats = voucherBatchService.getBatchStats(id);
|
||||
return ApiResponse.success(stats);
|
||||
}
|
||||
|
||||
@PutMapping("/batch/{id}/status")
|
||||
public ApiResponse<Void> updateBatchStatus(@PathVariable Long id, @RequestParam Integer status) {
|
||||
voucherBatchService.updateBatchStatus(id, status);
|
||||
return ApiResponse.success(null);
|
||||
}
|
||||
|
||||
@PostMapping("/codes")
|
||||
public ApiResponse<Page<VoucherCodeResp>> getCodeList(@RequestBody VoucherCodeQueryReq req) {
|
||||
Page<VoucherCodeResp> page = voucherCodeService.queryCodeList(req);
|
||||
return ApiResponse.success(page);
|
||||
}
|
||||
|
||||
@PutMapping("/code/{id}/use")
|
||||
public ApiResponse<Void> markCodeAsUsed(@PathVariable Long id, @RequestParam(required = false) String remark) {
|
||||
voucherCodeService.markCodeAsUsed(id, remark);
|
||||
return ApiResponse.success(null);
|
||||
}
|
||||
|
||||
@GetMapping("/scenic/{scenicId}/users")
|
||||
public ApiResponse<Page<VoucherCodeResp>> getUsersInScenic(@PathVariable Long scenicId,
|
||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
VoucherCodeQueryReq req = new VoucherCodeQueryReq();
|
||||
req.setScenicId(scenicId);
|
||||
req.setPageNum(pageNum);
|
||||
req.setPageSize(pageSize);
|
||||
Page<VoucherCodeResp> page = voucherCodeService.queryCodeList(req);
|
||||
return ApiResponse.success(page);
|
||||
}
|
||||
|
||||
@PostMapping("/mobile/claim")
|
||||
public ApiResponse<VoucherCodeResp> claimVoucher(@RequestBody VoucherClaimReq req) {
|
||||
VoucherCodeResp result = voucherCodeService.claimVoucher(req);
|
||||
return ApiResponse.success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/mobile/my-codes")
|
||||
public ApiResponse<List<VoucherCodeResp>> getMyVoucherCodes(@RequestParam Long faceId) {
|
||||
List<VoucherCodeResp> codes = voucherCodeService.getMyVoucherCodes(faceId);
|
||||
return ApiResponse.success(codes);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user