Selaa lähdekoodia

Merge branch 'main' of http://47.98.207.247:3000/lsq/ship-ota-server

caotao 2 päivää sitten
vanhempi
commit
aaae966947

+ 8 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -5,6 +5,7 @@ import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
 import com.yc.ship.module.product.api.dto.*;
 import com.yc.ship.module.trade.api.sms.dto.SmsSendLogDTO;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalSpuVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderDetailCountRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundDetailRespVO;
@@ -188,4 +189,11 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
     List<TradeOrderDetailCountRespVO> getOrderIdDetailCount(@Param("orderId") Long orderId);
     @TenantIgnore
     void updateDeleted(@Param("orderId") Long orderId, @Param("deleted")  int deleted);
+
+    /**
+     * 获取订单下所有产品
+     * @param orderIds
+     * @return
+     */
+    List<OrderTotalSpuVO> selectOrderSpuStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderRoomModelMapper.java

@@ -45,7 +45,7 @@ public interface TradeOrderRoomModelMapper extends BaseMapperX<TradeOrderRoomMod
     List<OrderShareVO> selectOrderShareStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
     List<OrderShareVO> selectOrderShareStatsByOrderIds1(@Param("orderIds") List<Long> orderIds);
 
-    List<AppRoomDescVO> selectRoomDesc(List<Long> orderIds);
+    List<AppRoomDescVO> selectRoomDesc(@Param("orderIds") List<Long> orderIds);
     /**
      * 统计订单房型数据
      * @param orderIds

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeVisitorMapper.java

@@ -89,4 +89,8 @@ public interface TradeVisitorMapper extends BaseMapperX<TradeVisitorDO> {
      * 获取订单陪同和领队男女统计
      */
     List<OrderWithLeaderStatVO> selectWithLeaderStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
+    /**
+     * 获取订单国家统计
+     */
+    List<OrderTotalCountryVO> selectOrderCountryStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 10 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/orderpolicy/OrderPolicyMapper.java

@@ -5,9 +5,11 @@ import java.util.*;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalPolicyVO;
 import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.trade.controller.admin.orderpolicy.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 订单使用的优惠政策 Mapper
@@ -36,4 +38,12 @@ public interface OrderPolicyMapper extends BaseMapperX<OrderPolicyDO> {
     default List<OrderPolicyDO> selectByOrderId(Long orderId) {
         return selectList(new LambdaQueryWrapperX<OrderPolicyDO>().eq(OrderPolicyDO::getOrderId, orderId));
     }
+
+    /**
+     * 统计订单使用优惠策略的统计数据
+     *
+     * @param orderIds 订单编号数组
+     * @return 统计数据
+     */
+    List<OrderTotalPolicyVO> selectOrderPolicyStatsByOrderIds(@Param("orderIds") List<Long> orderIds);
 }

+ 9 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -722,9 +722,17 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         List<OrderTotalRoomModelVO> roomModelList = tradeOrderRoomModelMapper.selectOrderRoomModelStatsByOrderIds(orderIds);
         totalMap.setRoomModelList(roomModelList);
 
+        // 查询国籍信息
+        List<OrderTotalCountryVO> countryList = tradeVisitorMapper.selectOrderCountryStatsByOrderIds(orderIds);
+        totalMap.setCountryList(countryList);
 
+        //查询增值服务信息
+        List<OrderTotalSpuVO> spuList = tradeDetailMapper.selectOrderSpuStatsByOrderIds(orderIds);
+        totalMap.setSpuList(spuList);
 
-        //TODO: 待完善 订单合计
+        // 查询政策信息
+        List<OrderTotalPolicyVO> policyList = orderPolicyMapper.selectOrderPolicyStatsByOrderIds(orderIds);
+        totalMap.setPolicyList(policyList);
         return totalMap;
     }
 

+ 23 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

@@ -1404,6 +1404,29 @@
         GROUP BY product_type, product_id
         order by product_type asc
     </select>
+    <select id="selectOrderSpuStatsByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalSpuVO">
+        SELECT
+            product_id spuId,
+            product_name spuName,
+            price spuPrice,
+            count( 1 ) spuNum,
+            sum( actual_price ) spuTotalMoney
+        FROM
+            trade_detail
+        WHERE
+            deleted = 0
+          AND product_type = 1
+        and order_id IN
+        <foreach item="item" index="index" collection="orderIds"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        GROUP BY
+            product_id
+        ORDER BY
+            spuTotalMoney DESC
+    </select>
 
     <update id="updateDeleted">
         UPDATE trade_detail SET deleted = #{deleted},update_time = now() WHERE order_id = #{orderId}

+ 93 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

@@ -374,4 +374,97 @@
         </foreach>
         GROUP BY type, gender
     </select>
+    <select id="selectOrderCountryStatsByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalCountryVO">
+        SELECT
+            d1.country_id,
+            d2.country_name,
+            d1.adultNum,
+            d1.childNum,
+            d1.babyNum,
+            d1.leaderNum,
+            d1.withNum,
+            d2.twoNum,
+            d2.threeNum,
+            d2.fourNum,
+            d2.fiveNum,
+            d2.sixNum
+        FROM
+            (
+                SELECT
+                    a1.country_id,
+                    a1.country_name,
+                    sum( CASE WHEN a1.type = 'adultTake' OR a1.type = 'adultPlus' THEN a1.num ELSE 0 END ) AS adultNum,
+                    sum( CASE WHEN a1.type = 'childTake' OR a1.type = 'childNonTake' AND a1.type = 'childPlus' THEN a1.num ELSE 0 END ) AS childNum,
+                    sum( CASE WHEN a1.type = 'babyTake' OR a1.type = 'babyNonTake' AND a1.type = 'babyPlus' THEN a1.num ELSE 0 END ) AS babyNum,
+                    sum( CASE WHEN a1.type = 'leader' THEN a1.num ELSE 0 END ) AS leaderNum,
+                    sum( CASE WHEN a1.type = 'with' THEN a1.num ELSE 0 END ) AS withNum
+                FROM
+                    (
+                        SELECT
+                            t1.nationality country_id,
+                            t2.`name` country_name,
+                            t1.type,
+                            count( t1.id ) num
+                        FROM
+                            trade_visitor t1
+                                LEFT JOIN area t2 ON t1.nationality = t2.id
+                        WHERE
+                            t1.deleted = 0
+                          AND t1.nationality IS NOT NULL
+                          AND t1.nationality != ''
+                        and t1.order_id in
+                        <foreach item="item" collection="orderIds" separator="," open="(" close=")">
+                            #{item}
+                        </foreach>
+                        GROUP BY
+                            t1.nationality,
+                            t1.type
+                    ) a1
+                GROUP BY
+                    a1.country_id
+                ORDER BY
+                    a1.country_id ASC
+            ) d1
+                LEFT JOIN (
+                SELECT
+                    a1.country_id,
+                    a1.country_name,
+                    sum( CASE WHEN a1.floor = 2 THEN a1.num ELSE 0 END ) AS twoNum,
+                    sum( CASE WHEN a1.floor = 3 THEN a1.num ELSE 0 END ) AS threeNum,
+                    sum( CASE WHEN a1.floor = 4 THEN a1.num ELSE 0 END ) AS fourNum,
+                    sum( CASE WHEN a1.floor = 5 THEN a1.num ELSE 0 END ) AS fiveNum,
+                    sum( CASE WHEN a1.floor = 6 THEN a1.num ELSE 0 END ) AS sixNum
+                FROM
+                    (
+                        SELECT
+                            t1.nationality country_id,
+                            t2.`name` country_name,
+                            t3.floor,
+                            count( t1.id ) num
+                        FROM
+                            trade_visitor t1
+                                LEFT JOIN area t2 ON t1.nationality = t2.id
+                                LEFT JOIN trade_order_room_model t3 ON t1.room_index_id = t3.room_index_id
+                        WHERE
+                            t1.deleted = 0
+                          AND t3.deleted = 0
+                          AND t1.nationality IS NOT NULL
+                          AND t1.nationality != ''
+                        and t1.order_id in
+                        <foreach item="item" collection="orderIds" separator="," open="(" close=")">
+                            #{item}
+                        </foreach>
+                        GROUP BY
+                            t1.nationality,
+                            t3.floor
+                    ) a1
+                GROUP BY
+                    a1.country_id
+                ORDER BY
+                    a1.country_id ASC
+            ) d2 ON d1.country_id = d2.country_id
+        ORDER BY
+            d1.country_id ASC
+    </select>
 </mapper>

+ 23 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/orderpolicy/OrderPolicyMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yc.ship.module.trade.dal.mysql.orderpolicy.OrderPolicyMapper">
+
+    <select id="selectOrderPolicyStatsByOrderIds"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.OrderTotalPolicyVO">
+        SELECT
+            policy_id,
+            policy_name,
+            sum( use_num ) num,
+            sum( discount ) amount
+        FROM
+            trade_order_policy
+        WHERE
+            deleted = 0
+        and order_id IN
+        <foreach item="item" collection="orderIds" separator="," open="(" close=")" index="">
+            #{item}
+        </foreach>
+        GROUP BY
+            policy_id
+    </select>
+</mapper>