Browse Source

fix 查询过慢

zoujiajian 3 năm trước cách đây
mục cha
commit
a9070ff5a6

+ 3 - 2
netflix-dao/src/main/java/com/cyksj/model/views/ChannelPopularizeView.java

@@ -1,6 +1,7 @@
 package com.cyksj.model.views;
 
 import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
@@ -72,13 +73,13 @@ public class ChannelPopularizeView {
     /**
      * 邮箱注册人数
      */
-    @DbField("select count(u.id) from user u where u.popularize_id = cp.id and u.email != ''")
+    @DbIgnore
     private Integer emailCount;
 
     /**
      * 手机注册人数
      */
-    @DbField("select count(u.id) from user u where u.popularize_id = cp.id and u.login_phone != ''")
+    @DbIgnore
     private Integer phoneCount;
 
     /**

+ 15 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/channel/CmsChannelPopularizeController.java

@@ -1,15 +1,15 @@
 package com.cyksj.web.controller.manage.channel;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.model.entity.Channel;
+import com.cyksj.mapper.UserMapper;
 import com.cyksj.model.entity.ChannelPopularize;
+import com.cyksj.model.entity.User;
 import com.cyksj.model.views.ChannelPopularizeDetailView;
 import com.cyksj.model.views.ChannelPopularizeView;
-import com.cyksj.model.views.ChannelView;
 import com.cyksj.service.mange.channel.ChannelPopularizeService;
-import com.cyksj.service.mange.channel.ChannelService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
@@ -37,6 +37,8 @@ public class CmsChannelPopularizeController {
 
     private final HttpServletRequest request;
 
+    private final UserMapper userMapper;
+
     @GetMapping
     public Result<SearchResult<ChannelPopularizeView>> get(String startTime, String endTime){
         String timeSql = StringUtils.EMPTY;
@@ -50,6 +52,16 @@ public class CmsChannelPopularizeController {
                 MapUtils.flatBuilder(request.getParameterMap())
                         .put("time",timeSql)
                         .build());
+        searchResult.getDataList().forEach(data -> {
+            LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery(User.class)
+                    .eq(User::getPopularizeId, data.getId());
+            Integer emailCount = userMapper.selectCount(wrapper
+                    .ne(User::getEmail, ""));
+            data.setEmailCount(emailCount);
+            Integer phoneCount = userMapper.selectCount(wrapper
+                    .ne(User::getLoginPhone, ""));
+            data.setPhoneCount(phoneCount);
+        });
         return GatewayResponse.SUCCESS.newBuilder().toResult(searchResult);
     }