feat():分页功能

dev2
WeiRan 2024-08-26 09:03:30 +08:00
parent e27db94c4d
commit 058c678343
5 changed files with 46 additions and 4 deletions

View File

@ -63,6 +63,8 @@ public class ProductListResp {
private Date createTime;
/**
*
* @param product

View File

@ -0,0 +1,35 @@
package com.muyu.cloud.market.domin.resp;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.resp
* @Projectcloud-market
* @nameProductTotalListResp
* @Date2024/8/26 8:32
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name="数据总数列表",description = "数据和总数的响应")
public class ProductTotalListResp {
private List<ProductListResp> productListResps;
private long total;
public static ProductTotalListResp of(List<ProductListResp> productList, long total) {
ProductTotalListResp response = new ProductTotalListResp();
response.setProductListResps(productList);
response.setTotal(total);
return response;
}
}

View File

@ -5,6 +5,7 @@ import com.muyu.cloud.market.domin.req.ProductAddReq;
import com.muyu.cloud.market.domin.req.ProductListReq;
import com.muyu.cloud.market.domin.req.ProductUpdReq;
import com.muyu.cloud.market.domin.resp.ProductListResp;
import com.muyu.cloud.market.domin.resp.ProductTotalListResp;
import com.muyu.cloud.market.service.ProductApiService;
import com.muyu.common.core.domain.Result;
import io.swagger.v3.oas.annotations.Operation;
@ -40,7 +41,7 @@ public class ProductApiController {
*/
@PostMapping(path ="/list")
@Operation(summary = "产品列表",description = "查询全部产品信息")
public Result<List<ProductListResp>> selectList(@Validated @RequestBody ProductListReq productListReq){
public Result<ProductTotalListResp> selectList(@Validated @RequestBody ProductListReq productListReq){
return Result.success(productApiService.selectList(productListReq));
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.cloud.market.domin.Product;
import com.muyu.cloud.market.domin.req.ProductListReq;
import com.muyu.cloud.market.domin.resp.ProductListResp;
import com.muyu.cloud.market.domin.resp.ProductTotalListResp;
import java.util.List;
@ -21,7 +22,7 @@ public interface ProductApiService extends IService<Product> {
* @param productListReq
* @return
*/
List<ProductListResp> selectList(ProductListReq productListReq);
ProductTotalListResp selectList(ProductListReq productListReq);
/**
*

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.cloud.market.domin.Product;
import com.muyu.cloud.market.domin.req.ProductListReq;
import com.muyu.cloud.market.domin.resp.ProductListResp;
import com.muyu.cloud.market.domin.resp.ProductTotalListResp;
import com.muyu.cloud.market.mapper.ProductApiMapper;
import com.muyu.cloud.market.service.ProductApiService;
import com.muyu.common.core.utils.StringUtils;
@ -29,7 +30,7 @@ public class ProductApiServiceImpl extends ServiceImpl<ProductApiMapper, Product
* @return
*/
@Override
public List<ProductListResp> selectList(ProductListReq productListReq) {
public ProductTotalListResp selectList(ProductListReq productListReq) {
Integer pageNum = productListReq.getPageNum();
Integer pageSize = productListReq.getPageSize();
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
@ -37,12 +38,14 @@ public class ProductApiServiceImpl extends ServiceImpl<ProductApiMapper, Product
Product::getProductName,productListReq.getProductName());
queryWrapper.eq(StringUtils.isNotEmpty(productListReq.getProductState()),
Product::getProductState,productListReq.getProductState());
long count = this.count(queryWrapper);
queryWrapper.orderByDesc(Product::getProductSales);
queryWrapper.last("LIMIT " + ((pageNum - 1) * pageSize) + ", " + pageSize);
List<Product> productList = this.list(queryWrapper);
return productList.stream()
List<ProductListResp> productListResps = productList.stream()
.map(product -> ProductListResp.productListRespbuild(product))
.toList();
return ProductTotalListResp.of(productListResps, count);
}