<?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.xiaopeng.order.mapper.XpOrderMapper">
|
|
<!-- 通用查询结果列 -->
|
<sql id="Base_Column_List">
|
id, app_user_id, vehicle_id, fleet_id, order_number, transaction_id, order_source, ride_time, placement_lon, placement_lat, placement_address, start_lon, start_lat, end_lon, end_lat, start_address, end_address, boarding_lon, boarding_lat, boarding_address, boarding_time, getoff_lon, getoff_lat, getoff_address, getoff_time, pay_type, order_money, pay_money, prepay_money, start_mileage, start_money, mileage_kilometers, mileage_money, duration, duration_money, wait, wait_money, long_distance, long_distanceMoney, red_packet_money, coupon_money, red_packet_id, coupon_id, status, is_deleted, create_time, update_time, create_by, update_by,city_id
|
</sql>
|
|
<!-- 统计已完成订单总数(状态9=待评价或10=已完成) -->
|
<select id="countCompletedOrders" resultType="java.lang.Long">
|
SELECT COUNT(*)
|
FROM xp_order
|
WHERE is_deleted = 0
|
AND status IN (9, 10)
|
</select>
|
|
<!-- 统计时间范围内新增订单数 -->
|
<select id="countNewOrders" resultType="java.lang.Long">
|
SELECT COUNT(*)
|
FROM xp_order
|
WHERE is_deleted = 0
|
AND status IN (9, 10)
|
AND DATE(create_time) BETWEEN #{startDate} AND #{endDate}
|
</select>
|
|
<!-- 统计总交易金额(pay_money累加,状态9或10) -->
|
<select id="sumTotalMoney" resultType="java.math.BigDecimal">
|
SELECT COALESCE(SUM(pay_money), 0)
|
FROM xp_order
|
WHERE is_deleted = 0
|
AND status IN (9, 10)
|
</select>
|
|
<!-- 获取每日新增订单数 -->
|
<select id="getDailyOrderCount" resultType="com.xiaopeng.api.dto.statistics.DailyCountDTO">
|
SELECT
|
DATE_FORMAT(create_time, '%Y-%m-%d') as date,
|
COUNT(*) as count
|
FROM xp_order
|
WHERE is_deleted = 0
|
AND status IN (9, 10)
|
AND DATE(create_time) BETWEEN #{startDate} AND #{endDate}
|
GROUP BY DATE(create_time)
|
ORDER BY date ASC
|
</select>
|
<select id="getHistoryOrderList" resultType="com.xiaopeng.order.model.vo.XpOrderHistoryListVO">
|
select start_point_name as originAddress, end_point_name as destinationAddress,start_point_id as startPointId,end_point_id as endPointId,
|
DATE_FORMAT(create_time, '%H:%i') AS orderTime, pay_money as amount,create_time as time,DATE_FORMAT(create_time,'%Y-%m-%d') AS timeStr,
|
id as orderId,status,invoice_status invoiceStatus from xp_order where app_user_id = #{uid} and is_deleted = 0
|
<if test="query.status != null">
|
and status = #{query.status}
|
</if>
|
order by create_time desc
|
</select>
|
<select id="getHistoryStartPoints" resultType="com.xiaopeng.api.model.order.XpOrder"
|
parameterType="java.lang.Long">
|
SELECT
|
start_point_id,
|
COUNT(*) AS num
|
FROM xp_order where app_user_id = #{uid} and xp_electronic_fence_area_id =#{areaId}
|
GROUP BY start_point_id
|
ORDER BY num DESC,create_time desc
|
</select>
|
<select id="getHistoryEndPoints" resultType="com.xiaopeng.api.model.order.XpOrder"
|
parameterType="java.lang.Long">
|
SELECT
|
end_point_id,
|
COUNT(*) AS num
|
FROM xp_order where app_user_id = #{uid} and xp_electronic_fence_area_id =#{areaId}
|
GROUP BY end_point_id
|
ORDER BY num DESC,create_time desc
|
</select>
|
|
<select id="countUserValidHistoryOrders" resultType="java.lang.Long">
|
SELECT COUNT(*)
|
FROM xp_order
|
WHERE app_user_id = #{uid}
|
AND is_deleted = 0
|
AND status IN (9, 10)
|
</select>
|
|
<select id="listUserRecentValidOrders" resultType="com.xiaopeng.api.model.order.XpOrder">
|
SELECT
|
app_user_id,
|
start_point_id,
|
end_point_id,
|
start_point_name,
|
end_point_name,
|
time_slot,
|
create_time,
|
end_lon,
|
end_lat
|
FROM xp_order
|
WHERE app_user_id = #{uid}
|
AND is_deleted = 0
|
AND status IN (9, 10)
|
AND create_time <![CDATA[>=]]> #{startTime}
|
AND end_point_id IS NOT NULL
|
ORDER BY create_time DESC
|
</select>
|
|
<select id="timeSceneOrders" resultType="java.lang.Long">
|
SELECT
|
end_point_id
|
FROM xp_order
|
WHERE app_user_id = #{userId}
|
AND is_deleted = 0
|
AND status IN (9, 10)
|
AND DATE(create_time) BETWEEN #{startDate} AND #{endDate}
|
AND TIME(create_time) BETWEEN #{startMoment} AND #{endMoment}
|
GROUP BY end_point_id
|
ORDER BY COUNT(*) DESC
|
</select>
|
<select id="frequencyOrders" resultType="java.lang.Long">
|
SELECT
|
end_point_id
|
FROM xp_order
|
WHERE app_user_id = #{userId}
|
AND is_deleted = 0
|
AND status IN (9, 10)
|
AND DATE(create_time) BETWEEN #{startDate} AND #{endDate}
|
GROUP BY end_point_id
|
ORDER BY COUNT(*) DESC
|
</select>
|
|
</mapper>
|