From 1a0c0fc8b02415e919e17c0b6ffbf99d08dec8f5 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 07 四月 2023 17:40:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml                  |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TMainContentMapper.xml                |   19 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java                             |   27 
 management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js                              |   12 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITMainContentService.java                 |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java     |   39 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java                        |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java               |   17 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java                |   23 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java          |   33 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java      |   12 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html                    |   56 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java          |   23 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCashWithdrawalMapper.java                    |   18 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html                                        |    6 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tripRecordingExplain.html                               |   41 
 management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg.js                                                |  100 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html                              |  164 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java                                 |   14 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TMainContentController.java    |  253 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java      |   45 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java                           |    3 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent.html                                |   38 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java             |   14 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html                     |    6 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html                                        |   14 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_edit.html                           |   30 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java                         |    3 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java             |   43 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TMainContent.java                           |  101 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java           |    6 
 management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg_info.js                                           |  216 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html                                          |   24 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/requirementsJoinExplain.html                            |   72 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/agreementExplain.html                                   |  124 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TImg.java                                   |   88 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html                               |   74 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java                            |   13 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TAppUserResp.java                 |   12 
 management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js                                  |  152 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCashWithdrawalMapper.xml             |   23 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/HtmlTypeEnum.java                           |   63 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml.html                                              |   38 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java                       |   39 
 management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js                             |   90 
 management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml_info.js                                         |   99 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html                      |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAgentService.java                       |    7 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html                              |    4 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent.html                                            |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TImgServiceImpl.java                 |   20 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java                        |   13 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html                             |  176 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCashWithdrawalService.java              |   16 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg.html                                                |  116 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAppUserService.java                     |   12 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java        |   72 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java                  |    9 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/integralExplain.html                                    |   41 
 management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js                                    |   61 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/THtmlMapper.java                              |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java             |   18 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentDetail.html                                      |    7 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_add.html                            |   30 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TImgMapper.java                               |   16 
 management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent_info.js                           |  288 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_edit.html                                         |   29 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderUpdate.html                         |   34 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html                                        |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java                              |   21 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderAdd.html                            |   34 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java              |   59 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml                       |   30 
 management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js                               |   14 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/DataStatisticsController.java  |   34 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCashWithdrawalServiceImpl.java      |   20 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/estimatedPriceExplain.html                              |   41 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_add.html                                          |   29 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITHtmlService.java                        |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/PerformanceTableResp.java         |   43 
 management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js                               |   68 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/commissionRuleExplain.html                              |   41 
 management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js                                            |    1 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderAdd.html                        |   34 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCashWithdrawalController.java |  104 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/DataStatisticsOrderYearResp.java  |   32 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCashWithdrawal.java                        |  154 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBillResp.java                    |   12 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/aboutUs.html                                            |   41 
 management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml.js                                              |  159 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TMainContentServiceImpl.java         |   20 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html                                      |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java                     |    9 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html                                            |   18 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java                                 |   21 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverCommission.html                                |    6 
 management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js                                          |    2 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html                                |   72 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html                                              |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THtmlController.java           |  237 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TMainContentMapper.java                       |   16 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderAdd.html                          |   34 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java   |   38 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderUpdate.html                     |   34 
 management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent.js                                |  206 ++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/cancellationAgreement.html                              |   41 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java           |    8 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_add.html                                            |   29 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TImgController.java            |  148 +
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html                                    |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml                      |  111 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/MainContentTypeEnum.java                    |   52 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrder.html                               |   44 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java          |   23 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java                   |    2 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/startingFareExplain.html                                |   41 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java       |   74 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/THtml.java                                  |   88 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html                                  |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml                    |   38 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java               |   43 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TImgMapper.xml                        |   18 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_edit.html                                           |   29 
 management/guns-admin/src/main/resources/application.yml                                                                |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java           |   19 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/THtmlMapper.xml                       |   18 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html                               |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITImgService.java                         |   16 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/THtmlServiceImpl.java                |   20 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrder.html                             |   44 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/exports/TAppUserExceptionExport.java              |   36 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrder.html                           |   64 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderUpdate.html                       |   34 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java                             |   26 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java                      |    7 
 135 files changed, 5,787 insertions(+), 326 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/DataStatisticsController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/DataStatisticsController.java
new file mode 100644
index 0000000..ba84da1
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/DataStatisticsController.java
@@ -0,0 +1,34 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.stylefeng.guns.modular.system.service.ITHtmlService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * 数据统计 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-03-24 10:50:08
+ */
+@Controller
+@RequestMapping("/dataStatistics")
+public class DataStatisticsController extends BaseController {
+
+    @Autowired
+    private ITHtmlService tHtmlService;
+
+    /**
+     * 代理商统计
+     */
+    @RequestMapping(value = "/agentData")
+    @ResponseBody
+    public Object list(String condition) {
+        return tHtmlService.selectList(null);
+    }
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
index 4cd62ee..2ab5aa8 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -249,7 +249,7 @@
             DateFormat format = new SimpleDateFormat("yyyyMMdd");
             String time1 = format.format(date);
             String fileName = "Agent"+time1+".xls";
-            String[] title = new String[] {"时间","姓名","联系电话","代理区域","订单数量",
+            String[] title = new String[] {"时间","姓名","联系电话","代理区域","客服电话","订单数量",
                     "有效订单","已发放优惠券","已使用优惠券","累计优惠券金额","司机充值","司机数","状态"};
             EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime);
             // 是否异常
@@ -265,20 +265,21 @@
                 values[i][1] = d.getPrincipal();
                 values[i][2] = d.getPrincipalPhone();
                 values[i][3] = d.getProvinceName()+d.getCityName();
-                values[i][4] = String.valueOf(d.getOrderSum());
-                values[i][5] = String.valueOf(d.getValidOrder());
-                values[i][6] = String.valueOf(d.getIssuedCoupon());
-                values[i][7] = String.valueOf(d.getUsedCoupon());
-                values[i][8] = String.valueOf(d.getCouponPriceSum());
-                values[i][9] = String.valueOf(d.getDriverRecharge() == null ? "0":d.getDriverRecharge());
-                values[i][10] = String.valueOf(d.getDriverCount());
+                values[i][4] = StringUtils.hasLength(d.getServiceCalls())?d.getServiceCalls():"";
+                values[i][5] = String.valueOf(d.getOrderSum());
+                values[i][6] = String.valueOf(d.getValidOrder());
+                values[i][7] = String.valueOf(d.getIssuedCoupon());
+                values[i][8] = String.valueOf(d.getUsedCoupon());
+                values[i][9] = String.valueOf(d.getCouponPriceSum());
+                values[i][10] = String.valueOf(d.getDriverRecharge() == null ? "0":d.getDriverRecharge());
+                values[i][11] = String.valueOf(d.getDriverCount());
                 Integer status1 = d.getStatus();
                 if(1 == status1){
-                    values[i][11] = "正常";
+                    values[i][12] = "正常";
                 }else if(2 == status1){
-                    values[i][11] = "冻结";
+                    values[i][12] = "冻结";
                 }else {
-                    values[i][11] = "删除";
+                    values[i][12] = "删除";
                 }
             }
             HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
index f707d54..f23ebd0 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java
@@ -176,36 +176,8 @@
         // 是否异常
         wrapper.eq("is_exception",2);
         List<TAppUser> tAppUsers = tAppUserService.selectList(wrapper);
-        List<TAppUserResp> tAppUserRespList = new ArrayList<>(tAppUsers.size());
-        for (TAppUser tAppUser : tAppUsers) {
-            TAppUserResp tAppUserResp = new TAppUserResp();
-            BeanUtils.copyProperties(tAppUser,tAppUserResp);
 
-            // 查询当前用户优惠券数量
-            List<TUserToCoupon> tUserToCoupons = tUserToCouponService.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId()));
-
-            int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
-            int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
-
-//            List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUser.getId()));
-//            List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
-            tAppUserResp.setCouponSum(couponTotal);
-            tAppUserResp.setNotUsedCount(validCount);
-            List<TOrder> orders = tOrderService.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUser.getId()).orderBy(true,"createTime",false));
-            if(!CollectionUtils.isEmpty(orders)){
-                List<TOrder> collect1 = orders.stream().filter(order->Objects.nonNull(order.getState()))
-                        .filter(order -> OrderStateEnum.WAIT_EVALUATED.getCode() == order.getState() ||
-                                OrderStateEnum.FINISH.getCode() == order.getState()).collect(Collectors.toList());
-                if(!CollectionUtils.isEmpty(collect1)) {
-                    tAppUserResp.setConsumeSum(collect1.size());
-                    // 总消费金额
-                    collect1.stream().map(TOrder::getPayMoney).reduce(BigDecimal::add)
-                            .ifPresent(tAppUserResp::setConsumePrice);
-                }
-            }
-            tAppUserRespList.add(tAppUserResp);
-        }
-        return tAppUserRespList;
+        return tAppUserService.getTAppUserResp(tAppUsers);
     }
 
 
@@ -320,14 +292,16 @@
             for (int i = 0; i < list.size(); i++) {
                 TAppUser d = list.get(i);
                 values[i] = new String[title.length];
-                values[i][0] = d.getId().toString();
+                values[i][0] = String.valueOf(d.getId());
                 values[i][1] = d.getNickname();
                 values[i][2] = d.getPhone();
                 Integer sex = d.getSex();
-                if(1 == sex){
-                    values[i][3] = "男";
-                }else if(2 == sex){
-                    values[i][3] = "女";
+                if(Objects.nonNull(sex)){
+                    if(1 == sex){
+                        values[i][3] = "男";
+                    }else if(2 == sex){
+                        values[i][3] = "女";
+                    }
                 }else {
                     values[i][3] = "未知";
                 }
@@ -336,8 +310,8 @@
                 values[i][6] = d.getUnionid();
                 values[i][7] = d.getEmergencyContact();
                 values[i][8] = d.getEmergencyPhone();
-                values[i][9] = d.getAccountBalance().toString();
-                values[i][10] = d.getUserTagId().toString();
+                values[i][9] = String.valueOf(d.getAccountBalance());
+                values[i][10] = String.valueOf(d.getUserTagId());
                 Integer status1 = d.getStatus();
                 if(1 == status1){
                     values[i][11] = "正常";
@@ -383,7 +357,7 @@
             wrapper.eq("is_exception",2);
             List<TAppUser> list = tAppUserService.selectList(wrapper);
 
-            List<TAppUserExceptionExport> exportList = new ArrayList<>(list.size());
+            /*List<TAppUserExceptionExport> exportList = new ArrayList<>(list.size());
             for (TAppUser tAppUser : list) {
                 TAppUserExceptionExport export = new TAppUserExceptionExport();
                 BeanUtils.copyProperties(tAppUser,export);
@@ -394,7 +368,21 @@
                 tCoupons = tCoupons.stream().filter(coupon->coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
                 // 剩余优惠券
                 export.setRemainingCoupons(tCoupons.size());
-                // TODO 查询消费记录
+                // 查询消费记录
+                exportList.add(export);
+            }*/
+            List<TAppUserResp> tAppUserRespList = tAppUserService.getTAppUserResp(list);
+            List<TAppUserExceptionExport> exportList = new ArrayList<>(list.size());
+            for (TAppUserResp tAppUserResp : tAppUserRespList) {
+                TAppUserExceptionExport export = new TAppUserExceptionExport();
+                BeanUtils.copyProperties(tAppUserResp,export);
+                // 优惠券总数
+                export.setCouponsSum(tAppUserResp.getCouponSum());
+                // 剩余优惠券
+                export.setRemainingCoupons(tAppUserResp.getNotUsedCount());
+                export.setConsumptionTimes(tAppUserResp.getConsumeSum());
+                export.setHistoricalConsumption(tAppUserResp.getConsumePrice());
+                export.setLastConsumptionTime(tAppUserResp.getLastConsumptionTime());
                 exportList.add(export);
             }
             String[][] values = new String[list.size()][];
@@ -405,10 +393,10 @@
                 values[i][1] = d.getId().toString();
                 values[i][2] = d.getNickname();
                 values[i][3] = d.getPhone();
-                values[i][4] = d.getRemainingCoupons().toString();
-                values[i][5] = d.getCouponsSum().toString();
-                values[i][6] = d.getConsumptionTimes().toString();
-                values[i][7] = d.getHistoricalConsumption().toString();
+                values[i][4] = String.valueOf(d.getRemainingCoupons());
+                values[i][5] = String.valueOf(d.getCouponsSum());
+                values[i][6] = String.valueOf(Objects.nonNull(d.getConsumptionTimes())?d.getConsumptionTimes():0);
+                values[i][7] = String.valueOf(Objects.nonNull(d.getHistoricalConsumption())?d.getHistoricalConsumption():0);
                 if(Objects.nonNull(d.getLastConsumptionTime())){
                     values[i][8] = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d.getLastConsumptionTime());
                 }else {
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java
index e35af56..6c00995 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBillController.java
@@ -6,11 +6,14 @@
 import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
 import com.stylefeng.guns.modular.system.enums.TBillStateEnum;
 import com.stylefeng.guns.modular.system.model.TDriver;
+import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.service.ITOrderService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -45,6 +48,8 @@
 
     @Autowired
     private ITBillService tBillService;
+    @Autowired
+    private ITOrderService tOrderService;
 
     /**
      * 跳转到首页
@@ -79,12 +84,13 @@
     @RequestMapping(value = "/list")
     @ResponseBody
     public Object list(String createTime,String addresseePhone,Integer state,Integer billType,Integer billHeaderType) {
-        EntityWrapper<TBill> wrapper = tBillService.getPageListWrapper(createTime,addresseePhone,state,billType,billHeaderType);
-        return tBillService.selectList(wrapper);
+//        EntityWrapper<TBill> wrapper = tBillService.getPageListWrapper(createTime,addresseePhone,state,billType,billHeaderType);
+//        return tBillService.selectList(wrapper);
+        return tBillService.getPageList(createTime,addresseePhone,state,billType,billHeaderType);
     }
 
     /**
-     * 详情
+     * 确认通过发票
      */
     @RequestMapping(value = "/confirm")
     @ResponseBody
@@ -96,7 +102,7 @@
     }
 
     /**
-     * 详情
+     * 开通发票失败
      */
     @RequestMapping(value = "/cancel")
     @ResponseBody
@@ -104,6 +110,11 @@
         TBill tBill = tBillService.selectById(tBillId);
         tBill.setState(TBillStateEnum.FAIL_BILL.getCode());
         tBillService.updateById(tBill);
+        TOrder tOrder = tOrderService.selectById(tBill.getOrderId());
+        if(Objects.nonNull(tOrder)){
+            tOrder.setIsInvoice(0);
+            tOrderService.updateById(tOrder);
+        }
         return SUCCESS_TIP;
     }
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java
index 3b9f7dd..e1daf8e 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TBroadcastController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.base.tips.SuccessTip;
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.modular.system.enums.StatusEnum;
 import com.stylefeng.guns.modular.system.model.TSystemBulletin;
@@ -98,6 +99,12 @@
     @RequestMapping(value = "/add")
     @ResponseBody
     public Object add(TBroadcast tBroadcast) {
+        Boolean exit = tBroadcastService.isExit(tBroadcast.getId(), tBroadcast.getSort());
+        if(exit){
+            return new SuccessTip(500,"该排序已存在!");
+        }
+        tBroadcast.setStatus(StatusEnum.NORMAL.getCode());
+        tBroadcast.setCreateTime(new Date());
         tBroadcastService.insert(tBroadcast);
         return SUCCESS_TIP;
     }
@@ -109,6 +116,9 @@
     @ResponseBody
     public Object delete(@RequestParam Integer tBroadcastId) {
         TBroadcast tBroadcast = tBroadcastService.selectById(tBroadcastId);
+        if(1 == tBroadcast.getUpDown()){
+            return new SuccessTip(500,"上架中的广播不可删除!");
+        }
         tBroadcast.setStatus(StatusEnum.DELETE.getCode());
         tBroadcastService.updateById(tBroadcast);
         return SUCCESS_TIP;
@@ -120,6 +130,41 @@
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(TBroadcast tBroadcast) {
+        Boolean exit = tBroadcastService.isExit(tBroadcast.getId(), tBroadcast.getSort());
+        if(exit){
+            return new SuccessTip(500,"该排序已存在!");
+        }
+        tBroadcastService.updateById(tBroadcast);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 上架
+     */
+    @RequestMapping(value = "/up")
+    @ResponseBody
+    public Object up(Integer id) {
+
+        int count = tBroadcastService.selectCount(new EntityWrapper<TBroadcast>()
+                .eq("upDown", 1)
+                .ne("status", StatusEnum.DELETE.getCode()));
+        if(count>4){
+            return new SuccessTip(500,"最多可上架5条广播!");
+        }
+        TBroadcast tBroadcast = tBroadcastService.selectById(id);
+        tBroadcast.setUpDown(1);
+        tBroadcastService.updateById(tBroadcast);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 下架
+     */
+    @RequestMapping(value = "/down")
+    @ResponseBody
+    public Object down(Integer id) {
+        TBroadcast tBroadcast = tBroadcastService.selectById(id);
+        tBroadcast.setUpDown(2);
         tBroadcastService.updateById(tBroadcast);
         return SUCCESS_TIP;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCashWithdrawalController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCashWithdrawalController.java
new file mode 100644
index 0000000..b19a18d
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCashWithdrawalController.java
@@ -0,0 +1,104 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.stylefeng.guns.core.base.controller.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.stylefeng.guns.modular.system.model.TCashWithdrawal;
+import com.stylefeng.guns.modular.system.service.ITCashWithdrawalService;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-03-23 10:14:44
+ */
+@Controller
+@RequestMapping("/tCashWithdrawal")
+public class TCashWithdrawalController extends BaseController {
+
+    private String PREFIX = "/system/tCashWithdrawal/";
+
+    @Autowired
+    private ITCashWithdrawalService tCashWithdrawalService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tCashWithdrawal.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tCashWithdrawal_add")
+    public String tCashWithdrawalAdd() {
+        return PREFIX + "tCashWithdrawal_add.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tCashWithdrawal_update/{tCashWithdrawalId}")
+    public String tCashWithdrawalUpdate(@PathVariable Integer tCashWithdrawalId, Model model) {
+        TCashWithdrawal tCashWithdrawal = tCashWithdrawalService.selectById(tCashWithdrawalId);
+        model.addAttribute("item",tCashWithdrawal);
+        LogObjectHolder.me().set(tCashWithdrawal);
+        return PREFIX + "tCashWithdrawal_edit.html";
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        return tCashWithdrawalService.selectList(null);
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add(TCashWithdrawal tCashWithdrawal) {
+        tCashWithdrawalService.insert(tCashWithdrawal);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tCashWithdrawalId) {
+        tCashWithdrawalService.deleteById(tCashWithdrawalId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(TCashWithdrawal tCashWithdrawal) {
+        tCashWithdrawalService.updateById(tCashWithdrawal);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tCashWithdrawalId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tCashWithdrawalId") Integer tCashWithdrawalId) {
+        return tCashWithdrawalService.selectById(tCashWithdrawalId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java
index 85fa9f5..684eb4a 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCommercialController.java
@@ -1,6 +1,8 @@
 package com.stylefeng.guns.modular.system.controller.general;
 
 import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.base.tips.SuccessTip;
+import com.stylefeng.guns.modular.system.controller.util.LabelReplaceUtil;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -11,6 +13,8 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import com.stylefeng.guns.modular.system.model.TCommercial;
 import com.stylefeng.guns.modular.system.service.ITCommercialService;
+
+import java.util.Date;
 
 /**
  * 控制器
@@ -69,6 +73,8 @@
     @RequestMapping(value = "/add")
     @ResponseBody
     public Object add(TCommercial tCommercial) {
+        tCommercial.setHtml(LabelReplaceUtil.replace(tCommercial.getHtml()));
+        tCommercial.setCreateTime(new Date());
         tCommercialService.insert(tCommercial);
         return SUCCESS_TIP;
     }
@@ -84,11 +90,44 @@
     }
 
     /**
+     * 上线
+     */
+    @RequestMapping(value = "/onLine")
+    @ResponseBody
+    public Object onLine(@RequestParam Integer tCommercialId) {
+        TCommercial tCommercial = tCommercialService.selectById(tCommercialId);
+        Boolean exit = tCommercialService.isExit(tCommercialId, 1);
+        if(exit){
+            return new SuccessTip(500,"最多可上架4个弹窗广告!");
+        }
+        tCommercial.setOnOffLine(1);
+        tCommercialService.updateById(tCommercial);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 下线
+     */
+    @RequestMapping(value = "/offLine")
+    @ResponseBody
+    public Object offLine(@RequestParam Integer tCommercialId) {
+        TCommercial tCommercial = tCommercialService.selectById(tCommercialId);
+        tCommercial.setOnOffLine(2);
+        tCommercialService.updateById(tCommercial);
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 修改
      */
     @RequestMapping(value = "/update")
     @ResponseBody
     public Object update(TCommercial tCommercial) {
+        if(0 == tCommercial.getIsJump()){
+            tCommercial.setJumpType(0);
+            tCommercial.setJumpUrl("");
+        }
+        tCommercial.setHtml(LabelReplaceUtil.replace(tCommercial.getHtml()));
         tCommercialService.updateById(tCommercial);
         return SUCCESS_TIP;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
index 4e36492..982c9e1 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
@@ -1,8 +1,15 @@
 package com.stylefeng.guns.modular.system.controller.general;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.common.constant.state.Order;
 import com.stylefeng.guns.core.shiro.ShiroKit;
-import com.stylefeng.guns.modular.system.service.IUserService;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp;
+import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
+import com.stylefeng.guns.modular.system.model.TAgent;
+import com.stylefeng.guns.modular.system.model.TDriver;
+import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -10,8 +17,8 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Objects;
+import java.time.LocalDate;
+import java.util.*;
 
 /**
  * 控制器
@@ -25,6 +32,14 @@
 
     @Autowired
     private IUserService userService;
+    @Autowired
+    private ITAgentService tAgentService;
+    @Autowired
+    private ITDriverService tDriverService;
+    @Autowired
+    private ITOrderService tOrderService;
+    @Autowired
+    private ITRevenueService tRevenueService;
 
     private String PREFIX = "/system/tHomePage/";
 
@@ -32,17 +47,64 @@
      * 跳转到地图
      */
     @RequestMapping("/map")
-    public String map() {
+    public String map(Integer agentId,Integer type,Model model) {
+
+        if(Objects.nonNull(agentId)){
+            // 查询统计在线司机,待接单,服务中,已完成,已取消
+            Map<String,Integer> map = new HashMap<>(4);
+            int serverCount = tDriverService.selectCount(new EntityWrapper<TDriver>()
+                    .eq("agentId", agentId)
+                    .eq("serverStatus", 2));
+            tOrderService.getDataStatisticsCount(agentId,map);
+            model.addAttribute("map",map);
+
+            // 查询服务中的订单列表
+            List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerList(agentId);
+            model.addAttribute("serverList",orderServerRespList);
+
+            // 查询今天所有订单
+            List<TOrder> allList = tOrderService.getDataStatisticsAllList(agentId);
+
+            // TODO 拿到所有司机地址
+
+        }else {
+            // TODO 查询广东全区域数据
+        }
+
         return PREFIX + "tHomePageMap.html";
     }
 
     /**
-     * 跳转到地图
+     * 跳转到首页统计
      */
     @RequestMapping("/statistics")
-    public String statistics(Model model) {
+    public String statistics(Integer agentId,String dayDate,String yearDate,String monthDate,Integer type,Model model) {
         model.addAttribute("txt",new SimpleDateFormat("yyyy年MM月dd日").format(new Date()) + DateUtil.getWeekDay(new Date()) + ",欢迎" +
                 Objects.requireNonNull(ShiroKit.getUser()).getName() + "登录");
+        if(Objects.nonNull(agentId)){
+            // 统计代理商
+            tAgentService.getDataStatistics(agentId,model);
+
+            // 统计司机数
+            tDriverService.getDataStatistics(agentId,model);
+
+            // TODO 订单统计:按今天,昨天,本周,本月
+
+            // 订单统计,每年按月份
+            tOrderService.getDataStatisticsByYear(agentId,yearDate,model);
+
+            // 业绩排名 performanceTable
+            if (1 == type){
+                // 单量
+                tOrderService.getDataStatisticsOrderCount(agentId,monthDate,model);
+            }else {
+                // 收入、佣金
+                tRevenueService.getDataStatisticsIncomeOrCommission(agentId,monthDate,type,model);
+            }
+
+        }else {
+            // TODO 查询广东全区域数据
+        }
         return PREFIX + "tHomePageStatistics.html";
     }
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THtmlController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THtmlController.java
new file mode 100644
index 0000000..9f27ad3
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THtmlController.java
@@ -0,0 +1,237 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.modular.system.controller.util.LabelReplaceUtil;
+import com.stylefeng.guns.modular.system.enums.HtmlTypeEnum;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.stylefeng.guns.modular.system.service.ITHtmlService;
+
+import java.util.Objects;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-03-24 10:50:08
+ */
+@Controller
+@RequestMapping("/tHtml")
+public class THtmlController extends BaseController {
+
+    private String PREFIX = "/system/tHtml/";
+
+    @Autowired
+    private ITHtmlService tHtmlService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tHtml.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tHtml_add")
+    public String tHtmlAdd() {
+        return PREFIX + "tHtml_add.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tHtml_update/{tHtmlId}")
+    public String tHtmlUpdate(@PathVariable Integer tHtmlId, Model model) {
+        THtml tHtml = tHtmlService.selectById(tHtmlId);
+        model.addAttribute("item",tHtml);
+        LogObjectHolder.me().set(tHtml);
+        return PREFIX + "tHtml_edit.html";
+    }
+
+    /**
+     * 跳转到积分说明
+     */
+    @RequestMapping("/integralExplain")
+    public String integralExplain(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.INTEGRAL_EXPLAIN.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "integralExplain.html";
+    }
+
+    /**
+     * 跳转到佣金规则说明
+     */
+    @RequestMapping("/commissionRuleExplain")
+    public String commissionRuleExplain(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.COMMISSION_RULE_EXPLAIN.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "commissionRuleExplain.html";
+    }
+
+    /**
+     * 跳转到行程录音说明
+     */
+    @RequestMapping("/tripRecordingExplain")
+    public String tripRecordingExplain(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.TRIP_RECORDING_EXPLAIN.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "tripRecordingExplain.html";
+    }
+
+    /**
+     * 跳转到预估价格说明
+     */
+    @RequestMapping("/estimatedPriceExplain")
+    public String estimatedPriceExplain(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.ESTIMATED_PRICE_EXPLAIN.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "estimatedPriceExplain.html";
+    }
+
+    /**
+     * 跳转到起步价说明
+     */
+    @RequestMapping("/startingFareExplain")
+    public String startingFareExplain(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.SPECIFICATION_STARTING_PRICE.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "estimatedPriceExplain.html";
+    }
+
+    /**
+     * 跳转到注销协议
+     */
+    @RequestMapping("/cancellationAgreement")
+    public String cancellationAgreement(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.CANCELLATION_AGREEMENT.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "cancellationAgreement.html";
+    }
+
+    /**
+     * 跳转到关于我们
+     */
+    @RequestMapping("/aboutUs")
+    public String aboutUs(Model model) {
+        THtml html = queryHtmlByType(HtmlTypeEnum.ABOUT_US.getCode());
+        model.addAttribute("html",html);
+        return PREFIX + "aboutUs.html";
+    }
+
+    /**
+     * 跳转到代驾服务协议与隐私政策保护,法律条款,个人信息处理规则
+     */
+    @RequestMapping("/agreementExplain")
+    public String agentDrivingServiceExplain(Integer type,Model model) {
+        THtml one = queryHtmlByType(HtmlTypeEnum.AGENT_DRIVING_SERVICE_EXPLAIN.getCode());
+        model.addAttribute("one",one);
+        THtml two = queryHtmlByType(HtmlTypeEnum.CLAUSE.getCode());
+        model.addAttribute("two",two);
+        THtml three = queryHtmlByType(HtmlTypeEnum.PERSONAL_INFORMATION_RULES.getCode());
+        model.addAttribute("three",three);
+        return PREFIX + "agreementExplain.html";
+    }
+
+    /**
+     * 跳转到加盟基本要求
+     */
+    @RequestMapping("/requirementsJoinExplain")
+    public String requirementsJoinExplain(Model model) {
+        THtml tHtml = queryHtmlByType(HtmlTypeEnum.BASIC_REQUIREMENTS_JOINING.getCode());
+        JSONObject jsonObject = JSONObject.parseObject(tHtml.getHtml());
+        JSONArray rules = jsonObject.getJSONArray("rules");
+        JSONArray objects = new JSONArray();
+        for (int i = 0; i < rules.size(); i++) {
+            JSONObject jsonObject1 = JSONObject.parseObject(JSONObject.toJSONString(rules.get(i)));
+            if(i == 0){
+                jsonObject1.put("key",0);
+            }else {
+                jsonObject1.put("key",1);
+            }
+            objects.add(jsonObject1);
+        }
+        model.addAttribute("array",objects);
+        model.addAttribute("id",tHtml.getId());
+        return PREFIX + "requirementsJoinExplain.html";
+    }
+
+    /**
+     * 跳转到代驾服务协议与隐私政策保护,法律条款,个人信息处理规则
+     */
+    @RequestMapping("/agreement")
+    @ResponseBody
+    public Object agreement(Integer type) {
+        return queryHtmlByType(type);
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        return tHtmlService.selectList(null);
+    }
+
+    /**
+     * 通过类型查询配置
+     */
+    @RequestMapping(value = "/queryHtmlByType")
+    @ResponseBody
+    public THtml queryHtmlByType(Integer type) {
+        return tHtmlService.selectOne(new EntityWrapper<THtml>().eq("type", type).last("LIMIT 1"));
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add(THtml tHtml) {
+        tHtmlService.insert(tHtml);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tHtmlId) {
+        tHtmlService.deleteById(tHtmlId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(THtml tHtml) {
+        tHtml.setHtml(LabelReplaceUtil.replace(tHtml.getHtml()));
+        tHtmlService.updateById(tHtml);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tHtmlId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tHtmlId") Integer tHtmlId) {
+        return tHtmlService.selectById(tHtmlId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TImgController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TImgController.java
new file mode 100644
index 0000000..7706dbe
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TImgController.java
@@ -0,0 +1,148 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.modular.system.model.TSystemConfig;
+import com.stylefeng.guns.modular.system.service.ITSystemConfigService;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.stylefeng.guns.modular.system.model.TImg;
+import com.stylefeng.guns.modular.system.service.ITImgService;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-03-28 10:01:31
+ */
+@Controller
+@RequestMapping("/tImg")
+public class TImgController extends BaseController {
+
+    private String PREFIX = "/system/tImg/";
+
+    @Autowired
+    private ITImgService tImgService;
+    @Autowired
+    private ITSystemConfigService tSystemConfigService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index(Model model) {
+        TSystemConfig config = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 8)
+                .last("LIMIT 1"));
+        JSONObject jsonObject = JSONObject.parseObject(config.getContent());
+        model.addAttribute("num2",jsonObject.getInteger("num2"));
+        List<TImg> tImgList = tImgService.selectList(new EntityWrapper<TImg>()
+                .eq("type", 1));
+        model.addAttribute("imgList",tImgList);
+        return PREFIX + "tImg.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tImg_add")
+    public String tImgAdd() {
+        return PREFIX + "tImg_add.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tImg_update/{tImgId}")
+    public String tImgUpdate(@PathVariable Integer tImgId, Model model) {
+        TImg tImg = tImgService.selectById(tImgId);
+        model.addAttribute("item",tImg);
+        LogObjectHolder.me().set(tImg);
+        return PREFIX + "tImg_edit.html";
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        return tImgService.selectList(null);
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add(TImg tImg) {
+        tImgService.insert(tImg);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tImgId) {
+        tImgService.deleteById(tImgId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(TImg tImg) {
+        tImgService.updateById(tImg);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改图片
+     */
+    @RequestMapping(value = "/updateSubmit")
+    @ResponseBody
+    public Object updateSubmit(String tImg) {
+        System.err.println(tImg);
+        // 删除所有图片
+        tImgService.delete(new EntityWrapper<TImg>()
+                .eq("type",1));
+        if(StringUtils.hasLength(tImg)){
+            String[] split = tImg.split(",");
+            List<TImg> tImgList = new ArrayList<>(split.length);
+            for (String s : split) {
+                TImg tImg1 = new TImg();
+                // 保存所有图片
+                tImg1.setType(1);
+                tImg1.setCreateTime(new Date());
+                tImg1.setImg(s);
+                tImgList.add(tImg1);
+            }
+            tImgService.insertBatch(tImgList);
+        }
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tImgId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tImgId") Integer tImgId) {
+        return tImgService.selectById(tImgId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TMainContentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TMainContentController.java
new file mode 100644
index 0000000..f7b96ac
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TMainContentController.java
@@ -0,0 +1,253 @@
+package com.stylefeng.guns.modular.system.controller.general;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.modular.system.enums.HtmlTypeEnum;
+import com.stylefeng.guns.modular.system.enums.MainContentTypeEnum;
+import com.stylefeng.guns.modular.system.enums.StatusEnum;
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.stylefeng.guns.modular.system.service.ITHtmlService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.ui.Model;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import com.stylefeng.guns.modular.system.model.TMainContent;
+import com.stylefeng.guns.modular.system.service.ITMainContentService;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 控制器
+ *
+ * @author fengshuonan
+ * @Date 2023-03-28 10:09:47
+ */
+@Controller
+@RequestMapping("/tMainContent")
+public class TMainContentController extends BaseController {
+
+    private String PREFIX = "/system/tMainContent/";
+
+    @Autowired
+    private ITMainContentService tMainContentService;
+    @Autowired
+    private ITHtmlService tHtmlService;
+
+    /**
+     * 跳转到首页
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "tMainContent.html";
+    }
+
+    /**
+     * 跳转到添加
+     */
+    @RequestMapping("/tMainContent_add")
+    public String tMainContentAdd() {
+        return PREFIX + "tMainContent_add.html";
+    }
+
+    /**
+     * 跳转到转单添加
+     */
+    @RequestMapping("/transferOrder/add")
+    public String transferOrderAdd(Model model) {
+        model.addAttribute("key",0);
+        return PREFIX + "transferOrderAdd.html";
+    }
+
+    /**
+     * 跳转到转单修改
+     */
+    @RequestMapping("/transferOrder/update")
+    public String transferOrderUpdate(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.TRANSFER_ORDER.getCode()));
+        model.addAttribute("list",list);
+        return PREFIX + "transferOrderUpdate.html";
+    }
+
+    /**
+     * 跳转到消单添加
+     */
+    @RequestMapping("/driverCancelOrder/add")
+    public String driverCancelOrderAdd(Model model) {
+        model.addAttribute("key",0);
+        return PREFIX + "driverCancelOrderAdd.html";
+    }
+
+    /**
+     * 跳转到消单修改
+     */
+    @RequestMapping("/driverCancelOrder/update")
+    public String driverCancelOrderUpdate(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.DRIVER_CANCEL_ORDER.getCode()));
+        model.addAttribute("list",list);
+        return PREFIX + "driverCancelOrderUpdate.html";
+    }
+
+    /**
+     * 跳转到转单添加
+     */
+    @RequestMapping("/userCancelOrder/add")
+    public String userCancelOrderAdd(Model model) {
+        model.addAttribute("key",0);
+        return PREFIX + "userCancelOrderAdd.html";
+    }
+
+    /**
+     * 跳转到转单修改
+     */
+    @RequestMapping("/userCancelOrder/update")
+    public String userCancelOrderUpdate(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.USER_CANCEL_ORDER.getCode()));
+        model.addAttribute("list",list);
+        return PREFIX + "userCancelOrderUpdate.html";
+    }
+
+    /**
+     * 跳转到修改
+     */
+    @RequestMapping("/tMainContent_update/{tMainContentId}")
+    public String tMainContentUpdate(@PathVariable Integer tMainContentId, Model model) {
+        TMainContent tMainContent = tMainContentService.selectById(tMainContentId);
+        model.addAttribute("item",tMainContent);
+        LogObjectHolder.me().set(tMainContent);
+        return PREFIX + "tMainContent_edit.html";
+    }
+
+    /**
+     * 跳转到转单
+     */
+    @RequestMapping("/transferOrder")
+    public String transferOrder(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.TRANSFER_ORDER.getCode()));
+        model.addAttribute("list",list);
+        return PREFIX + "transferOrder.html";
+    }
+
+    /**
+     * 跳转到司机消单
+     */
+    @RequestMapping("/driverCancelOrder")
+    public String driverCancelOrder(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.DRIVER_CANCEL_ORDER.getCode()));
+        model.addAttribute("list",list);
+        THtml html = tHtmlService.selectOne(new EntityWrapper<THtml>().eq("type", HtmlTypeEnum.DRIVER_EXPLAIN_CANCELLATION.getCode()).last("LIMIT 1"));
+        model.addAttribute("html",html);
+        return PREFIX + "driverCancelOrder.html";
+    }
+
+    /**
+     * 跳转到用户取消订单
+     */
+    @RequestMapping("/userCancelOrder")
+    public String userCancelOrder(Model model) {
+        List<TMainContent> list = tMainContentService.selectList(new EntityWrapper<TMainContent>()
+                .eq("type", MainContentTypeEnum.USER_CANCEL_ORDER.getCode()));
+        model.addAttribute("list",list);
+        return PREFIX + "userCancelOrder.html";
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list")
+    @ResponseBody
+    public Object list(String condition) {
+        return tMainContentService.selectList(null);
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add")
+    @ResponseBody
+    public Object add( String tMainContents,Integer type) {
+        String[] split = tMainContents.split(",");
+        List<TMainContent> tMainContents1 = new ArrayList<>(split.length);
+        for (String s : split) {
+            TMainContent tMainContent = new TMainContent();
+            tMainContent.setContent(s);
+            tMainContent.setType(type);
+            tMainContent.setStatus(StatusEnum.NORMAL.getCode());
+            tMainContent.setCreateTime(new Date());
+            tMainContents1.add(tMainContent);
+        }
+        tMainContentService.insertBatch(tMainContents1);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 新增
+     */
+    @RequestMapping(value = "/add-back")
+    @ResponseBody
+    public Object addBack(TMainContent tMainContent) {
+        tMainContentService.insert(tMainContent);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping(value = "/delete")
+    @ResponseBody
+    public Object delete(@RequestParam Integer tMainContentId) {
+        tMainContentService.deleteById(tMainContentId);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update")
+    @ResponseBody
+    public Object update(String tMainContents,Integer type) {
+
+        tMainContentService.delete(new EntityWrapper<TMainContent>()
+                .eq("type",type));
+
+        String[] split = tMainContents.split(",");
+        List<TMainContent> tMainContents1 = new ArrayList<>(split.length);
+        for (String s : split) {
+            TMainContent tMainContent = new TMainContent();
+            tMainContent.setContent(s);
+            tMainContent.setType(type);
+            tMainContent.setStatus(StatusEnum.NORMAL.getCode());
+            tMainContent.setCreateTime(new Date());
+            tMainContents1.add(tMainContent);
+        }
+        tMainContentService.insertBatch(tMainContents1);
+        return SUCCESS_TIP;
+    }
+    /**
+     * 修改
+     */
+    @RequestMapping(value = "/update-back")
+    @ResponseBody
+    public Object updateBack(TMainContent tMainContent) {
+        tMainContentService.updateById(tMainContent);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 详情
+     */
+    @RequestMapping(value = "/detail/{tMainContentId}")
+    @ResponseBody
+    public Object detail(@PathVariable("tMainContentId") Integer tMainContentId) {
+        return tMainContentService.selectById(tMainContentId);
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
index 8fb8b15..31bf8a2 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -204,11 +204,16 @@
             TAppUserDetailOrderResp tAppUserDetailOrderResp = new TAppUserDetailOrderResp();
             BeanUtils.copyProperties(tOrder,tAppUserDetailOrderResp);
 
-            // TODO 计算总里程
-
+            // 计算总里程
+            if(Objects.nonNull(tOrder.getActualMileage())){
+                tAppUserDetailOrderResp.setMileageSum(tOrder.getActualMileage()/1000);
+            }
 
             // 计算总时长
-            long travelTimeSum = DateUtil.between(tAppUserDetailOrderResp.getBoardingTime(), tAppUserDetailOrderResp.getGetoffTime(), DateUnit.MINUTE);
+            long travelTimeSum = 0;
+            if(Objects.nonNull(tAppUserDetailOrderResp.getBoardingTime()) && Objects.nonNull(tAppUserDetailOrderResp.getGetoffTime())){
+                travelTimeSum = DateUtil.between(tAppUserDetailOrderResp.getBoardingTime(), tAppUserDetailOrderResp.getGetoffTime(), DateUnit.MINUTE);
+            }
             tAppUserDetailOrderResp.setTravelTimeSum(Integer.valueOf(Long.toString(travelTimeSum)));
 
             list.add(tAppUserDetailOrderResp);
@@ -295,7 +300,11 @@
                 }else if(2 == source1){
                     values[i][2] = "司机创建";
                 }
-                values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+                if(Objects.nonNull(d.getStartTime())){
+                    values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+                }else {
+                    values[i][3] = "";
+                }
                 values[i][4] = d.getUserName();
                 values[i][5] = d.getUserPhone();
                 values[i][6] = d.getStartAddress();
@@ -372,7 +381,11 @@
                 }else if(2 == source1){
                     values[i][2] = "司机创建";
                 }
-                values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+                if(Objects.nonNull(d.getStartTime())){
+                    values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+                }else {
+                    values[i][3] = "";
+                }
                 values[i][4] = d.getUserName();
                 values[i][5] = d.getUserPhone();
                 values[i][6] = d.getStartAddress();
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java
index 3242865..4599961 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSystemConfigController.java
@@ -148,6 +148,12 @@
             }
             objects.add(jsonObject1);
         }
+
+        TSystemConfig config = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 8)
+                .last("LIMIT 1"));
+        JSONObject jsonObj = JSONObject.parseObject(config.getContent());
+        Integer zcOne = jsonObj.getInteger("num1");
+        model.addAttribute("zcOne",zcOne);
         model.addAttribute("array",objects);
         JSONObject extraCost = JSONObject.parseObject(jsonObject.getString("ExtraCost"));
         model.addAttribute("ExtraCost",extraCost);
@@ -234,6 +240,38 @@
     }
 
     /**
+     * 修改价格规则开关
+     */
+    @RequestMapping(value = "/openOrClose")
+    @ResponseBody
+    public Object openOrClose(Integer num1) {
+        TSystemConfig config = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 8)
+                .last("LIMIT 1"));
+        JSONObject jsonObject = JSONObject.parseObject(config.getContent());
+        jsonObject.remove(jsonObject.getString("num1"));
+        jsonObject.put("num1",num1);
+        config.setContent(JSONObject.toJSONString(jsonObject));
+        tSystemConfigService.updateById(config);
+        return SUCCESS_TIP;
+    }
+
+    /**
+     * 修改启动页状态
+     */
+    @RequestMapping(value = "/updateStartState")
+    @ResponseBody
+    public Object updateStartState(Integer num2) {
+        TSystemConfig config = tSystemConfigService.selectOne(new EntityWrapper<TSystemConfig>().eq("type", 8)
+                .last("LIMIT 1"));
+        JSONObject jsonObject = JSONObject.parseObject(config.getContent());
+        jsonObject.remove(jsonObject.getString("num2"));
+        jsonObject.put("num2",num2);
+        config.setContent(JSONObject.toJSONString(jsonObject));
+        tSystemConfigService.updateById(config);
+        return SUCCESS_TIP;
+    }
+
+    /**
      * 详情
      */
     @RequestMapping(value = "/detail/{tSystemConfigId}")
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/DataStatisticsOrderYearResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/DataStatisticsOrderYearResp.java
new file mode 100644
index 0000000..0e0c2c9
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/DataStatisticsOrderYearResp.java
@@ -0,0 +1,32 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+@ApiModel(value = "首页数据统计(查询每年每月订单数量)")
+public class DataStatisticsOrderYearResp implements Serializable {
+
+    @ApiModelProperty(value = "月份")
+    private String month;
+
+    @ApiModelProperty(value = "数量")
+    private Integer orderCount;
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public Integer getOrderCount() {
+        return orderCount;
+    }
+
+    public void setOrderCount(Integer orderCount) {
+        this.orderCount = orderCount;
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/PerformanceTableResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/PerformanceTableResp.java
new file mode 100644
index 0000000..1bda7c6
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/PerformanceTableResp.java
@@ -0,0 +1,43 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+public class PerformanceTableResp implements Serializable {
+
+
+    @ApiModelProperty(value = "时间")
+    private String monthTime;
+
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "单量/收入/佣金")
+    private BigDecimal amount;
+
+    public String getMonthTime() {
+        return monthTime;
+    }
+
+    public void setMonthTime(String monthTime) {
+        this.monthTime = monthTime;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TAppUserResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TAppUserResp.java
index 2522e2f..bdbc5ca 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TAppUserResp.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TAppUserResp.java
@@ -5,6 +5,7 @@
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 public class TAppUserResp extends TAppUser {
 
@@ -20,6 +21,17 @@
     @ApiModelProperty(value = "历史消费")
     private BigDecimal consumePrice;
 
+    @ApiModelProperty(value = "最后一次消费时间")
+    private Date lastConsumptionTime;
+
+    public Date getLastConsumptionTime() {
+        return lastConsumptionTime;
+    }
+
+    public void setLastConsumptionTime(Date lastConsumptionTime) {
+        this.lastConsumptionTime = lastConsumptionTime;
+    }
+
     public Integer getCouponSum() {
         return couponSum;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBillResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBillResp.java
new file mode 100644
index 0000000..3761291
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TBillResp.java
@@ -0,0 +1,12 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import com.stylefeng.guns.modular.system.model.TAgent;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class TBillResp extends TAgent {
+
+
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java
new file mode 100644
index 0000000..9110375
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TOrderServerResp.java
@@ -0,0 +1,18 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import com.stylefeng.guns.modular.system.model.TOrder;
+import io.swagger.annotations.ApiModelProperty;
+
+public class TOrderServerResp extends TOrder {
+
+    @ApiModelProperty(value = "司机姓名")
+    private String driverName;
+
+    public String getDriverName() {
+        return driverName;
+    }
+
+    public void setDriverName(String driverName) {
+        this.driverName = driverName;
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java
index 87bc846..ebc1780 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TBillMapper.java
@@ -2,6 +2,10 @@
 
 import com.stylefeng.guns.modular.system.model.TBill;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -11,6 +15,23 @@
  * @author stylefeng
  * @since 2023-03-14
  */
+@Mapper
 public interface TBillMapper extends BaseMapper<TBill> {
 
+    /**
+     * 获取列表
+     * @param startTime
+     * @param endTime
+     * @param addresseePhone
+     * @param state
+     * @param billType
+     * @param billHeaderType
+     * @param roleType
+     * @param objectId
+     * @return
+     */
+    List<TBill> getPageList(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("addresseePhone")String addresseePhone,
+                            @Param("state")Integer state, @Param("billType")Integer billType, @Param("billHeaderType")Integer billHeaderType,
+                            @Param("roleType")Integer roleType, @Param("objectId")Integer objectId);
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCashWithdrawalMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCashWithdrawalMapper.java
new file mode 100644
index 0000000..3347e88
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCashWithdrawalMapper.java
@@ -0,0 +1,18 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.TCashWithdrawal;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 提现记录 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-23
+ */
+@Mapper
+public interface TCashWithdrawalMapper extends BaseMapper<TCashWithdrawal> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java
index 7d3b3d0..c085f52 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCommercialMapper.java
@@ -2,6 +2,7 @@
 
 import com.stylefeng.guns.modular.system.model.TCommercial;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -11,6 +12,7 @@
  * @author stylefeng
  * @since 2023-03-16
  */
+@Mapper
 public interface TCommercialMapper extends BaseMapper<TCommercial> {
 
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java
index bad622f..b09a599 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TComplaintMapper.java
@@ -30,6 +30,7 @@
      * @return
      */
     List<TComplaintResp> getPageList(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("userName")String userName,
-                                     @Param("userPhone")String userPhone, @Param("driverPhone")String driverPhone, @Param("state")Integer state);
+                                     @Param("userPhone")String userPhone, @Param("driverPhone")String driverPhone, @Param("state")Integer state,
+                                     @Param("roleType")Integer roleType,@Param("objectId")Integer objectId);
 
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/THtmlMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/THtmlMapper.java
new file mode 100644
index 0000000..fa2d934
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/THtmlMapper.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * H5富文本 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-24
+ */
+public interface THtmlMapper extends BaseMapper<THtml> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TImgMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TImgMapper.java
new file mode 100644
index 0000000..3acfb69
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TImgMapper.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.TImg;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 系统图片 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+public interface TImgMapper extends BaseMapper<TImg> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TMainContentMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TMainContentMapper.java
new file mode 100644
index 0000000..99dc323
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TMainContentMapper.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.dao;
+
+import com.stylefeng.guns.modular.system.model.TMainContent;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 事由管理 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+public interface TMainContentMapper extends BaseMapper<TMainContent> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
index 9a2e7bb..13c22e2 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderMapper.java
@@ -1,11 +1,15 @@
 package com.stylefeng.guns.modular.system.dao;
 
+import com.stylefeng.guns.modular.system.controller.resp.DataStatisticsOrderYearResp;
+import com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp;
 import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp;
 import com.stylefeng.guns.modular.system.model.TOrder;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -35,4 +39,27 @@
                                   @Param("source") Integer source,@Param("userName")String userName, @Param("userPhone")String userPhone,
                                   @Param("state")Integer state,@Param("driverName")String driverName,@Param("isException") Integer isException,
                                   @Param("roleType")Integer roleType,@Param("objectId")Integer objectId);
+
+    /**
+     * 通过年份查询订单数量
+     * @param agentId
+     * @return
+     */
+    List<DataStatisticsOrderYearResp> getDataStatisticsByYear(@Param("agentId") Integer agentId,@Param("yearDate")String yearDate);
+
+    /**
+     * 单量
+     * @param agentId
+     * @param monthDate
+     * @return
+     */
+    List<PerformanceTableResp> getDataStatisticsOrderCount(@Param("agentId")Integer agentId, @Param("monthDate")String monthDate);
+
+    Integer getDataStatisticsCount(@Param("agentId")Integer agentId, @Param("type")Integer type, @Param("localDate")LocalDate localDate);
+
+    Integer getDataStatisticsServerCount(@Param("agentId")Integer agentId, @Param("localDate") LocalDate localDate);
+
+    List<TOrderServerResp> getDataStatisticsServerList(@Param("agentId")Integer agentId,@Param("localDate") LocalDate localDate);
+
+    List<TOrder> getDataStatisticsAllList(@Param("agentId")Integer agentId,@Param("localDate") LocalDate localDate);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java
index 2f26bd4..dff5c9c 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TRevenueMapper.java
@@ -1,5 +1,6 @@
 package com.stylefeng.guns.modular.system.dao;
 
+import com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp;
 import com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp;
 import com.stylefeng.guns.modular.system.model.TRevenue;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
@@ -42,4 +43,6 @@
      * @return
      */
     RevenueExpenditureResp commissionOrBalanceDetail(@Param("code")String code, @Param("type")Integer type);
+
+    List<PerformanceTableResp> getDataStatisticsIncomeOrCommission(@Param("agentId")Integer agentId,@Param("type") Integer type, @Param("monthDate")String monthDate);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml
index 66bba2d..ef6f6e9 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TBillMapper.xml
@@ -24,5 +24,35 @@
     <sql id="Base_Column_List">
         id, orderId, billType, billHeaderType, companyName, companyTaxNumber, billContent, moreContent, billAmount, addresseeName, addresseePhone, addresseeEmail, state, createTime
     </sql>
+    <select id="getPageList" resultType="com.stylefeng.guns.modular.system.model.TBill">
+        SELECT b.id, b.orderId, b.billType, b.billHeaderType, b.companyName, b.companyTaxNumber, b.billContent, b.moreContent, b.billAmount, b.addresseeName, b.addresseePhone,
+        b.addresseeEmail, b.state, b.createTime
+        FROM t_bill b
+        LEFT JOIN t_order o ON b.orderId = o.id
+        <where>
+            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+                AND b.createTime BETWEEN #{startTime} AND #{endTime}
+            </if>
+            <if test="addresseePhone != null and addresseePhone != ''">
+                AND b.addresseePhone LIKE concat('%',#{addresseePhone},'%')
+            </if>
+            <if test="state != null">
+                AND b.state = #{state}
+            </if>
+            <if test="billType != null">
+                AND b.billType = #{billType}
+            </if>
+            <if test="billHeaderType != null">
+                AND b.billHeaderType = #{addresseePhone}
+            </if>
+            <if test="roleType != null and roleType == 2">
+                AND o.branchOfficeId = #{objectId}
+            </if>
+            <if test="roleType != null and roleType == 3">
+                AND o.agentId = #{objectId}
+            </if>
+        </where>
+        ORDER BY b.createTime DESC
+    </select>
 
 </mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCashWithdrawalMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCashWithdrawalMapper.xml
new file mode 100644
index 0000000..4eb2338
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCashWithdrawalMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stylefeng.guns.modular.system.dao.TCashWithdrawalMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TCashWithdrawal">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="userDriverId" property="userDriverId" />
+        <result column="code" property="code" />
+        <result column="businessType" property="businessType" />
+        <result column="amount" property="amount" />
+        <result column="state" property="state" />
+        <result column="orderNumber" property="orderNumber" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, type, userDriverId, code, businessType, amount, state, orderNumber, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml
index 3baaa02..d31d259 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml
@@ -43,6 +43,12 @@
             <if test="state != null">
                 AND c.state = #{state}
             </if>
+            <if test="roleType != null and roleType == 2">
+                AND d.branchOfficeId = #{objectId}
+            </if>
+            <if test="roleType != null and roleType == 3">
+                AND d.agentId = #{objectId}
+            </if>
         </where>
         ORDER BY c.state
     </select>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/THtmlMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/THtmlMapper.xml
new file mode 100644
index 0000000..53d2f41
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/THtmlMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stylefeng.guns.modular.system.dao.THtmlMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.THtml">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="html" property="html" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, type, html, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TImgMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TImgMapper.xml
new file mode 100644
index 0000000..5f9050e
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TImgMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stylefeng.guns.modular.system.dao.TImgMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TImg">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="img" property="img" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, type, img, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TMainContentMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TMainContentMapper.xml
new file mode 100644
index 0000000..b422ed6
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TMainContentMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stylefeng.guns.modular.system.dao.TMainContentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TMainContent">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="content" property="content" />
+        <result column="status" property="status" />
+        <result column="createTime" property="createTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, type, content, status, createTime
+    </sql>
+
+</mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
index 0a1fd14..3312641 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml
@@ -58,10 +58,18 @@
 
     <sql id="Base_Column_Order">
         o.id, o.code, o.userId, o.driverId, o.`source`, o.agentId, o.branchOfficeId, o.startTime, o.startAddress, o.startLat, o.startLng, o.endAddress, o.endLat, o.endLng,
-            o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
-            o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
-o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,a.nickname AS userName,
-            a.phone AS userPhone,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
+        o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
+        o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
+        o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,a.nickname AS userName,
+        a.phone AS userPhone,a.cancelCount,a.status AS userStatus,d.name AS driverName,d.phone AS driverPhone
+    </sql>
+
+    <sql id="Base_Column_Server_Order">
+        o.id, o.code, o.userId, o.driverId, o.`source`, o.agentId, o.branchOfficeId, o.startTime, o.startAddress, o.startLat, o.startLng, o.endAddress, o.endLat, o.endLng,
+        o.boardingTime, o.getoffTime, o.estimatedPrice, o.orderMoney, o.payMoney, o.discountedPrice, o.couponId, o.payType, o.payTime, o.`state`, o.status, o.createTime,
+        o.startDistance,o.startPrice,o.overDriveDistance,o.overDrivePrice,o.longDistance,o.longDistancePrice,o.overLongDistance,o.overLongDistancePrice,
+        o.waitTime,o.waitTimePrice,o.outWaitTime,o.outWaitTimePrice,o.badWeatherDistance,o.badWeatherPrice,o.overBadWeatherDistance,o.overBadWeatherPrice,
+        d.name AS driverName,d.phone AS driverPhone
     </sql>
 
     <select id="getOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
@@ -103,5 +111,100 @@
         </where>
         ORDER BY o.createTime
     </select>
+    <select id="getDataStatisticsByYear" resultType="com.stylefeng.guns.modular.system.controller.resp.DataStatisticsOrderYearResp">
+        SELECT createTime AS `month`,COUNT(id) AS orderCount
+        FROM t_order
+        <where>
+            <if test="agentId != null">
+                AND agentId = #{agentId}
+            </if>
+            <if test="yearDate != null and yearDate != ''">
+                AND date_format(createTime, '%Y') LIKE concat('',#{yearDate},'%')
+            </if>
+        </where>
+        GROUP BY date_format(createTime, '%Y-%m')
+    </select>
+    <select id="getDataStatisticsOrderCount" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
+        SELECT date_format(o.createTime, '%Y-%m') AS monthTime,COUNT(o.id) AS amount,d.name AS userName
+        FROM t_order o
+        LEFT JOIN t_driver d ON o.driverId = d.id
+        <where>
+            <if test="agentId != null">
+                AND o.agentId = #{agentId}
+            </if>
+            <if test="monthDate != null and monthDate != ''">
+                AND date_format(o.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+            </if>
+            AND (o.`state` = 108 OR o.`state` = 109)
+        </where>
+        GROUP BY monthTime,userName
+        ORDER BY amount DESC
+    </select>
+    <select id="getDataStatisticsCount" resultType="java.lang.Integer">
+        SELECT COUNT(id)
+        FROM t_order
+        <where>
+            <if test="agentId != null">
+                AND agentId = #{agentId}
+            </if>
+            <if test="type != null">
+                AND `state` = #{type}
+            </if>
+            <if test="localDate != null">
+                AND date_format(createTime, '%Y-%m-%d') LIKE concat('',#{localDate},'%')
+            </if>
+        </where>
+    </select>
+    <select id="getDataStatisticsServerCount" resultType="java.lang.Integer">
+        SELECT COUNT(id)
+        FROM t_order
+        <where>
+            <if test="agentId != null">
+                AND agentId = #{agentId}
+            </if>
+            <if test="localDate != null">
+                AND date_format(createTime, '%Y-%m-%d') LIKE concat('',#{localDate},'%')
+            </if>
+            AND (`state` = 102
+                OR `state` = 103
+                OR `state` = 104
+                OR `state` = 105
+                OR `state` = 106
+                OR `state` = 107
+            )
+        </where>
+    </select>
+    <select id="getDataStatisticsServerList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp">
+        select <include refid="Base_Column_Server_Order"></include>
+        FROM t_order o
+        LEFT JOIN t_driver d ON o.driverId = d.id
+        <where>
+            <if test="agentId != null">
+                AND o.agentId = #{agentId}
+            </if>
+            <if test="localDate != null">
+                AND date_format(o.createTime, '%Y-%m-%d') LIKE concat('',#{localDate},'%')
+            </if>
+            AND (o.`state` = 102
+            OR o.`state` = 103
+            OR o.`state` = 104
+            OR o.`state` = 105
+            OR o.`state` = 106
+            OR o.`state` = 107
+            )
+        </where>
+    </select>
+    <select id="getDataStatisticsAllList" resultType="com.stylefeng.guns.modular.system.model.TOrder">
+        select <include refid="Base_Column_List"></include>
+        FROM t_order
+        <where>
+            <if test="agentId != null">
+                AND agentId = #{agentId}
+            </if>
+            <if test="localDate != null">
+                AND date_format(createTime, '%Y-%m-%d') LIKE concat('',#{localDate},'%')
+            </if>
+        </where>
+    </select>
 
 </mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
index 70c34c8..d36f124 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
@@ -125,5 +125,43 @@
         WHERE
             cw.type = 2 AND cw.businessType = #{type} AND cw.code = #{code}
     </select>
+    <select id="getDataStatisticsIncomeOrCommission" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
+        SELECT date_format(r.createTime, '%Y-%m') AS monthTime,COUNT(o.id) AS amount,d.name AS userName
+        FROM t_revenue r
+        LEFT JOIN t_driver d ON r.userId = d.id
+        LEFT JOIN t_order o ON r.orderId = o.id
+        <where>
+            <if test="agentId != null">
+                AND o.agentId = #{agentId}
+            </if>
+            <if test="monthDate != null and monthDate != ''">
+                AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+            </if>
+            AND r.type = 1
+            AND r.userType = 2
+        </where>
+        GROUP BY monthTime,userName
+    </select>
+
+    <select id="getDataStatisticsCommission" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
+        SELECT date_format(r.createTime, '%Y-%m') AS monthTime,SUM(r.amount) AS amount,d.name AS userName
+        FROM t_revenue r
+        LEFT JOIN t_driver d ON r.userId = d.id
+        LEFT JOIN t_order o ON r.orderId = o.id
+        <where>
+            <if test="agentId != null">
+                AND o.agentId = #{agentId}
+            </if>
+            <if test="monthDate != null and monthDate != ''">
+                AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+            </if>
+            <if test="type != null">
+                AND r.type = #{type}
+            </if>
+            AND r.userType = 2
+        </where>
+        GROUP BY monthTime,userName
+        ORDER BY amount DESC
+    </select>
 
 </mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/HtmlTypeEnum.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/HtmlTypeEnum.java
new file mode 100644
index 0000000..0285c97
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/HtmlTypeEnum.java
@@ -0,0 +1,63 @@
+package com.stylefeng.guns.modular.system.enums;
+
+
+
+/**
+ * @Description H5富文本枚举
+ * @Author xiaochen
+ * @Date 2023/02/15 9:42
+ */
+public enum HtmlTypeEnum {
+
+    /*类型(1=代驾服务协议与隐私政策保护,2=法律条款,3=个人信息处理规则,4=积分说明,5=佣金规则说明,6=行程录音说明,7=预估价格说明,8=加盟基本要求,9=加盟流程,10=起步价说明,11=注销协议,12=关于我们,13=司机消单说明)*/
+
+    AGENT_DRIVING_SERVICE_EXPLAIN(1, "代驾服务协议与隐私政策保护"),
+    CLAUSE(2, "法律条款"),
+    PERSONAL_INFORMATION_RULES(3, "个人信息处理规则"),
+    INTEGRAL_EXPLAIN(4, "积分说明"),
+    COMMISSION_RULE_EXPLAIN(5, "佣金规则说明"),
+    TRIP_RECORDING_EXPLAIN(6, "行程录音说明"),
+    ESTIMATED_PRICE_EXPLAIN(7,"预估价格说明"),
+    BASIC_REQUIREMENTS_JOINING(8, "加盟基本要求"),
+    JOINING_PROCESS(9, "加盟流程"),
+    SPECIFICATION_STARTING_PRICE(10, "起步价说明"),
+    CANCELLATION_AGREEMENT(11,"注销协议"),
+    ABOUT_US(12,"关于我们"),
+    DRIVER_EXPLAIN_CANCELLATION(13,"司机消单说明");
+
+    private String desc;
+
+
+    private int code;
+
+
+    HtmlTypeEnum(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    /**
+     * 通过code获取枚举
+     *
+     * @param code
+     * @return
+     */
+    public static HtmlTypeEnum fromCode(Integer code) {
+        HtmlTypeEnum[] resultTypes = HtmlTypeEnum.values();
+        for (HtmlTypeEnum resultType : resultTypes) {
+            if (code.equals(resultType.getCode())) {
+                return resultType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/MainContentTypeEnum.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/MainContentTypeEnum.java
new file mode 100644
index 0000000..3194ddb
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/enums/MainContentTypeEnum.java
@@ -0,0 +1,52 @@
+package com.stylefeng.guns.modular.system.enums;
+
+
+
+/**
+ * @Description 事由管理类型枚举
+ * @Author xiaochen
+ * @Date 2023/02/15 9:42
+ */
+public enum MainContentTypeEnum {
+
+
+    TRANSFER_ORDER(1, "转单"),
+    DRIVER_CANCEL_ORDER(2, "司机消单"),
+    USER_CANCEL_ORDER(3, "用户取消订单");
+
+    private String desc;
+
+
+    private int code;
+
+
+    MainContentTypeEnum(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    /**
+     * 通过code获取枚举
+     *
+     * @param code
+     * @return
+     */
+    public static MainContentTypeEnum fromCode(Integer code) {
+        MainContentTypeEnum[] resultTypes = MainContentTypeEnum.values();
+        for (MainContentTypeEnum resultType : resultTypes) {
+            if (code.equals(resultType.getCode())) {
+                return resultType;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/exports/TAppUserExceptionExport.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/exports/TAppUserExceptionExport.java
index e357e73..92f2172 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/exports/TAppUserExceptionExport.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/exports/TAppUserExceptionExport.java
@@ -30,13 +30,29 @@
     private Integer couponsSum;
 
     @ApiModelProperty(value = "消费次数")
-    private Integer ConsumptionTimes = 0;
+    private Integer consumptionTimes = 0;
 
     @ApiModelProperty(value = "历史消费")
-    private BigDecimal HistoricalConsumption = new BigDecimal("0.00");
+    private BigDecimal historicalConsumption = new BigDecimal("0.00");
 
     @ApiModelProperty(value = "最后一次消费时间")
     private Date lastConsumptionTime;
+
+    public Integer getConsumptionTimes() {
+        return consumptionTimes;
+    }
+
+    public void setConsumptionTimes(Integer consumptionTimes) {
+        this.consumptionTimes = consumptionTimes;
+    }
+
+    public BigDecimal getHistoricalConsumption() {
+        return historicalConsumption;
+    }
+
+    public void setHistoricalConsumption(BigDecimal historicalConsumption) {
+        this.historicalConsumption = historicalConsumption;
+    }
 
     public Integer getId() {
         return id;
@@ -92,22 +108,6 @@
 
     public void setCouponsSum(Integer couponsSum) {
         this.couponsSum = couponsSum;
-    }
-
-    public Integer getConsumptionTimes() {
-        return ConsumptionTimes;
-    }
-
-    public void setConsumptionTimes(Integer consumptionTimes) {
-        ConsumptionTimes = consumptionTimes;
-    }
-
-    public BigDecimal getHistoricalConsumption() {
-        return HistoricalConsumption;
-    }
-
-    public void setHistoricalConsumption(BigDecimal historicalConsumption) {
-        HistoricalConsumption = historicalConsumption;
     }
 
     public Date getLastConsumptionTime() {
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java
index 1cedeb9..0747152 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TAgent.java
@@ -79,6 +79,12 @@
     @ApiModelProperty(value = "银行账户")
     private String bankAccount;
 
+    @TableField(value = "serviceCalls")
+    @ApiModelProperty(value = "客服电话")
+    private String serviceCalls;
+
+
+
 
     @TableField(exist = false)
     @ApiModelProperty(value = "区域")
@@ -88,6 +94,14 @@
     @ApiModelProperty(value = "区域id")
     private String areaId;
 
+    public String getServiceCalls() {
+        return serviceCalls;
+    }
+
+    public void setServiceCalls(String serviceCalls) {
+        this.serviceCalls = serviceCalls;
+    }
+
     public String getAreaId() {
         return areaId;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java
index f085790..e5fd009 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TBroadcast.java
@@ -42,6 +42,32 @@
      */
     private Date createTime;
 
+    /**
+     * 是否显示 1是 0否
+     */
+    private Boolean show;
+
+    /**
+     * 上下架 1上架 2下架
+     */
+    private Integer upDown;
+
+    public Boolean getShow() {
+        return show;
+    }
+
+    public void setShow(Boolean show) {
+        this.show = show;
+    }
+
+
+    public Integer getUpDown() {
+        return upDown;
+    }
+
+    public void setUpDown(Integer upDown) {
+        this.upDown = upDown;
+    }
 
     public Integer getId() {
         return id;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCashWithdrawal.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCashWithdrawal.java
new file mode 100644
index 0000000..5e600d6
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCashWithdrawal.java
@@ -0,0 +1,154 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.math.BigDecimal;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 提现记录
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-23
+ */
+@TableName("t_cash_withdrawal")
+public class TCashWithdrawal extends Model<TCashWithdrawal> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 类型(1=用户,2=司机)
+     */
+    private Integer type;
+    /**
+     * 用户或司机id
+     */
+    private Integer userDriverId;
+    /**
+     * 提现编号
+     */
+    private String code;
+    /**
+     * 交易类型 11佣金提现 12余额提现
+     */
+    private Integer businessType;
+    /**
+     * 提现金额
+     */
+    private BigDecimal amount;
+    /**
+     * 提现状态 1未成功 2成功
+     */
+    private Integer state;
+    /**
+     * 第三方流水号
+     */
+    private String orderNumber;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getUserDriverId() {
+        return userDriverId;
+    }
+
+    public void setUserDriverId(Integer userDriverId) {
+        this.userDriverId = userDriverId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Integer getBusinessType() {
+        return businessType;
+    }
+
+    public void setBusinessType(Integer businessType) {
+        this.businessType = businessType;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Integer getState() {
+        return state;
+    }
+
+    public void setState(Integer state) {
+        this.state = state;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "TCashWithdrawal{" +
+        "id=" + id +
+        ", type=" + type +
+        ", userDriverId=" + userDriverId +
+        ", code=" + code +
+        ", businessType=" + businessType +
+        ", amount=" + amount +
+        ", state=" + state +
+        ", orderNumber=" + orderNumber +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java
index b294cd7..7208b1a 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCommercial.java
@@ -83,6 +83,19 @@
     private Integer updateUserId;
 
 
+    /**
+     * 上下线 1上线 2下线
+     */
+    private Integer onOffLine;
+
+    public Integer getOnOffLine() {
+        return onOffLine;
+    }
+
+    public void setOnOffLine(Integer onOffLine) {
+        this.onOffLine = onOffLine;
+    }
+
     public Integer getId() {
         return id;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/THtml.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/THtml.java
new file mode 100644
index 0000000..9d39a21
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/THtml.java
@@ -0,0 +1,88 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * H5富文本
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-24
+ */
+@TableName("t_html")
+public class THtml extends Model<THtml> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 类型(1=代驾服务协议与隐私政策保护,2=法律条款,3=个人信息处理规则,4=积分说明,5=佣金规则说明,6=行程录音说明,7=预估价格说明,8=加盟基本要求,9=加盟流程,10=起步价说明,11=注销协议,12=关于我们,13=司机消单说明)
+     */
+    private Integer type;
+    /**
+     * H5内容
+     */
+    private String html;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getHtml() {
+        return html;
+    }
+
+    public void setHtml(String html) {
+        this.html = html;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "THtml{" +
+        "id=" + id +
+        ", type=" + type +
+        ", html=" + html +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TImg.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TImg.java
new file mode 100644
index 0000000..9bc6fab
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TImg.java
@@ -0,0 +1,88 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 系统图片
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+@TableName("t_img")
+public class TImg extends Model<TImg> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 数据类型(1=启动页)
+     */
+    private Integer type;
+    /**
+     * 图片地址
+     */
+    private String img;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "TImg{" +
+        "id=" + id +
+        ", type=" + type +
+        ", img=" + img +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TMainContent.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TMainContent.java
new file mode 100644
index 0000000..34643e8
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TMainContent.java
@@ -0,0 +1,101 @@
+package com.stylefeng.guns.modular.system.model;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 事由管理
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+@TableName("t_main_content")
+public class TMainContent extends Model<TMainContent> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 数据类型(1=转单,2=司机消单,3=用户取消订单)
+     */
+    private Integer type;
+    /**
+     * 内容
+     */
+    private String content;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    private Integer status;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "TMainContent{" +
+        "id=" + id +
+        ", type=" + type +
+        ", content=" + content +
+        ", status=" + status +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
index 8bf3d43..07a9452 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
@@ -184,6 +184,27 @@
 
     @ApiModelProperty(value = "折扣优惠金额")
     private BigDecimal discountAmount;
+    @ApiModelProperty(value = "实际里程(米)")
+    private Integer actualMileage;
+
+    @ApiModelProperty(value = "是否已开票 1是 0否")
+    private Integer isInvoice;
+
+    public Integer getIsInvoice() {
+        return isInvoice;
+    }
+
+    public void setIsInvoice(Integer isInvoice) {
+        this.isInvoice = isInvoice;
+    }
+
+    public Integer getActualMileage() {
+        return actualMileage;
+    }
+
+    public void setActualMileage(Integer actualMileage) {
+        this.actualMileage = actualMileage;
+    }
 
     public String getRouteRecord() {
         return routeRecord;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAgentService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAgentService.java
index 1499b4a..b8392ed 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAgentService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAgentService.java
@@ -35,4 +35,11 @@
     void detail(Integer agentId, Model model);
 
     List<TAgentResp> getAgentResp(List<TAgent> tAgents);
+
+    /**
+     * 统计代理商
+     * @param agentId
+     * @param model
+     */
+    void getDataStatistics(Integer agentId, Model model);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAppUserService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAppUserService.java
index 4c79c9b..f7b4641 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAppUserService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITAppUserService.java
@@ -1,9 +1,12 @@
 package com.stylefeng.guns.modular.system.service;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.controller.resp.TAppUserResp;
 import com.stylefeng.guns.modular.system.model.TAppUser;
 import com.baomidou.mybatisplus.service.IService;
 import org.springframework.ui.Model;
+
+import java.util.List;
 
 /**
  * <p>
@@ -32,4 +35,13 @@
      * @return
      */
     EntityWrapper<TAppUser> getUserListWrapper(String createTime, String nickname, String phone, Integer id, Integer status);
+
+    /**
+     * 用户异常列表封装返回数据
+     * @param tAppUsers
+     * @return
+     */
+    List<TAppUserResp> getTAppUserResp(List<TAppUser> tAppUsers);
+
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java
index 67359ac..162452a 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBillService.java
@@ -4,6 +4,8 @@
 import com.stylefeng.guns.modular.system.model.TBill;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 发票管理 服务类
@@ -25,4 +27,15 @@
      */
     EntityWrapper<TBill> getPageListWrapper(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType);
 
+    /**
+     * 获取列表
+     * @param createTime
+     * @param addresseePhone
+     * @param state
+     * @param billType
+     * @param billHeaderType
+     * @return
+     */
+    List<TBill> getPageList(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType);
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java
index 15b32fb..3634a98 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITBroadcastService.java
@@ -18,6 +18,6 @@
      *
      * @return
      */
-    Boolean isExit(String id, Integer sort);
+    Boolean isExit(Integer id, Integer sort);
 
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCashWithdrawalService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCashWithdrawalService.java
new file mode 100644
index 0000000..0c47c87
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCashWithdrawalService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.TCashWithdrawal;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 提现记录 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-23
+ */
+public interface ITCashWithdrawalService extends IService<TCashWithdrawal> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java
index a1d208d..c1354e4 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCommercialService.java
@@ -1,7 +1,7 @@
 package com.stylefeng.guns.modular.system.service;
 
-import com.stylefeng.guns.modular.system.model.TCommercial;
 import com.baomidou.mybatisplus.service.IService;
+import com.stylefeng.guns.modular.system.model.TCommercial;
 
 /**
  * <p>
@@ -13,4 +13,11 @@
  */
 public interface ITCommercialService extends IService<TCommercial> {
 
+    /**
+     * 判断存在多少个弹窗广告
+     *
+     * @return
+     */
+    Boolean isExit(Integer id, Integer onOffLine);
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
index 7303cfc..c073086 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
@@ -78,4 +78,11 @@
      * @param model
      */
     void driverCommissionDetail(Integer tDriverId, Model model);
+
+    /**
+     * 统计司机数
+     * @param agentId
+     * @param model
+     */
+    void getDataStatistics(Integer agentId, Model model);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITHtmlService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITHtmlService.java
new file mode 100644
index 0000000..ea7f946
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITHtmlService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * H5富文本 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-24
+ */
+public interface ITHtmlService extends IService<THtml> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITImgService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITImgService.java
new file mode 100644
index 0000000..ddf42ba
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITImgService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.TImg;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 系统图片 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+public interface ITImgService extends IService<TImg> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITMainContentService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITMainContentService.java
new file mode 100644
index 0000000..114d7b8
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITMainContentService.java
@@ -0,0 +1,16 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.stylefeng.guns.modular.system.model.TMainContent;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 事由管理 服务类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+public interface ITMainContentService extends IService<TMainContent> {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
index a8306be..cff3c39 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp;
 import com.stylefeng.guns.modular.system.model.TOrder;
 import com.baomidou.mybatisplus.service.IService;
 import org.springframework.ui.Model;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -44,4 +46,41 @@
      * @param model
      */
     void orderExceptionDetail(Integer orderId, Model model);
+
+    /**
+     * 订单统计,每年按月份
+     * @param agentId
+     * @param model
+     */
+    void getDataStatisticsByYear(Integer agentId,String yearDate, Model model);
+
+    /**
+     * 单量
+     * @param agentId
+     * @param monthDate
+     * @param model
+     */
+    void getDataStatisticsOrderCount(Integer agentId, String monthDate, Model model);
+
+    /**
+     * 查询统计待接单,服务中,已完成,已取消
+     * @param agentId
+     * @param map
+     */
+    void getDataStatisticsCount(Integer agentId, Map<String, Integer> map);
+
+    /**
+     * 查询服务中的订单列表
+     * @param agentId
+     * @return
+     */
+    List<TOrderServerResp> getDataStatisticsServerList(Integer agentId);
+
+    /**
+     * 查询今天所有订单
+     * @param agentId
+     * @return
+     */
+    List<TOrder> getDataStatisticsAllList(Integer agentId);
+
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java
index 9423118..5c97d8f 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITRevenueService.java
@@ -52,4 +52,13 @@
      * @param model
      */
     void orderDetail(String code, Model model);
+
+    /**
+     * 查询收入或佣金
+     * @param agentId
+     * @param monthDate
+     * @param type
+     * @param model
+     */
+    void getDataStatisticsIncomeOrCommission(Integer agentId, String monthDate, Integer type, Model model);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
index 341d03a..9c49cd6 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java
@@ -21,6 +21,7 @@
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -89,6 +90,7 @@
         model.addAttribute("principal",tAgent.getPrincipal());
         model.addAttribute("principalPhone",tAgent.getPrincipalPhone());
         model.addAttribute("email",tAgent.getEmail());
+        model.addAttribute("serviceCalls",tAgent.getServiceCalls());
         model.addAttribute("area",tAgent.getProvinceName()+tAgent.getCityName());
         // 订单信息
         // 订单总量
@@ -189,4 +191,19 @@
         }
         return tAgentRespList;
     }
+
+    @Override
+    public void getDataStatistics(Integer agentId, Model model) {
+        // 代理商总数
+        Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
+                .eq("id", agentId));
+        // 代理商最近一个月新增数量
+        LocalDate now = LocalDate.now();
+        LocalDate localDate = now.plusMonths(1);
+        Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>()
+                .eq("id", agentId)
+                .between("createTime", localDate, now));
+        model.addAttribute("agentTotal",agentTotal);
+        model.addAttribute("agentMonthTotal",agentMonthTotal);
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
index e4091f2..632cd90 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.modular.system.controller.resp.TAppUserResp;
 import com.stylefeng.guns.modular.system.dao.TCouponMapper;
 import com.stylefeng.guns.modular.system.dao.TOrderMapper;
 import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
@@ -15,6 +16,7 @@
 import com.stylefeng.guns.modular.system.model.TUserToCoupon;
 import com.stylefeng.guns.modular.system.service.ITAppUserService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
@@ -22,10 +24,7 @@
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -155,4 +154,40 @@
         wrapper.ne("status", StatusEnum.DELETE.getCode());
         return wrapper;
     }
+
+    @Override
+    public List<TAppUserResp> getTAppUserResp(List<TAppUser> tAppUsers) {
+        List<TAppUserResp> tAppUserRespList = new ArrayList<>(tAppUsers.size());
+        for (TAppUser tAppUser : tAppUsers) {
+            TAppUserResp tAppUserResp = new TAppUserResp();
+            BeanUtils.copyProperties(tAppUser,tAppUserResp);
+
+            // 查询当前用户优惠券数量
+            List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("userId", tAppUser.getId()));
+
+            int couponTotal = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
+            int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
+
+//            List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUser.getId()));
+//            List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
+            tAppUserResp.setCouponSum(couponTotal);
+            tAppUserResp.setNotUsedCount(validCount);
+            List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUser.getId()).orderBy(true,"createTime",false));
+            if(!CollectionUtils.isEmpty(orders)){
+                // 最后一次消费时间
+                tAppUserResp.setLastConsumptionTime(orders.get(0).getCreateTime());
+                List<TOrder> collect1 = orders.stream().filter(order->Objects.nonNull(order.getState()))
+                        .filter(order -> OrderStateEnum.WAIT_EVALUATED.getCode() == order.getState() ||
+                                OrderStateEnum.FINISH.getCode() == order.getState()).collect(Collectors.toList());
+                if(!CollectionUtils.isEmpty(collect1)) {
+                    tAppUserResp.setConsumeSum(collect1.size());
+                    // 总消费金额
+                    collect1.stream().map(TOrder::getPayMoney).reduce(BigDecimal::add)
+                            .ifPresent(tAppUserResp::setConsumePrice);
+                }
+            }
+            tAppUserRespList.add(tAppUserResp);
+        }
+        return tAppUserRespList;
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java
index 239d2a4..c1ebb08 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBillServiceImpl.java
@@ -1,16 +1,21 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.modular.system.controller.resp.TRechargeRecordUserResp;
 import com.stylefeng.guns.modular.system.model.TBill;
 import com.stylefeng.guns.modular.system.dao.TBillMapper;
 import com.stylefeng.guns.modular.system.service.ITBillService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -22,6 +27,9 @@
  */
 @Service
 public class TBillServiceImpl extends ServiceImpl<TBillMapper, TBill> implements ITBillService {
+
+    @Autowired
+    private TBillMapper tBillMapper;
 
     @Override
     public EntityWrapper<TBill> getPageListWrapper(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType) {
@@ -47,4 +55,19 @@
         }
         return wrapper;
     }
+
+    @Override
+    public List<TBill> getPageList(String createTime, String addresseePhone, Integer state, Integer billType, Integer billHeaderType) {
+        String startTime = null;
+        String endTime = null;
+        // 开始,结束时间
+        if(StringUtils.hasLength(createTime)){
+            String[] split = createTime.split(" - ");
+            startTime = split[0];
+            endTime = split[1];
+        }
+        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
+        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
+        return tBillMapper.getPageList(startTime, endTime, addresseePhone,state,billType,billHeaderType,roleType,objectId);
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java
index 18b0e00..8acc288 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBroadcastServiceImpl.java
@@ -1,6 +1,7 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.enums.StatusEnum;
 import com.stylefeng.guns.modular.system.model.TBroadcast;
 import com.stylefeng.guns.modular.system.dao.TBroadcastMapper;
 import com.stylefeng.guns.modular.system.service.ITBroadcastService;
@@ -26,10 +27,11 @@
     private TBroadcastMapper tBroadcastMapper;
 
     @Override
-    public Boolean isExit(String id, Integer sort) {
+    public Boolean isExit(Integer id, Integer sort) {
         Integer count = tBroadcastMapper.selectCount(new EntityWrapper<TBroadcast>()
-                .eq("sort", sort));
-        if (StringUtils.hasLength(id)) {
+                .eq("sort", sort)
+                .ne("status", StatusEnum.DELETE.getCode()));
+        if (Objects.nonNull(id)) {
             // 修改
             TBroadcast tBroadcast = tBroadcastMapper.selectById(id);
             return Objects.nonNull(tBroadcast) && !tBroadcast.getSort().equals(sort) && count > 0;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCashWithdrawalServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCashWithdrawalServiceImpl.java
new file mode 100644
index 0000000..113323b
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCashWithdrawalServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.TCashWithdrawal;
+import com.stylefeng.guns.modular.system.dao.TCashWithdrawalMapper;
+import com.stylefeng.guns.modular.system.service.ITCashWithdrawalService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 提现记录 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-23
+ */
+@Service
+public class TCashWithdrawalServiceImpl extends ServiceImpl<TCashWithdrawalMapper, TCashWithdrawal> implements ITCashWithdrawalService {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java
index 5d4afae..f4257f0 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCommercialServiceImpl.java
@@ -1,10 +1,20 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.dao.TBroadcastMapper;
+import com.stylefeng.guns.modular.system.enums.StatusEnum;
+import com.stylefeng.guns.modular.system.model.TBroadcast;
 import com.stylefeng.guns.modular.system.model.TCommercial;
 import com.stylefeng.guns.modular.system.dao.TCommercialMapper;
 import com.stylefeng.guns.modular.system.service.ITCommercialService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +27,27 @@
 @Service
 public class TCommercialServiceImpl extends ServiceImpl<TCommercialMapper, TCommercial> implements ITCommercialService {
 
+    @Autowired
+    private TCommercialMapper tCommercialMapper;
+
+    @Override
+    public Boolean isExit(Integer id,Integer onOffLine) {
+        List<TCommercial> list = tCommercialMapper.selectList(new EntityWrapper<TCommercial>()
+                .eq("type", 1)
+                .eq("onOffLine", onOffLine)
+                .ne("status", StatusEnum.DELETE.getCode()));
+        if (Objects.nonNull(id)) {
+            if(!CollectionUtils.isEmpty(list)){
+                List<Integer> ids = list.stream().map(TCommercial::getId).collect(Collectors.toList());
+                // 修改
+                TCommercial tCommercial = tCommercialMapper.selectById(id);
+                return Objects.nonNull(tCommercial) && !ids.contains(id) && list.size() > 3;
+            }else {
+                return false;
+            }
+        } else {
+            // 新增
+            return list.size() > 3;
+        }
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java
index fca4d93..a5a56be 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TComplaintServiceImpl.java
@@ -1,5 +1,6 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
+import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.modular.system.controller.resp.TComplaintResp;
 import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
 import com.stylefeng.guns.modular.system.dao.TDriverMapper;
@@ -12,6 +13,7 @@
 import org.springframework.util.StringUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -37,6 +39,8 @@
             startTime = split[0];
             endTime = split[1];
         }
-        return tComplaintMapper.getPageList(startTime,endTime,userName,userPhone,driverPhone,state);
+        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
+        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
+        return tComplaintMapper.getPageList(startTime,endTime,userName,userPhone,driverPhone,state,roleType,objectId);
     }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
index bc2b295..f4da8ea 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -11,11 +11,14 @@
 import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
 import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
+import com.stylefeng.guns.modular.system.enums.PayStatusEnum;
 import com.stylefeng.guns.modular.system.enums.StatusEnum;
+import com.stylefeng.guns.modular.system.enums.UserTypeEnum;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.ITDriverService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.stylefeng.guns.modular.system.service.ITRegionService;
+import org.apache.poi.hdf.extractor.TC;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -29,10 +32,7 @@
 import java.time.LocalDate;
 import java.time.Period;
 import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -66,6 +66,11 @@
     private ITRegionService itRegionService;
     @Autowired
     private HttpUtils httpUtils;
+
+    @Autowired
+    private TRechargeRecordMapper tRechargeRecordMapper;
+    @Autowired
+    private TCashWithdrawalMapper tCashWithdrawalMapper;
 
     @Override
     public EntityWrapper<TDriver> getPageList(String createTime, String phone, Integer status) {
@@ -234,19 +239,42 @@
 
         if(!CollectionUtils.isEmpty(tOrders)){
             //累计订单量
-            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+            List<TOrder> cumulativeOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId())
                     && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())).collect(Collectors.toList());
             model.addAttribute("cumulativeOrderCount",cumulativeOrderCount.size());
             //当月订单量
-            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> order.getDriverId().equals(tDriver.getId())
+            List<TOrder> monthOrderCount = tOrders.stream().filter(order -> tDriver.getId().equals(order.getDriverId())
                     && order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode()) && order.getState().equals(OrderStateEnum.FINISH.getCode())
                     && new SimpleDateFormat("yyyyMM").format(order.getCreateTime()).equals(monthDate)).collect(Collectors.toList());
             model.addAttribute("monthOrderCount",monthOrderCount.size());
             // 拒单次数
             List<TOrderRefusal> driverRefusalList = tOrderRefusalMapper.selectList(new EntityWrapper<TOrderRefusal>().eq("driver_id", tDriver.getId()));
             model.addAttribute("refusalCount",driverRefusalList.size());
-            // todo 累计收入
-            model.addAttribute("cumulativeIncome",0);
+            // 累计收入 司机提现记录加上余额减去充值金额,为累计收入
+            List<TCashWithdrawal> tCashWithdrawals = tCashWithdrawalMapper.selectList(new EntityWrapper<TCashWithdrawal>()
+                    .eq("type", UserTypeEnum.DRIVER.getCode())
+                    .eq("userDriverId", tDriver.getId())
+                    .eq("state", 2));
+            BigDecimal balance = tDriver.getBalance();
+            if(!CollectionUtils.isEmpty(tCashWithdrawals)){
+                Optional<BigDecimal> reduce = tCashWithdrawals.stream().map(TCashWithdrawal::getAmount).reduce(BigDecimal::add);
+                if(reduce.isPresent()){
+                    balance = balance.add(reduce.get());
+                }
+            }
+            List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>()
+                    .eq("type", UserTypeEnum.DRIVER.getCode())
+                    .eq("userId", tDriver.getId())
+                    .eq("payType", 1)
+                    .eq("payStatus", PayStatusEnum.FINISH.getCode()));
+            if(!CollectionUtils.isEmpty(tRechargeRecords)){
+                Optional<BigDecimal> reduce = tRechargeRecords.stream().map(TRechargeRecord::getAmount).reduce(BigDecimal::add);
+                if(reduce.isPresent()){
+                    balance = balance.subtract(reduce.get());
+                }
+            }
+            // 减去充值金额
+            model.addAttribute("cumulativeIncome",balance);
         }else {
             model.addAttribute("cumulativeOrderCount",0);
             model.addAttribute("monthOrderCount",0);
@@ -458,4 +486,19 @@
 //        commissionResp.setAccumulatedCommission(BigDecimal.ZERO);
 
     }
+
+    @Override
+    public void getDataStatistics(Integer agentId, Model model) {
+        // 司机总数
+        Integer driverTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>()
+                .eq("agentId", agentId));
+        // 司机最近一月数量
+        LocalDate now = LocalDate.now();
+        LocalDate localDate = now.plusMonths(1);
+        Integer driverMonthTotal = tDriverMapper.selectCount(new EntityWrapper<TDriver>()
+                .eq("agentId", agentId)
+                .between("createTime", localDate, now));
+        model.addAttribute("driverTotal",driverTotal);
+        model.addAttribute("driverMonthTotal",driverMonthTotal);
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/THtmlServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/THtmlServiceImpl.java
new file mode 100644
index 0000000..ccfd7d9
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/THtmlServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.THtml;
+import com.stylefeng.guns.modular.system.dao.THtmlMapper;
+import com.stylefeng.guns.modular.system.service.ITHtmlService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * H5富文本 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-24
+ */
+@Service
+public class THtmlServiceImpl extends ServiceImpl<THtmlMapper, THtml> implements ITHtmlService {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TImgServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TImgServiceImpl.java
new file mode 100644
index 0000000..d485582
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TImgServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.TImg;
+import com.stylefeng.guns.modular.system.dao.TImgMapper;
+import com.stylefeng.guns.modular.system.service.ITImgService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统图片 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+@Service
+public class TImgServiceImpl extends ServiceImpl<TImgMapper, TImg> implements ITImgService {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TMainContentServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TMainContentServiceImpl.java
new file mode 100644
index 0000000..f7884cb
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TMainContentServiceImpl.java
@@ -0,0 +1,20 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.stylefeng.guns.modular.system.model.TMainContent;
+import com.stylefeng.guns.modular.system.dao.TMainContentMapper;
+import com.stylefeng.guns.modular.system.service.ITMainContentService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 事由管理 服务实现类
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2023-03-28
+ */
+@Service
+public class TMainContentServiceImpl extends ServiceImpl<TMainContentMapper, TMainContent> implements ITMainContentService {
+
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
index 01bdb4c..3b2ee6f 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -3,10 +3,14 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.DateUtil;
+import com.stylefeng.guns.modular.system.controller.resp.DataStatisticsOrderYearResp;
+import com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp;
 import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp;
 import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
 import com.stylefeng.guns.modular.system.dao.TBranchOfficeMapper;
 import com.stylefeng.guns.modular.system.dao.TDriverMapper;
+import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
 import com.stylefeng.guns.modular.system.model.TAppUser;
 import com.stylefeng.guns.modular.system.model.TBranchOffice;
 import com.stylefeng.guns.modular.system.model.TDriver;
@@ -21,8 +25,10 @@
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -137,4 +143,41 @@
         this.orderDetail(orderId,model);
         model.addAttribute("orderId",orderId);
     }
+
+    @Override
+    public void getDataStatisticsByYear(Integer agentId,String yearDate, Model model) {
+        List<DataStatisticsOrderYearResp> data = tOrderMapper.getDataStatisticsByYear(agentId,yearDate);
+        System.err.println(data);
+        model.addAttribute("yearResp",data);
+    }
+
+    @Override
+    public void getDataStatisticsOrderCount(Integer agentId, String monthDate, Model model) {
+        List<PerformanceTableResp> list = tOrderMapper.getDataStatisticsOrderCount(agentId,monthDate);
+        model.addAttribute("performanceResp",list);
+    }
+
+    @Override
+    public void getDataStatisticsCount(Integer agentId, Map<String, Integer> map) {
+        Integer pendingOrderCount = tOrderMapper.getDataStatisticsCount(agentId, OrderStateEnum.PENDING_ORDER.getCode(), LocalDate.now());
+        Integer finishCount = tOrderMapper.getDataStatisticsCount(agentId, OrderStateEnum.FINISH.getCode(),LocalDate.now());
+        Integer cancelCount = tOrderMapper.getDataStatisticsCount(agentId, OrderStateEnum.CANCELED.getCode(),LocalDate.now());
+
+        Integer serverCount = tOrderMapper.getDataStatisticsServerCount(agentId, LocalDate.now());
+
+        map.put("pendingOrderCount",pendingOrderCount);
+        map.put("finishCount",finishCount);
+        map.put("cancelCount",cancelCount);
+        map.put("serverCount",serverCount);
+    }
+
+    @Override
+    public List<TOrderServerResp> getDataStatisticsServerList(Integer agentId) {
+        return tOrderMapper.getDataStatisticsServerList(agentId,LocalDate.now());
+    }
+
+    @Override
+    public List<TOrder> getDataStatisticsAllList(Integer agentId) {
+        return tOrderMapper.getDataStatisticsAllList(agentId,LocalDate.now());
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java
index 09aff6d..c839d3c 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRechargeRecordServiceImpl.java
@@ -13,6 +13,7 @@
 
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -38,7 +39,16 @@
             startTime = split[0];
             endTime = split[1];
         }
-        return tRechargeRecordMapper.userRecharge(startTime,endTime,userName,userPhone,code);
+        Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
+        Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
+        List<TRechargeRecordUserResp> userRecharge = tRechargeRecordMapper.userRecharge(startTime, endTime, userName, userPhone, code);
+        if(3 == roleType){
+            userRecharge = userRecharge.stream().filter(recharge -> recharge.getAgentId().equals(objectId)).collect(Collectors.toList());
+        }
+//        if(2 == roleType){
+//            userRecharge = userRecharge.stream().filter(recharge -> recharge.getBranchOfficeId().equals(objectId)).collect(Collectors.toList());
+//        }
+        return userRecharge;
     }
 
     @Override
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java
index fbfa5e0..56f66a0 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TRevenueServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.shiro.ShiroKit;
+import com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp;
 import com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp;
 import com.stylefeng.guns.modular.system.dao.*;
 import com.stylefeng.guns.modular.system.enums.CashWithdrawalTypeEnum;
@@ -22,6 +23,7 @@
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -128,4 +130,16 @@
             model.addAttribute("evaluateContent","");
         }
     }
+
+    @Override
+    public void getDataStatisticsIncomeOrCommission(Integer agentId, String monthDate, Integer type, Model model) {
+        List<PerformanceTableResp> list = new ArrayList<>();
+        if(2 == type){
+            list = tRevenueMapper.getDataStatisticsIncomeOrCommission(agentId,1,monthDate);
+        }
+        if (3 == type){
+            list = tRevenueMapper.getDataStatisticsIncomeOrCommission(agentId,2,monthDate);
+        }
+        model.addAttribute("performanceResp",list);
+    }
 }
diff --git a/management/guns-admin/src/main/resources/application.yml b/management/guns-admin/src/main/resources/application.yml
index abbfe9c..e85eaca 100644
--- a/management/guns-admin/src/main/resources/application.yml
+++ b/management/guns-admin/src/main/resources/application.yml
@@ -78,7 +78,7 @@
 spring:
   profiles: local
   datasource:
-    url: jdbc:mysql://192.168.0.80:3306/super_save_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://192.168.110.80:3306/super_save_driving?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: 123456
     db-name: super_save_driving #用来搜集数据库的所有表
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent.html
index ba18273..c2690a2 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent.html
@@ -31,9 +31,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TAgent.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-3">
-                                <button type="button" class="btn btn-primary " onclick="TAgent.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tAgent/export")){
+                                <#button name="导出" icon="" clickFun="TAgent.export()"/>
+                                @}
                                 @if(shiro.hasPermission("/tAgent/add")){
                                 <#button name="添加" icon="fa-plus" clickFun="TAgent.openAddTAgent()"/>
                                 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentDetail.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentDetail.html
index 54c7024..7728be1 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentDetail.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgentDetail.html
@@ -38,6 +38,13 @@
                             </div>
                         </div>
 
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >客服电话:</label>
+                                <label>${serviceCalls}</label>
+                            </div>
+                        </div>
+
                         <hr/>
                         <div class="initialLevel col-sm-12 control-label form-group"  >
                             <div style="background-color: gray;height: 35px;line-height: 35px">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
index 4261860..eae4274 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
@@ -49,6 +49,12 @@
                             <input id="bankAccount" name="bankAccount" type="number" maxlength="20" placeholder="请输入" style="height: 30px">
                         </div>
                     </div>
+                    <div class="initialLevel col-sm-12 control-label form-group">
+                        <div class="initialLevel col-sm-6 control-label form-group"  >
+                            <label class="control-label" >客服电话:</label>
+                            <input id="serviceCalls" name="serviceCalls" type="number" maxlength="20" placeholder="请输入" style="height: 30px">
+                        </div>
+                    </div>
 
                 </div>
 
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html
index 05ae027..8b60e4a 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html
@@ -33,13 +33,15 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TAppUser.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-3">
-                                <button type="button" class="btn btn-primary " onclick="TAppUser.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tAppUser/export-userInfo")){
+                                <#button name="导出" icon="" clickFun="TAppUser.export()"/>
+                                @}
+                                @if(shiro.hasPermission("/tAppUser/add")){
                                 <#button name="异常" icon="" clickFun="TAppUserException.tAppUserException()"/>
-                                <button type="button" class="btn btn-primary " onclick="TAppUser.searchCoupon()" id="">
-                                    <i class="fa "></i>&nbsp;赠送优惠劵
-                                </button>
+                                @}
+                                @if(shiro.hasPermission("/tAppUser/sendCoupon")){
+                                <#button name="赠送优惠劵" icon="" clickFun="TAppUser.searchCoupon()"/>
+                                @}
                             </div>
                         </div>
                         <!--<div class="hidden-xs" id="TAppUserTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html
index e18d0cc..a1e6517 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUserException.html
@@ -39,7 +39,7 @@
                                 </button>
                             </div>
                         </div>
-                        <div class="hidden-xs" id="TAppUserTableToolbar" role="group">
+                        <!--<div class="hidden-xs" id="TAppUserTableToolbar" role="group">
                             @if(shiro.hasPermission("/tAppUser/add")){
                                 <#button name="添加" icon="fa-plus" clickFun="TAppUser.openAddTAppUser()"/>
                             @}
@@ -49,7 +49,7 @@
                             @if(shiro.hasPermission("/tAppUser/delete")){
                                 <#button name="删除" icon="fa-remove" clickFun="TAppUser.delete()" space="true"/>
                             @}
-                        </div>
+                        </div>-->
                         <#table id="TAppUserExceptionTable"/>
                     </div>
                 </div>
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html
index bc0ead3..7a2ad09 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBill/tBill.html
@@ -41,9 +41,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TBill.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TBill.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tBill/export")){
+                                <#button name="导出" icon="" clickFun="TBill.export()"/>
+                                @}
                             </div>
                         </div>
                         <div class="hidden-xs" id="TBillTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
index 944fcb5..9d4f6ff 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBranchOffice/tBranchOffice.html
@@ -48,8 +48,12 @@
                                 @if(shiro.hasPermission("/tBranchOffice/update")){
                                 <#button name="编辑" icon="fa-edit" clickFun="TBranchOffice.openTBranchOfficeDetail()" space="true"/>
                                 @}
+                                @if(shiro.hasPermission("/tBranchOffice/stop")){
                                 <#button name="冻结" icon="fa-edit" clickFun="TBranchOffice.stop()" space="true"/>
+                                @}
+                                @if(shiro.hasPermission("/tBranchOffice/start")){
                                 <#button name="启动" icon="fa-edit" clickFun="TBranchOffice.start()" space="true"/>
+                                @}
                             </div>
                         </div>
                         <!--<div class="hidden-xs" id="TBranchOfficeTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html
index ed37e07..dd6f32b 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_add.html
@@ -1,29 +1,61 @@
 @layout("/common/_container.html"){
-<div class="ibox float-e-margins">
-    <div class="ibox-content">
-        <div class="form-horizontal">
-
-            <div class="row">
-                <div class="col-sm-6 b-r">
-                            <#input id="id" name="主键" underline="true"/>
-                            <#input id="content" name="消息内容" underline="true"/>
-                            <#input id="sort" name="排序"/>
-                </div>
-
-                <div class="col-sm-6">
-                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
-                            <#input id="createTime" name="添加时间" underline="true"/>
-                </div>
+<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" id="broadcastInfoForm">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
 
-            <div class="row btn-group-m-t">
-                <div class="col-sm-10">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBroadcastInfoDlg.addSubmit()"/>
-                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
+                        <div class="col-sm-12" style="cursor: pointer;text-align: right;">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label >滚动消息</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >消息内容:</label>
+                                    <input id="content" name="content" type="text" maxlength="200" placeholder="请输入" style="height: 30px" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >排序:</label>
+                                    <input id="sort" name="sort" type="number" style="height: 30px" maxlength="4"  placeholder="请输入" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >是否显示:</label>
+                                    <select  id="show" style="width: 180px;height: 30px" name="show">
+                                        <option value="">选择是否显示</option>
+                                        <option value="true">是</option>
+                                        <option value="false">否</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
+                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBroadcastInfoDlg.addSubmit()"/>
+                    </div>
                 </div>
             </div>
         </div>
-
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tBroadcast/tBroadcast_info.js"></script>
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html
index cd848d4..2fd0cb2 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tBroadcast/tBroadcast_edit.html
@@ -1,29 +1,63 @@
 @layout("/common/_container.html"){
-<div class="ibox float-e-margins">
-    <div class="ibox-content">
-        <div class="form-horizontal">
-
-            <div class="row">
-                <div class="col-sm-6 b-r">
-                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
-                            <#input id="content" name="消息内容" value="${item.content}" underline="true"/>
-                            <#input id="sort" name="排序" value="${item.sort}" />
-                </div>
-
-                <div class="col-sm-6">
-                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
-                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
-                </div>
+<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" id="broadcastInfoForm">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="col-sm-12" style="cursor: pointer;text-align: right;">
 
-            <div class="row btn-group-m-t">
-                <div class="col-sm-10">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBroadcastInfoDlg.editSubmit()"/>
-                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
+                            <input hidden id="id" value="${item.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div style="background-color: gray;height: 35px;line-height: 35px">
+                                    <label style="color: #0C0C0C">滚动消息</label>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >消息内容:</label>
+                                    <input id="content" value="${item.content}" type="text" maxlength="200" style="height: 30px" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >排序:</label>
+                                    <input id="sort" value="${item.sort}" type="number" style="height: 30px" maxlength="4"  placeholder="请输入" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >是否显示:</label>
+                                    <select id="show" style="width: 180px;height: 30px">
+                                        <option value="true"${item.show == true ? 'selected=selected' : ''}>是</option>
+                                        <option value="false"${item.show == false ? 'selected=selected' : ''}>否</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TBroadcastInfoDlg.close()"/>
+                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TBroadcastInfoDlg.editSubmit()"/>
+                    </div>
                 </div>
             </div>
         </div>
-
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tBroadcast/tBroadcast_info.js"></script>
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html
index 32072cb..9843abe 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial.html
@@ -8,14 +8,14 @@
             <div class="ibox-content">
                 <div class="row row-lg">
                     <div class="col-sm-12">
-                        <div class="row">
+                        <!--<div class="row">
                             <div class="col-sm-3">
                                 <#NameCon id="condition" name="名称" />
                             </div>
                             <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TCommercial.search()"/>
                             </div>
-                        </div>
+                        </div>-->
                         <div class="hidden-xs" id="TCommercialTableToolbar" role="group">
                             @if(shiro.hasPermission("/tCommercial/add")){
                                 <#button name="添加" icon="fa-plus" clickFun="TCommercial.openAddTCommercial()"/>
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html
index 4012ef4..3fbd7c3 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_add.html
@@ -1,40 +1,144 @@
 @layout("/common/_container.html"){
-<div class="ibox float-e-margins">
-    <div class="ibox-content">
-        <div class="form-horizontal">
-
-            <div class="row">
-                <div class="col-sm-6 b-r">
-                            <#input id="id" name="主键" underline="true"/>
-                            <#input id="type" name="类型(1=弹窗广告,2=底部广告)" underline="true"/>
-                            <#input id="name" name="名称" underline="true"/>
-                            <#input id="url" name="广告地址" underline="true"/>
-                            <#input id="device" name="设备(1=小程序,2=司机端)" underline="true"/>
-                            <#input id="isJump" name="是否跳转(0=否,1=是)" underline="true"/>
-                            <#input id="jumpType" name="跳转类型(1=内部跳转,2=外部跳转)" underline="true"/>
-                            <#input id="jumpUrl" name="跳转连接"/>
-                </div>
-
-                <div class="col-sm-6">
-                            <#input id="html" name="富文本" underline="true"/>
-                            <#input id="sort" name="排序" underline="true"/>
-                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
-                            <#input id="createTime" name="添加时间" underline="true"/>
-                            <#input id="createUserId" name="添加人员id" underline="true"/>
-                            <#input id="updateTime" name="更新时间" underline="true"/>
-                            <#input id="updateUserId" name="更新人员id" underline="true"/>
-                </div>
+<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" id="commercialInfoForm">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
 
-            <div class="row btn-group-m-t">
-                <div class="col-sm-10">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCommercialInfoDlg.addSubmit()"/>
-                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
+                        <div class="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告图名称:</label>
+                                    <input id="name" name="name" type="text" maxlength="40" placeholder="请输入广告图名称" style="height: 30px" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告图图片:</label>
+                                    <#uploadImg id="url" />
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >端&emsp;&emsp;口:&emsp;</label>
+                                    <select  id="device" style="width: 180px;height: 30px" name="device">
+                                        <option value="">选择端口</option>
+                                        <option value="2">司机端</option>
+                                        <option value="1">小程序端</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告类型:&emsp;</label>
+                                    <select  id="type" style="width: 180px;height: 30px" name="type">
+                                        <option value="">选择广告类型</option>
+                                        <option value="1">弹窗广告</option>
+                                        <option value="2" id="homePageBanner">首页底部广告</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >是否跳转:&emsp;</label>
+                                    <select  id="isJump" style="width: 180px;height: 30px" name="isJump">
+                                        <option value="">选择是否跳转</option>
+                                        <option value="1">是</option>
+                                        <option value="0">否</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" id="jumpTypeIsShow" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >跳转类型:&emsp;</label>
+                                    <select  id="jumpType" style="width: 180px;height: 30px" name="jumpType">
+                                        <option value="">选择跳转类型</option>
+                                        <option value="1">内部跳转</option>
+                                        <option value="2">外部跳转</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" id="jumpUrlIsShow" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >跳转链接:&emsp;</label>
+                                    <input id="jumpUrl" name="jumpUrl" type="number" style="height: 30px" maxlength="200"  placeholder="请输入跳转链接" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >排&emsp;&emsp;序:&emsp;</label>
+                                    <input id="sort" name="sort" type="number" style="height: 30px" maxlength="4"  placeholder="请输入排序" required="required">
+                                </div>
+                            </div>
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >详情内容:&emsp;</label>
+                                    <textarea type="text/plain" id="html" style="width:100%;height:350px;"></textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
+                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCommercialInfoDlg.addSubmit()"/>
+                    </div>
                 </div>
             </div>
         </div>
-
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tCommercial/tCommercial_info.js"></script>
+<script type="text/javascript">
+    $(function () {
+        var idCardPositive = new $WebUpload("url");
+        idCardPositive.setUploadBarId("progressBar");
+        idCardPositive.init();
+    });
+    //监听下拉菜单的变动操作
+    $("#isJump").change(function(){
+        if(this.value == 1){
+            $("#jumpTypeIsShow").show()
+            $("#jumpUrlIsShow").show()
+        }
+        if(this.value == 0){
+            $("#jumpTypeIsShow").hide()
+            $("#jumpUrlIsShow").hide()
+        }
+    })
+    //监听下拉菜单的变动操作
+    $("#device").change(function(){
+        if(this.value == 1){
+            $("#homePageBanner").show()
+        }
+        if(this.value == 2){
+            $("#homePageBanner").hide()
+        }
+    })
+</script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html
index 3382f17..bd552cb 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tCommercial/tCommercial_edit.html
@@ -1,40 +1,156 @@
 @layout("/common/_container.html"){
-<div class="ibox float-e-margins">
-    <div class="ibox-content">
-        <div class="form-horizontal">
-
-            <div class="row">
-                <div class="col-sm-6 b-r">
-                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
-                            <#input id="type" name="类型(1=弹窗广告,2=底部广告)" value="${item.type}" underline="true"/>
-                            <#input id="name" name="名称" value="${item.name}" underline="true"/>
-                            <#input id="url" name="广告地址" value="${item.url}" underline="true"/>
-                            <#input id="device" name="设备(1=小程序,2=司机端)" value="${item.device}" underline="true"/>
-                            <#input id="isJump" name="是否跳转(0=否,1=是)" value="${item.isJump}" underline="true"/>
-                            <#input id="jumpType" name="跳转类型(1=内部跳转,2=外部跳转)" value="${item.jumpType}" underline="true"/>
-                            <#input id="jumpUrl" name="跳转连接" value="${item.jumpUrl}" />
-                </div>
-
-                <div class="col-sm-6">
-                            <#input id="html" name="富文本" value="${item.html}" underline="true"/>
-                            <#input id="sort" name="排序" value="${item.sort}" underline="true"/>
-                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
-                            <#input id="createTime" name="添加时间" value="${item.createTime}" underline="true"/>
-                            <#input id="createUserId" name="添加人员id" value="${item.createUserId}" underline="true"/>
-                            <#input id="updateTime" name="更新时间" value="${item.updateTime}" underline="true"/>
-                            <#input id="updateUserId" name="更新人员id" value="${item.updateUserId}" />
-                </div>
+<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" id="commercialInfoForm">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
 
-            <div class="row btn-group-m-t">
-                <div class="col-sm-10">
-                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCommercialInfoDlg.editSubmit()"/>
-                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
+                        <input hidden id="id" value="${item.id}">
+                        <div class="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告图名称:</label>
+                                    <input id="name" value="${item.name}" type="text" maxlength="40" placeholder="请输入广告图名称" style="height: 30px" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告图图片:</label>
+                                    <#uploadImg id="url" fileImg="${item.url}"/>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >端&emsp;&emsp;口:&emsp;</label>
+                                    <select  id="device" style="width: 180px;height: 30px" name="device">
+                                        <option value="2"${item.device == 2 ? 'selected=selected' : ''}>司机端</option>
+                                        <option value="1"${item.device == 1 ? 'selected=selected' : ''}>小程序端</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >广告类型:&emsp;</label>
+                                    <select  id="type" style="width: 180px;height: 30px" name="type">
+                                        <option value="1"${item.type == 1 ? 'selected=selected' : ''}>弹窗广告</option>
+                                        <option id="homePageBanner" value="2"${item.type == 2 ? 'selected=selected' : ''}>首页底部广告</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >是否跳转:&emsp;</label>
+                                    <select  id="isJump" style="width: 180px;height: 30px" name="isJump">
+                                        <option value="1"${item.isJump == 1 ? 'selected=selected' : ''}>是</option>
+                                        <option value="0"${item.isJump == 0 ? 'selected=selected' : ''}>否</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" id="jumpTypeIsShow" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >跳转类型:&emsp;</label>
+                                    <select  id="jumpType" style="width: 180px;height: 30px" name="jumpType">
+                                        <option value="1"${item.jumpType == 1 ? 'selected=selected' : ''}>内部跳转</option>
+                                        <option value="2"${item.jumpType == 2 ? 'selected=selected' : ''}>外部跳转</option>
+                                    </select>
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group" id="jumpUrlIsShow" >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >跳转链接:&emsp;</label>
+                                    <input id="jumpUrl" value="${item.jumpUrl}" type="text" style="height: 30px" maxlength="200"  placeholder="请输入跳转链接" required="required">
+                                </div>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-3 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >排&emsp;&emsp;序:&emsp;</label>
+                                    <input id="sort" value="${item.sort}" type="number" style="height: 30px" maxlength="4"  placeholder="请输入排序" required="required">
+                                </div>
+                            </div>
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <span style="color:red">*</span>
+                                    <label class="control-label" >详情内容:&emsp;</label>
+                                    <textarea type="text/plain" id="html" style="width:100%;height:350px;">${item.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCommercialInfoDlg.close()"/>
+                        <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCommercialInfoDlg.editSubmit()"/>
+                    </div>
                 </div>
             </div>
         </div>
-
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tCommercial/tCommercial_info.js"></script>
+<script type="text/javascript">
+    $(function () {
+        var idCardPositive = new $WebUpload("url");
+        idCardPositive.setUploadBarId("progressBar");
+        idCardPositive.init();
+
+        if(1 == $("#isJump").val()){
+            $("#jumpTypeIsShow").show()
+            $("#jumpUrlIsShow").show()
+        }else {
+            $("#jumpTypeIsShow").hide()
+            $("#jumpUrlIsShow").hide()
+        }
+
+        if(1 == $("#device").val()){
+            $("#homePageBanner").show()
+        }else {
+            $("#homePageBanner").hide()
+        }
+
+    });
+    //监听下拉菜单的变动操作
+    $("#isJump").change(function(){
+        if(this.value == 1){
+            $("#jumpTypeIsShow").show()
+            $("#jumpUrlIsShow").show()
+        }
+        if(this.value == 0){
+            $("#jumpTypeIsShow").hide()
+            $("#jumpUrlIsShow").hide()
+        }
+    })
+    //监听下拉菜单的变动操作
+    $("#device").change(function(){
+        if(this.value == 1){
+            $("#homePageBanner").show()
+        }
+        if(this.value == 2){
+            $("#homePageBanner").hide()
+        }
+    })
+</script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html
index 2ed53d8..06db201 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tComplaint/tComplaint.html
@@ -33,7 +33,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TComplaint.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <#button name="立即处理" icon="" clickFun="TComplaint.immediatelyAudit()"/>
+                                @if(shiro.hasPermission("/tComplaint/immediatelyAudit")){
+                                <#button name="立即处理" icon="fa-edit" clickFun="TComplaint.immediatelyAudit()"/>
+                                @}
                                 @if(shiro.hasPermission("/tComplaint/delete")){
                                 <#button name="删除" icon="fa-remove" clickFun="TComplaint.delete()" space="true"/>
                                 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
index 3e78867..e63bedd 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver.html
@@ -27,18 +27,18 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TDriver.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TDriver.auditPage()" id="audit">
-                                    <i class="fa "></i>&nbsp;立即审核
-                                </button>
-                                <button type="button" class="btn btn-primary " onclick="TDriver.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
-                                <button type="button" class="btn btn-primary " onclick="TDriverException.tDriverException()" id="driverException">
-                                    <i class="fa "></i>&nbsp;异常
-                                </button>
-                                <button type="button" class="btn btn-primary " onclick="TDriver.rechargeBalancePage()" id="recharge">
-                                    <i class="fa "></i>&nbsp;充值
-                                </button>
+                                @if(shiro.hasPermission("/tDriver/auditPage")){
+                                <#button name="立即审核" icon="fa-edit" clickFun="TDriver.auditPage()"/>
+                                @}
+                                @if(shiro.hasPermission("/tDriver/export")){
+                                <#button name="导出" icon="" clickFun="TDriver.export()"/>
+                                @}
+                                @if(shiro.hasPermission("/tDriver/tDriver_exception")){
+                                <#button name="异常" icon="" clickFun="TDriverException.tDriverException()"/>
+                                @}
+                                @if(shiro.hasPermission("/tDriver/rechargeBalancePage")){
+                                <#button name="充值" icon="fa-edit" clickFun="TDriver.rechargeBalancePage()"/>
+                                @}
                                 @if(shiro.hasPermission("/tAgent/add")){
                                 <#button name="添加" icon="fa-plus" clickFun="TDriver.openAddTDriver()"/>
                                 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverCommission.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverCommission.html
index 5fb163e..57ed60d 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverCommission.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriverCommission.html
@@ -27,9 +27,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TDriverCommission.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-3">
-                                <button type="button" class="btn btn-primary " onclick="TDriverCommission.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tDriver/export-commission")){
+                                <#button name="导出" icon="" clickFun="TDriverCommission.export()"/>
+                                @}
                             </div>
                         </div>
                         <!--<div class="hidden-xs" id="TDriverTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html
index 47aaa96..5cc6243 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html
@@ -38,9 +38,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TEvaluate.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TEvaluate.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tEvaluate/export")){
+                                <#button name="导出" icon="" clickFun="TEvaluate.export()"/>
+                                @}
                             </div>
                         </div>
                         <div class="hidden-xs" id="TEvaluateTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/aboutUs.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/aboutUs.html
new file mode 100644
index 0000000..5f6b358
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/aboutUs.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>关于我们</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/agreementExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/agreementExplain.html
new file mode 100644
index 0000000..d6fb3ef
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/agreementExplain.html
@@ -0,0 +1,124 @@
+@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="tabs-container">
+                            <ul class="nav nav-tabs">
+                                <li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true">代驾服务协议与隐私政策保护</a></li>
+                                <li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">法律条款</a></li>
+                                <li class=""><a data-toggle="tab" href="#tab-3" aria-expanded="false">个人信息处理规则</a></li>
+                            </ul>
+                            <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;">${one.html}</textarea>
+                                        <div class="row btn-group-m-t">
+                                            <div class="col-sm-10 col-sm-offset-5">
+                                                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="update_1(${one.id});"/>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div id="tab-2" class="tab-pane">
+                                    <div class="panel-body">
+                                        <textarea type="text/plain" id="editor_2" style="width:1200px;height:400px;">${two.html}</textarea>
+                                        <div class="row btn-group-m-t">
+                                            <div class="col-sm-10 col-sm-offset-5">
+                                                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="update_2(${two.id});"/>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <div id="tab-3" class="tab-pane">
+                                    <div class="panel-body">
+                                        <textarea type="text/plain" id="editor_3" style="width:1200px;height:400px;">${three.html}</textarea>
+                                        <div class="row btn-group-m-t">
+                                            <div class="col-sm-10 col-sm-offset-5">
+                                                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="update_3(${three.id});"/>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml.js"></script>
+<style type="text/css">
+    .agentDriver{
+        height: 30px;
+        width: 200px;
+        background-color: white;
+        border-radius: 6px;
+    }
+    .clause{
+        height: 30px;
+        width: 80px;
+        background-color: white;
+        border-radius: 6px;
+    }
+    .personalRules{
+        height: 30px;
+        width: 180px;
+        background-color: white;
+        border-radius: 6px;
+    }
+</style>
+<script type="text/javascript">
+    var editor_1 = null;
+    var editor_2 = null;
+    var editor_3 = null;
+    $(function () {
+        //初始化编辑器
+        editor_1 = UE.getEditor('editor_1');
+        editor_2 = UE.getEditor('editor_2');
+        editor_3 = UE.getEditor('editor_3');
+    });
+
+    function update_1(id){
+        if (editor_1.getContentTxt() == ""){
+            Feng.error("内容不能为空!");
+            return;
+        }
+        submitData(editor_1.getContent(),id);
+    }
+    function update_2(id){
+        if (editor_2.getContentTxt() == ""){
+            Feng.error("内容不能为空!");
+            return;
+        }
+        submitData(editor_2.getContent(),id);
+    }
+    function update_3(id){
+        if (editor_3.getContentTxt() == ""){
+            Feng.error("内容不能为空!");
+            return;
+        }
+        submitData(editor_3.getContent(),id);
+    }
+
+    function submitData(content,id) {
+        //提交信息
+        var ajax = new $ax(Feng.ctxPath + "/tHtml/update", function(data){
+            Feng.success("编辑成功!");
+        },function(data){
+            Feng.error("编辑失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("html", content);
+        ajax.set("id", id);
+        ajax.start();
+    }
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/cancellationAgreement.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/cancellationAgreement.html
new file mode 100644
index 0000000..0723ecc
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/cancellationAgreement.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>注销协议</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/commissionRuleExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/commissionRuleExplain.html
new file mode 100644
index 0000000..906485b
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/commissionRuleExplain.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>佣金规则说明</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/estimatedPriceExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/estimatedPriceExplain.html
new file mode 100644
index 0000000..0ffcfed
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/estimatedPriceExplain.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>预估价格说明</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/integralExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/integralExplain.html
new file mode 100644
index 0000000..779690d
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/integralExplain.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>积分说明</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/requirementsJoinExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/requirementsJoinExplain.html
new file mode 100644
index 0000000..c77f3d9
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/requirementsJoinExplain.html
@@ -0,0 +1,72 @@
+@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="initialLevel col-sm-12 control-label form-group"  >
+                            <label style="color: #0C0C0C">加盟基本要求</label>
+                        </div>
+
+                        <input hidden id="id" value="${id}">
+                        <input hidden id="array" value="${array}">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: left" >
+                            @for(ChargeStandard in array){
+                            <div name="rulesForm">
+                                <div class="initialLevel col-sm-12 control-label form-group"  >
+                                    <span class="control-label" >要求1</span>
+                                    <input class="control-label" id="num1" name="num1" value="${ChargeStandard.num1}" type="text" placeholder="单行输入" style="height: 30px;width: 180px">
+                                    @if(ChargeStandard.key == 0){
+                                    <span class="fa fa-plus" onclick="THtml.addBox()"></span>
+                                    @}
+                                    @if(ChargeStandard.key == 1){
+                                    <span class="fa fa-remove" onclick="THtml.delBox(this)"></span>
+                                    @}
+                                </div>
+                            </div>
+                            @}
+                        </div>
+
+                        <div class="row btn-group-m-t">
+                            <div class="col-sm-10" style="text-align: center">
+                                <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtml.priceRulesSubmit()"/>
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml.js"></script>
+<style type="text/css">
+    .agentDriver{
+        height: 30px;
+        width: 200px;
+        background-color: white;
+        border-radius: 6px;
+    }
+    .clause{
+        height: 30px;
+        width: 80px;
+        background-color: white;
+        border-radius: 6px;
+    }
+    .personalRules{
+        height: 30px;
+        width: 180px;
+        background-color: white;
+        border-radius: 6px;
+    }
+</style>
+<script type="text/javascript">
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/startingFareExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/startingFareExplain.html
new file mode 100644
index 0000000..72a1668
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/startingFareExplain.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>起步价说明</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml.html
new file mode 100644
index 0000000..f6b6948
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml.html
@@ -0,0 +1,38 @@
+@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">
+                                <#NameCon id="condition" name="名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="THtml.search()"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="THtmlTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tHtml/add")){
+                                <#button name="添加" icon="fa-plus" clickFun="THtml.openAddTHtml()"/>
+                            @}
+                            @if(shiro.hasPermission("/tHtml/update")){
+                                <#button name="修改" icon="fa-edit" clickFun="THtml.openTHtmlDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tHtml/delete")){
+                                <#button name="删除" icon="fa-remove" clickFun="THtml.delete()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="THtmlTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_add.html
new file mode 100644
index 0000000..2cfa1da
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_add.html
@@ -0,0 +1,29 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" underline="true"/>
+                            <#input id="type" name="类型(1=代驾服务协议与隐私政策保护,2=法律条款,3=个人信息处理规则,4=积分说明,5=佣金规则说明,6=行程录音说明,7=预估价格说明,8=加盟基本要求,9=加盟流程,10=起步价说明,11=注销协议,12=关于我们,13=司机消单说明)"/>
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="html" name="H5内容" underline="true"/>
+                            <#input id="createTime" name="添加时间" underline="true"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="THtmlInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_edit.html
new file mode 100644
index 0000000..ed0c89b
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tHtml_edit.html
@@ -0,0 +1,29 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
+                            <#input id="type" name="类型(1=代驾服务协议与隐私政策保护,2=法律条款,3=个人信息处理规则,4=积分说明,5=佣金规则说明,6=行程录音说明,7=预估价格说明,8=加盟基本要求,9=加盟流程,10=起步价说明,11=注销协议,12=关于我们,13=司机消单说明)" value="${item.type}" />
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="html" name="H5内容" value="${item.html}" underline="true"/>
+                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="THtmlInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tripRecordingExplain.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tripRecordingExplain.html
new file mode 100644
index 0000000..15e4ab9
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tHtml/tripRecordingExplain.html
@@ -0,0 +1,41 @@
+@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="col-sm-12" style="cursor: pointer;text-align: left;">
+
+                            <input hidden id="id" value="${html.id}">
+
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>行程录音说明</label>
+                            </div>
+
+                            <div class="initialLevel col-sm-12 control-label form-group">
+                                <div class="initialLevel col-sm-6 control-label form-group"  >
+                                    <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg.html
new file mode 100644
index 0000000..a9e5fd0
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg.html
@@ -0,0 +1,116 @@
+@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" style="text-align: left" >
+
+                        <input hidden id="num2" value="${num2}">
+                        <div class="initialLevel col-sm-12 control-label form-group" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <label>状态</label>
+                                <input type="radio" class="control-label" id="start" name="content" style="width: 2%"
+                                   @if(isNotEmpty(num2)){
+                                       ${1 == num2 ? 'checked=checked' : ''}
+                                   @}
+                                /> 开启
+                                <input type="radio" class="control-label" id="end" name="content" style="width: 2%"
+                                   @if(isNotEmpty(num2)){
+                                       ${0 == num2 ? 'checked=checked' : ''}
+                                   @}
+                                /> 关闭
+                            </div>
+                        </div>
+
+<!--                        <div class="initialLevel col-sm-12 control-label form-group"  >-->
+<!--                            <div class="initialLevel col-sm-3 control-label form-group"  >-->
+<!--                                <span style="color:red">*</span>-->
+<!--                                <label class="control-label" >图片:</label>-->
+<!--                                <#uploadImg id="img" fileImg=""/>-->
+<!--                            </div>-->
+<!--                        </div>-->
+
+                        <div class="row picture">
+                            <div class="col-sm-12">
+                                <div class="form-group">
+                                    <label class="col-sm-1 control-label" style="width: 4%">图片</label>
+                                    <div class="col-sm-9">
+                                        <div id="imgPreIds">
+                                            <div id="imgs" style="float: left;">
+                                                @if(isNotEmpty(imgList)){
+                                                    @for(img in imgList){
+                                                        <div style="float: left;margin-right: 20px;">
+                                                            <img name="startImg" src="${img.img}" style="width: 100px">
+                                                            <i class="fa fa-close" onclick="delImg(this)" style="color: red;font-size: 18px;position: absolute;"></i>
+                                                        </div>
+                                                    @}
+                                                @}
+                                            </div>
+                                            <div style="float: left;" id="imgUpload">
+                                                <img width="100px" height="100px"
+                                                     src="https://guangzhiyu-1311825864.cos.ap-chengdu.myqcloud.com/shangchuanpic.png"
+                                                     onclick="TImgInfoDlg.uploadPhoto(this);">
+                                            </div>
+                                            <input type="file" id="btn_file" name="schoolimg"
+                                                   style="display: none" onchange="TImgInfoDlg.schoolprow()">
+                                            <div id="divHidden">
+                                                <!--隐藏上传回调后的图片路径-->
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+
+                    <div class="row btn-group-m-t">
+                        <div class="col-sm-12" style="text-align: center">
+                            <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TImgInfoDlg.updateSubmit()"/>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tImg/tImg.js"></script>
+<script src="${ctxPath}/static/modular/system/tImg/tImg_info.js"></script>
+<script type="text/javascript">
+    $(function () {
+        var idCardPositive = new $WebUpload("img");
+        idCardPositive.setUploadBarId("progressBar");
+        idCardPositive.init();
+    });
+    $("#start").change(function(){
+        var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/updateStartState", function (data) {
+            Feng.success("修改成功!");
+            location.reload()
+            TSystemConfig.table.refresh();
+        }, function (data) {
+            Feng.error("修改失败!" + data.responseJSON.message + "!");
+        });
+        console.log($("#num2").val())
+        ajax.set("num2",1);
+        ajax.start();
+    })
+    $("#end").change(function(){
+        var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/updateStartState", function (data) {
+            Feng.success("修改成功!");
+            location.reload()
+            TSystemConfig.table.refresh();
+        }, function (data) {
+            Feng.error("修改失败!" + data.responseJSON.message + "!");
+        });
+        console.log($("#num2").val())
+        ajax.set("num2",0);
+        ajax.start();
+    })
+
+</script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_add.html
new file mode 100644
index 0000000..85b16b8
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_add.html
@@ -0,0 +1,29 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" underline="true"/>
+                            <#input id="type" name="数据类型(1=启动页)"/>
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="img" name="图片地址" underline="true"/>
+                            <#input id="createTime" name="添加时间" underline="true"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TImgInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TImgInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tImg/tImg_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_edit.html
new file mode 100644
index 0000000..dad4ef8
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tImg/tImg_edit.html
@@ -0,0 +1,29 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
+                            <#input id="type" name="数据类型(1=启动页)" value="${item.type}" />
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="img" name="图片地址" value="${item.img}" underline="true"/>
+                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TImgInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TImgInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tImg/tImg_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrder.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrder.html
new file mode 100644
index 0000000..608cdd5
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrder.html
@@ -0,0 +1,64 @@
+@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="initialLevel col-sm-12 control-label form-group"  >
+                            <label style="color: #0C0C0C">消单原因</label>
+                        </div>
+
+                        <div class="row btn-group-m-t">
+                            <div class="col-sm-2" style="text-align: center">
+                                @if(shiro.hasPermission("/tMainContent/driverCancelOrder/add")){
+                                <#button btnCss="info" name="新增" id="ensure" icon="fa-check" clickFun="TMainContent.driverCancelOrderAdd()"/>
+                                @}
+                                @if(shiro.hasPermission("/tMainContent/driverCancelOrder/update")){
+                                <#button btnCss="info" name="编辑" id="ensure" icon="fa-check" clickFun="TMainContent.driverCancelOrderUpdate()"/>
+                                @}
+                            </div>
+                        </div>
+
+                        <input hidden id="list" value="${list}">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: left" >
+                            @for(driverCancelOrder in list){
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input type="checkbox" class="control-label" id="content" name="content" style="width: 4%" checked>${driverCancelOrder.content}</input>
+                            </div>
+                            @}
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <label style="color: #0C0C0C">取单说明</label>
+                        </div>
+
+                        <input hidden id="id" value="${html.id}">
+
+                        <div class="initialLevel col-sm-12 control-label form-group">
+                            <div class="initialLevel col-sm-6 control-label form-group"  >
+                                <textarea type="text/plain" id="html" name="html" style="width:100%;height:350px;">${html.html}</textarea>
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+
+                <div class="row btn-group-m-t">
+                    <div class="col-sm-10" style="text-align: center">
+                        <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="THtmlInfoDlg.editSubmit()"/>
+                    </div>
+                </div>
+
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tHtml/tHtml_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderAdd.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderAdd.html
new file mode 100644
index 0000000..98bf03c
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderAdd.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input  class="control-label" id="content" name="content" placeholder="请输入" style="width: 180px;height: 30px">
+                                @if(key == 0){
+                                <span class="fa fa-plus" onclick="TMainContent.addBox()"></span>
+                                @}else {
+                                <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.driverCancelOrderAddSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderUpdate.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderUpdate.html
new file mode 100644
index 0000000..daea4ec
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/driverCancelOrderUpdate.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                @for(transferOrder in list){
+                                <div class="initialLevel col-sm-12 control-label form-group"  >
+                                    <input class="control-label" id="content" name="content" value="${transferOrder.content}" style="width: 180px;height: 30px">
+                                    <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                </div>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="确定" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.driverCancelOrderUpdateSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent.html
new file mode 100644
index 0000000..770d4ef
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent.html
@@ -0,0 +1,38 @@
+@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">
+                                <#NameCon id="condition" name="名称" />
+                            </div>
+                            <div class="col-sm-3">
+                                <#button name="搜索" icon="fa-search" clickFun="TMainContent.search()"/>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TMainContentTableToolbar" role="group">
+                            @if(shiro.hasPermission("/tMainContent/add")){
+                                <#button name="添加" icon="fa-plus" clickFun="TMainContent.openAddTMainContent()"/>
+                            @}
+                            @if(shiro.hasPermission("/tMainContent/update")){
+                                <#button name="修改" icon="fa-edit" clickFun="TMainContent.openTMainContentDetail()" space="true"/>
+                            @}
+                            @if(shiro.hasPermission("/tMainContent/delete")){
+                                <#button name="删除" icon="fa-remove" clickFun="TMainContent.delete()" space="true"/>
+                            @}
+                        </div>
+                        <#table id="TMainContentTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_add.html
new file mode 100644
index 0000000..b300cfa
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_add.html
@@ -0,0 +1,30 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" underline="true"/>
+                            <#input id="type" name="数据类型(1=转单,2=司机消单,3=用户取消订单)" underline="true"/>
+                            <#input id="content" name="内容"/>
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" underline="true"/>
+                            <#input id="createTime" name="添加时间" underline="true"/>
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.addSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TMainContentInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_edit.html
new file mode 100644
index 0000000..9ed74f6
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/tMainContent_edit.html
@@ -0,0 +1,30 @@
+@layout("/common/_container.html"){
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                            <#input id="id" name="主键" value="${item.id}" underline="true"/>
+                            <#input id="type" name="数据类型(1=转单,2=司机消单,3=用户取消订单)" value="${item.type}" underline="true"/>
+                            <#input id="content" name="内容" value="${item.content}" />
+                </div>
+
+                <div class="col-sm-6">
+                            <#input id="status" name="状态(1=正常,2=冻结,3=删除)" value="${item.status}" underline="true"/>
+                            <#input id="createTime" name="添加时间" value="${item.createTime}" />
+                </div>
+            </div>
+
+            <div class="row btn-group-m-t">
+                <div class="col-sm-10">
+                    <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.editSubmit()"/>
+                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TMainContentInfoDlg.close()"/>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrder.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrder.html
new file mode 100644
index 0000000..aaba869
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrder.html
@@ -0,0 +1,44 @@
+@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="initialLevel col-sm-12 control-label form-group"  >
+                            <label style="color: #0C0C0C">转单原因</label>
+                        </div>
+
+                        <div class="row btn-group-m-t">
+                            <div class="col-sm-2" style="text-align: center">
+                                @if(shiro.hasPermission("/tMainContent/transferOrder/add")){
+                                <#button btnCss="info" name="新增" id="ensure" icon="fa-check" clickFun="TMainContent.transferOrderAdd()"/>
+                                @}
+                                @if(shiro.hasPermission("/tMainContent/transferOrder/update")){
+                                <#button btnCss="info" name="编辑" id="ensure" icon="fa-check" clickFun="TMainContent.transferOrderUpdate()"/>
+                                @}
+                            </div>
+                        </div>
+
+                        <input hidden id="list" value="${list}">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: left" >
+                            @for(transferOrder in list){
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input type="checkbox" class="control-label" id="content" name="content" style="width: 4%" checked>${transferOrder.content}</input>
+                            </div>
+                            @}
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderAdd.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderAdd.html
new file mode 100644
index 0000000..72b3eac
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderAdd.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input  class="control-label" id="content" name="content" placeholder="请输入" style="width: 180px;height: 30px">
+                                @if(key == 0){
+                                <span class="fa fa-plus" onclick="TMainContent.addBox()"></span>
+                                @}else {
+                                <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.transferOrderAddSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderUpdate.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderUpdate.html
new file mode 100644
index 0000000..1a2cded
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/transferOrderUpdate.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                @for(transferOrder in list){
+                                <div class="initialLevel col-sm-12 control-label form-group"  >
+                                    <input class="control-label" id="content" name="content" value="${transferOrder.content}" style="width: 180px;height: 30px">
+                                    <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                </div>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="确定" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.transferOrderUpdateSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrder.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrder.html
new file mode 100644
index 0000000..6d706c1
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrder.html
@@ -0,0 +1,44 @@
+@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="initialLevel col-sm-12 control-label form-group"  >
+                            <label style="color: #0C0C0C">取消订单原因</label>
+                        </div>
+
+                        <div class="row btn-group-m-t">
+                            <div class="col-sm-2" style="text-align: center">
+                                @if(shiro.hasPermission("/tMainContent/userCancelOrder/add")){
+                                <#button btnCss="info" name="新增" id="ensure" icon="fa-check" clickFun="TMainContent.userCancelOrderAdd()"/>
+                                @}
+                                @if(shiro.hasPermission("/tMainContent/userCancelOrder/update")){
+                                <#button btnCss="info" name="编辑" id="ensure" icon="fa-check" clickFun="TMainContent.userCancelOrderUpdate()"/>
+                                @}
+                            </div>
+                        </div>
+
+                        <input hidden id="list" value="${list}">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: left" >
+                            @for(userCancelOrder in list){
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input type="checkbox" class="control-label" id="content" name="content" style="width: 4%" checked>${userCancelOrder.content}</input>
+                            </div>
+                            @}
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderAdd.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderAdd.html
new file mode 100644
index 0000000..2ca430a
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderAdd.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                <input  class="control-label" id="content" name="content" placeholder="请输入" style="width: 180px;height: 30px">
+                                @if(key == 0){
+                                <span class="fa fa-plus" onclick="TMainContent.addBox()"></span>
+                                @}else {
+                                <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.userCancelOrderAddSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderUpdate.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderUpdate.html
new file mode 100644
index 0000000..837f8a5
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tMainContent/userCancelOrderUpdate.html
@@ -0,0 +1,34 @@
+@layout("/common/_container.html"){
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+
+                        <div class="initialLevel col-sm-12 control-label form-group" id="rules" style="text-align: center" >
+                            <div class="initialLevel col-sm-12 control-label form-group"  >
+                                @for(transferOrder in list){
+                                <div class="initialLevel col-sm-12 control-label form-group"  >
+                                    <input class="control-label" id="content" name="content" value="${transferOrder.content}" style="width: 180px;height: 30px">
+                                    <span class="fa fa-remove" onclick="TMainContent.delBox(this)"></span>
+                                </div>
+                                @}
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+            <div class="row btn-group-m-t">
+                <div class="col-sm-12" style="text-align: center">
+                    <#button btnCss="info" name="取消" id="cancel" icon="fa-check" clickFun="TMainContentInfoDlg.close()"/>
+                    <#button btnCss="info" name="确定" id="ensure" icon="fa-check" clickFun="TMainContentInfoDlg.userCancelOrderUpdateSubmit()"/>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent.js"></script>
+<script src="${ctxPath}/static/modular/system/tMainContent/tMainContent_info.js"></script>
+@}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html
index 9f0fd9b..81e2201 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder.html
@@ -54,15 +54,15 @@
                             <#button name="重置" icon="fa-trash" clickFun="TOrder.resetSearch()" space="true"/>
                         </div>
                         <div class="col-sm-12">
-                            <button type="button" class="btn btn-primary " onclick="TOrder.cancelOrder()" id="cancelOrder">
-                                <i class="fa "></i>&nbsp;取消订单
-                            </button>
-                            <button type="button" class="btn btn-primary " onclick="TOrder.tOrderException()" id="orderException">
-                                <i class="fa "></i>&nbsp;异常
-                            </button>
-                            <button type="button" class="btn btn-primary " onclick="TOrder.export()" id="export">
-                                <i class="fa "></i>&nbsp;导出
-                            </button>
+                            @if(shiro.hasPermission("/tOrder/cancelOrder")){
+                            <#button name="取消订单" icon="" clickFun="TOrder.cancelOrder()"/>
+                            @}
+                            @if(shiro.hasPermission("/tOrder/tOrder-exception")){
+                            <#button name="异常" icon="" clickFun="TOrder.tOrderException()"/>
+                            @}
+                            @if(shiro.hasPermission("/tOrder/export")){
+                            <#button name="导出" icon="" clickFun="TOrder.export()"/>
+                            @}
                         </div>
                         <div class="hidden-xs" id="TOrderTableToolbar" role="group">
                             @if(shiro.hasPermission("/tOrder/add")){
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html
index 20a852f..ccf2591 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordAgent.html
@@ -23,9 +23,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TRechargeRecordAgent.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TRechargeRecordAgent.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tRechargeRecord/exportAgentRecharge")){
+                                <#button name="导出" icon="" clickFun="TRechargeRecordAgent.export()"/>
+                                @}
                             </div>
                         </div>
                         <!--<div class="hidden-xs" id="TRechargeRecordTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html
index b438d4d..b6fdb69 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRechargeRecord/tRechargeRecordUser.html
@@ -26,9 +26,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TRechargeRecordUser.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TRechargeRecordUser.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tRechargeRecord/exportUserRecharge")){
+                                <#button name="导出" icon="" clickFun="TRechargeRecordUser.export()"/>
+                                @}
                             </div>
                         </div>
                         <div class="hidden-xs" id="TRechargeRecordTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html
index e13daed..8fca86a 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tRevenue/tRevenue.html
@@ -39,9 +39,9 @@
                                 <#button name="重置" icon="fa-trash" clickFun="TRevenue.resetSearch()" space="true"/>
                             </div>
                             <div class="col-sm-12">
-                                <button type="button" class="btn btn-primary " onclick="TRevenue.export()" id="export">
-                                    <i class="fa "></i>&nbsp;导出
-                                </button>
+                                @if(shiro.hasPermission("/tRevenue/export")){
+                                <#button name="导出" icon="" clickFun="TRevenue.export()"/>
+                                @}
                             </div>
                         </div>
                         <div class="hidden-xs" id="TRevenueTableToolbar" role="group">
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
index c26285f..f670f7f 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html
@@ -83,18 +83,30 @@
                                 <input class="control-label" id="num16" name="num16" value="${ExtraCost.num4}" type="number" style="height: 30px;width: 80px">
                                 <span class="control-label" >元/分钟</span>
                             </div>
+                            <input hidden id="zcOne" value="${zcOne}">
                             <div class="initialLevel col-sm-12 control-label form-group"  >
-                                <span class="control-label" >恶劣天气</span>
-                                <input class="control-label" id="num17" name="num17" value="${ExtraCost.num5}" type="number" style="height: 30px;width: 80px">
-                                <span class="control-label" >公里以内,加收</span>
-                                <input class="control-label" id="num18" name="num18" value="${ExtraCost.num6}" type="number" style="height: 30px;width: 80px">
-                                <span class="control-label" >元,超出</span>
-                                <input class="control-label" id="num19" name="num19" value="${ExtraCost.num7}" type="number" style="height: 30px;width: 80px">
-                                <span class="control-label" >公里,收取订单的</span>
-                                <input class="control-label" id="num20" name="num20" value="${ExtraCost.num8}" type="number" style="height: 30px;width: 80px">
-                                <span class="control-label" >倍计费,最高收取</span>
-                                <input class="control-label" id="num21" name="num21" value="${ExtraCost.num9}" type="number" style="height: 30px;width: 80px">
-                                <span class="control-label" >元</span>
+                                <div class="col-sm-1">
+                                    <input type="checkbox" class="js-switch1" id="isTaxiCar"
+                                       @if(isNotEmpty(zcOne)){
+                                        ${1 == zcOne ? 'checked=checked' : ''}
+                                       @}
+                                    />
+                                </div>
+                                @if(1 == zcOne){
+                                    <div class="initialLevel col-sm-10 control-label form-group"  >
+                                        <span class="control-label" >恶劣天气</span>
+                                        <input class="control-label" id="num17" name="num17" value="${ExtraCost.num5}" type="number" style="height: 30px;width: 80px">
+                                        <span class="control-label" >公里以内,加收</span>
+                                        <input class="control-label" id="num18" name="num18" value="${ExtraCost.num6}" type="number" style="height: 30px;width: 80px">
+                                        <span class="control-label" >元,超出</span>
+                                        <input class="control-label" id="num19" name="num19" value="${ExtraCost.num7}" type="number" style="height: 30px;width: 80px">
+                                        <span class="control-label" >公里,收取订单的</span>
+                                        <input class="control-label" id="num20" name="num20" value="${ExtraCost.num8}" type="number" style="height: 30px;width: 80px">
+                                        <span class="control-label" >倍计费,最高收取</span>
+                                        <input class="control-label" id="num21" name="num21" value="${ExtraCost.num9}" type="number" style="height: 30px;width: 80px">
+                                        <span class="control-label" >元</span>
+                                    </div>
+                                @}
                             </div>
                         </div>
 
@@ -113,4 +125,26 @@
 </div>
 <script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig.js"></script>
 <script src="${ctxPath}/static/modular/system/tSystemConfig/tSystemConfig_info.js"></script>
+<script type="text/javascript">
+    var elem1 = document.querySelector(".js-switch1");
+    var init1 = new Switchery(elem1);
+
+
+    $("#isTaxiCar").change(function(){
+        var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/openOrClose", function (data) {
+            Feng.success("修改成功!");
+            location.reload()
+            TSystemConfig.table.refresh();
+        }, function (data) {
+            Feng.error("修改失败!" + data.responseJSON.message + "!");
+        });
+        console.log($("#zcOne").val())
+        if(1 == $("#zcOne").val()){
+            ajax.set("num1",0);
+        }else {
+            ajax.set("num1",1);
+        }
+        ajax.start();
+    })
+</script>
 @}
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js b/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
index 044ec4d..f815e7a 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tAgent/tAgent.js
@@ -19,6 +19,7 @@
             {title: '姓名', field: 'principal', visible: true, align: 'center', valign: 'middle'},
             {title: '联系电话', field: 'principalPhone', visible: true, align: 'center', valign: 'middle'},
             {title: '代理区域', field: 'area', visible: true, align: 'center', valign: 'middle'},
+            {title: '客服电话', field: 'serviceCalls', visible: true, align: 'center', valign: 'middle'},
             {title: '订单数量', field: 'orderSum', visible: true, align: 'center', valign: 'middle'},
             {title: '有效订单', field: 'validOrder', visible: true, align: 'center', valign: 'middle'},
             {title: '已发放优惠券', field: 'issuedCoupon', visible: true, align: 'center', valign: 'middle'},
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js b/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js
index b5c7014..2083ba3 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js
@@ -22,8 +22,18 @@
             {title: '优惠券总数', field: 'couponSum', visible: true, align: 'center', valign: 'middle'},
             {title: '消费次数', field: 'consumeSum', visible: true, align: 'center', valign: 'middle'},
             {title: '历史消费', field: 'consumePrice', visible: true, align: 'center', valign: 'middle'},
-            {title: '最后一次消费时间', field: 'emergencyContact', visible: true, align: 'center', valign: 'middle'},
-            {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle'},
+            {title: '最后一次消费时间', field: 'lastConsumptionTime', visible: true, align: 'center', valign: 'middle'},
+            {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if (row.status === 1){
+                        return '<span>正常</span>'
+                    }else if (row.status === 2){
+                        return '<span>冻结</span>'
+                    }else if (row.status === 3){
+                        return '<span>已删除</span>'
+                    }
+                }
+            },
             {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
                 formatter: function (value, row) {
                     if (row.status === 1){
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js b/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js
index 5734e4d..2257664 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast.js
@@ -17,9 +17,9 @@
             {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
         {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
         {title: '消息内容', field: 'content', visible: true, align: 'center', valign: 'middle'},
-        {title: '是否显示', field: 'isShow', visible: true, align: 'center', valign: 'middle',
+        {title: '是否显示', field: 'show', visible: true, align: 'center', valign: 'middle',
             formatter: function (value, row) {
-                if (row.isShow){
+                if (row.show){
                     return '<span>是</span>'
                 }else {
                     return '<span>否</span>'
@@ -30,10 +30,10 @@
         {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
         {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
             formatter: function (value, row) {
-                if (row.isShow){
-                    return '<a href="#" onclick="TBroadcast.updateStatus('+row.id+')" style="color:red">下架</a>'
+                if (row.upDown === 1){
+                    return '<a href="#" onclick="TBroadcast.down('+row.id+')" style="color:red">下架</a>'
                 }else{
-                    return '<a href="#" onclick="TBroadcast.updateStatus('+row.id+')" style="color:blue">上架</a>' +'&nbsp;' +
+                    return '<a href="#" onclick="TBroadcast.up('+row.id+')" style="color:blue">上架</a>' +'&nbsp;' +
                         '<a href="#" onclick="TBroadcast.delete('+row.id+')" style="color:red">删除</a>'
                 }
             }
@@ -62,7 +62,7 @@
     var index = layer.open({
         type: 2,
         title: '添加',
-        area: ['800px', '420px'], //宽高
+        area: ['100%', '100%'], //宽高
         fix: false, //不固定
         maxmin: true,
         content: Feng.ctxPath + '/tBroadcast/tBroadcast_add'
@@ -78,7 +78,7 @@
         var index = layer.open({
             type: 2,
             title: '详情',
-            area: ['800px', '420px'], //宽高
+            area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
             content: Feng.ctxPath + '/tBroadcast/tBroadcast_update/' + TBroadcast.seItem.id
@@ -92,8 +92,13 @@
  */
 TBroadcast.delete = function (id) {
     var ajax = new $ax(Feng.ctxPath + "/tBroadcast/delete", function (data) {
-        Feng.success("删除成功!");
-        TBroadcast.table.refresh();
+        if(500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("删除成功!");
+            TBroadcast.table.refresh();
+        }
     }, function (data) {
         Feng.error("删除失败!" + data.responseJSON.message + "!");
     });
@@ -102,6 +107,44 @@
 };
 
 /**
+ * 上架
+ */
+TBroadcast.up = function (id) {
+    var ajax = new $ax(Feng.ctxPath + "/tBroadcast/up", function (data) {
+        if(500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("上架成功!");
+            TBroadcast.table.refresh();
+        }
+    }, function (data) {
+        Feng.error("上架失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",id);
+    ajax.start();
+};
+
+/**
+ * 下架
+ */
+TBroadcast.down = function (id) {
+    var ajax = new $ax(Feng.ctxPath + "/tBroadcast/down", function (data) {
+        if(500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("下架成功!");
+            TBroadcast.table.refresh();
+        }
+    }, function (data) {
+        Feng.error("下架失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("id",id);
+    ajax.start();
+};
+
+/**
  * 查询列表
  */
 TBroadcast.search = function () {
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js
index 54f4bdf..af3a5f2 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tBroadcast/tBroadcast_info.js
@@ -2,7 +2,39 @@
  * 初始化详情对话框
  */
 var TBroadcastInfoDlg = {
-    tBroadcastInfoData : {}
+    tBroadcastInfoData : {},
+    validateFields: {
+        content: {
+            validators: {
+                notEmpty: {
+                    message: '消息内容不能为空'
+                }
+            }
+        },
+        sort: {
+            validators: {
+                notEmpty: {
+                    message: '排序不能为空'
+                }
+            }
+        },
+        show: {
+            validators: {
+                notEmpty: {
+                    message: '请选择是否显示'
+                }
+            }
+        },
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TBroadcastInfoDlg.validate = function () {
+    $('#broadcastInfoForm').data("bootstrapValidator").resetForm();
+    $('#broadcastInfoForm').bootstrapValidator('validate');
+    return $("#broadcastInfoForm").data('bootstrapValidator').isValid();
 };
 
 /**
@@ -49,6 +81,8 @@
     .set('content')
     .set('sort')
     .set('status')
+    .set('show')
+    .set('upDown')
     .set('createTime');
 }
 
@@ -60,11 +94,20 @@
     this.clearData();
     this.collectData();
 
+    if(!this.validate()){
+        return ;
+    }
+
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tBroadcast/add", function(data){
-        Feng.success("添加成功!");
-        window.parent.TBroadcast.table.refresh();
-        TBroadcastInfoDlg.close();
+        if(500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("添加成功!");
+            window.parent.TBroadcast.table.refresh();
+            TBroadcastInfoDlg.close();
+        }
     },function(data){
         Feng.error("添加失败!" + data.responseJSON.message + "!");
     });
@@ -80,11 +123,20 @@
     this.clearData();
     this.collectData();
 
+    if(!this.validate()){
+        return ;
+    }
+
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tBroadcast/update", function(data){
-        Feng.success("修改成功!");
-        window.parent.TBroadcast.table.refresh();
-        TBroadcastInfoDlg.close();
+        if(500 == data.code){
+            Feng.error(data.message);
+            return;
+        }else {
+            Feng.success("修改成功!");
+            window.parent.TBroadcast.table.refresh();
+            TBroadcastInfoDlg.close();
+        }
     },function(data){
         Feng.error("修改失败!" + data.responseJSON.message + "!");
     });
@@ -93,5 +145,5 @@
 }
 
 $(function() {
-
+    Feng.initValidator("broadcastInfoForm", TBroadcastInfoDlg.validateFields);
 });
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js b/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js
index 8209a62..2c5dda3 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial.js
@@ -14,21 +14,73 @@
 TCommercial.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
-            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
-            {title: '类型(1=弹窗广告,2=底部广告)', field: 'type', visible: true, align: 'center', valign: 'middle'},
-            {title: '名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
-            {title: '广告地址', field: 'url', visible: true, align: 'center', valign: 'middle'},
-            {title: '设备(1=小程序,2=司机端)', field: 'device', visible: true, align: 'center', valign: 'middle'},
-            {title: '是否跳转(0=否,1=是)', field: 'isJump', visible: true, align: 'center', valign: 'middle'},
-            {title: '跳转类型(1=内部跳转,2=外部跳转)', field: 'jumpType', visible: true, align: 'center', valign: 'middle'},
-            {title: '跳转连接', field: 'jumpUrl', visible: true, align: 'center', valign: 'middle'},
-            {title: '富文本', field: 'html', visible: true, align: 'center', valign: 'middle'},
-            {title: '排序', field: 'sort', visible: true, align: 'center', valign: 'middle'},
-            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
-            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
-            {title: '添加人员id', field: 'createUserId', visible: true, align: 'center', valign: 'middle'},
-            {title: '更新时间', field: 'updateTime', visible: true, align: 'center', valign: 'middle'},
-            {title: '更新人员id', field: 'updateUserId', visible: true, align: 'center', valign: 'middle'}
+            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
+        {title: '广告图名称', field: 'name', visible: true, align: 'center', valign: 'middle'},
+        {title: '广告类型', field: 'type', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.type === 1){
+                    return '<span>弹窗广告</span>'
+                }else if(row.type === 2){
+                    return '<span>底部广告</span>'
+                }
+            }
+        },
+        {title: '广告图图片', field: 'url', visible: true, align: 'center', valign: 'middle'},
+        {title: '端口(设备)', field: 'device', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if (row.device === 1){
+                        return '<span>小程序</span>'
+                    }else if(row.device === 2){
+                        return '<span>司机端</span>'
+                    }
+                }
+            },
+        {title: '是否跳转', field: 'isJump', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if (row.isJump === 0){
+                        return '<span>否</span>'
+                    }else if(row.isJump === 1){
+                        return '<span>是</span>'
+                    }
+                }
+            },
+        {title: '跳转类型', field: 'jumpType', visible: true, align: 'center', valign: 'middle',
+                formatter: function (value, row) {
+                    if (row.jumpType === 1){
+                        return '<span>内部跳转</span>'
+                    }else if(row.jumpType === 2){
+                        return '<span>外部跳转</span>'
+                    }
+                }
+            },
+        {title: '跳转内容', field: 'jumpUrl', visible: true, align: 'center', valign: 'middle'},
+        {title: '状态', field: 'onOffLine', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.onOffLine === 1){
+                    return '<span>已上线</span>'
+                }else if(row.onOffLine === 2){
+                    return '<span>已下线</span>'
+                }
+            }
+        },
+        {title: '富文本', field: 'html', visible: false, align: 'center', valign: 'middle'},
+        {title: '排序', field: 'sort', visible: false, align: 'center', valign: 'middle'},
+        {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
+            {title: '添加人员id', field: 'createUserId', visible: false, align: 'center', valign: 'middle'},
+            {title: '更新时间', field: 'updateTime', visible: false, align: 'center', valign: 'middle'},
+            {title: '更新人员id', field: 'updateUserId', visible: false, align: 'center', valign: 'middle'},
+        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
+            formatter: function (value, row) {
+                if (row.onOffLine === 1){
+                    return '<a href="#" onclick="TCommercial.offLineState('+row.id+')" style="color:red">下线</a>' +'&nbsp;' +
+                        '<a href="#" onclick="TCommercial.delete('+row.id+','+row.onOffLine+')" style="color:red">删除</a>'
+                }else if(row.onOffLine === 2){
+                    return '<a href="#" onclick="TCommercial.onLineState('+row.id+')" style="color:blue">上线</a>' +'&nbsp;' +
+                        '<a href="#" onclick="TCommercial.delete('+row.id+','+row.onOffLine+')" style="color:red">删除</a>'
+                }
+            }
+        }
     ];
 };
 
@@ -53,7 +105,7 @@
     var index = layer.open({
         type: 2,
         title: '添加',
-        area: ['800px', '420px'], //宽高
+        area: ['100%', '100%'], //宽高
         fix: false, //不固定
         maxmin: true,
         content: Feng.ctxPath + '/tCommercial/tCommercial_add'
@@ -64,12 +116,12 @@
 /**
  * 打开查看详情
  */
-TCommercial.openTCommercialDetail = function () {
-    if (this.check()) {
+TCommercial.openTCommercialDetail = function (id) {
+    if(this.check()){
         var index = layer.open({
             type: 2,
             title: '详情',
-            area: ['800px', '420px'], //宽高
+            area: ['100%', '100%'], //宽高
             fix: false, //不固定
             maxmin: true,
             content: Feng.ctxPath + '/tCommercial/tCommercial_update/' + TCommercial.seItem.id
@@ -81,19 +133,61 @@
 /**
  * 删除
  */
-TCommercial.delete = function () {
-    if (this.check()) {
-        var ajax = new $ax(Feng.ctxPath + "/tCommercial/delete", function (data) {
-            Feng.success("删除成功!");
-            TCommercial.table.refresh();
-        }, function (data) {
-            Feng.error("删除失败!" + data.responseJSON.message + "!");
-        });
-        ajax.set("tCommercialId",this.seItem.id);
-        ajax.start();
+TCommercial.delete = function (id,onOffLine) {
+    if(1 == onOffLine){
+        Feng.error("已上线广告不可删除!");
+        return;
     }
+    var ajax = new $ax(Feng.ctxPath + "/tCommercial/delete", function (data) {
+        Feng.success("删除成功!");
+        TCommercial.table.refresh();
+    }, function (data) {
+        Feng.error("删除失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("tCommercialId",id);
+    ajax.start();
 };
 
+
+/**
+ * 上线
+ */
+TCommercial.onLineState = function (id) {
+    var ajax = new $ax(Feng.ctxPath + "/tCommercial/onLine", function (data) {
+        if(500 == data.code){
+            Feng.error(data.message)
+            return;
+        }else {
+            Feng.success("上线成功!");
+            TCommercial.table.refresh();
+        }
+    }, function (data) {
+        Feng.error("上线失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("tCommercialId",id);
+    ajax.start();
+};
+
+/**
+ * 下线
+ */
+TCommercial.offLineState = function (id) {
+    var ajax = new $ax(Feng.ctxPath + "/tCommercial/offLine", function (data) {
+        if(500 == data.code){
+            Feng.error(data.message)
+            return;
+        }else {
+            Feng.success("下线成功!");
+            TCommercial.table.refresh();
+        }
+    }, function (data) {
+        Feng.error("下线失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("tCommercialId",id);
+    ajax.start();
+};
+
+
 /**
  * 查询列表
  */
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js
index 6b62b9a..90a2add 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tCommercial/tCommercial_info.js
@@ -2,7 +2,74 @@
  * 初始化详情对话框
  */
 var TCommercialInfoDlg = {
-    tCommercialInfoData : {}
+    tCommercialInfoData : {},
+    validateFields: {
+        name: {
+            validators: {
+                notEmpty: {
+                    message: '广告图名称不能为空'
+                }
+            }
+        },
+        device: {
+            validators: {
+                notEmpty: {
+                    message: '请选择端口'
+                }
+            }
+        },
+        type: {
+            validators: {
+                notEmpty: {
+                    message: '请选择广告类型'
+                }
+            }
+        },
+        isJump: {
+            validators: {
+                notEmpty: {
+                    message: '请选择是否跳转'
+                }
+            }
+        },
+        jumpType: {
+            validators: {
+                notEmpty: {
+                    message: '请选择跳转类型'
+                }
+            }
+        },
+        jumpUrl: {
+            validators: {
+                notEmpty: {
+                    message: '跳转链接不能为空'
+                }
+            }
+        },
+        sort: {
+            validators: {
+                notEmpty: {
+                    message: '排序不能为空'
+                }
+            }
+        },
+        html: {
+            validators: {
+                notEmpty: {
+                    message: '详情内容不能为空'
+                }
+            }
+        },
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TCommercialInfoDlg.validate = function () {
+    $('#commercialInfoForm').data("bootstrapValidator").resetForm();
+    $('#commercialInfoForm').bootstrapValidator('validate');
+    return $("#commercialInfoForm").data('bootstrapValidator').isValid();
 };
 
 /**
@@ -44,6 +111,9 @@
  * 收集数据
  */
 TCommercialInfoDlg.collectData = function() {
+    if(UE.getEditor('html').hasContents()){
+        $('#html').val(UE.getEditor('html').getContent());
+    }
     this
     .set('id')
     .set('type')
@@ -56,6 +126,7 @@
     .set('html')
     .set('sort')
     .set('status')
+    .set('onOffLine')
     .set('createTime')
     .set('createUserId')
     .set('updateTime')
@@ -69,6 +140,16 @@
 
     this.clearData();
     this.collectData();
+
+    if(!this.validate()){
+        return ;
+    }
+
+    var url = $("#url").val();
+    if ("" == url){
+        Feng.info("请上传广告图图片");
+        return;
+    }
 
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tCommercial/add", function(data){
@@ -90,6 +171,10 @@
     this.clearData();
     this.collectData();
 
+    if(!this.validate()){
+        return ;
+    }
+
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tCommercial/update", function(data){
         Feng.success("修改成功!");
@@ -103,5 +188,6 @@
 }
 
 $(function() {
-
+    TCommercialInfoDlg.editor = UE.getEditor('html');
+    Feng.initValidator("commercialInfoForm", TCommercialInfoDlg.validateFields);
 });
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
index 9bbeebf..092cc58 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver.js
@@ -72,7 +72,7 @@
                     return '<a href="#" onclick="TDriver.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                         '<a href="#" onclick="TDriver.stop('+row.id+','+row.status+')" style="color:red">冻结</a>' +'&nbsp;' +
                         '<a href="#" onclick="TDriver.updateInfo('+row.id+')" style="color:green">编辑</a>'
-                }else if (row.status === 2){
+                }else if (row.status === 2 || row.approvalStatus === 2){
                     return '<a href="#" onclick="TDriver.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                         '<a href="#" onclick="TDriver.start('+row.id+','+row.status+')" style="color:green">解冻</a>'
                 }
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml.js b/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml.js
new file mode 100644
index 0000000..1ae2acd
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml.js
@@ -0,0 +1,159 @@
+/**
+ * 管理初始化
+ */
+var THtml = {
+    id: "THtmlTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+THtml.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+            {title: '类型(1=代驾服务协议与隐私政策保护,2=法律条款,3=个人信息处理规则,4=积分说明,5=佣金规则说明,6=行程录音说明,7=预估价格说明,8=加盟基本要求,9=加盟流程,10=起步价说明,11=注销协议,12=关于我们,13=司机消单说明)', field: 'type', visible: true, align: 'center', valign: 'middle'},
+            {title: 'H5内容', field: 'html', visible: true, align: 'center', valign: 'middle'},
+            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+THtml.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        THtml.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+THtml.openAddTHtml = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tHtml/tHtml_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看详情
+ */
+THtml.openTHtmlDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tHtml/tHtml_update/' + THtml.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 加盟基本要求
+ */
+THtml.priceRulesSubmit = function () {
+    var ajax = new $ax(Feng.ctxPath + "/tHtml/update", function (data) {
+        Feng.success("保存成功!");
+        THtml.table.refresh();
+    }, function (data) {
+        Feng.error("保存失败!" + data.responseJSON.message + "!");
+    });
+
+    var json1=[];
+    for (let i = 0; i < $('input[name="num1"]').length; i++) {
+        var arr = {}
+        arr['num1'] = $($('input[name="num1"]')[i]).val();
+        json1.push(arr)
+    }
+    var reqData = {};
+    reqData['rules'] = json1;
+    ajax.set("html",JSON.stringify(reqData));
+    ajax.set("id",$('#id').val());
+    ajax.start();
+};
+
+THtml.addBox = function (){
+    var i = $('input[name="num1"]').length + 1;
+    var a ="<div name=\"rulesForm\">\n" +
+        "                                <div class=\"initialLevel col-sm-12 control-label form-group\"  >\n" +
+        "                                    <span class=\"control-label\" >要求"+i+"</span>\n" +
+        "                                    <input class=\"control-label\" id=\"num1-"+i+"\" name=\"num1\" type=\"text\" placeholder=\"单行输入\" style=\"height: 30px;width: 180px\">\n" +
+        "                                    <span class=\"fa fa-remove\" onclick=\"THtml.delBox(this)\"></span>\n" +
+        "                                </div>\n" +
+        "                            </div>"
+
+    $("#rules").append($(a))
+}
+
+THtml.delBox = function (o) {
+    $(o).parent("div").parent("div").remove()
+};
+
+
+
+/**
+ * 删除
+ */
+THtml.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tHtml/delete", function (data) {
+            Feng.success("删除成功!");
+            THtml.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tHtmlId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 查询html
+ */
+THtml.queryHtml = function (type) {
+    var ajax = new $ax(Feng.ctxPath + "/tHtml/agreement", function (data) {
+        console.log(data)
+        var html = document.getElementById("html");
+        html.innerHTML = data.html
+        THtml.table.refresh();
+    }, function (data) {
+        Feng.error("失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("type",type);
+    ajax.start();
+};
+
+/**
+ * 查询列表
+ */
+THtml.search = function () {
+    var queryData = {};
+    queryData['condition'] = $("#condition").val();
+    THtml.table.refresh({query: queryData});
+};
+
+$(function () {
+    var defaultColunms = THtml.initColumn();
+    var table = new BSTable(THtml.id, "/tHtml/list", defaultColunms);
+    table.setPaginationType("client");
+    THtml.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml_info.js
new file mode 100644
index 0000000..9b6ba02
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tHtml/tHtml_info.js
@@ -0,0 +1,99 @@
+/**
+ * 初始化详情对话框
+ */
+var THtmlInfoDlg = {
+    tHtmlInfoData : {}
+};
+
+/**
+ * 清除数据
+ */
+THtmlInfoDlg.clearData = function() {
+    this.tHtmlInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+THtmlInfoDlg.set = function(key, val) {
+    this.tHtmlInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+THtmlInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+THtmlInfoDlg.close = function() {
+    parent.layer.close(window.parent.THtml.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+THtmlInfoDlg.collectData = function() {
+    if(UE.getEditor('html').hasContents()){
+        $('#html').val(UE.getEditor('html').getContent());
+    }
+    this
+    .set('id')
+    .set('type')
+    .set('html')
+    .set('createTime');
+}
+
+/**
+ * 提交添加
+ */
+THtmlInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tHtml/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.THtml.table.refresh();
+        THtmlInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tHtmlInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+THtmlInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tHtml/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.THtml.table.refresh();
+        THtmlInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tHtmlInfoData);
+    ajax.start();
+}
+
+$(function() {
+    THtmlInfoDlg.editor = UE.getEditor('html');
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg.js b/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg.js
new file mode 100644
index 0000000..b920ff9
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg.js
@@ -0,0 +1,100 @@
+/**
+ * 管理初始化
+ */
+var TImg = {
+    id: "TImgTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TImg.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+            {title: '数据类型(1=启动页)', field: 'type', visible: true, align: 'center', valign: 'middle'},
+            {title: '图片地址', field: 'img', visible: true, align: 'center', valign: 'middle'},
+            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TImg.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TImg.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TImg.openAddTImg = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tImg/tImg_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 打开查看详情
+ */
+TImg.openTImgDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tImg/tImg_update/' + TImg.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除
+ */
+TImg.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tImg/delete", function (data) {
+            Feng.success("删除成功!");
+            TImg.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tImgId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 查询列表
+ */
+TImg.search = function () {
+    var queryData = {};
+    queryData['condition'] = $("#condition").val();
+    TImg.table.refresh({query: queryData});
+};
+
+$(function () {
+    var defaultColunms = TImg.initColumn();
+    var table = new BSTable(TImg.id, "/tImg/list", defaultColunms);
+    table.setPaginationType("client");
+    TImg.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg_info.js
new file mode 100644
index 0000000..cfa1a31
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tImg/tImg_info.js
@@ -0,0 +1,216 @@
+/**
+ * 初始化详情对话框
+ */
+var TImgInfoDlg = {
+    tImgInfoData : {}
+};
+
+/**
+ * 清除数据
+ */
+TImgInfoDlg.clearData = function() {
+    this.tImgInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TImgInfoDlg.set = function(key, val) {
+    this.tImgInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TImgInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TImgInfoDlg.close = function() {
+    parent.layer.close(window.parent.TImg.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TImgInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('type')
+    .set('img')
+    .set('createTime');
+}
+
+/**
+ * 提交添加
+ */
+TImgInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tImg/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.TImg.table.refresh();
+        TImgInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tImgInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TImgInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    console.log(11111)
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tImg/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.TImg.table.refresh();
+        TImgInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tImgInfoData);
+    ajax.start();
+}
+
+/**
+ * 提交图片
+ */
+TImgInfoDlg.updateSubmit = function() {
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tImg/updateSubmit", function(data){
+        Feng.success("修改成功!");
+        window.parent.TImg.table.refresh();
+        TImgInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    var reqData = "";
+    var n = $('img[name="startImg"]').length
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $('img[name="startImg"]')[i].src
+        }else {
+            reqData += $('img[name="startImg"]')[i].src + ",";
+        }
+    }
+    console.log(reqData)
+    ajax.set("tImg",reqData);
+    ajax.start();
+}
+
+let thisImg;
+TImgInfoDlg.uploadPhoto = function(e) {
+    thisImg = $(e);
+    $("#btn_file").click();
+}
+TImgInfoDlg.schoolprow = function() {
+    let file = document.querySelector('input[name=schoolimg]').files[0];
+    // let reader = new FileReader();
+    if (file) {
+        let inputList = $("#imgs div");
+        let index = inputList.length
+        if(index > 10){
+            Feng.error("图片不能超过10张");
+            return
+        }
+        upload(file, thisImg);
+        // reader.readAsDataURL(file);
+        //获取已上传的图片数从第二张开始算
+        // if (index < 9) {
+        //     let imgHtml = "<img width=\"100px\" height=\"100px\" src=\"https://guangzhiyu-1311825864.cos.ap-chengdu.myqcloud.com/shangchuanpic.png\"\n" +
+        //                                                  "onclick=\"TbCommodityInfoDlg.uploadPhoto(this);\">";
+        //     $("#imgUpload").append(imgHtml);
+        // }
+    }
+}
+
+function upload(file, thisImg) {
+    let formData = new FormData();
+    formData.append("myfile", file);
+    $.ajax({
+        url: Feng.ctxPath + "/mgr/saveApk",
+        type: "POST",
+        data: formData,
+        contentType: false,
+        processData: false,
+        success: function (data) {
+            /*$(thisImg).attr("src", data);
+             $(thisImg).addClass("imgP");
+             //图片
+            $("#divHidden").empty();*/
+            $('#imgs').append('<div style="float: left;margin-right: 20px;"><img name="startImg" src="' + data + '" style="width: 100px"> <i class="fa fa-close" onclick="delImg(this)" style="color: red;font-size: 18px;position: absolute;"></i></div>')
+
+            // $(".imgP").each(function (r, v) {
+            //     $("#imgUpload").append("<div style=\"width: 110px;height: 110px;float: left;\"><input class='imgHidden' type='hidden' value='"+v.src+"'><div style=width: 110px;height: 110px;float: left;><img src="+v.src+" width=\"100px\" class=\"describeImgUrl\"></div>+")
+            // });
+            layer.msg('上传成功!', {
+                icon: 6
+            });
+        },
+        error: function () {
+            layer.msg('上传失败!', {
+                icon: 5
+            });
+        }
+    })
+}
+
+$(function() {
+
+
+
+    var avatarUp = new $WebUpload("detailsImg");
+    avatarUp.setUploadBarId("progressBar");
+    avatarUp.init();
+
+    var avatarUp = new $WebUpload("goodsImg");
+    avatarUp.setUploadBarId("progressBar");
+    avatarUp.init();
+    // 手动指定上传文件调用的接口(不同文件类型不同接口)
+    // UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
+    // UE.Editor.prototype.getActionUrl = function (action) {
+
+    // 这里很重要,很重要,很重要,要和配置中的imageActionName值一样
+    // if (action == 'uploadimage') {
+    //     // 这里调用后端我们写的图片上传接口
+    //     return '/ueditor/uploadFileData';
+    // } else if (action == 'uploadvideo') {
+    //     return '/ueditor/uploadFileData';
+    // } else {
+    //     return this._bkGetActionUrl.call(this, action);
+    // }
+    // };
+    let urls =  $("#urls").val()
+    let id= $("#id").val();
+    if (id!=null&&id!=""){
+        $("#category").val($("#category_").val());
+
+        let s1_=  $("#s1_").val();
+        $("#s1").val(s1_);
+    }
+
+});
+function delImg(e){
+    $(e).parent().remove();
+}
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent.js b/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent.js
new file mode 100644
index 0000000..27a49b9
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent.js
@@ -0,0 +1,206 @@
+/**
+ * 管理初始化
+ */
+var TMainContent = {
+    id: "TMainContentTable",	//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1
+};
+
+/**
+ * 初始化表格的列
+ */
+TMainContent.initColumn = function () {
+    return [
+        {field: 'selectItem', radio: true},
+            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
+            {title: '数据类型(1=转单,2=司机消单,3=用户取消订单)', field: 'type', visible: true, align: 'center', valign: 'middle'},
+            {title: '内容', field: 'content', visible: true, align: 'center', valign: 'middle'},
+            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: true, align: 'center', valign: 'middle'},
+            {title: '添加时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'}
+    ];
+};
+
+/**
+ * 检查是否选中
+ */
+TMainContent.check = function () {
+    var selected = $('#' + this.id).bootstrapTable('getSelections');
+    if(selected.length == 0){
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    }else{
+        TMainContent.seItem = selected[0];
+        return true;
+    }
+};
+
+/**
+ * 点击添加
+ */
+TMainContent.openAddTMainContent = function () {
+    var index = layer.open({
+        type: 2,
+        title: '添加',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/tMainContent_add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 转单添加
+ */
+TMainContent.transferOrderAdd = function () {
+    var index = layer.open({
+        type: 2,
+        title: '新增原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/transferOrder/add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 转单修改
+ */
+TMainContent.transferOrderUpdate = function () {
+    var index = layer.open({
+        type: 2,
+        title: '编辑原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/transferOrder/update'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 消单添加
+ */
+TMainContent.driverCancelOrderAdd = function () {
+    var index = layer.open({
+        type: 2,
+        title: '新增原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/driverCancelOrder/add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 消单修改
+ */
+TMainContent.driverCancelOrderUpdate = function () {
+    var index = layer.open({
+        type: 2,
+        title: '编辑原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/driverCancelOrder/update'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 用户取消订单添加
+ */
+TMainContent.userCancelOrderAdd = function () {
+    var index = layer.open({
+        type: 2,
+        title: '新增原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/userCancelOrder/add'
+    });
+    this.layerIndex = index;
+};
+
+/**
+ * 用户取消订单修改
+ */
+TMainContent.userCancelOrderUpdate = function () {
+    var index = layer.open({
+        type: 2,
+        title: '编辑原因',
+        area: ['800px', '420px'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tMainContent/userCancelOrder/update'
+    });
+    this.layerIndex = index;
+};
+
+TMainContent.addBox = function (){
+    var i = $('input[name="num1"]').length + 1;
+    var a ="<div class=\"initialLevel col-sm-12 control-label form-group\"  >\n" +
+        "                                <input  class=\"control-label\" id=\"content-"+i+"\" name=\"content\" placeholder=\"请输入\" style=\"width: 180px;height: 30px\">\n" +
+        "                                <span class=\"fa fa-remove\" onclick=\"TMainContent.delBox(this)\"></span>\n" +
+        "                            </div>"
+
+    $("#rules").append($(a))
+}
+
+TMainContent.delBox = function (o) {
+    $(o).parent("div").remove()
+};
+
+
+/**
+ * 打开查看详情
+ */
+TMainContent.openTMainContentDetail = function () {
+    if (this.check()) {
+        var index = layer.open({
+            type: 2,
+            title: '详情',
+            area: ['800px', '420px'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/tMainContent/tMainContent_update/' + TMainContent.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+/**
+ * 删除
+ */
+TMainContent.delete = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/tMainContent/delete", function (data) {
+            Feng.success("删除成功!");
+            TMainContent.table.refresh();
+        }, function (data) {
+            Feng.error("删除失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("tMainContentId",this.seItem.id);
+        ajax.start();
+    }
+};
+
+/**
+ * 查询列表
+ */
+TMainContent.search = function () {
+    var queryData = {};
+    queryData['condition'] = $("#condition").val();
+    TMainContent.table.refresh({query: queryData});
+};
+
+$(function () {
+    var defaultColunms = TMainContent.initColumn();
+    var table = new BSTable(TMainContent.id, "/tMainContent/list", defaultColunms);
+    table.setPaginationType("client");
+    TMainContent.table = table.init();
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent_info.js
new file mode 100644
index 0000000..bb7c1ac
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tMainContent/tMainContent_info.js
@@ -0,0 +1,288 @@
+/**
+ * 初始化详情对话框
+ */
+var TMainContentInfoDlg = {
+    tMainContentInfoData : {}
+};
+
+/**
+ * 清除数据
+ */
+TMainContentInfoDlg.clearData = function() {
+    this.tMainContentInfoData = {};
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TMainContentInfoDlg.set = function(key, val) {
+    this.tMainContentInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
+    return this;
+}
+
+/**
+ * 设置对话框中的数据
+ *
+ * @param key 数据的名称
+ * @param val 数据的具体值
+ */
+TMainContentInfoDlg.get = function(key) {
+    return $("#" + key).val();
+}
+
+/**
+ * 关闭此对话框
+ */
+TMainContentInfoDlg.close = function() {
+    parent.layer.close(window.parent.TMainContent.layerIndex);
+}
+
+/**
+ * 收集数据
+ */
+TMainContentInfoDlg.collectData = function() {
+    this
+    .set('id')
+    .set('type')
+    .set('content')
+    .set('status')
+    .set('createTime');
+}
+
+/**
+ * 提交添加
+ */
+TMainContentInfoDlg.addSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/add", function(data){
+        Feng.success("添加成功!");
+        window.parent.TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tMainContentInfoData);
+    ajax.start();
+}
+/**
+ * 转单添加提交
+ */
+TMainContentInfoDlg.transferOrderAddSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/add", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",1);
+    ajax.start();
+}
+
+/**
+ * 转单修改提交
+ */
+TMainContentInfoDlg.transferOrderUpdateSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/update", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",1);
+    ajax.start();
+}
+
+/**
+ * 消单添加提交
+ */
+TMainContentInfoDlg.driverCancelOrderAddSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/add", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",2);
+    ajax.start();
+}
+
+/**
+ * 消单修改提交
+ */
+TMainContentInfoDlg.driverCancelOrderUpdateSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/update", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",2);
+    ajax.start();
+}
+
+/**
+ * 取消订单添加提交
+ */
+TMainContentInfoDlg.userCancelOrderAddSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/add", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",3);
+    ajax.start();
+}
+
+/**
+ * 取消订单修改提交
+ */
+TMainContentInfoDlg.userCancelOrderUpdateSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/update", function(data){
+        Feng.success("添加成功!");
+        parent.location.reload()
+        TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("添加失败!" + data.responseJSON.message + "!");
+    });
+
+    var reqData = "";
+    var n = $('input[name="content"]').length;
+    for (let i = 0; i < n; i++) {
+        if(i == (n-1)){
+            reqData += $($('input[name="content"]')[i]).val()
+        }else {
+            reqData += $($('input[name="content"]')[i]).val() + ",";
+        }
+    }
+    ajax.set("tMainContents",reqData);
+    ajax.set("type",3);
+    ajax.start();
+}
+
+/**
+ * 提交修改
+ */
+TMainContentInfoDlg.editSubmit = function() {
+
+    this.clearData();
+    this.collectData();
+
+    //提交信息
+    var ajax = new $ax(Feng.ctxPath + "/tMainContent/update", function(data){
+        Feng.success("修改成功!");
+        window.parent.TMainContent.table.refresh();
+        TMainContentInfoDlg.close();
+    },function(data){
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set(this.tMainContentInfoData);
+    ajax.start();
+}
+
+$(function() {
+
+});
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js b/management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js
index 808eb76..0375706 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tSystemConfig/tSystemConfig.js
@@ -296,6 +296,18 @@
     $(o).parent("div").parent("div").remove()
 };
 
+TSystemConfig.openOrClose = function () {
+    console.log(111111111111)
+    var ajax = new $ax(Feng.ctxPath + "/tSystemConfig/openOrClose", function (data) {
+        Feng.success("修改成功!");
+        TSystemConfig.table.refresh();
+    }, function (data) {
+        Feng.error("修改失败!" + data.responseJSON.message + "!");
+    });
+    ajax.set("num1",$("#zcOne").val());
+    ajax.start();
+};
+
 /**
  * 查询列表
  */

--
Gitblit v1.7.1