From 0fc5865ab5f1df62cb948fbb97c2207b5bd855f9 Mon Sep 17 00:00:00 2001
From: guyue <1721849008@qq.com>
Date: 星期四, 31 七月 2025 21:26:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSysReformist/tSysReformist.html                                      |    2 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java                                            |    1 
 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js               |  196 +++++
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java |  209 +++++
 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tPromotionOrderCar/tPromotionOrder.html                               |  121 +++
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java                           |    1 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java               |    3 
 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivity_detail.html         |  384 ++++++++++
 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tPromotionOrder.js                               |  219 ++++++
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java                                    |   10 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml                         |   12 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml                    |  167 ++++
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java                     |    5 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java                           |    4 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java                                          |   33 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java                                             |   11 
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java             |    4 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverRankVo.java                                   |   16 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java                                |   20 
 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity2.js               |  191 +++++
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java                            |    1 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java             |   10 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java                                     |   20 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java                             |    2 
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java                               |   22 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java                                |   10 
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java                                              |   11 
 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tAbnormalOrderCar_info.js                        |  312 ++++++++
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java                   |    1 
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java                          |    5 
 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivityUser.html            |   40 +
 31 files changed, 2,028 insertions(+), 15 deletions(-)

diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 114d50d..2599463 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -237,7 +237,7 @@
 
 
         // 是否推广订单
-        Integer promotion = isPromotion(uid);
+        Integer promotion = isPromotion(orderPrivateCar.getUserId());
         if(promotion!=null){
             orderPrivateCar.setPromotion(2);
             Driver driver1 = driverService.selectById(promotion);
@@ -334,7 +334,7 @@
         UserInfo userInfo = userInfoMapper.selectById(userId);
         if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
             String registAreaCode = userInfo.getRegistAreaCode();
-            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("state",1).eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
             if(tDriverPromotionActivity!=null){
                 return 2;
             }
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
index c67d940..cc0556f 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
@@ -100,6 +100,7 @@
     private Date createTime;
     private Date updateTime;
 
+    private Integer state;
 
     @Override
     protected Serializable pkVal() {
diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 3391ffb..3531b3c 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -212,8 +212,7 @@
 //        }
 
         // 是否推广订单
-        // 是否推广订单
-        Integer promotion = isPromotion(uid);
+        Integer promotion = isPromotion(orderTaxi.getUserId());
         if(promotion!=null){
             orderTaxi.setPromotion(2);
             Driver driver1 = driverService.selectById(promotion);
@@ -298,7 +297,7 @@
         UserInfo userInfo = userInfoMapper.selectById(userId);
         if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
             String registAreaCode = userInfo.getRegistAreaCode();
-            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("state",1).eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
             if(tDriverPromotionActivity!=null){
                 return userInfo.getBindDriverId();
             }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java
new file mode 100644
index 0000000..67e223b
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java
@@ -0,0 +1,209 @@
+package com.stylefeng.guns.modular.system.controller.specialTrain;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.beetl.ShiroExtUtil;
+import com.stylefeng.guns.core.common.constant.factory.PageFactory;
+import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.core.util.SinataUtil;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
+import com.stylefeng.guns.modular.system.model.*;
+import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.util.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * 快车订单控制器
+ *
+ * @author fengshuonan
+ * @Date 2020-09-02 17:28:59
+ */
+@Controller
+@RequestMapping("/promotionInfo")
+public class TPromotionOrderCarController extends BaseController {
+
+    private String PREFIX = "/system/tPromotionOrderCar/";
+
+    @Autowired
+    private ITOrderPrivateCarService tOrderPrivateCarService;
+
+    @Autowired
+    private ShiroExtUtil shiroExtUtil;
+
+
+    /**
+     * 跳转到快车订单首页
+     */
+    @RequestMapping("")
+    public String index(Model model) {
+        List<Map<String, Object>> list=new ArrayList<>();
+        list =  tOrderPrivateCarService.promotionInfoExport(null, null, null, null, null, null, null, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId());
+        BigDecimal reduce = list.stream().map(e -> new BigDecimal(e.get("promotionMoney").toString())).reduce(BigDecimal.ZERO, BigDecimal::add);
+        model.addAttribute("money",reduce);
+        model.addAttribute("size",list.size());
+
+        return PREFIX + "tPromotionOrder.html";
+    }
+
+
+    /**
+     * 获取快车订单列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String insertTime,
+                       String orderNum,
+                       String userName,
+                       String name,
+                       String driverName){
+        String beginTime = null;
+        String endTime = null;
+        if (SinataUtil.isNotEmpty(insertTime)) {
+            String[] timeArray = insertTime.split(" - ");
+            beginTime = timeArray[0];
+            endTime = timeArray[1];
+        }
+        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+        page.setRecords(tOrderPrivateCarService.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId()));
+        return super.packForBT(page);
+    }
+
+
+
+    @GetMapping("/export")
+    @ResponseBody
+    public void export(String insertTime,
+                       String orderNum,
+                       String userName,
+                       String name,
+                       String driverName, HttpServletRequest request, HttpServletResponse response) {
+        try {
+            String beginTime = null;
+            String endTime = null;
+            if (SinataUtil.isNotEmpty(insertTime)) {
+                String[] timeArray = insertTime.split(" - ");
+                beginTime = timeArray[0];
+                endTime = timeArray[1];
+            }
+            List<Map<String, Object>> list=new ArrayList<>();
+            list =  tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId());
+
+
+            // 表格数据【封装】
+            List<List<String>> dataList = new ArrayList<>();
+
+            //第一行显示【封装】
+            List<String> twoList = new ArrayList<String>();
+            twoList.add("总计:");
+            twoList.add(String.valueOf(list.size())+"条");
+            dataList.add(twoList);
+
+            // 列【封装】
+            List<String> shellList = new ArrayList<String>();
+            shellList.add("活动名称");
+            shellList.add("司机名称");
+            shellList.add("下级用户");
+            shellList.add("订单编号");
+            shellList.add("订单金额");
+            shellList.add("司机推广收益");
+            shellList.add("收益时间");
+            dataList.add(shellList);
+
+            for (Map<String,Object> object : list){
+                // 详细数据列【封装】
+                shellList = new ArrayList<String>();
+                if(SinataUtil.isNotEmpty(object.get("name"))){
+                    shellList.add(object.get("name").toString());
+                }else{
+                    shellList.add("-");
+                }
+                if(SinataUtil.isNotEmpty(object.get("driverName"))){
+                    shellList.add(object.get("driverName").toString());
+                }else{
+                    shellList.add("-");
+                }
+                if(SinataUtil.isNotEmpty(object.get("userName"))){
+                    shellList.add(object.get("userName").toString());
+                }else{
+                    shellList.add("-");
+                }
+                if(SinataUtil.isNotEmpty(object.get("orderNum"))){
+                    shellList.add(object.get("orderNum").toString());
+                }else{
+                    shellList.add("-");
+                }
+                if(SinataUtil.isNotEmpty(object.get("money"))){
+                    shellList.add(object.get("money").toString());
+                }else{
+                    shellList.add("-");
+                }
+                if(SinataUtil.isNotEmpty(object.get("promotionMoney"))){
+                    shellList.add(object.get("promotionMoney").toString());
+                }else{
+                    shellList.add("-");
+                }
+
+                if(SinataUtil.isNotEmpty(object.get("successTime"))){
+                    shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("successTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss"));
+                }else{
+                    shellList.add("-");
+                }
+
+
+
+                dataList.add(shellList);
+            }
+            try {
+                // 调用工具类进行导出
+                ExcelExportUtil.easySheet("推广收益明细导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "推广收益明细导出记录", dataList,request, response);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @PostMapping("/list1")
+    @ResponseBody
+    public Object list1(String insertTime,
+                       String orderNum,
+                       String userName,
+                       String name,
+                       String driverName) {
+            String beginTime = null;
+            String endTime = null;
+            if (SinataUtil.isNotEmpty(insertTime)) {
+                String[] timeArray = insertTime.split(" - ");
+                beginTime = timeArray[0];
+                endTime = timeArray[1];
+            }
+            List<Map<String, Object>> list=new ArrayList<>();
+            list =  tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId());
+        HashMap<String, Object> map = new HashMap<>();
+        BigDecimal reduce = list.stream().map(e -> new BigDecimal(e.get("promotionMoney").toString())).reduce(BigDecimal.ZERO, BigDecimal::add);
+        map.put("money", reduce);
+        map.put("size", list.size());
+        return map;
+    }
+
+
+
+}
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java
index 9d1908d..ef8edfb 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java
@@ -70,4 +70,8 @@
 
 
     List<Map<String,Object>> getSurcharge(@Param("id") Object id,@Param("orderType") Integer orderType);
+
+    List<Map<String, Object>> promotionInfo(@Param("page") Page<Map<String, Object>> page, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId);
+
+    List<Map<String, Object>> promotionInfoExport(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId);
 }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml
index f0b5ae9..27d4230 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml
@@ -259,4 +259,171 @@
         SELECT  IFNULL(amount,0) amount,b.`name`  FROM  t_order_additional_fee a   LEFT JOIN t_additional_fee b ON a.additionalFeeId=b.id  WHERE a.orderId=#{id} AND a.orderType=#{orderType} AND a.id>1 AND amount>0
     </select>
 
+
+
+
+    <select id="promotionInfo" resultType="java.util.Map">
+select  * from (
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_private_car t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+
+        union all
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_taxi t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+
+        union all
+
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_cross_city t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+        ) as t5 order by t5.successTime desc
+
+    </select>
+    <select id="promotionInfoExport" resultType="java.util.Map">
+        select  * from (
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_private_car t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+
+        union all
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_taxi t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+
+        union all
+
+        select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName
+        from t_order_cross_city t1
+        LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id
+        LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id
+        LEFT JOIN t_user t4 ON t1.userId = t4.id
+        where t1.promotionActivityId is not null
+        <if test="orderNum != null and orderNum != ''">
+            and t1.orderNum  =#{orderNum}
+        </if>
+        <if test="beginTime != null and endTime != null">
+            and t1.successTime  between #{beginTime} and #{endTime}
+        </if>
+        <if test="userName != null and userName != ''">
+            and t4.nickName  like CONCAT('%',#{userName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and t2.activityTitle  like CONCAT('%',#{name},'%')
+        </if>
+        <if test="driverName != null and driverName != ''">
+            and t3.name  like CONCAT('%',#{driverName},'%')
+        </if>
+        <if test="roleType != null and roleType != '' and roleType != 1">
+            and t1.companyId = #{objectId}
+        </if>
+        ) as t5 order by t5.successTime desc
+    </select>
+
 </mapper>
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverRankVo.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverRankVo.java
new file mode 100644
index 0000000..845273f
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/DriverRankVo.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class DriverRankVo {
+    private Integer driverId;
+
+    private String driverName;
+
+    private Integer userNum;
+
+    private BigDecimal money;
+}
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java
index f4e1444..903157b 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java
@@ -307,6 +307,26 @@
 
     private String abnormalRemark;
 
+    private Integer promotionDriverId;
+
+    private BigDecimal promotionMoney;
+
+    public BigDecimal getPromotionMoney() {
+        return promotionMoney;
+    }
+
+    public void setPromotionMoney(BigDecimal promotionMoney) {
+        this.promotionMoney = promotionMoney;
+    }
+
+    public Integer getPromotionDriverId() {
+        return promotionDriverId;
+    }
+
+    public void setPromotionDriverId(Integer promotionDriverId) {
+        this.promotionDriverId = promotionDriverId;
+    }
+
     public Integer getAbnormalStatus() {
         return abnormalStatus;
     }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java
index 018d71a..150e4a7 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java
@@ -344,6 +344,28 @@
 
     private String abnormalRemark;
 
+
+    private Integer promotionDriverId;
+
+
+    private BigDecimal promotionMoney;
+
+    public BigDecimal getPromotionMoney() {
+        return promotionMoney;
+    }
+
+    public void setPromotionMoney(BigDecimal promotionMoney) {
+        this.promotionMoney = promotionMoney;
+    }
+
+    public Integer getPromotionDriverId() {
+        return promotionDriverId;
+    }
+
+    public void setPromotionDriverId(Integer promotionDriverId) {
+        this.promotionDriverId = promotionDriverId;
+    }
+
     public Integer getAbnormalStatus() {
         return abnormalStatus;
     }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java
index d9648b9..9e240dc 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTaxi.java
@@ -310,6 +310,26 @@
 
     private BigDecimal responsibilityMoney;
 
+    private Integer promotionDriverId;
+
+    private BigDecimal promotionMoney;
+
+    public BigDecimal getPromotionMoney() {
+        return promotionMoney;
+    }
+
+    public void setPromotionMoney(BigDecimal promotionMoney) {
+        this.promotionMoney = promotionMoney;
+    }
+
+    public Integer getPromotionDriverId() {
+        return promotionDriverId;
+    }
+
+    public void setPromotionDriverId(Integer promotionDriverId) {
+        this.promotionDriverId = promotionDriverId;
+    }
+
     public Integer getAbnormalStatus() {
         return abnormalStatus;
     }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
index 50711b0..acc7e52 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
@@ -139,8 +139,37 @@
 	 * 实名认证照片
 	 */
 	private String certificationImg;
-	
-	
+
+	private Integer bindDriverId;
+
+	private Date bindDate;
+
+	private Date bindExpireDate;
+
+	public Date getBindDate() {
+		return bindDate;
+	}
+
+	public void setBindDate(Date bindDate) {
+		this.bindDate = bindDate;
+	}
+
+	public Date getBindExpireDate() {
+		return bindExpireDate;
+	}
+
+	public void setBindExpireDate(Date bindExpireDate) {
+		this.bindExpireDate = bindExpireDate;
+	}
+
+	public Integer getBindDriverId() {
+		return bindDriverId;
+	}
+
+	public void setBindDriverId(Integer bindDriverId) {
+		this.bindDriverId = bindDriverId;
+	}
+
 	public Integer getId() {
 		return id;
 	}
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java
index 19f3cc3..7b1da0c 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java
@@ -70,4 +70,9 @@
 
 
     List<Map<String,Object>> getSurcharge(Object id,Integer orderType);
+
+    List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId);
+
+
+    List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId);
 }
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java
index 15648ff..6373e9d 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java
@@ -113,4 +113,14 @@
     public List<Map<String, Object>> getSurcharge(Object id, Integer orderType) {
         return this.baseMapper.getSurcharge(id,orderType);
     }
+
+    @Override
+    public List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId) {
+        return this.baseMapper.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId);
+    }
+
+    @Override
+    public List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId) {
+        return this.baseMapper.promotionInfoExport(beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId);
+    }
 }
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivityUser.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivityUser.html
new file mode 100644
index 0000000..2d589a3
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivityUser.html
@@ -0,0 +1,40 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>司机推广下级用户</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <input type="hidden" id="driverId" value="${driverId}"/>
+                    <div class="col-sm-12">
+                        <div class="row">
+
+                            <div class="col-sm-3">
+                                <#NameCon id="name" name="用户姓名" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="重置" icon="" clickFun="TDriverPromotionActivity.research()"/>
+                                <#button name="搜索" icon="" clickFun="TDriverPromotionActivity.search()"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TDriverPromotionActivityTableToolbar" role="group">
+                            <#button name="导出Excel" icon="" clickFun="TDriverPromotionActivity.exportExcel()" space="true"/>
+                        </div>
+                        <#table id="TDriverPromotionActivityTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity2.js"></script>
+<script>
+    laydate.render({
+        elem: '#insertTime'
+        ,range: true
+    });
+</script>
+
+@}
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivity_detail.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivity_detail.html
new file mode 100644
index 0000000..902a54f
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tDriverPromotionActivity_detail.html
@@ -0,0 +1,384 @@
+@layout("/common/_container.html"){
+<head>
+    <meta charset="UTF-8">
+    <title>处理异常订单</title>
+    <style>
+        body {
+            background: #888;
+            margin: 0;
+            padding: 0;
+        }
+
+        .container {
+            background: #fff;
+            margin: 20px auto;
+            padding: 20px 30px;
+            border-radius: 10px;
+            max-width: 98vw;
+            min-width: 1200px;
+        }
+
+        .title {
+            font-size: 20px;
+            font-weight: bold;
+            margin-bottom: 20px;
+        }
+
+        .order-table {
+            width: 100%;
+            border-collapse: collapse;
+            margin-bottom: 30px;
+        }
+
+        .order-table th,
+        .order-table td {
+            border: 1px solid #e0e0e0;
+            padding: 8px 6px;
+            text-align: center;
+            font-size: 13px;
+        }
+
+        .order-table th {
+            background: #f8f8f8;
+            font-weight: 600;
+        }
+
+        .section-title {
+            font-size: 16px;
+            font-weight: bold;
+            margin: 30px 0 10px 0;
+        }
+
+        .desc-row {
+            margin-bottom: 10px;
+        }
+
+        .desc-label {
+            font-weight: bold;
+            margin-right: 10px;
+        }
+
+        .img-list {
+            display: flex;
+            gap: 20px;
+            margin: 10px 0 20px 0;
+        }
+
+        .img-list img {
+            width: 120px;
+            height: 80px;
+            object-fit: cover;
+            border-radius: 6px;
+            border: 1px solid #ccc;
+        }
+
+        .order-link {
+            color: #1976d2;
+            text-decoration: underline;
+            cursor: pointer;
+        }
+
+        input[type="radio"] {
+            accent-color: #1976d2;
+            width: 18px;
+            height: 18px;
+            vertical-align: middle;
+            margin-right: 4px;
+        }
+
+        .radio-group label {
+            margin-right: 18px;
+            font-size: 15px;
+            cursor: pointer;
+        }
+
+        #duty-selector {
+            display: flex;
+            margin-bottom: 18px;
+            border: 1px solid #ccc;
+            border-radius: 4px;
+            overflow: hidden;
+            width: fit-content;
+        }
+
+
+        .duty-btn {
+            flex: 1 1 0;
+            padding: 12px 32px;
+            border: none;
+            background: #fff;
+            color: #222;
+            font-size: 16px;
+            cursor: pointer;
+            outline: none;
+            border-right: 1px solid #ccc;
+            transition: background 0.2s, color 0.2s;
+            height: 62px;
+            line-height: 24px;
+        }
+
+        .duty-btn:last-child {
+            border-right: none;
+        }
+
+        .duty-btn.active {
+            background: #1976d2;
+            color: #fff;
+            font-weight: bold;
+        }
+
+        .action-btn {
+            min-width: 140px;
+            height: 48px;
+            background: #1976d2;
+            color: #fff;
+            border: none;
+            border-radius: 5px;
+            font-size: 16px;
+            font-weight: bold;
+            margin-right: 18px;
+            cursor: pointer;
+            transition: background 0.2s, box-shadow 0.2s;
+            box-shadow: 0 2px 6px rgba(25, 118, 210, 0.08);
+        }
+
+        .action-btn:last-child {
+            margin-right: 0;
+        }
+
+        .action-btn:hover {
+            background: #1565c0;
+        }
+
+        #action-btns {
+            margin-top: 32px;
+            display: flex;
+            align-items: center;
+        }
+    </style>
+</head>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+            <input type="hidden" id="id" value="${item.id!}"/>
+
+            <div id="duty-selector">
+                <button type="button" class="duty-btn active" data-type="platformAll">活动基础信息</button>
+                <button type="button" class="duty-btn" data-type="driverAll">推广情况</button>
+            </div>
+            <div id="s1">
+                <div class="row">
+                    <div class="col-sm-4">
+                        <#input id="activityTitle" name="推广活动标题" value="${item.activityTitle}"/>
+                    </div>
+                </div>
+
+                <div class="row" style="margin-left: -24px">
+                    <label class="col-sm-1 control-label">关联业务:</label>
+                    <div class="col-sm-3">
+                        <label class="checkbox-inline">
+                            <input type="checkbox" name="bizType" value="1"> 专车
+                        </label>
+                        <label class="checkbox-inline">
+                            <input type="checkbox" name="bizType" value="2"> 出租车
+                        </label>
+                        <label class="checkbox-inline">
+                            <input type="checkbox" name="bizType" value="3"> 城际
+                        </label>
+                    </div>
+                </div>
+
+                <div class="row" style="margin-top: 10px">
+                    <label class="col-sm-1 control-label">活动区域:</label>
+                    <div class="col-sm-2">
+                        <select class="form-control" id="province" onchange="provinceChange(this)">
+                            <option value="">选择省</option>
+                            @for(obj in provinceList){
+                            <option value="${obj.code}" ${obj.code== item.provinceCode ?
+                            'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                    <div class="col-sm-2">
+                        <select class="form-control" id="city" onchange="cityChage(this)">
+                            <option value="">选择市</option>
+                            @for(obj in cityList){
+                            <option value="${obj.code}" ${obj.code== item.cityCode ?
+                            'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                    <div class="col-sm-2">
+                        <select class="form-control" id="area">
+                            <option value="">选择区</option>
+                            @for(obj in areaList){
+                            <option value="${obj.code}" ${obj.code== item.districtCode ?
+                            'selected=selected' : ''}>${obj.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+
+                <div class="row" style="margin-top: 10px">
+                    <div class="col-sm-3">
+                        <#input id="time" name="活动时间" isTime="false"/>
+                    </div>
+                </div>
+
+                <div class="row">
+                    <div class="col-sm-3">
+                        <#input id="commissionRatio" name="抽佣比例" />
+                    </div>
+                </div>
+                <div class="form-group">
+                    <div class="col-sm-3">
+                        <#input id="bindingDays" name="绑定有效期" />
+                    </div>
+                </div>
+                <div class="form-group">
+                    <div class="col-sm-3">
+                        <label style="font-weight:700">推广活动说明:</label>
+
+                        <div class="tab-content">
+                            <div id="tab-1" class="tab-pane active">
+                                <div class="panel-body">
+                                    <textarea id="editor_1" type="text/plain"
+                                              style="width:1200px;height:400px;"></textarea>
+                                </div>
+                            </div>
+
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+
+        <div id="s2">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <div class="col-sm-3">
+                                <#NameCon id="driverName" name="司机姓名" />
+                            </div>
+
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="TDriverPromotionActivity.search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="TDriverPromotionActivity.resetSearch()"
+                                space="true"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group">
+                            <#button name="导出Excel" icon="" clickFun="TDriverPromotionActivity.exportExcel()" space="true"/>
+                        </div>
+                        <#table id="TDriverPromotionActivityTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+</div>
+</div>
+<script src="${ctxPath}/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js"></script>
+<script src="${ctxPath}/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity_info.js"></script>
+<script>
+
+
+    // 在现有的 script 标签内添加以下代码
+    $(document).ready(function () {
+        // 处理 duty-selector 按钮点击事件
+        $('#duty-selector .duty-btn').on('click', function () {
+            // 移除所有按钮的 active 类
+            $('#duty-selector .duty-btn').removeClass('active');
+            // 为当前点击的按钮添加 active 类
+            $(this).addClass('active');
+
+            // 可以根据 data-type 值执行不同的操作
+            var selectedType = $(this).data('type');
+            if (selectedType === 'platformAll') {
+                // 处理活动基础信息选中逻辑
+                console.log('活动基础信息被选中');
+                $("#s1").show();
+                $("#s2").hide();
+            } else if (selectedType === 'driverAll') {
+                // 处理推广情况选中逻辑
+                console.log('推广情况被选中');
+                $("#s1").hide();
+                $("#s2").show();
+            }
+        });
+    });
+    $(function () {
+        $("#s1").show();
+        $("#s2").hide();
+
+        // 初始化编辑器
+        editor_1 = UE.getEditor('editor_1');
+
+        // 初始化活动时间
+        laydate.render({
+            elem: '#time',
+            range: true
+        });
+
+        // 回显关联业务
+        var bizTypeStr = "${item.bizType!}"; // 获取业务类型字符串
+        if (bizTypeStr) {
+            var bizTypes = bizTypeStr.split(',');
+            $('input[name="bizType"]').each(function () {
+                if (bizTypes.indexOf($(this).val()) !== -1) {
+                    $(this).prop('checked', true);
+                }
+            });
+        }
+
+        // 回显活动时间
+        $("#time").val("${time!}");
+
+        // 回显抽佣比例和绑定有效期
+        $("#commissionRatio").val("${item.commissionRatio!}");
+        $("#bindingDays").val("${item.bindingDays!}");
+
+        // 回显活动说明
+        setTimeout(function () {
+            editor_1.ready(function () {
+                editor_1.setContent('${item.activityDesc!}');
+            });
+        }, 100);
+    });
+
+
+    function provinceChange(e) {
+        var provinceCode = $(e).val();
+        var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function (data) {
+            if (data != null) {
+                var content = '<option value="">选择市</option>';
+                $.each(data, function (k, v) {
+                    content += "<option value='" + v.code + "'>" + v.name + "</option>";
+                });
+                $("#city").empty().append(content);
+                $("#area").empty().append('<option value="">选择区</option>');
+            }
+        });
+        ajax.set("code", provinceCode);
+        ajax.start();
+    }
+
+    function cityChage(e) {
+        var cityCode = $(e).val();
+        var ajax = new $ax(Feng.ctxPath + "/tCompany/change", function (data) {
+            if (data != null) {
+                var content = '<option value="">选择区</option>';
+                $.each(data, function (k, v) {
+                    content += "<option value='" + v.code + "'>" + v.name + "</option>";
+                });
+                $("#area").empty().append(content);
+            }
+        });
+        ajax.set("code", cityCode);
+        ajax.start();
+    }
+</script>
+@}
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tPromotionOrderCar/tPromotionOrder.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tPromotionOrderCar/tPromotionOrder.html
new file mode 100644
index 0000000..8027935
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tPromotionOrderCar/tPromotionOrder.html
@@ -0,0 +1,121 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-title">
+                <h5>推广收益明细</h5>
+            </div>
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <div class="col-sm-3">
+                                <#TimeCon id="insertTime" name="收益时间" isTime="false"/>
+                            </div>
+                            <div class="col-sm-3">
+                                <#NameCon id="name" name="活动名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#NameCon id="driverName" name="司机名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#NameCon id="userName" name="用户名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#NameCon id="orderNum" name="订单编号" />
+                            </div>
+
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="search()"/>
+                                <#button name="重置" icon="fa-trash" clickFun="resetSearch()" space="true"/>
+                            </div>
+                        </div>
+
+                        <div class="form-group">
+                            <div class="row">
+                                <div class="col-sm-6">
+                                    <div class="stat-card" style=" border: none; padding: 20px; border-radius: 10px;  margin-bottom: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
+                                        <div class="stat-content">
+                                            <div class="stat-number" style="font-size: 28px; font-weight: bold; margin-bottom: 5px;" id="money">
+                                                ${money}
+                                            </div>
+                                            <div class="stat-label" style="font-size: 14px; opacity: 0.9;">
+                                                合计推广收益金额
+                                            </div>
+                                        </div>
+                                        <div style="clear: both;"></div>
+                                    </div>
+                                </div>
+                                <div class="col-sm-6">
+                                    <div class="stat-card" style=" border: none; padding: 20px; border-radius: 10px;  margin-bottom: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
+                                        <div class="stat-content">
+                                            <div class="stat-number" style="font-size: 28px; font-weight: bold; margin-bottom: 5px;" id="size">
+                                                ${size}
+                                            </div>
+                                            <div class="stat-label" style="font-size: 14px; opacity: 0.9;">
+                                                合计推广收益笔数
+                                            </div>
+                                        </div>
+                                        <div style="clear: both;"></div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group">
+                            <#button name="导出Excel" icon="" clickFun="TAbnormalOrder.exportExcel()" space="true"/>
+                        </div>
+                        <#table id="TOrderPrivateCarTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tPromotionOrderCar/tPromotionOrder.js"></script>
+<script>
+    laydate.render({
+        elem: '#insertTime'
+        ,range: true
+    });
+
+    function search() {
+
+        let insertTime = $('#insertTime').val();
+        let name = $('#name').val();
+        let driverName = $('#driverName').val();
+        let userName = $('#userName').val();
+        let orderNum = $('#orderNum').val();
+
+
+        //提交信息
+        var ajax = new $ax(Feng.ctxPath + "/promotionInfo/list1", function(data){
+            console.log(data)
+            $("#money").text(data.money)
+            $("#size").text(data.size)
+        },function(data){
+        });
+        ajax.set("insertTime",insertTime);
+        ajax.set("name",name);
+        ajax.set("driverName",driverName);
+        ajax.set("userName",userName);
+        ajax.set("orderNum",orderNum);
+        ajax.start();
+        TAbnormalOrder.search()
+    }
+
+
+    function resetSearch() {
+
+        //提交信息
+        var ajax = new $ax(Feng.ctxPath + "/promotionInfo/list1", function(data){
+            console.log(data)
+            $("#money").text(data.money)
+            $("#size").text(data.size)
+        },function(data){
+        });
+        ajax.start();
+        TAbnormalOrder.resetSearch()
+    }
+</script>
+@}
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSysReformist/tSysReformist.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSysReformist/tSysReformist.html
index 5c41fc9..2188e2f 100644
--- a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSysReformist/tSysReformist.html
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSysReformist/tSysReformist.html
@@ -43,7 +43,7 @@
                     <div>
                         <div style="float: left;">
                             <label class="lab checked" onclick="checkedLable(this)" tag="pushOrderSettings">推单设置</label>
-                            <label class="lab" onclick="checkedLable(this)" tag="driverPayDays">司机分账账期设置</label>
+<!--                            <label class="lab" onclick="checkedLable(this)" tag="driverPayDays">司机分账账期设置</label>-->
                             <label class="lab" onclick="checkedLable(this)" tag="cancelOrderSettings">取消订单设置</label>
                             <label class="lab" onclick="checkedLable(this)" tag="cancelTheReservationOrderSetting">预约单取消设置</label>
                             <label class="lab" onclick="checkedLable(this)" tag="spellOrderSetting">拼单派单设置</label>
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js
new file mode 100644
index 0000000..d8dd13b
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js
@@ -0,0 +1,196 @@
+/**
+ * 管理初始化
+ */
+var TDriverPromotionActivity = {
+    id: "TDriverPromotionActivityTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TDriverPromotionActivity.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '推广排名', field: 'sort', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row, index) {
+                // 使用序号作为排名,index从0开始,所以需要+1
+                return index + 1;
+            }
+        },
+        {title: '司机Id', field: 'driverId', visible: false, align: 'center', valign: 'middle'},
+        {title: '司机姓名', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
+        {title: '推广用户数量', field: 'userNum', visible: true, align: 'center', valign: 'middle'},
+        {title: '推广收益合计', field: 'money', visible: true, align: 'center', valign: 'middle',
+        },
+        {
+            title: '操作', field: 'opt', visible: true, align: 'left', valign: 'middle', width: "10%",
+            formatter: function (value, row) {
+                    var btn = [];
+                    btn += '<a href="javascript:void(0);" onclick="TDriverPromotionActivity.viewUser(' + row.driverId + ')" style="color: #0e9aef">查看下级用户</a>&nbsp;&nbsp;';
+                    btn += '<a href="javascript:void(0);" onclick="TDriverPromotionActivity.info(' + row.id + ')" style="color: #0e9aef">查看收益明细</a>&nbsp;&nbsp;';
+                    return btn;
+                }
+
+        }
+
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TDriverPromotionActivity.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if (selected.length == 0) {
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    } else {
+        TDriverPromotionActivity.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TDriverPromotionActivity.openAddTDriverPromotionActivity = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_add'
+    });
+    this.layerIndex = index;
+};
+
+
+/**
+ * 打开查看详情
+ */
+TDriverPromotionActivity.viewUser = function (e) {
+    var index = layer.open({
+        type: 2,
+        title: '司机推广下级用户',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_viewUser/' + e
+    });
+    this.layerIndex = index;
+};
+
+
+/**
+ * 打开查看详情
+ */
+TDriverPromotionActivity.update = function (e) {
+        var index = layer.open({
+            type: 2,
+            title: '编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_update/' + e
+        });
+        this.layerIndex = index;
+};
+TDriverPromotionActivity.info = function (e) {
+        var index = layer.open({
+            type: 2,
+            title: '编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_info/' + e
+        });
+        this.layerIndex = index;
+};
+
+/**
+ * 删除
+ */
+TDriverPromotionActivity.delete = function (e) {
+        var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/delete", function (data) {
+            Feng.success("删除成功!");
+            TDriverPromotionActivity.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tDriverPromotionActivityId", e);
+        ajax.start();
+};
+TDriverPromotionActivity.stop = function (e) {
+        var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/stop", function (data) {
+            Feng.success("暂停成功!");
+            TDriverPromotionActivity.table.refresh();
+        }, function (data) {
+            Feng.error("暂停失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id", e);
+        ajax.start();
+};
+
+TDriverPromotionActivity.start = function (e) {
+    var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/start", function (data) {
+        Feng.success("暂停成功!");
+        TDriverPromotionActivity.table.refresh();
+    }, function (data) {
+        Feng.error("暂停失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id", e);
+    ajax.start();
+};
+
+
+TDriverPromotionActivity.startOrStop = function () {
+    if (this.check()) {
+        if (TDriverPromotionActivity.seItem.status == 1) {
+            TDriverPromotionActivity.stop(TDriverPromotionActivity.seItem.id);
+        } else {
+            TDriverPromotionActivity.start(TDriverPromotionActivity.seItem.id);
+        }
+    }
+};
+
+/**
+ * 查询列表
+ */
+TDriverPromotionActivity.search = function () {
+    var queryData = {};
+    queryData['driverName'] = $("#driverName").val();
+    queryData['id'] = $("#id").val();
+    TDriverPromotionActivity.table.refresh({query: queryData});
+};
+TDriverPromotionActivity.resetSearch = function () {
+    $("#driverName").val('');
+    TDriverPromotionActivity.search()
+};
+TDriverPromotionActivity.exportExcel = function () {
+    let p = "";
+    let id = $('#id').val();
+    let driverName = $('#driverName').val();
+    if(null != id && '' != id){
+        p += "id=" + id + "&";
+    }
+    if(null != driverName && '' != driverName){
+        p += "driverName=" + driverName + "&";
+    }
+    if('' != p){
+        p = "?" + p.substring(0, p.length - 1);
+    }
+    console.log('p['+p+']')
+    window.location.href = Feng.ctxPath + '/tDriverPromotionActivity/export' + p;
+};
+
+
+$(function () {
+    var defaultColunms = TDriverPromotionActivity.initColumn();
+    var table = new BSTable(TDriverPromotionActivity.id, "/tDriverPromotionActivity/list1", defaultColunms);
+    table.setPaginationType("client");
+    TDriverPromotionActivity.table = table.init();
+});
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity2.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity2.js
new file mode 100644
index 0000000..366c9e0
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity2.js
@@ -0,0 +1,191 @@
+/**
+ * 管理初始化
+ */
+var TDriverPromotionActivity = {
+    id: "TDriverPromotionActivityTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TDriverPromotionActivity.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '序号', field: 'sort', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row, index) {
+                // 使用序号作为排名,index从0开始,所以需要+1
+                return index + 1;
+            }
+        },
+        {title: '用户Id', field: 'userId', visible: true, align: 'center', valign: 'middle'},
+        {title: '用户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle'},
+        {title: '用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
+        {title: '绑定时间', field: 'bindDate', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '有效期至', field: 'bindExpireDate', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '产生收益合计', field: 'money', visible: true, align: 'center', valign: 'middle',
+        },
+
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TDriverPromotionActivity.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if (selected.length == 0) {
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    } else {
+        TDriverPromotionActivity.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TDriverPromotionActivity.openAddTDriverPromotionActivity = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_add'
+    });
+    this.layerIndex = index;
+};
+
+
+/**
+ * 打开查看详情
+ */
+TDriverPromotionActivity.viewUser = function (e) {
+    var index = layer.open({
+        type: 2,
+        title: '司机推广下级用户',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_viewUser/' + e
+    });
+    this.layerIndex = index;
+};
+
+
+/**
+ * 打开查看详情
+ */
+TDriverPromotionActivity.update = function (e) {
+        var index = layer.open({
+            type: 2,
+            title: '编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_update/' + e
+        });
+        this.layerIndex = index;
+};
+TDriverPromotionActivity.info = function (e) {
+        var index = layer.open({
+            type: 2,
+            title: '编辑',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_info/' + e
+        });
+        this.layerIndex = index;
+};
+
+/**
+ * 删除
+ */
+TDriverPromotionActivity.delete = function (e) {
+        var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/delete", function (data) {
+            Feng.success("删除成功!");
+            TDriverPromotionActivity.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tDriverPromotionActivityId", e);
+        ajax.start();
+};
+TDriverPromotionActivity.stop = function (e) {
+        var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/stop", function (data) {
+            Feng.success("暂停成功!");
+            TDriverPromotionActivity.table.refresh();
+        }, function (data) {
+            Feng.error("暂停失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("id", e);
+        ajax.start();
+};
+
+TDriverPromotionActivity.start = function (e) {
+    var ajax = new $ax(Feng.ctxPath + "/tDriverPromotionActivity/start", function (data) {
+        Feng.success("暂停成功!");
+        TDriverPromotionActivity.table.refresh();
+    }, function (data) {
+        Feng.error("暂停失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id", e);
+    ajax.start();
+};
+
+
+TDriverPromotionActivity.startOrStop = function () {
+    if (this.check()) {
+        if (TDriverPromotionActivity.seItem.status == 1) {
+            TDriverPromotionActivity.stop(TDriverPromotionActivity.seItem.id);
+        } else {
+            TDriverPromotionActivity.start(TDriverPromotionActivity.seItem.id);
+        }
+    }
+};
+
+/**
+ * 查询列表
+ */
+TDriverPromotionActivity.search = function () {
+    var queryData = {};
+    queryData['name'] = $("#name").val();
+    queryData['driverId'] = $("#driverId").val();
+    TDriverPromotionActivity.table.refresh({query: queryData});
+};
+TDriverPromotionActivity.research = function () {
+    $("#name").val('');
+    TDriverPromotionActivity.search()
+};
+TDriverPromotionActivity.exportExcel = function () {
+    let p = "";
+    let name = $('#name').val();
+    let driverId = $('#driverId').val();
+    if(null != name && '' != name){
+        p += "name=" + name + "&";
+    }
+    if(null != driverId && '' != driverId){
+        p += "driverId=" + driverId + "&";
+    }
+    if('' != p){
+        p = "?" + p.substring(0, p.length - 1);
+    }
+    console.log('p['+p+']')
+    window.location.href = Feng.ctxPath + '/tDriverPromotionActivity/export1' + p;
+};
+
+
+$(function () {
+    var defaultColunms = TDriverPromotionActivity.initColumn();
+    var table = new BSTable(TDriverPromotionActivity.id, "/tDriverPromotionActivity/list2", defaultColunms);
+    table.setPaginationType("client");
+    TDriverPromotionActivity.table = table.init();
+    TDriverPromotionActivity.search()
+});
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tAbnormalOrderCar_info.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tAbnormalOrderCar_info.js
new file mode 100644
index 0000000..5fdbf49
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tAbnormalOrderCar_info.js
@@ -0,0 +1,312 @@
+/**
+ * 初始化快车订单详情对话框
+ */
+var TOrderPrivateCarInfoDlg = {
+    tOrderPrivateCarInfoData: {}
+};
+
+/**
+ * 清除数据
+ */
+TOrderPrivateCarInfoDlg.clearData = function () {
+    this.tOrderPrivateCarInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TOrderPrivateCarInfoDlg.set = function (key, val) {
+    this.tOrderPrivateCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TOrderPrivateCarInfoDlg.get = function (key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TOrderPrivateCarInfoDlg.close = function () {
+    parent.layer.close(window.parent.TOrderPrivateCar.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TOrderPrivateCarInfoDlg.collectData = function () {
+    this
+        .set('id')
+        .set('type')
+        .set('userId')
+        .set('driverId')
+        .set('carId')
+        .set('orderNum')
+        .set('placementLon')
+        .set('placementLat')
+        .set('placementAddress')
+        .set('startLon')
+        .set('startLat')
+        .set('endLon')
+        .set('startAddress')
+        .set('endLat')
+        .set('endAddress')
+        .set('boardingLon')
+        .set('boardingLat')
+        .set('boardingAddress')
+        .set('boardingTime')
+        .set('getoffLon')
+        .set('getoffLat')
+        .set('getoffAddress')
+        .set('getoffTime')
+        .set('mileage')
+        .set('payManner')
+        .set('payType')
+        .set('orderMoney')
+        .set('startMoney')
+        .set('mileageMoney')
+        .set('durationMoney')
+        .set('longDistanceMoney')
+        .set('parkMoney')
+        .set('roadTollMoney')
+        .set('redPacketMoney')
+        .set('couponMoney')
+        .set('redPacketId')
+        .set('couponId')
+        .set('discount')
+        .set('discountMoney')
+        .set('activityId')
+        .set('companyId')
+        .set('payMoney')
+        .set('substitute')
+        .set('passengers')
+        .set('passengersPhone')
+        .set('state')
+        .set('insertTime')
+        .set('travelTime')
+        .set('snatchOrderTime')
+        .set('setOutTime')
+        .set('arriveTime')
+        .set('startServiceTime')
+        .set('endServiceTime')
+        .set('orderType')
+        .set('orderSource')
+        .set('invoiceId')
+        .set('isReassign')
+        .set('reassignNotice')
+        .set('trackId')
+        .set('isDelete')
+        .set('oldState')
+        .set('telX')
+        .set('bindId')
+        .set('serverCarModelId');
+}
+
+/**
+ * 提交添加
+ */
+TOrderPrivateCarInfoDlg.addSubmit = function () {
+
+    this.clearData();
+    this.collectData();
+
+    if ($("#startAddress").val() === ""){
+        Feng.error("请输入起点");
+        return false;
+    }
+    if ($("#endAddress").val() === ""){
+        Feng.error("请输入终点");
+        return false;
+    }
+    if ($("#travelTime").val() === ""){
+        Feng.error("请选择用车时间");
+        return false;
+    }
+    if ($("#passengers").val() === ""){
+        Feng.error("请输入乘车人姓名");
+        return false;
+    }
+    if ($("#passengersPhone").val() === ""){
+        Feng.error("请输入乘车人手机号");
+        return false;
+    }
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/add", function (data) {
+        Feng.success("添加成功!");
+        window.parent.TOrderPrivateCar.table.refresh();
+        TOrderPrivateCarInfoDlg.close();
+    }, function (data) {
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tOrderPrivateCarInfoData);
+    ajax.start();
+}
+TOrderPrivateCarInfoDlg.save = function (){
+
+        const selectedBtn = document.querySelector('.duty-btn.active');
+        const responsibilityTypeVal = reverseTypeMap[selectedBtn.dataset.type];
+        const remark = document.querySelector('textarea[name=handleRemark]').value;
+        // 取money
+        const money = document.querySelector('input[name=money]').value;
+        const type = document.querySelector('input[name=type]').value;
+        const orderNum = document.querySelector('input[name=orderNum]').value;
+
+        console.log(type,orderNum)
+
+        //提交信息
+        var ajax = new $ax(Feng.ctxPath + "/abnormal/save", function(data){
+            Feng.success("操作成功!");
+        },function(data){
+            Feng.error("操作失败!");
+        });
+        ajax.set("responsibilityTypeVal",responsibilityTypeVal);
+        ajax.set("remark",remark);
+        ajax.set("money",money);
+        ajax.set("type",type);
+        ajax.set("orderNum",orderNum);
+        ajax.start();
+
+}
+/**
+ * 提交修改
+ */
+TOrderPrivateCarInfoDlg.editSubmit = function () {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/update", function (data) {
+        Feng.success("修改成功!");
+        window.parent.TOrderPrivateCar.table.refresh();
+        TOrderPrivateCarInfoDlg.close();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tOrderPrivateCarInfoData);
+    ajax.start();
+}
+
+var map = new AMap.Map("container", {
+    resizeEnable: true,
+    zoom: 14
+});
+$(function () {
+    var type = $("#type").val();
+    if (type != 2) {
+        getTrajectory();
+    }
+});
+
+function getTrajectory() {
+    $.ajax({
+        url: Feng.ctxPath + '/tOrderPrivateCar/getOrderTrack',
+        type: 'POST',
+        data: {
+            orderDetailId: $("#id").val()
+        },
+        success: function (res) {
+            if (res.status == 200) {
+                var data = res.data;
+                if (data.length > 0) {
+                    orderTrack(data);
+                }
+                /*else{
+                                    Feng.error("当前订单没有轨迹");
+                                }*/
+            } else {
+                Feng.error(res.msg);
+            }
+        }
+    });
+}
+
+var marker, lineArr = [];
+
+function orderTrack(data) {
+    for (var i in data) {
+        var waypoints = [];
+        var lon = parseFloat(data[i].lon);
+        var lat = parseFloat(data[i].lat);
+        waypoints.push(lon);
+        waypoints.push(lat);
+        lineArr.push(waypoints);
+    }
+
+    marker = new AMap.Marker({
+        map: map,
+        position: lineArr[0],
+        icon: "https://webapi.amap.com/images/car.png",
+        offset: new AMap.Pixel(-26, -13),
+        autoRotation: true,
+        angle: -90,
+    });
+
+    // 绘制轨迹
+    var polyline = new AMap.Polyline({
+        map: map,
+        path: lineArr,
+        showDir: true,
+        strokeColor: "#28F",  //线颜色
+        // strokeOpacity: 1,     //线透明度
+        strokeWeight: 6,      //线宽
+        // strokeStyle: "solid"  //线样式
+    });
+
+    var passedPolyline = new AMap.Polyline({
+        map: map,
+        // path: lineArr,
+        strokeColor: "#AF5",  //线颜色
+        // strokeOpacity: 1,     //线透明度
+        strokeWeight: 6,      //线宽
+        // strokeStyle: "solid"  //线样式
+    });
+
+
+    marker.on('moving', function (e) {
+        passedPolyline.setPath(e.passedPath);
+    });
+
+    map.setFitView();
+}
+
+
+function startAnimation() {
+    marker.moveAlong(lineArr, 200);
+}
+
+function pauseAnimation() {
+    marker.pauseMove();
+}
+
+function resumeAnimation() {
+    marker.resumeMove();
+}
+
+function stopAnimation() {
+    marker.stopMove();
+}
+
+/**
+ * 选择起点
+ */
+TOrderPrivateCarInfoDlg.startAddress = function () {
+    $("#startAddressModel").show();
+};
+
+
+/**
+ * 选择终点
+ */
+TOrderPrivateCarInfoDlg.endAddress = function () {
+    $("#endAddressModel").show();
+};
diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tPromotionOrder.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tPromotionOrder.js
new file mode 100644
index 0000000..8aaf06f
--- /dev/null
+++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tPromotionOrderCar/tPromotionOrder.js
@@ -0,0 +1,219 @@
+/**
+ * 快车订单管理初始化
+ */
+var TAbnormalOrder = {
+    id: "TOrderPrivateCarTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TAbnormalOrder.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+        {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '活动名称', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%',
+        },
+        {title: '司机名称', field: 'driverName', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '下级用户', field: 'userName', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '订单编号', field: 'orderNum', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '订单金额', field: 'money', visible: false, align: 'center', valign: 'middle'},
+        {title: '司机推广收益', field: 'promotionMoney', visible: true, align: 'center', valign: 'middle',
+        },
+        {title: '收益时间', field: 'successTime', visible: true, align: 'center', valign: 'middle',
+        }
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TAbnormalOrder.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TAbnormalOrder.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 添加快车订单
+ */
+TAbnormalOrder.addOrder =function(){
+    var index = layer.open({
+        type: 2,
+        title: '添加快车订单',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_addOrder'
+    });
+    this.layerIndex = index;
+
+};
+
+/**
+ * 打开查看快车订单详情
+ */
+TAbnormalOrder.orderDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '异常订单详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val()
+        });
+        this.layerIndex = index;
+    }
+};
+TAbnormalOrder.orderDetail1 = function () {
+    if (this.check()) {
+        let abnormalStatus = TAbnormalOrder.seItem.abnormalStatus
+        if(abnormalStatus==2){
+            Feng.info("此异常订单已处理")
+            return;
+        }
+        console.log(abnormalStatus)
+        var index = layer.open({
+            type: 2,
+            title: '异常订单详情',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail1?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val()
+        });
+        this.layerIndex = index;
+    }
+};
+
+
+/**
+ * 订单轨迹
+ */
+TAbnormalOrder.trajectory = function(){
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '快车订单轨迹',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_trajectory/' + TAbnormalOrder.seItem.id
+        });
+        this.layerIndex = index;
+    }
+}
+
+
+/**
+ * 删除快车订单
+ */
+TAbnormalOrder.deleteOrder = function () {
+    if (this.check()) {
+        var orderNum = TAbnormalOrder.seItem.orderNum;
+        if (orderNum == "" || orderNum == null || orderNum == undefined) {
+            orderNum = "该订单";
+        } else {
+            orderNum = "【" + orderNum + "】";
+        }
+        if (TAbnormalOrder.seItem.state != 10) {
+            swal("删除失败", "【已取消】状态下才能执行此操作", "warning");
+            return;
+        }
+        swal({
+            title: "您是否确认删除" + orderNum + "?",
+            text: "请谨慎操作,删除后数据无法恢复!",
+            type: "warning",
+            showCancelButton: true,
+            confirmButtonColor: "#DD6B55",
+            confirmButtonText: "删除",
+            closeOnConfirm: false
+        }, function () {
+            var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/delete", function (data) {
+                swal("删除成功", "您已经删除了" + orderNum + "。", "success");
+                TAbnormalOrder.table.refresh();
+            }, function (data) {
+                swal("删除失败", data.responseJSON.message + "!", "warning");
+            });
+            ajax.set("tOrderPrivateCarId", TAbnormalOrder.seItem.id);
+            ajax.start();
+        });
+    }
+};
+
+
+
+
+
+/**
+ * 查询快车订单列表
+ */
+TAbnormalOrder.search = function () {
+    var queryData = {};
+    queryData['insertTime'] = $("#insertTime").val();
+    queryData['name'] = $("#name").val();
+    queryData['driverName'] = $("#driverName").val();
+    queryData['userName'] = $("#userName").val();
+    queryData['orderNum'] = $("#orderNum").val();
+    TAbnormalOrder.table.refresh({query: queryData});
+};
+
+TAbnormalOrder.exportExcel=function (){
+    let p = "";
+    let insertTime = $('#insertTime').val();
+    let name = $('#name').val();
+    let driverName = $('#driverName').val();
+    let userName = $('#userName').val();
+    let orderNum = $('#orderNum').val();
+    if(null != insertTime && '' != insertTime){
+        p += "insertTime=" + insertTime + "&";
+    }
+    if(null != name && '' != name){
+        p += "name=" + name + "&";
+    }
+    if(null != driverName && '' != driverName){
+        p += "driverName=" + driverName + "&";
+    }
+    if(null != userName && '' != userName){
+        p += "userName=" + userName + "&" ;
+    }
+    if(null != orderNum && '' != orderNum){
+        p += "orderNum=" + orderNum + "&" ;
+    }
+    if('' != p){
+        p = "?" + p.substring(0, p.length - 1);
+    }
+    console.log('p['+p+']')
+    window.location.href = Feng.ctxPath + '/promotionInfo/export' + p;
+}
+
+
+
+TAbnormalOrder.resetSearch = function () {
+    $("#insertTime").val("");
+    $("#name").val("");
+    $("#driverName").val("");
+    $("#userName").val("");
+    $("#orderNum").val("");
+    TAbnormalOrder.search();
+};
+
+
+
+$(function () {
+    var defaultColunms = TAbnormalOrder.initColumn();
+    var table = new BSTable(TAbnormalOrder.id, "/promotionInfo/list", defaultColunms);
+    table.setPaginationType("server");
+    TAbnormalOrder.table = table.init();
+});
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
index 6cf4a8a..0a28538 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -361,6 +361,7 @@
                     Date endTime = DateUtils.addDays(new Date(), bindingDays);
                     userInfo.setBindDriverId(driverId);
                     userInfo.setBindExpireDate(endTime);
+                    userInfo.setBindDate(new Date());
                     userInfoService.updateById(userInfo);
                 }
 
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
index a245398..e3a9e73 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
@@ -350,12 +350,12 @@
 		CONCAT(j.startTime, '-', j.endTime) as lineShiftTime,
 		a.holidayFee,
 		a.discountAmount as taxiCardMoney,
-        a.responsibilityType,
-        a.abnormalStatus,
-        a.abnormalRemark,
-        a.abnormalIntro,
-        a.abnormalImg,
-        a.companyId
+        a.responsibilityType as responsibilityType,
+        a.abnormalStatus as abnormalStatus,
+        a.abnormalRemark as abnormalRemark,
+        a.abnormalIntro as abnormalIntro,
+        a.abnormalImg as abnormalImg,
+        a.companyId as companyId
         from t_order_cross_city a
 		left join t_driver b on (a.driverId = b.id)
 		left join t_car c on (a.carId = c.id)
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
index 7302a60..3fc8960 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/OrderCrossCity.java
@@ -387,6 +387,16 @@
 
     private Integer responsibilityType;
 
+    private Long promotionActivityId;
+
+    public Long getPromotionActivityId() {
+        return promotionActivityId;
+    }
+
+    public void setPromotionActivityId(Long promotionActivityId) {
+        this.promotionActivityId = promotionActivityId;
+    }
+
     public Integer getResponsibilityType() {
         return responsibilityType;
     }
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index dc87f88..9605ec5 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -2722,6 +2722,7 @@
 				BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
 				orderCrossCity.setPromotionDriverId(userInfo.getBindDriverId());
 				orderCrossCity.setPromotionMoney(bigDecimal);
+				orderCrossCity.setPromotionActivityId(tDriverPromotionActivity.getId());
 				this.baseMapper.updateById(orderCrossCity);
 			}
 		}
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
index f6aa91c..61785ee 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -472,6 +472,16 @@
 
     private Integer responsibilityType;
 
+    private Long promotionActivityId;
+
+    public Long getPromotionActivityId() {
+        return promotionActivityId;
+    }
+
+    public void setPromotionActivityId(Long promotionActivityId) {
+        this.promotionActivityId = promotionActivityId;
+    }
+
     public String getPromotionUser() {
         return promotionUser;
     }
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index bf9740c..e65ee14 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -750,7 +750,7 @@
 		UserInfo userInfo = userInfoService.selectById(userId);
 		if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
 			String registAreaCode = userInfo.getRegistAreaCode();
-			TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+			TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).eq("state",1).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
 			if(tDriverPromotionActivity!=null){
 				return userInfo.getBindDriverId();
 			}
@@ -2760,6 +2760,7 @@
 				BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
 				orderPrivateCar.setPromotionDriverId(userInfo.getBindDriverId());
 				orderPrivateCar.setPromotionMoney(bigDecimal);
+				orderPrivateCar.setPromotionActivityId(tDriverPromotionActivity.getId());
 				this.baseMapper.updateById(orderPrivateCar);
 			}
 		}
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
index a2e62ff..f3da3bf 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverPromotionActivity.java
@@ -96,6 +96,8 @@
     private Date createTime;
     private Date updateTime;
 
+    private Integer state;
+
 
     @Override
     protected Serializable pkVal() {
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
index 0eb4e24..c8c15e7 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
@@ -146,6 +146,17 @@
 
     private Date bindExpireDate;
 
+
+    private Date bindDate;
+
+    public Date getBindDate() {
+        return bindDate;
+    }
+
+    public void setBindDate(Date bindDate) {
+        this.bindDate = bindDate;
+    }
+
     public Integer getBindDriverId() {
         return bindDriverId;
     }
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
index a537088..d25a643 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
@@ -386,6 +386,17 @@
 
     private Integer responsibilityType;
 
+    private Long promotionActivityId;
+
+    public Long getPromotionActivityId() {
+        return promotionActivityId;
+    }
+
+    public void setPromotionActivityId(Long promotionActivityId) {
+        this.promotionActivityId = promotionActivityId;
+    }
+
+
     public Integer getResponsibilityType() {
         return responsibilityType;
     }
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 787c1e1..839b316 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -2318,6 +2318,7 @@
 				BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
 				orderTaxi.setPromotionDriverId(userInfo.getBindDriverId());
 				orderTaxi.setPromotionMoney(bigDecimal);
+				orderTaxi.setPromotionActivityId(tDriverPromotionActivity.getId());
 				this.baseMapper.updateById(orderTaxi);
 			}
 		}

--
Gitblit v1.7.1