hmp 4 лет назад
Родитель
Сommit
0c2e20ba2b

+ 18 - 1
src/main/java/org/springblade/gateway/active_gateway/controller/ProductSortController.java

@@ -1,10 +1,14 @@
 package org.springblade.gateway.active_gateway.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.mp.support.Query;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.tool.api.R;
 import org.springblade.gateway.active_gateway.service.ProductSortService;
 import org.springblade.gateway.active_gateway.vo.ProductSortVO;
@@ -23,8 +27,8 @@ import java.util.List;
 @Slf4j
 public class ProductSortController {
 
-	@Autowired
 	private ProductSortService productSortService;
+	private BladeRedis bladeRedis;
 
 	@GetMapping("/sortList")
 	@ApiOperationSupport(order = 1)
@@ -32,4 +36,17 @@ public class ProductSortController {
 	public R<List<ActiveProductRecordVO>> list(ProductSortVO productSortVO) throws IllegalAccessException {
 		return R.data(productSortService.sortList(productSortVO));
 	}
+
+
+	@GetMapping("/sortListQuery")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "首页排行分页显示", notes = "传入productSortVO")
+	public R sortListQuery(ProductSortVO productSortVO, Query query) throws IllegalAccessException {
+		IPage page= productSortService.sortListQuery(productSortVO, query);
+		return R.data(page);
+	}
+
+
+
+
 }

+ 9 - 0
src/main/java/org/springblade/gateway/active_gateway/service/ProductSortService.java

@@ -1,5 +1,7 @@
 package org.springblade.gateway.active_gateway.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.gateway.active_gateway.vo.ProductSortVO;
 import org.springblade.sing.active.entity.ActiveProductRecord;
 import org.springblade.sing.active.entity.ActiveRecord;
@@ -15,4 +17,11 @@ public interface ProductSortService {
 	 */
 	List<ActiveProductRecordVO> sortList(ProductSortVO productSortVO) throws IllegalAccessException;
 
+	/**
+	 * 首页分页获取排行榜数据
+	 * @param productSortVO
+	 * @param query
+	 * @return
+	 */
+	IPage sortListQuery(ProductSortVO productSortVO, Query query) throws IllegalAccessException;
 }

+ 25 - 0
src/main/java/org/springblade/gateway/active_gateway/service/impl/ProductSortServiceImpl.java

@@ -1,5 +1,8 @@
 package org.springblade.gateway.active_gateway.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.gateway.active_gateway.constant.ActiveProductConstant;
 import org.springblade.gateway.active_gateway.service.ProductSortService;
@@ -11,6 +14,7 @@ import org.springblade.sing.user.entity.LoginUser;
 import org.springblade.sing.user.service.ILoginUserService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.ZSetOperations;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -75,4 +79,25 @@ public class ProductSortServiceImpl implements ProductSortService {
 			throw new IllegalAccessException("非法操作");
 		}
 	}
+
+	@Override
+	public IPage sortListQuery(ProductSortVO productSortVO, Query query) throws IllegalAccessException {
+		//将sql的页码转换为redis zSet的页码
+		long current = query.getCurrent() == null ? 1 : query.getCurrent();
+		long size = query.getSize()==null ? 10 : query.getSize();
+		long start = (current - 1) * size;
+		long end = current * size - 1;
+		productSortVO.setStart(start);
+		productSortVO.setEnd(end);
+		List<ActiveProductRecordVO> productRecordVOS = this.sortList(productSortVO);
+		//page对象
+		String key = ActiveProductConstant.PRODUCT_SORT_CACHE_KEY;
+		Long total = bladeRedis.getZSetOps().zCard(key.concat(":").concat(productSortVO.getActiveId().toString()));
+		IPage page = new Page();
+		page.setRecords(productRecordVOS);
+		page.setCurrent(current);
+		page.setSize(size);
+		page.setTotal(total);
+		return page;
+	}
 }