商品详情接口开发

This commit is contained in:
jieyuu 2024-08-12 16:58:38 +08:00
parent 48b1148192
commit d1cf736317
7 changed files with 179 additions and 9 deletions

View File

@ -0,0 +1,25 @@
package net.jieyuu.config;
import lombok.extern.slf4j.Slf4j;
import net.jieyuu.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@Slf4j
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry
.addInterceptor(new LoginInterceptor())
//拦截的路径
.addPathPatterns("")
//放行的路径
.excludePathPatterns("", "");
WebMvcConfigurer.super.addInterceptors(registry);
}
}

View File

@ -1,9 +1,16 @@
package net.jieyuu.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.jieyuu.service.ProductService;
import net.jieyuu.utils.JsonData;
import net.jieyuu.vo.ProductVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* <p>
@ -13,9 +20,31 @@ import org.springframework.web.bind.annotation.RestController;
* @author jieyuu
* @since 2024-08-07
*/
@Api("商品模块")
@RestController
@RequestMapping("/productDO")
@RequestMapping("/api/product/v1")
public class ProductController {
@Autowired
private ProductService productService;
@ApiOperation(value = "分页查询商品列表")
@GetMapping("page")
public JsonData page(@ApiParam("当前页")
@RequestParam(value = "page", defaultValue = "1") int page,
@ApiParam("显示多少条")
@RequestParam(value = "size", defaultValue = "20") int size) {
Map<String, Object> pageResult = productService.page(page, size);
return JsonData.buildSuccess(pageResult);
}
@ApiOperation("")
@GetMapping("detail/{product_id}")
public JsonData detail(@ApiParam(value = "商品id", required = true) @PathVariable("product_id") long productId) {
ProductVO productVO = productService.findDetailById(productId);
return JsonData.buildSuccess(productVO);
}
}

View File

@ -1,7 +1,6 @@
package net.jieyuu.service;
import net.jieyuu.model.BannerDO;
import com.baomidou.mybatisplus.extension.service.IService;
import net.jieyuu.vo.BannerVO;
import java.util.List;

View File

@ -2,6 +2,9 @@ package net.jieyuu.service;
import net.jieyuu.model.ProductDO;
import com.baomidou.mybatisplus.extension.service.IService;
import net.jieyuu.vo.ProductVO;
import java.util.Map;
/**
* <p>
@ -11,6 +14,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author jieyuu
* @since 2024-08-07
*/
public interface ProductService extends IService<ProductDO> {
public interface ProductService {
/**
* 分页查询商品列表
* @param page
* @param size
* @return
*/
Map<String, Object> page(int page,int size);
/**
* 根据id查找商品详情
* @param productId
* @return
*/
ProductVO findDetailById(long productId);
}

View File

@ -1,10 +1,10 @@
package net.jieyuu.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import net.jieyuu.model.BannerDO;
import net.jieyuu.mapper.BannerMapper;
import net.jieyuu.service.BannerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.jieyuu.vo.BannerVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
* @since 2024-08-07
*/
@Service
@Slf4j
public class BannerServiceImpl implements BannerService {
@Autowired

View File

@ -1,11 +1,22 @@
package net.jieyuu.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import net.jieyuu.model.ProductDO;
import net.jieyuu.mapper.ProductMapper;
import net.jieyuu.service.ProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.jieyuu.vo.ProductVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
@ -15,6 +26,37 @@ import org.springframework.stereotype.Service;
* @since 2024-08-07
*/
@Service
@Slf4j
public class ProductServiceImpl extends ServiceImpl<ProductMapper, ProductDO> implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public Map<String, Object> page(int page, int size) {
Page<ProductDO> pageInfo = new Page<>(page, size);
IPage<ProductDO> productDOIPage = productMapper.selectPage(pageInfo, null);
Map<String, Object> pageMap = new HashMap<>(3);
pageMap.put("total_record", productDOIPage.getTotal());
pageMap.put("total_page", productDOIPage.getPages());
pageMap.put("current_data", productDOIPage.getRecords().stream().map(obj -> beanProcess(obj)).collect(Collectors.toList()));
return pageMap;
}
@Override
public ProductVO findDetailById(long productId) {
ProductDO productDO = productMapper.selectById(productId);
return beanProcess(productDO);
}
private ProductVO beanProcess(ProductDO obj) {
ProductVO productVO = new ProductVO();
BeanUtils.copyProperties(obj, productVO);
return productVO;
}
}

View File

@ -0,0 +1,57 @@
package net.jieyuu.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author jieyuu
* @since 2024-08-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class ProductVO {
private Long id;
/**
* 标题
*/
private String title;
/**
* 封面图
*/
@JsonProperty("cover_img")
private String coverImg;
/**
* 详情
*/
private String detail;
/**
* 老价格
*/
@JsonProperty("old_price")
private BigDecimal oldPrice;
/**
* 新价格
*/
private BigDecimal price;
/**
* 库存
*/
private Integer stock;
}