feat(purchase): 新增主题购买全流程接口
新增主题购买功能,包括余额校验、订单生成、交易记录等完整流程。同时扩展错误码支持余额不足、主题不存在等场景。
This commit is contained in:
@@ -1,19 +1,20 @@
|
||||
package com.yolo.keyborad.controller;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.yolo.keyborad.common.BaseResponse;
|
||||
import com.yolo.keyborad.common.ResultUtils;
|
||||
import com.yolo.keyborad.model.dto.purchase.ThemePurchaseReq;
|
||||
import com.yolo.keyborad.model.vo.purchase.ThemePurchaseRespVO;
|
||||
import com.yolo.keyborad.model.vo.themes.KeyboardThemeStylesRespVO;
|
||||
import com.yolo.keyborad.model.vo.themes.KeyboardThemesRespVO;
|
||||
import com.yolo.keyborad.service.KeyboardThemePurchaseService;
|
||||
import com.yolo.keyborad.service.KeyboardThemeStylesService;
|
||||
import com.yolo.keyborad.service.KeyboardThemesService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -33,6 +34,9 @@ public class ThemesController {
|
||||
@Resource
|
||||
private KeyboardThemeStylesService keyboardThemeStylesService;
|
||||
|
||||
@Resource
|
||||
private KeyboardThemePurchaseService themePurchaseService;
|
||||
|
||||
|
||||
@GetMapping("/listByStyle")
|
||||
@Operation(summary = "按风格查询主题", description = "按主题风格查询主题列表接口")
|
||||
@@ -46,5 +50,12 @@ public class ThemesController {
|
||||
return ResultUtils.success(keyboardThemeStylesService.selectAllThemeStyles());
|
||||
}
|
||||
|
||||
@PostMapping("/purchase")
|
||||
@Operation(summary = "购买主题", description = "购买主题接口,扣减用户余额")
|
||||
public BaseResponse<ThemePurchaseRespVO> purchaseTheme(@RequestBody ThemePurchaseReq req) {
|
||||
Long userId = StpUtil.getLoginIdAsLong();
|
||||
ThemePurchaseRespVO result = themePurchaseService.purchaseTheme(userId, req.getThemeId());
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user