Pārlūkot izejas kodu

fix 优化商务后台数据查询

zoujiajian 3 gadi atpakaļ
vecāks
revīzija
9817f80807

+ 3 - 2
netflix-dao/src/main/java/com/cyksj/model/views/BusinessDistributesDataView.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;
@@ -17,7 +18,7 @@ import java.math.BigDecimal;
 @Setter
 @SearchBean(tables = "(select distinct business_id from user_distribute_business_rate) ur inner join user_distribute ud on ud.business_id = ur.business_id and ud.deleted is true :time1:" +
 		" left join user_distribute_shared us on us.shared_id = ud.user_id :time2:" +
-		" left join order_don od on od.user_id = us.user_id and od.status not in ('close','refund','noPayment') and od.is_fixed_distribute = 1 and od.relation_id != 0 :time3:",
+		" left join order_don od on od.user_id = us.user_id and od.status not in ('close','refund','noPayment') and od.is_fixed_distribute = 1 :time3:",
 		groupBy = "ud.business_id")
 public class BusinessDistributesDataView {
 	@DbField("ud.business_id")
@@ -26,7 +27,7 @@ public class BusinessDistributesDataView {
 	/**
 	 * 商务名
 	 */
-	@DbField("select nickname from cms_user where id = ud.business_id limit 1")
+	@DbIgnore
 	private String businessName;
 
 	/**

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

@@ -32,10 +32,10 @@ public class UserDistributeViews {
 	@DbField("ud.business_id")
 	private Long businessId;
 
-	@DbField("select nickname from cms_user where id = ud.business_id limit 1")
+	@DbIgnore
 	private String businessName;
 
-	@DbField("select nickname from user where id = ud.user_id limit 1")
+	@DbIgnore
 	private String nickname;
 
 	@DbField("ud.remark")

+ 19 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -43,10 +43,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /*
  *项目名: netflix
@@ -170,6 +168,7 @@ public class DistributeController {
 			//按时间筛选 固定推广人分销情况 倒序
 			builder.orderBy(UserDistributeViews::getDistributeOrdersMoney).desc();
 		}
+		Map<Long, String> businessNameMap = new ConcurrentHashMap<>();
 		SearchResult<UserDistributeViews> search = beanSearcher.search(UserDistributeViews.class,
 				builder.build());
 		search.getDataList().forEach(view -> {
@@ -189,6 +188,17 @@ public class DistributeController {
 			if (view.getDistributeOrdersMoney().compareTo(BigDecimal.ZERO) > 0) {
 				Optional.ofNullable(userDistributeMapper.selectSoldMaxGoods(view.getUserId())).ifPresent(title -> view.setGoodsTitle(title));
 			}
+			String businessName = businessNameMap.get(view.getBusinessId());
+			view.setBusinessName(businessName);
+			if (StrUtil.isEmpty(businessName)) {
+				Optional.ofNullable(cmsUserMapper.selectById(view.getBusinessId()))
+						.ifPresent(cmsUser -> {
+							businessNameMap.putIfAbsent(view.getBusinessId(), cmsUser.getNickname());
+							view.setBusinessName(cmsUser.getNickname());
+						});
+			}
+			Optional.ofNullable(userMapper.selectById(view.getUserId()))
+					.ifPresent(user -> view.setNickname(user.getNickname()));
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
@@ -658,6 +668,11 @@ public class DistributeController {
 			builder.field(BusinessDistributesDataView::getBusinessId, adminId);
 		}
 		SearchResult<BusinessDistributesDataView> search = beanSearcher.search(BusinessDistributesDataView.class, builder.build());
+		search.getDataList().forEach(data -> {
+			Optional.ofNullable(cmsUserMapper.selectById(data.getBusinessId()))
+					.ifPresent(cmsUser -> data.setBusinessName(cmsUser.getNickname()));
+
+		});
 //		search.getDataList().forEach(data -> {
 //			Map<String, Object> reMap = orderDonMapper.selectNumOfDistributeOrders(data.getBusinessId(), startTime, endTime, Constant.noOrderAllStatus);
 //			Object num = reMap.get("num");