feat(product): 新增键盘商品管理模块
新增商品实体、Mapper、Service、Controller 及 VO,支持商品列表、详情、订阅等接口;同步更新 Sa-Token 放行路径与 .gitignore
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package com.yolo.keyborad.controller;
|
||||
|
||||
import com.yolo.keyborad.common.BaseResponse;
|
||||
import com.yolo.keyborad.common.ErrorCode;
|
||||
import com.yolo.keyborad.common.ResultUtils;
|
||||
import com.yolo.keyborad.exception.BusinessException;
|
||||
import com.yolo.keyborad.model.vo.products.KeyboardProductItemRespVO;
|
||||
import com.yolo.keyborad.service.KeyboardProductItemsService;
|
||||
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 java.util.List;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/12
|
||||
*/
|
||||
@RestController
|
||||
@Slf4j
|
||||
@RequestMapping("/products")
|
||||
@Tag(name = "商品", description = "商品相关接口")
|
||||
public class ProductsController {
|
||||
|
||||
@Resource
|
||||
private KeyboardProductItemsService productItemsService;
|
||||
|
||||
@GetMapping("/detail")
|
||||
@Operation(summary = "查询商品明细", description = "根据商品ID或productId查询商品详情")
|
||||
public BaseResponse<KeyboardProductItemRespVO> getProductDetail(
|
||||
@RequestParam(value = "id", required = false) Long id,
|
||||
@RequestParam(value = "productId", required = false) String productId
|
||||
) {
|
||||
if (id == null && (productId == null || productId.isBlank())) {
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "id 或 productId 至少传一个");
|
||||
}
|
||||
KeyboardProductItemRespVO result = (id != null)
|
||||
? productItemsService.getProductDetailById(id)
|
||||
: productItemsService.getProductDetailByProductId(productId);
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/listByType")
|
||||
@Operation(summary = "按类型查询商品列表", description = "根据商品类型查询商品列表,type=all 返回全部")
|
||||
public BaseResponse<List<KeyboardProductItemRespVO>> listByType(@RequestParam("type") String type) {
|
||||
if (type == null || type.isBlank()) {
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "type 不能为空");
|
||||
}
|
||||
List<KeyboardProductItemRespVO> result = productItemsService.listProductsByType(type);
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/inApp/list")
|
||||
@Operation(summary = "查询内购商品列表", description = "查询 type=in-app-purchase 的商品列表")
|
||||
public BaseResponse<List<KeyboardProductItemRespVO>> listInAppPurchases() {
|
||||
List<KeyboardProductItemRespVO> result = productItemsService.listProductsByType("in-app-purchase");
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/subscription/list")
|
||||
@Operation(summary = "查询订阅商品列表", description = "查询 type=subscription 的商品列表")
|
||||
public BaseResponse<List<KeyboardProductItemRespVO>> listSubscriptions() {
|
||||
List<KeyboardProductItemRespVO> result = productItemsService.listProductsByType("subscription");
|
||||
return ResultUtils.success(result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user