无关风月
2025-08-07 370d23bdd53cc6dab3cfe0949b0e3a7746dfc110
ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml
@@ -204,6 +204,135 @@
        </where>
        order by ot.id desc
    </select>
    <select id="getPrivateCarOrderListConfirm" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page">
        SELECT
        ui.nickName as userName,
        ui.phone as userPhone,
        CONCAT(di.`name`, '-', di.phone) as driver,
        CONCAT(cb.`name`, '-', ci.carLicensePlate) as car,
        sc.`name` as serverCarModel,
        ot.id,
        ot.type,
        ot.userId,
        ot.driverId,
        ot.carId,
        ot.orderNum,
        ot.placementLon,
        ot.placementLat,
        ot.placementAddress,
        ot.startLon,
        ot.startLat,
        ot.endLon,
        ot.startAddress,
        ot.endLat,
        ot.endAddress,
        ot.boardingLon,
        ot.boardingLat,
        ot.boardingAddress,
        ot.boardingTime,
        ot.getoffLon,
        ot.getoffLat,
        ot.getoffAddress,
        ot.getoffTime,
        ot.mileage,
        ot.payManner,
        ot.payType,
        ot.orderMoney,
        ot.startMoney,
        ot.mileageMoney,
        ot.durationMoney,
        ot.longDistanceMoney,
        ot.parkMoney,
        ot.roadTollMoney,
        ot.redPacketMoney,
        ot.couponMoney,
        ot.redPacketId,
        ot.couponId,
        ot.discount,
        ot.discountMoney,
        ot.activityId,
        ot.companyId,
        ot.payMoney,
        ot.substitute,
        ot.passengers,
        ot.passengersPhone,
        ot.state,
        ot.insertTime,
        ot.travelTime,
        ot.snatchOrderTime,
        ot.setOutTime,
        ot.arriveTime,
        ot.startServiceTime,
        ot.endServiceTime,
        ot.orderType,
        ot.orderSource,
        ot.invoiceId,
        ot.isReassign,
        ot.reassignNotice,
        ot.trackId,
        ot.isDelete,
        ot.oldState,
        ot.telX,
        ot.bindId,
        ot.serverCarModelId
        FROM
        t_order_private_car as ot
        LEFT JOIN
        t_user as ui ON ui.id = ot.userId
        LEFT JOIN
        t_driver as di ON di.id = ot.driverId
        LEFT JOIN
        t_car as ci ON ci.id = ot.carId
        LEFT JOIN
        t_car_brand as cb ON cb.id = ci.carBrandId
        LEFT JOIN
        t_server_carmodel as sc ON sc.id = ot.serverCarModelId
        <where>
            ot.isDelete = 1
            AND ot.type = 1
            <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''">
                AND (ot.insertTime BETWEEN CONCAT(#{beginTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59'))
            </if>
            <if test="orderNum != null and orderNum != ''">
                AND ot.orderNum LIKE CONCAT('%', #{orderNum}, '%')
            </if>
            <if test="orderSource != null and orderSource != ''">
                AND ot.orderSource = #{orderSource}
            </if>
            <if test="userName != null and userName != ''">
                AND ui.nickName LIKE CONCAT('%', #{userName}, '%')
            </if>
            <if test="userPhone != null and userPhone != ''">
                AND ui.phone LIKE CONCAT('%', #{userPhone}, '%')
            </if>
            <if test="passengers != null and passengers != ''">
                AND ot.passengers LIKE CONCAT('%', #{passengers}, '%')
            </if>
            <if test="passengersPhone != null and passengersPhone != ''">
                AND ot.passengersPhone LIKE CONCAT('%', #{passengersPhone}, '%')
            </if>
            <if test="serverCarModelId != null and serverCarModelId != ''">
                AND ot.serverCarModelId = #{serverCarModelId}
            </if>
            <if test="driver != null and driver != ''">
                AND (di.`name` LIKE CONCAT('%', #{driver}, '%') OR di.phone LIKE CONCAT('%', #{driver}, '%'))
            </if>
            <if test="state != null and state != ''">
                AND ot.state = #{state}
            </if>
            <if test="smsNumber != null and smsNumber != ''">
                AND ot.smsNumber = #{smsNumber}
            </if>
            <if test="roleType != null and roleType != '' and roleType == 2">
                AND (ot.companyId = #{nowUserId} OR FIND_IN_SET(ot.companyId, (SELECT GROUP_CONCAT(id) as ids FROM t_company WHERE superiorId = #{nowUserId} GROUP BY superiorId)))
            </if>
            <if test="roleType != null and roleType != '' and roleType == 3">
                AND ot.companyId = #{nowUserId}
            </if>
        and ot.isException = 1
        </where>
        order by ot.id desc
    </select>
    <!--根据专车订单ID获取专车订单详情-->
    <select id="getPrivateCarOrderDetailById" resultType="map">
@@ -245,6 +374,46 @@
        LEFT JOIN (SELECT * FROM t_income where userType = 2 and type = 2 and orderType = 1 GROUP BY incomeId) as income2 on income2.incomeId = ot.id
        where ot.id = #{orderId}
    </select>
    <!--根据专车订单编号获取专车订单详情-->
    <select id="getPrivateCarOrderDetailByOrderNumber" resultType="map">
        SELECT
        DATE_FORMAT(ot.insertTime,'%Y-%m-%d %H:%i') as insertTimeStr,
        DATE_FORMAT(ot.travelTime,'%Y-%m-%d %H:%i') as travelTimeStr,
        DATE_FORMAT(ot.boardingTime,'%Y-%m-%d %H:%i') as boardingTimeStr,
        DATE_FORMAT(ot.getoffTime,'%Y-%m-%d %H:%i') as getoffTimeStr,
        case when ot.orderSource = 1 then 'APP下单'
        when ot.orderSource = 2 then '扫码下单'
        when ot.orderSource = 3 then '小程序下单'
        when ot.orderSource = 4 then '司机下单'
        when ot.orderSource = 5 then '调度下单' else '' end orderSourceStr,
        ui.nickName as userName,ui.phone as userPhone,
        case when ot.payType = 1 then '微信'
        when ot.payType = 2 then '支付宝'
        when ot.payType = 3 then '余额' else '' end as payTypeStr,
        case when ot.isFree = 2 then ot.orderMoney
        when ot.freeMoney > ot.orderMoney then ot.orderMoney else ot.freeMoney end as freeMoney1,
        sc.`name` as serverCarModel,
        case when income1.type = 1 then income1.money else 0 end as platIncome,
        case when income1.type = 2 then income1.money else 0 end as companyIncome,
        case when income1.type = 3 then income1.money else 0 end as franchiseeIncome,
        IFNULL(income2.money,0) as driverIncome,
        CONCAT(di.`name`,'-',di.phone) as driver,
        CONCAT(cb.`name`,'-',ci.carLicensePlate) as car,
        cc.`name` as companyName,ot.*
         FROM t_order_private_car as ot
        LEFT JOIN t_user as ui on ui.id = ot.userId
        LEFT JOIN t_driver as di on di.id = ot.driverId
        LEFT JOIN t_car as ci on ci.id= ot.carId
        LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId
        LEFT JOIN t_company as cc on cc.id = ot.companyId
        LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId
        LEFT JOIN (SELECT ii.money,ii.incomeId,cc.type FROM t_income as ii
        LEFT JOIN t_company as cc on ii.objectId = cc.id
        where ii.userType = 1 and ii.type = 2 and ii.orderType = 1 GROUP BY ii.incomeId) as income1 on income1.incomeId = ot.id
        LEFT JOIN (SELECT * FROM t_income where userType = 2 and type = 2 and orderType = 1 GROUP BY incomeId) as income2 on income2.incomeId = ot.id
        where ot.orderNum = #{orderNumber}
    </select>
    <!--根据条件查询专车订单列表noPage-->