|
|
@@ -1,17 +1,20 @@
|
|
|
package com.cyksj.web.controller.goods;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
+import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.GoodsDonSkuMapper;
|
|
|
import com.cyksj.mapper.OrderDonMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.views.*;
|
|
|
+import com.cyksj.redis.RedisService;
|
|
|
import com.ejlchina.searcher.BeanSearcher;
|
|
|
import com.ejlchina.searcher.SearchResult;
|
|
|
import com.ejlchina.searcher.param.Operator;
|
|
|
@@ -22,8 +25,9 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
|
* @author chan
|
|
|
@@ -43,6 +47,8 @@ public class GoodsDonController {
|
|
|
|
|
|
private final GoodsDonSkuMapper goodsDonSkuMapper;
|
|
|
|
|
|
+ private final RedisService redisService;
|
|
|
+
|
|
|
/**
|
|
|
* 获取商品列表
|
|
|
*/
|
|
|
@@ -148,11 +154,21 @@ public class GoodsDonController {
|
|
|
* 官网首页 平台列表
|
|
|
*/
|
|
|
@GetMapping("/get/list")
|
|
|
- public Result<SearchResult<GoodsFrontListView>> getGoodsList() {
|
|
|
- SearchResult<GoodsFrontListView> search = beanSearcher.search(GoodsFrontListView.class, MapUtils.flatBuilder(request.getParameterMap())
|
|
|
+ public Result<List<GoodsFrontListView>> getGoodsList() {
|
|
|
+ Object value = redisService.get(RedisService.key.PC_WEB_CACHE.getName());
|
|
|
+ if (value != null) {
|
|
|
+ try {
|
|
|
+ List<GoodsFrontListView> list = Jsons.parseObject(value, List.class);
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(list);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<GoodsFrontListView> list = beanSearcher.searchAll(GoodsFrontListView.class, MapUtils.flatBuilder(request.getParameterMap())
|
|
|
.build());
|
|
|
DateTime now = DateTime.now();
|
|
|
- search.getDataList().forEach(data -> {
|
|
|
+ list.forEach(data -> {
|
|
|
data.setSpecs(beanSearcher.searchFirst(GoodsDonSpec.class, MapUtils.builder().field(GoodsDonSpec::getGoodsId, data.getId()).build()));
|
|
|
data.setSkuList(beanSearcher.searchAll(GoodsDonFrontSkuView.class, MapUtils.builder().field(GoodsDonFrontSkuView::getGoodsId, data.getId()).field(GoodsDonFrontSkuView::getStatus, true).orderBy(GoodsDonFrontSkuView::getPrice).asc().build()));
|
|
|
Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
@@ -166,7 +182,6 @@ public class GoodsDonController {
|
|
|
data.setMonths(donFrontSkuView.getMonths());
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
.eq(OrderDon::getGoodsId, data.getId())
|
|
|
.notIn(OrderDon::getStatus, Constant.noOrderStatus).select(OrderDon::getCreatedTime, OrderDon::getPayTime, OrderDon::getId)
|
|
|
@@ -202,7 +217,8 @@ public class GoodsDonController {
|
|
|
notifyMsg.append("前有人购买");
|
|
|
data.setNotifyMsg(notifyMsg.toString());
|
|
|
});
|
|
|
- return GatewayResponse.SUCCESS.newBuilder().toResult(search);
|
|
|
+ redisService.setNx(RedisService.key.PC_WEB_CACHE.getName(), list, RedisService.key.PC_WEB_CACHE.getTimeout());
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(list);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -210,9 +226,18 @@ public class GoodsDonController {
|
|
|
*/
|
|
|
@GetMapping("/get/homePage")
|
|
|
public Result<List<GoodsHomePageView>> getGoodsHomePage() {
|
|
|
+ Object value = redisService.get(RedisService.key.H5_WEB_CACHE.getName());
|
|
|
+ if (value != null) {
|
|
|
+ try {
|
|
|
+ List<GoodsHomePageView> list = Jsons.parseObject(value, List.class);
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(list);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
List<GoodsHomePageView> dataList = beanSearcher.searchAll(GoodsHomePageView.class, MapUtils.flatBuilder(request.getParameterMap())
|
|
|
.build());
|
|
|
- List<GoodsHomePageView> collect = new ArrayList<>();
|
|
|
dataList.forEach(data -> {
|
|
|
Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
|
|
|
@@ -222,11 +247,9 @@ public class GoodsDonController {
|
|
|
data.setPrice(skuView.getPrice());
|
|
|
data.setMonths(skuView.getMonths());
|
|
|
}
|
|
|
- if (data.getPrice() != null && data.getPrice().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- collect.add(data);
|
|
|
- }
|
|
|
});
|
|
|
- return GatewayResponse.SUCCESS.newBuilder().toResult(collect);
|
|
|
+ redisService.setNx(RedisService.key.H5_WEB_CACHE.getName(), dataList, RedisService.key.H5_WEB_CACHE.getTimeout());
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(dataList);
|
|
|
}
|
|
|
|
|
|
|