소스 검색

fix 后台用户分销折线图

zoujiajian 1 년 전
부모
커밋
c58ccfb2f4

+ 7 - 5
netflix-dao/src/main/java/com/cyksj/model/views/DistributePlatOrderDonBrokenLineView.java

@@ -15,23 +15,25 @@ import java.math.BigDecimal;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(select order_id from distribute_waiting_send_points dp :sid:) dp inner join order_don od on od.id = dp.order_id",
+@SearchBean(tables = "(select order_id,is_vip from distribute_waiting_send_points dp :sid:) dp left join order_don od on od.id = dp.order_id and dp.is_vip = false" +
+		" left join vip_order_don vod on vod.id = dp.order_id and dp.is_vip = true" +
+		" left join goods_don g on g.id = ifnull(od.goods_id,vod.goods_id)",
 		where = "od.status not in ('noPayment','close','refund')",
-		groupBy = "od.goods_id,:date:")
+		groupBy = "g.id,g.title,:date:")
 public class DistributePlatOrderDonBrokenLineView {
-	@DbField("od.goods_id")
+	@DbField("g.id")
 	private Long goodsId;
 
 	/**
 	 * 平台名称
 	 */
-	@DbField("select title from goods_don where id = od.goods_id")
+	@DbField("g.title")
 	private String goodsTitle;
 
 	/**
 	 * 当前日期订单金额
 	 */
-	@DbField("cast(sum(od.money)/100 as decimal(10,2))")
+	@DbField("cast(sum(ifnull(od.money,vod.money))/100 as decimal(10,2))")
 	private BigDecimal money;
 
 	/**

+ 7 - 6
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -304,12 +304,13 @@
     <select id="selectDsPlatBrokenLineMoney" resultType="com.cyksj.model.views.BrokenLineObjView">
         select min(curdate) as firstDate,
         max(curdate) as lastDate
-        from (select cast(sum(od.money)/100 as decimal(10,2)) as curdateMoney,
-        date_format(od.created_time,'%Y-%m-%d') curdate from (select order_id from distribute_waiting_send_points where
-        shared_id = #{sharedId}) dp inner join order_don od
-        on od.id = dp.order_id
-        where od.status not in ('noPayment','close','refund')
-        group by od.goods_id,date_format(od.created_time,'%Y-%m-%d'))s
+        from (select cast(sum(if(od.id is null,vod.money,od.money))/100 as decimal(10,2)) as curdateMoney,
+        date_format(ifnull(od.created_time,vod.created_time),'%Y-%m-%d') curdate from (select order_id,is_vip from
+        distribute_waiting_send_points where
+        shared_id = #{sharedId}) dp left join order_don od on od.id = dp.order_id and dp.is_vip = false
+        left join vip_order_don vod on vod.id = dp.order_id and dp.is_vip = true
+        where ifnull(od.status,vod.status) not in ('noPayment','close','refund')
+        group by ifnull(od.goods_id,vod.goods_id),date_format(ifnull(od.created_time,vod.created_time),'%Y-%m-%d'))s
         where 1 = 1
         <if test="first != null">
             and curdate >= #{first}

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

@@ -271,11 +271,11 @@ public class DistributeController {
 		BrokenLineObjView brokenLineObjView = Optional.ofNullable(orderDonMapper.selectDsPlatBrokenLineMoney(sharedId, first, end))
 				.orElse(new BrokenLineObjView());
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		String dateSqL = "date_format(od.created_time,'%Y-%m-%d')";
+		String dateSqL = "date_format(ifnull(od.created_time,vod.created_time),'%Y-%m-%d')";
 		if (chain == 2) {
-			dateSqL = "DATE_FORMAT(od.created_time - INTERVAL (DAYOFWEEK(od.created_time) + 5) % 7 DAY, '%Y.%m.%d')";
+			dateSqL = "DATE_FORMAT(ifnull(od.created_time,vod.created_time) - INTERVAL (DAYOFWEEK(ifnull(od.created_time,vod.created_time)) + 5) % 7 DAY, '%Y.%m.%d')";
 		} else if (chain == 3) {
-			dateSqL = "DATE_FORMAT(od.created_time, '%Y-%m')";
+			dateSqL = "DATE_FORMAT(ifnull(od.created_time,vod.created_time), '%Y-%m')";
 		}
 		if (brokenLineObjView != null) {
 			List<DistributePlatOrderDonBrokenLineView> views = beanSearcher.searchAll(DistributePlatOrderDonBrokenLineView.class, builder