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

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java

@@ -17,5 +17,5 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 
     List<ExcelOrderDonInfo> exportOrderInfo(@Param("promotionId") Long promotionId, @Param("start") String start, @Param("end") String end);
 
-    List<OrderDon> getAppleOneOrderDons(@Param("appleOne") String appleOne, @Param("skuIds") List<Long> skuIds, @Param("noOrderStatus") List<String> noOrderStatus, @Param("yesZeroDate") Date yesZeroDate, @Param("thisZeroDate") Date thisZeroDate);
+    List<OrderDon> getAppleOneOrderDons(@Param("appleOne") String appleOne, @Param("skuIds") List<Long> skuIds, @Param("goodsIds") List<Long> goodsIds, @Param("noOrderStatus") List<String> noOrderStatus, @Param("yesZeroDate") Date yesZeroDate, @Param("thisZeroDate") Date thisZeroDate);
 }

+ 4 - 2
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -33,8 +33,10 @@
         on gr.user_id = s.user_id
         inner join `groups_trips` gt
         on gt.id = gr.groups_id
-        inner join `account` a on a.id = gt.account_id
-        inner join `goods_don` g on g.id = a.goods_id
+        inner join `goods_don` g on g.id in
+        <foreach collection="goodsIds" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
         where g.title = #{appleOne} and gr.status = 'validity'
     </select>
 </mapper>

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java

@@ -46,7 +46,7 @@ public interface OrderDonService extends IService<OrderDon> {
 
     OrderDonView getDetail(Long orderId, long userId);
 
-	List<OrderDon> getAppleOneOrderDons(String appleOne, List<Long> skuIds, List<String> noOrderStatus, Date yesZeroDate, Date thisZeroDate);
+	List<OrderDon> getAppleOneOrderDons(String appleOne, List<Long> skuIds,List<Long> goodsIds, List<String> noOrderStatus, Date yesZeroDate, Date thisZeroDate);
 
     /**
      * 支付宝预支付

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -475,8 +475,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	}
 
 	@Override
-	public List<OrderDon> getAppleOneOrderDons(String appleOne, List<Long> skuIds, List<String> noOrderStatus, Date yesZeroDate, Date thisZeroDate) {
-		return orderDonMapper.getAppleOneOrderDons(appleOne, skuIds, noOrderStatus, yesZeroDate, thisZeroDate);
+	public List<OrderDon> getAppleOneOrderDons(String appleOne, List<Long> skuIds, List<Long> goodsIds, List<String> noOrderStatus, Date yesZeroDate, Date thisZeroDate) {
+		return orderDonMapper.getAppleOneOrderDons(appleOne, skuIds, goodsIds, noOrderStatus, yesZeroDate, thisZeroDate);
 	}
 
 	@Override

+ 19 - 11
netflix-service/src/main/java/com/cyksj/task/StatisticsDataScheduler.java

@@ -79,21 +79,29 @@ public class StatisticsDataScheduler {
 	 * 统计AppleOne数据
 	 */
 	private void statisticsAppleOneData(Date yesZeroDate, Date thisZeroDate) {
-		//美区
-		String americaAre = APPLE_ONE_AREA.get(0);
-		//马来西亚区
-		String malaysiaAre = APPLE_ONE_AREA.get(1);
-		List<GoodsDonSku> americaSku = Optional.ofNullable(goodsDonSkuService.list(Wrappers.lambdaQuery(GoodsDonSku.class).like(GoodsDonSku::getSpecVal, americaAre).select(GoodsDonSku::getId))).orElse(new ArrayList<>());
-		List<GoodsDonSku> malaysiaSku = Optional.ofNullable(goodsDonSkuService.list(Wrappers.lambdaQuery(GoodsDonSku.class).like(GoodsDonSku::getSpecVal, malaysiaAre).select(GoodsDonSku::getId))).orElse(new ArrayList<>());
-		Map<String, List<Long>> areaDataMap = new HashMap<>();
-		areaDataMap.put(americaAre, americaSku.stream().map(GoodsDonSku::getId).collect(Collectors.toList()));
-		areaDataMap.put(malaysiaAre, malaysiaSku.stream().map(GoodsDonSku::getId).collect(Collectors.toList()));
+		GoodsDon goodsDon = goodsDonMapper.selectOne(Wrappers.lambdaQuery(GoodsDon.class).eq(GoodsDon::getTitle, APPLE_ONE).last("limit 1"));
+		List<GoodsDonSku> list = goodsDonSkuService.list(Wrappers.lambdaQuery(GoodsDonSku.class).eq(GoodsDonSku::getGoodsId, goodsDon.getId()).select(GoodsDonSku::getId, GoodsDonSku::getSpecVal));
+		Set<String> area = new HashSet<>();
+		list.forEach(sku->{
+			String areaName = sku.getSpecVal().substring(0, sku.getSpecVal().indexOf("区") + 1);
+			if (!area.contains(areaName)) {
+				area.add(areaName);
+			}
+		});
+		Map<String, List<GoodsDonSku>> areaDataMap = new HashMap<>();
+		for (String name : area) {
+			List<GoodsDonSku> sku = Optional.ofNullable(goodsDonSkuService.list(Wrappers.lambdaQuery(GoodsDonSku.class).like(GoodsDonSku::getSpecVal, name).select(GoodsDonSku::getId, GoodsDonSku::getGoodsId))).orElse(new ArrayList<>());
+			areaDataMap.put(name, sku);
+		}
+
 		List<AbstractBackData> appleOneSave = new ArrayList<>();
-		areaDataMap.forEach((areaName, skuIds) -> {
+		areaDataMap.forEach((areaName, skus) -> {
 			AppleOneData appleOne = new AppleOneData();
 			appleOne.setAreaName(areaName);
 			//通过skuIds找到对应的appleOne统计数据
-			List<OrderDon> orderDons = Optional.ofNullable(orderDonService.getAppleOneOrderDons(APPLE_ONE, skuIds, noOrderStatus, yesZeroDate, thisZeroDate)).orElse(new ArrayList<>());
+			List<Long> skuIds = skus.stream().map(GoodsDonSku::getId).collect(Collectors.toList());
+			List<Long> goodsId = skus.stream().map(GoodsDonSku::getGoodsId).distinct().collect(Collectors.toList());
+			List<OrderDon> orderDons = Optional.ofNullable(orderDonService.getAppleOneOrderDons(APPLE_ONE, skuIds, goodsId, noOrderStatus, yesZeroDate, thisZeroDate)).orElse(new ArrayList<>());
 			appleOneDataStatistics(orderDons, appleOne, appleOneSave);
 		});
 		for (AbstractBackData appleOne : appleOneSave) {