zoujiajian 10 ヶ月 前
コミット
fe547731a6

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeOrderStatisticsDataView.java

@@ -22,4 +22,9 @@ public class DistributeOrderStatisticsDataView {
 	 * true 普通渠道
 	 */
 	private Boolean isGeneral;
+
+	/**
+	 * 日期
+	 */
+	private String date;
 }

+ 0 - 1
netflix-dao/src/main/java/com/cyksj/model/views/DistributeOrderStatisticsView.java

@@ -14,7 +14,6 @@ import java.util.List;
 @Getter
 @Setter
 public class DistributeOrderStatisticsView {
-
 	/**
 	 * 渠道分销订单数据
 	 */

+ 26 - 20
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -538,27 +538,33 @@
 
     <select id="getDistributeOrderView"
             resultType="com.cyksj.model.views.DistributeOrderStatisticsDataView">
-        select us.shared_id as user_id,
-        o.goods_id,
-        (select nickname from `user` where id = us.shared_id limit 1) as nickname,
-        sum(money)/100 as money
-        from user_distribute_shared us
-        <if test="isGeneral != null">
-            left join user_distribute ud on ud.user_id = us.shared_id and ud.deleted
-        </if>
-        inner join order_don o on o.user_Id = us.user_id
-        where o.`status` not in ('close','noPayment','refund')
-        and o.created_time BETWEEN #{start} and #{end}
-        and o.goods_id = #{goodsId} and o.is_fixed_distribute
-        <if test="isGeneral != null">
-            <if test="isGeneral">
-                and ud.id is null
+        select user_id, goods_id, nickname, `date`, money
+        from (
+            select us.shared_id as user_id,
+            o.goods_id,
+            (select nickname from `user` where id = us.shared_id limit 1) as nickname,
+            date_format(o.created_time,'%Y-%m-%d') `date`,
+            sum(money)/100 as money,
+            row_number() over (partition by date_format(o.created_time,'%Y-%m-%d') order by sum(money) desc) as rn
+            from user_distribute_shared us
+            <if test="isGeneral != null">
+                left join user_distribute ud on ud.user_id = us.shared_id and ud.deleted
             </if>
-            <if test="!isGeneral">
-                and ud.id is not null
+            inner join order_don o on o.user_Id = us.user_id
+            where o.`status` not in ('close','noPayment','refund')
+            and o.created_time BETWEEN #{start} and #{end}
+            and o.goods_id = #{goodsId} and o.is_fixed_distribute
+            <if test="isGeneral != null">
+                <if test="isGeneral">
+                    and ud.id is null
+                </if>
+                <if test="!isGeneral">
+                    and ud.id is not null
+                </if>
             </if>
-        </if>
-        group by us.shared_id,o.goods_id
-        order by sum(money) desc limit 5
+            group by us.shared_id,o.goods_id,date_format(o.created_time,'%Y-%m-%d')
+        ) ranked
+        where rn &lt;= 5
+        order by `date` asc, money desc
     </select>
 </mapper>

+ 2 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/statistics/StatisticsDataController.java

@@ -675,11 +675,9 @@ public class StatisticsDataController {
 	 * @return
 	 */
 	@GetMapping("/get/distributeOrder/brokenLine")
-	public Result<DistributeOrderStatisticsView> getDistributeOrderView(Long goodsId, String first, String end, Boolean isGeneral) {
-		DistributeOrderStatisticsView distributeOrderStatisticsView = new DistributeOrderStatisticsView();
+	public Result<List<DistributeOrderStatisticsDataView>> getDistributeOrderView(Long goodsId, String first, String end, Boolean isGeneral) {
 		List<DistributeOrderStatisticsDataView> dataList = orderDonMapper.getDistributeOrderView(goodsId, first, end, isGeneral);
-		distributeOrderStatisticsView.setDataList(dataList);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(distributeOrderStatisticsView);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(dataList);
 	}
 
 }