Преглед на файлове

早鸟数查询添加状态,订单列表人数排序优化

caotao преди 1 седмица
родител
ревизия
ed93ee430c

+ 1 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeNewMapper.java

@@ -82,7 +82,7 @@ public interface VoyageStockDistributeNewMapper extends BaseMapperX<VoyageStockD
             "INNER JOIN marketing_policy_detail mpd ON mp.id = mpd.policy_id " +
             "    AND mpd.deleted = 0 " +
             "INNER JOIN product_voyage pv on mpd.voyage_id = pv.id AND pv.deleted=0 " +
-            "WHERE mp.deleted = 0 " +
+            "WHERE mp.deleted = 0 AND mp.status = 0 " +
             "  AND mp.effective_time >= NOW() " +
             "  AND DATE_SUB(DATE(pv.boarding_time), INTERVAL mp.early_days DAY) >= CURDATE() " +
             "  AND mpd.voyage_id = #{voyageId}")

+ 14 - 8
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -533,6 +533,12 @@
         </if>
 
         LEFT JOIN trade_order_room_model torm ON torm.order_id = td.id and torm.deleted=0
+        LEFT JOIN (
+        SELECT order_id, COUNT(DISTINCT id) AS visitor_num
+        FROM trade_visitor
+        WHERE deleted = 0
+        GROUP BY order_id
+        ) ovc ON td.id = ovc.order_id
         WHERE td.deleted = 0
 
         <if test="vo.orderStatus!=null and vo.orderStatus.size()>0">
@@ -726,10 +732,7 @@
                             (SELECT pv.name FROM product_voyage pv WHERE pv.id = td.voyage_id AND pv.deleted = 0)
                         </when>
                         <when test="field == 'totalPerson'">
-                            (SELECT COUNT(DISTINCT v1.id)
-                            FROM trade_visitor v1
-                            WHERE v1.order_id = td.id
-                            AND v1.deleted = 0)
+                            COALESCE(ovc.visitor_num, 0)
                         </when>
                     </choose>
                     ${vo.sortOrder.split(',')[index]}
@@ -773,6 +776,12 @@
         GROUP BY order_id
         ) tr ON td.id = tr.order_id
         LEFT JOIN trade_insurance tins ON tins.order_id = td.id AND tins.deleted = 0
+        LEFT JOIN (
+        SELECT order_id, COUNT(DISTINCT id) AS visitor_num
+        FROM trade_visitor
+        WHERE deleted = 0
+        GROUP BY order_id
+        ) ovc ON td.id = ovc.order_id
         WHERE td.id IN
         <foreach collection="ids" item="id" open="(" close=")" separator=",">
             #{id}
@@ -790,10 +799,7 @@
                             (SELECT pv.name FROM product_voyage pv WHERE pv.id = td.voyage_id AND pv.deleted = 0)
                         </when>
                         <when test="field == 'totalPerson'">
-                            (SELECT COUNT(DISTINCT v1.id)
-                            FROM trade_visitor v1
-                            WHERE v1.order_id = td.id
-                            AND v1.deleted = 0)
+                            COALESCE(ovc.visitor_num, 0)
                         </when>
                     </choose>
                     ${vo.sortOrder.split(',')[index]}