From adb18caa714692ccabf111ae3ab3481bf04844d4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 28 二月 2023 18:03:01 +0800
Subject: [PATCH] 订单管理,优惠券管理

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java   |   47 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java                          |   12 
 management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tAppUserException.js                         |    1 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluate.html                                |   40 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java                    |   18 +
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html                                |   12 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html                               |   12 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java  |   19 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java              |   21 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java      |   83 +++++
 management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js                                   |   35 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml             |   23 +
 management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js                                |   89 +++++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java           |   10 
 management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js                               |  101 ++++++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java |   88 +++++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html                          |  161 ++++++++++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html                          |    3 
 management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js                                    |   26 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAppUserServiceImpl.java       |   26 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java          |   62 ++++
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html                                   |    3 
 22 files changed, 821 insertions(+), 71 deletions(-)

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 2e10b03..f707d54 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
@@ -11,9 +11,11 @@
 import com.stylefeng.guns.modular.system.model.TAppUser;
 import com.stylefeng.guns.modular.system.model.TCoupon;
 import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.model.TUserToCoupon;
 import com.stylefeng.guns.modular.system.service.ITAppUserService;
 import com.stylefeng.guns.modular.system.service.ITCouponService;
 import com.stylefeng.guns.modular.system.service.ITOrderService;
+import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -54,6 +56,8 @@
     private ITCouponService tCouponService;
     @Autowired
     private ITOrderService tOrderService;
+    @Autowired
+    private ITUserToCouponService tUserToCouponService;
 
     /**
      * 跳转到首页
@@ -176,10 +180,17 @@
         for (TAppUser tAppUser : tAppUsers) {
             TAppUserResp tAppUserResp = new TAppUserResp();
             BeanUtils.copyProperties(tAppUser,tAppUserResp);
-            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(tCoupons.size());
-            tAppUserResp.setNotUsedCount(notUsedList.size());
+
+            // 查询当前用户优惠券数量
+            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()))
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
index e1535ec..b0d0eac 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
@@ -6,6 +6,8 @@
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.modular.system.controller.req.CouponSendReq;
 import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
+import com.stylefeng.guns.modular.system.model.TUserToCoupon;
+import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.Assert;
@@ -21,6 +23,8 @@
 import com.stylefeng.guns.modular.system.model.TCoupon;
 import com.stylefeng.guns.modular.system.service.ITCouponService;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 
 /**
@@ -37,6 +41,8 @@
 
     @Autowired
     private ITCouponService tCouponService;
+    @Autowired
+    private ITUserToCouponService tUserToCouponService;
 
     /**
      * 跳转到首页
@@ -86,8 +92,22 @@
             wrapper.between("create_time",startTime,endTime);
         }
         wrapper.orderBy(true,"create_time",false);
-        wrapper.groupBy(true,"coupon_name");
-        wrapper.groupBy(true,"coupon_type");
+        return tCouponService.selectList(wrapper);
+    }
+
+    /**
+     * 获取活动券列表
+     */
+    @RequestMapping(value = "/activityCouponList")
+    @ResponseBody
+    public Object activityCouponList(String couponName) {
+        EntityWrapper<TCoupon> wrapper = new EntityWrapper<>();
+        if(StringUtils.hasLength(couponName)){
+            wrapper.like("coupon_name",couponName);
+        }
+        wrapper.eq("coupon_type",1);
+        wrapper.eq("coupon_state",1);
+        wrapper.orderBy(true,"create_time",false);
         return tCouponService.selectList(wrapper);
     }
 
@@ -154,8 +174,27 @@
 
         List<Integer> userIds = couponSendReq.getUserIds();
 
+        // 查询选择的优惠券
+        TCoupon tCoupon = tCouponService.selectById(couponSendReq.getCouponId());
+
+        List<TUserToCoupon> tUserToCoupons = new ArrayList<>(userIds.size());
+
+        for (Integer userId : userIds) {
+            // 创建用户优惠券关联表
+            TUserToCoupon tUserToCoupon = new TUserToCoupon();
+            tUserToCoupon.setCouponId(tCoupon.getId());
+            tUserToCoupon.setUserId(userId);
+            tUserToCoupon.setCouponTotal(1);
+            tUserToCoupon.setValidCount(1);
+            Date expireTime = Date.from(LocalDate.now().plusDays(tCoupon.getCouponValidity()).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+            System.err.println(expireTime);
+            tUserToCoupon.setExpireTime(expireTime);
+            tUserToCoupons.add(tUserToCoupon);
+        }
+        tUserToCouponService.insertBatch(tUserToCoupons);
+
         // 查询该优惠券的列表
-        List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
+        /*List<TCoupon> tCoupons = tCouponService.selectList(new EntityWrapper<TCoupon>().eq("coupon_name", couponSendReq.getCouponName())
                 .eq("coupon_status",CouponStatusEnum.UNISSUED.getCode()));
         Assert.isTrue(!CollectionUtils.isEmpty(tCoupons),"该优惠券不存在!");
         List<TCoupon> tCouponList = new ArrayList<>();
@@ -186,7 +225,7 @@
         }
         if(!CollectionUtils.isEmpty(tCouponList)){
             tCouponService.updateBatchById(tCouponList);
-        }
+        }*/
         return SUCCESS_TIP;
     }
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java
index 0231b74..ce46553 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEvaluateController.java
@@ -1,6 +1,12 @@
 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.controller.resp.TEvaluateResp;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
+import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -11,6 +17,16 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import com.stylefeng.guns.modular.system.model.TEvaluate;
 import com.stylefeng.guns.modular.system.service.ITEvaluateService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * 控制器
@@ -55,11 +71,29 @@
     }
 
     /**
+     * 跳转详情页面
+     */
+    @RequestMapping("/evaluateDetail")
+    public String evaluateDetail(Integer evaluateId, Model model) {
+        tEvaluateService.evaluateDetail(evaluateId,model);
+        return PREFIX + "tEvaluateDetail.html";
+    }
+
+    /**
      * 获取列表
      */
     @RequestMapping(value = "/list")
     @ResponseBody
-    public Object list(String condition) {
+    public Object list(String createTime,String userName,String driverName ,Integer score) {
+        return tEvaluateService.selectPageList(createTime,userName,driverName,null,score);
+    }
+
+    /**
+     * 获取列表
+     */
+    @RequestMapping(value = "/list-back")
+    @ResponseBody
+    public Object listBack(String condition) {
         return tEvaluateService.selectList(null);
     }
 
@@ -101,4 +135,56 @@
     public Object detail(@PathVariable("tEvaluateId") Integer tEvaluateId) {
         return tEvaluateService.selectById(tEvaluateId);
     }
+
+    @ApiOperation(value = "导出评价列表",notes="导出评价列表")
+    @RequestMapping(value = "/export")
+    @ResponseBody
+    public void export(String createTime,String userName,String driverName,Integer score, HttpServletResponse response) {
+        try {
+            Date date = new Date();
+            DateFormat format = new SimpleDateFormat("yyyyMMdd");
+            String time1 = format.format(date);
+            String fileName = "EvaluateInfo"+time1+".xls";
+            String[] title = new String[] {"评价时间","订单编号","评论用户",
+                    "评论用户手机号","评论司机","司机手机号","评价分数","评价内容"};
+            List<TEvaluateResp> list = tEvaluateService.selectPageList(createTime, userName, driverName, null, score);
+            String[][] values = new String[list.size()][];
+            for (int i = 0; i < list.size(); i++) {
+                TEvaluateResp d = list.get(i);
+                values[i] = new String[title.length];
+                values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
+                values[i][1] = d.getCode();
+                values[i][2] = d.getUserName();
+                values[i][3] = d.getUserPhone();
+                values[i][4] = d.getDriverName();
+                values[i][5] = d.getDriverPhone();
+                values[i][6] = String.valueOf(Objects.nonNull(d.getScore())?d.getScore(): "");
+                Integer score1 = d.getScore();
+                if(Objects.nonNull(score1)){
+                    if(1 == score1){
+                        values[i][6] = "非常差";
+                    }else if (2 == score1){
+                        values[i][6] = "差";
+                    }else if (3 == score1){
+                        values[i][6] = "一般";
+                    }else if (4 == score1){
+                        values[i][6] = "满意";
+                    }else if (5 == score1){
+                        values[i][6] = "非常满意";
+                    }
+                }else {
+                    values[i][6] = "";
+                }
+                values[i][7] = d.getEvaluate();
+            }
+            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+            ExcelUtil.setResponseHeader(response, fileName);
+            OutputStream os = response.getOutputStream();
+            wb.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java
index 8b1224e..f662389 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/req/CouponSendReq.java
@@ -14,6 +14,16 @@
 
     @ApiModelProperty(value = "优惠券名称")
     private String couponName;
+    @ApiModelProperty(value = "优惠券ID")
+    private Integer couponId;
+
+    public Integer getCouponId() {
+        return couponId;
+    }
+
+    public void setCouponId(Integer couponId) {
+        this.couponId = couponId;
+    }
 
     public List<Integer> getUserIds() {
         return userIds;
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java
new file mode 100644
index 0000000..4a72566
--- /dev/null
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/resp/TEvaluateResp.java
@@ -0,0 +1,62 @@
+package com.stylefeng.guns.modular.system.controller.resp;
+
+import com.stylefeng.guns.modular.system.model.TEvaluate;
+import io.swagger.annotations.ApiModelProperty;
+
+public class TEvaluateResp extends TEvaluate {
+
+    @ApiModelProperty(value = "订单编号")
+    private String code;
+
+    @ApiModelProperty(value = "评论用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "评论用户手机号")
+    private String userPhone;
+
+    @ApiModelProperty(value = "评论司机")
+    private String driverName;
+
+    @ApiModelProperty(value = "司机手机号")
+    private String driverPhone;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserPhone() {
+        return userPhone;
+    }
+
+    public void setUserPhone(String userPhone) {
+        this.userPhone = userPhone;
+    }
+
+    public String getDriverName() {
+        return driverName;
+    }
+
+    public void setDriverName(String driverName) {
+        this.driverName = driverName;
+    }
+
+    public String getDriverPhone() {
+        return driverPhone;
+    }
+
+    public void setDriverPhone(String driverPhone) {
+        this.driverPhone = driverPhone;
+    }
+}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java
index f5e2cef..a743632 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TEvaluateMapper.java
@@ -1,7 +1,12 @@
 package com.stylefeng.guns.modular.system.dao;
 
+import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
 import com.stylefeng.guns.modular.system.model.TEvaluate;
 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 +16,19 @@
  * @author stylefeng
  * @since 2023-02-27
  */
+@Mapper
 public interface TEvaluateMapper extends BaseMapper<TEvaluate> {
 
+    /**
+     * 查询评论列表
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @param userName 评论用户名
+     * @param driverName 评论司机名
+     * @param orderType 订单类型
+     * @param score 评价分数
+     * @return
+     */
+    List<TEvaluateResp> selectPageList(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("userName")String userName,
+                                       @Param("driverName")String driverName, @Param("orderType")Integer orderType, @Param("score")Integer score);
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml
index 599ff44..30feff1 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TEvaluateMapper.xml
@@ -17,5 +17,28 @@
     <sql id="Base_Column_List">
         id, orderId, userId, score, evaluate, status, createTime
     </sql>
+    <select id="selectPageList" resultType="com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp">
+        select e.id, e.orderId, e.userId, e.score, e.evaluate, e.status, e.createTime,
+               a.nickname AS userName,a.phone AS userPhone,o.code,d.name AS driverName,d.phone AS driverPhone
+        from t_evaluate e
+        left join t_app_user a on e.userId = a.id
+        left join t_order o on e.orderId = o.id
+        left join t_driver d on o.driverId = d.id
+        <where>
+            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+                AND e.createTime between #{startTime} and #{endTime}
+            </if>
+            <if test="userName != null and userName != ''">
+                AND a.nickname LIKE concat('%',#{userName},'%')
+            </if>
+            <if test="driverName != null and driverName != ''">
+                AND d.name LIKE concat('%',#{driverName},'%')
+            </if>
+            <if test="score != null">
+                AND e.score = #{score}
+            </if>
+        </where>
+        ORDER BY e.createTime DESC
+    </select>
 
 </mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
index d2b091b..18c8ffc 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TCoupon.java
@@ -89,6 +89,18 @@
     @TableField("coupon_state")
     private Integer couponState;
 
+    @ApiModelProperty(value = "优惠券数量")
+    @TableField("coupon_count")
+    private Integer couponCount;
+
+    public Integer getCouponCount() {
+        return couponCount;
+    }
+
+    public void setCouponCount(Integer couponCount) {
+        this.couponCount = couponCount;
+    }
+
     public Integer getAgentId() {
         return agentId;
     }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java
index 0eb7ac5..3d49a25 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITEvaluateService.java
@@ -1,7 +1,11 @@
 package com.stylefeng.guns.modular.system.service;
 
+import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
 import com.stylefeng.guns.modular.system.model.TEvaluate;
 import com.baomidou.mybatisplus.service.IService;
+import org.springframework.ui.Model;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,21 @@
  */
 public interface ITEvaluateService extends IService<TEvaluate> {
 
+    /**
+     * 查询分页列表
+     * @param createTime 评价时间
+     * @param userName 评论用户名
+     * @param driverName 评论司机名
+     * @param orderType 订单类型
+     * @param score 评价分数
+     * @return
+     */
+    List<TEvaluateResp> selectPageList(String createTime, String userName, String driverName, Integer orderType, Integer score);
+
+    /**
+     * 跳转详情页面
+     * @param evaluateId
+     * @param model
+     */
+    void evaluateDetail(Integer evaluateId, Model model);
 }
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 a151726..05ac136 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
@@ -4,12 +4,14 @@
 import com.stylefeng.guns.core.util.DateUtil;
 import com.stylefeng.guns.modular.system.dao.TCouponMapper;
 import com.stylefeng.guns.modular.system.dao.TOrderMapper;
+import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
 import com.stylefeng.guns.modular.system.enums.CouponStatusEnum;
 import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
 import com.stylefeng.guns.modular.system.model.TAppUser;
 import com.stylefeng.guns.modular.system.dao.TAppUserMapper;
 import com.stylefeng.guns.modular.system.model.TCoupon;
 import com.stylefeng.guns.modular.system.model.TOrder;
+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.factory.annotation.Autowired;
@@ -42,6 +44,8 @@
     private TCouponMapper tCouponMapper;
     @Autowired
     private TOrderMapper tOrderMapper;
+    @Autowired
+    private TUserToCouponMapper tUserToCouponMapper;
 
     @Override
     public void detail(Integer tAppUserId, Model model) {
@@ -57,14 +61,20 @@
         model.addAttribute("customerChannel","");
 
         // 消费信息:优惠券数据
-        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
-        List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
-        List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
-        List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
-        model.addAttribute("couponSum",tCoupons.size());
-        model.addAttribute("notUsedCount",notUsedList.size());
-        model.addAttribute("usedCount",usedList.size());
-        model.addAttribute("expiredCount",expiredList.size());
+//        List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>().eq("user_id", tAppUserId));
+//        List<TCoupon> notUsedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.NOT_USED.getCode())).collect(Collectors.toList());
+//        List<TCoupon> usedList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.USED.getCode())).collect(Collectors.toList());
+//        List<TCoupon> expiredList = tCoupons.stream().filter(coupon -> coupon.getCouponStatus().equals(CouponStatusEnum.EXPIRED.getCode())).collect(Collectors.toList());
+        // 查询当前用户优惠券数量
+        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();
+        int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
+        model.addAttribute("couponSum",couponTotal);
+        model.addAttribute("notUsedCount",validCount);
+        model.addAttribute("usedCount",couponTotal-validCount-expireCount);
+        model.addAttribute("expiredCount",expireCount);
         // 查询订单数据
         List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("userId", tAppUserId).orderBy(true,"createTime",false));
         if(!CollectionUtils.isEmpty(orders)){
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java
index 5dabc97..7aaa6bd 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TEvaluateServiceImpl.java
@@ -1,10 +1,18 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
-import com.stylefeng.guns.modular.system.model.TEvaluate;
-import com.stylefeng.guns.modular.system.dao.TEvaluateMapper;
+import com.stylefeng.guns.modular.system.controller.resp.TEvaluateResp;
+import com.stylefeng.guns.modular.system.dao.*;
+import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.ITEvaluateService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +25,75 @@
 @Service
 public class TEvaluateServiceImpl extends ServiceImpl<TEvaluateMapper, TEvaluate> implements ITEvaluateService {
 
+    @Autowired
+    private TEvaluateMapper tEvaluateMapper;
+    @Autowired
+    private TAppUserMapper tAppUserMapper;
+
+    @Autowired
+    private TOrderMapper tOrderMapper;
+    @Autowired
+    private TDriverMapper tDriverMapper;
+    @Autowired
+    private TBranchOfficeMapper tBranchOfficeMapper;
+
+    @Override
+    public List<TEvaluateResp> selectPageList(String createTime, String userName, String driverName, Integer orderType, Integer score) {
+        String startTime = null;
+        String endTime = null;
+        // 开始,结束时间
+        if(StringUtils.hasLength(createTime)){
+            String[] split = createTime.split(" - ");
+            startTime = split[0];
+            endTime = split[1];
+        }
+        return tEvaluateMapper.selectPageList(startTime,endTime,userName,driverName,orderType,score);
+    }
+
+    @Override
+    public void evaluateDetail(Integer evaluateId, Model model) {
+        // 查询评价
+        TEvaluate tEvaluate = tEvaluateMapper.selectById(evaluateId);
+
+        model.addAttribute("score",tEvaluate.getScore());
+        model.addAttribute("evaluate",tEvaluate.getEvaluate());
+
+        // 查询用户
+        TAppUser tAppUser = tAppUserMapper.selectById(tEvaluate.getUserId());
+        if(Objects.nonNull(tAppUser)){
+            model.addAttribute("userName",tAppUser.getNickname());
+            model.addAttribute("userPhone",tAppUser.getPhone());
+        }else {
+            model.addAttribute("userName","");
+            model.addAttribute("userPhone","");
+        }
+
+        // 查询订单
+        TOrder tOrder = tOrderMapper.selectById(tEvaluate.getOrderId());
+
+        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getCreateTime()));
+        model.addAttribute("code",tOrder.getCode());
+        model.addAttribute("source",tOrder.getSource());
+        model.addAttribute("startTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getStartTime()));
+        model.addAttribute("boardingTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getBoardingTime()));
+        model.addAttribute("getoffTime",new SimpleDateFormat("yyyy-MM-dd HH:mm").format(tOrder.getGetoffTime()));
+        model.addAttribute("startAddress",tOrder.getStartAddress());
+        model.addAttribute("endAddress",tOrder.getEndAddress());
+
+        // 查询司机
+        TDriver tDriver = tDriverMapper.selectById(tOrder.getDriverId());
+        if(Objects.nonNull(tDriver)){
+            model.addAttribute("driverName",tDriver.getName());
+            // 查询分公司
+            TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
+            if(Objects.nonNull(tBranchOffice)){
+                model.addAttribute("branchOfficeName",tBranchOffice.getPrincipal());
+            }else {
+                model.addAttribute("branchOfficeName","");
+            }
+        }else {
+            model.addAttribute("driverName","");
+        }
+
+    }
 }
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html
index 2146c3f..ced25a0 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCoupon.html
@@ -11,7 +11,7 @@
                         <input hidden id="userIds" value="${userIds}">
                         <div class="row">
                             <div class="col-sm-3">
-                                <#NameCon id="condition" name="优惠券名称" placeholder="请输入优惠券名称"/>
+                                <#NameCon id="couponName" name="优惠券名称" placeholder="请输入优惠券名称"/>
                             </div>
                             <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
@@ -28,7 +28,6 @@
         </div>
     </div>
 </div>
-<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon.js"></script>
 <script src="${ctxPath}/static/modular/system/tAppUser/tCoupon.js"></script>
 <script src="${ctxPath}/static/modular/system/tAppUser/tAppUser_info.js"></script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html
index 108d236..bc1891e 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tCouponException.html
@@ -11,7 +11,7 @@
                         <input hidden id="userIds" value="${userIds}">
                         <div class="row">
                             <div class="col-sm-3">
-                                <#NameCon id="condition" name="优惠券名称" placeholder="请输入优惠券名称"/>
+                                <#NameCon id="couponName" name="优惠券名称" placeholder="请输入优惠券名称"/>
                             </div>
                             <div class="col-sm-3">
                                 <#button name="搜索" icon="fa-search" clickFun="TCoupon.search()"/>
@@ -28,7 +28,6 @@
         </div>
     </div>
 </div>
-<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon.js"></script>
 <script src="${ctxPath}/static/modular/system/tAppUser/tCoupon.js"></script>
 <script src="${ctxPath}/static/modular/system/tAppUser/tAppUserException.js"></script>
 <script src="${ctxPath}/static/modular/system/tAppUser/tAppUser_info.js"></script>
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
index f65db61..2d4d775 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
@@ -5,7 +5,7 @@
             <div class="ibox-title">
                 <h5>添加</h5>
             </div>
-            <div class="ibox-content">
+            <div class="ibox-content" id="driverInfoForm">
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <input hidden id="areaId">
@@ -22,12 +22,12 @@
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >姓名:</label>
-                                    <input id="name" type="text" style="height: 30px" required>
+                                    <input id="name" name="name" type="text" style="height: 30px" required="required">
                                 </div>
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >手机号:</label>
-                                    <input id="phone" type="number" style="height: 30px" required>
+                                    <input id="phone" name="phone" type="number" style="height: 30px" required="required">
                                 </div>
                             </div>
 
@@ -35,12 +35,12 @@
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >紧急联系人姓名:</label>
-                                    <input id="emergencyContact" type="text" style="height: 30px" required>
+                                    <input id="emergencyContact" name="emergencyContact" type="text" style="height: 30px" required>
                                 </div>
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >紧急联系人电话:</label>
-                                    <input id="emergencyPhone" type="number" style="height: 30px" required>
+                                    <input id="emergencyPhone" name="emergencyPhone" type="number" style="height: 30px" required>
                                 </div>
                             </div>
 
@@ -77,7 +77,7 @@
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >身份证号码:</label>
-                                    <input id="idcard" type="text" style="height: 30px" required>
+                                    <input id="idcard" name="idcard" type="text" style="height: 30px" required>
                                 </div>
                             </div>
 
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
index 6bae198..733f5cc 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
@@ -5,7 +5,7 @@
             <div class="ibox-title">
                 <h5>添加</h5>
             </div>
-            <div class="ibox-content">
+            <div class="ibox-content" id="driverInfoForm">
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <input hidden id="id" value="${item.id}"/>
@@ -22,12 +22,12 @@
                                 <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" style="height: 30px" required>
+                                    <input id="name" name="name" value="${item.name}" type="text" style="height: 30px" required>
                                 </div>
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >手机号:</label>
-                                    <input id="phone" value="${item.phone}" type="number" style="height: 30px" required>
+                                    <input id="phone" name="phone" value="${item.phone}" type="number" style="height: 30px" required>
                                 </div>
                             </div>
 
@@ -35,12 +35,12 @@
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >紧急联系人姓名:</label>
-                                    <input id="emergencyContact" value="${item.emergencyContact}" type="text" style="height: 30px" required>
+                                    <input id="emergencyContact" name="emergencyContact" value="${item.emergencyContact}" type="text" style="height: 30px" required>
                                 </div>
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >紧急联系人电话:</label>
-                                    <input id="emergencyPhone" value="${item.emergencyPhone}" type="number" style="height: 30px" required>
+                                    <input id="emergencyPhone" name="emergencyPhone" value="${item.emergencyPhone}" type="number" style="height: 30px" required>
                                 </div>
                             </div>
 
@@ -77,7 +77,7 @@
                                 <div class="initialLevel col-sm-3 control-label form-group"  >
                                     <span style="color:red">*</span>
                                     <label class="control-label" >身份证号码:</label>
-                                    <input id="idcard" value="${item.idcard}" type="text" style="height: 30px" required>
+                                    <input id="idcard" name="idcard" value="${item.idcard}" type="text" style="height: 30px" required>
                                 </div>
                             </div>
 
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 a85e4e9..47aaa96 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
@@ -9,11 +9,38 @@
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <div class="row">
-                            <div class="col-sm-3">
-                                <#NameCon id="condition" name="名称" />
+                            <div class="col-sm-2">
+                                <#TimeCon id="createTime" name="评论时间" />
                             </div>
-                            <div class="col-sm-3">
+                            <div class="col-sm-2">
+                                <#NameCon id="userName" name="用户名" />
+                            </div>
+                            <div class="col-sm-2">
+                                <#NameCon id="driverName" name="司机名" />
+                            </div>
+                            <!--<div class="col-sm-1">
+                                <select class="input-group" id="orderType" style="width: 120px;height: 33px" name="orderType">
+                                    <option value="">选择订单类型</option>
+                                </select>
+                            </div>-->
+                            <div class="col-sm-2">
+                                <select class="input-group" id="score" style="width: 120px;height: 33px" name="score">
+                                    <option value="">选择分数</option>
+                                    <option value="1">非常差</option>
+                                    <option value="2">差</option>
+                                    <option value="3">一般</option>
+                                    <option value="4">满意</option>
+                                    <option value="5">非常满意</option>
+                                </select>
+                            </div>
+                            <div class="col-sm-2">
                                 <#button name="搜索" icon="fa-search" clickFun="TEvaluate.search()"/>
+                                <#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>
                             </div>
                         </div>
                         <div class="hidden-xs" id="TEvaluateTableToolbar" role="group">
@@ -35,4 +62,11 @@
     </div>
 </div>
 <script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
+</script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html
new file mode 100644
index 0000000..3fc7c19
--- /dev/null
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tEvaluate/tEvaluateDetail.html
@@ -0,0 +1,161 @@
+@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">
+
+                        <hr/>
+                        <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>
+                        <hr/>
+
+                        <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>${createTime}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >订单编号:</label>
+                                <label>${code}</label>
+                            </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>${source}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >乘车时间:</label>
+                                <label>${startTime}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group" style="color: green" >
+                            <div class="initialLevel col-sm-3 control-label form-group" >
+                                <label class="control-label">下单用户昵称:</label>
+                                <label>${userName}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">下单用户手机号:</label>
+                                <label>${userPhone}</label>
+                            </div>
+                        </div>
+
+                        <hr/>
+                        <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>
+                        <hr/>
+
+                        <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>${startAddress}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">终点:</label>
+                                <label>${endAddress}</label>
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group" style="color: red" >
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >接单司机:</label>
+                                <label>${driverName}</label>
+                            </div>
+                            <div class="initialLevel col-sm-3 control-label form-group"  >
+                                <label class="control-label" >所属机构:</label>
+                                <label>${branchOfficeName}</label>
+                            </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>${startAddress}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">上车时间:</label>
+                                <label>${boardingTime}</label>
+                            </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>${endAddress}</label>
+                            </div>
+                            <div class="initialLevel col-sm-2 control-label form-group" >
+                                <label class="control-label">下车时间:</label>
+                                <label>${getoffTime}</label>
+                            </div>
+                        </div>
+
+                        <hr/>
+                        <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>
+                        <hr/>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >评论分数:</label>
+                                @if(score==1){
+                                <label>非常差</label>
+                                @}
+                                @if(score==2){
+                                <label>差</label>
+                                @}
+                                @if(score==3){
+                                <label>一般</label>
+                                @}
+                                @if(score==4){
+                                <label>满意</label>
+                                @}
+                                @if(score==5){
+                                <label>非常满意</label>
+                                @}
+                            </div>
+                        </div>
+
+                        <div class="initialLevel col-sm-12 control-label form-group"  >
+                            <div class="initialLevel col-sm-2 control-label form-group"  >
+                                <label class="control-label" >评论内容:</label>
+                                <div  style="margin-left: 70px" >
+                                    <textarea id="evaluate" style="width: 681px; height: 249px;" readonly>${evaluate}</textarea>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
+                            <#button name="取消" icon="fa-plus" clickFun="TEvaluateInfoDlg.close()" />
+                        </div>
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate.js"></script>
+<script src="${ctxPath}/static/modular/system/tEvaluate/tEvaluate_info.js"></script>
+<script type="text/javascript">
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
+</script>
+@}
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 f607262..b5c7014 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
@@ -249,6 +249,7 @@
         });
         ajax.setData({
             userIds:$("#userIds").val(),
+            couponId:TCoupon.seItem.id,
             couponName:TCoupon.seItem.couponName
         })
         ajax.start();
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js b/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js
index 2b6198e..df9f65a 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tAppUser/tCoupon.js
@@ -14,17 +14,31 @@
 TCoupon.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
-            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
-            {title: '创建时间', field: 'createtime', 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: 'couponName', visible: true, align: 'center', valign: 'middle'},
-            {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle'},
-            {title: '优惠券码', field: 'couponCode', visible: true, align: 'center', valign: 'middle'},
-            {title: '优惠券状态', field: 'couponStatus', visible: true, align: 'center', valign: 'middle'},
-            {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle'},
+        {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.couponServiceType === 1){
+                    return '<span>通用型</span>'
+                }
+            }
+        },
+        {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.couponType === 1){
+                    return '<span>活动券</span>'
+                }else if (row.couponType === 2){
+                    return '<span>新人券</span>'
+                }
+            }
+        },
+        {title: '优惠券码', field: 'couponCode', visible: false, align: 'center', valign: 'middle'},
+        {title: '优惠券状态', field: 'couponStatus', visible: false, align: 'center', valign: 'middle'},
             {title: '条件金额', field: 'couponConditionalAmount', visible: true, align: 'center', valign: 'middle'},
             {title: '优惠金额', field: 'couponPreferentialAmount', visible: true, align: 'center', valign: 'middle'},
-            {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
-            {title: '赠送数量', field: 'couponSendQuantity', visible: true, align: 'center', valign: 'middle'}
+            {title: '有效期', field: 'couponValidity', visible: false, align: 'center', valign: 'middle'},
+            {title: '赠送数量', field: 'couponSendQuantity', visible: false, align: 'center', valign: 'middle'}
     ];
 };
 
@@ -104,6 +118,7 @@
         });
         ajax.setData({
             userIds:$("#userIds").val(),
+            couponId:this.seItem.id,
             couponName:this.seItem.couponName
         })
         ajax.start();
@@ -133,13 +148,13 @@
  */
 TCoupon.search = function () {
     var queryData = {};
-    queryData['condition'] = $("#condition").val();
+    queryData['couponName'] = $("#couponName").val();
     TCoupon.table.refresh({query: queryData});
 };
 
 $(function () {
     var defaultColunms = TCoupon.initColumn();
-    var table = new BSTable(TCoupon.id, "/tCoupon/list", defaultColunms);
+    var table = new BSTable(TCoupon.id, "/tCoupon/activityCouponList", defaultColunms);
     table.setPaginationType("client");
     TCoupon.table = table.init();
 });
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js b/management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js
index 2041f60..01dae4c 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js
@@ -14,9 +14,16 @@
 TCoupon.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
-            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
-            {title: '创建时间', field: 'createTime', 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: 'couponName', visible: true, align: 'center', valign: 'middle'},
+        {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.couponServiceType === 1){
+                    return '<span>通用型</span>'
+                }
+            }
+        },
             {title: '优惠券类型', field: 'couponType', visible: true, align: 'center', valign: 'middle',
                 formatter: function (value, row) {
                     if (row.couponType === 1){
@@ -26,8 +33,8 @@
                     }
                 }
             },
-            {title: '优惠券码', field: 'couponCode', visible: true, align: 'center', valign: 'middle'},
-            {title: '优惠券状态', field: 'couponStatus', visible: true, align: 'center', valign: 'middle',
+            {title: '优惠券码', field: 'couponCode', visible: false, align: 'center', valign: 'middle'},
+            {title: '优惠券状态', field: 'couponStatus', visible: false, align: 'center', valign: 'middle',
                 formatter: function (value, row) {
                     if (row.couponStatus === 1){
                         return '<span>未发放</span>'
@@ -40,17 +47,10 @@
                     }
                 }
             },
-            {title: '服务类型', field: 'couponServiceType', visible: true, align: 'center', valign: 'middle',
-                formatter: function (value, row) {
-                    if (row.couponServiceType === 1){
-                        return '<span>通用型</span>'
-                    }
-                }
-            },
             {title: '条件金额', field: 'couponConditionalAmount', visible: true, align: 'center', valign: 'middle'},
             {title: '优惠金额', field: 'couponPreferentialAmount', visible: true, align: 'center', valign: 'middle'},
-            {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
-            {title: '赠送数量', field: 'couponSendQuantity', visible: true, align: 'center', valign: 'middle'},
+        {title: '数量', field: 'couponCount', visible: true, align: 'center', valign: 'middle'},
+        {title: '有效期', field: 'couponValidity', visible: true, align: 'center', valign: 'middle'},
             {title: '状态', field: 'couponState', visible: true, align: 'center', valign: 'middle',
                 formatter: function (value, row) {
                     if (row.couponState === 1){
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
index ab958df..625223d 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tDriver/tDriver_info.js
@@ -2,7 +2,60 @@
  * 初始化详情对话框
  */
 var TDriverInfoDlg = {
-    tDriverInfoData : {}
+    tDriverInfoData : {},
+    validateFields: {
+        name: {
+            validators: {
+                notEmpty: {
+                    message: '姓名不能为空'
+                }
+            }
+        },
+        phone: {
+            validators: {
+                notEmpty: {
+                    message: '手机号不能为空'
+                }
+            }
+        },
+        emergencyContact: {
+            validators: {
+                notEmpty: {
+                    message: '紧急联系人姓名不能为空'
+                }
+            }
+        },
+        emergencyPhone: {
+            validators: {
+                notEmpty: {
+                    message: '紧急联系人电话不能为空'
+                }
+            }
+        },
+        area: {
+            validators: {
+                notEmpty: {
+                    message: '请选择服务区域'
+                }
+            }
+        },
+        idcard: {
+            validators: {
+                notEmpty: {
+                    message: '身份证号码不能为空'
+                }
+            }
+        },
+    }
+};
+
+/**
+ * 验证数据是否为空
+ */
+TDriverInfoDlg.validate = function () {
+    $('#driverInfoForm').data("bootstrapValidator").resetForm();
+    $('#driverInfoForm').bootstrapValidator('validate');
+    return $("#driverInfoForm").data('bootstrapValidator').isValid();
 };
 
 /**
@@ -91,6 +144,28 @@
     this.clearData();
     this.collectData();
 
+    if(!this.validate()){
+        return ;
+    }
+
+    var idcardFront = $("#idcardFront").val();
+    if ("" == idcardFront){
+        Feng.info("请上传身份证正面照");
+        return;
+    }
+
+    var idcardBack = $("#idcardBack").val();
+    if ("" == idcardBack){
+        Feng.info("请上传身份证背面照");
+        return;
+    }
+
+    var driverLicense = $("#driverLicense").val();
+    if ("" == driverLicense){
+        Feng.info("请上传驾驶证");
+        return;
+    }
+
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tDriver/add", function(data){
         if(data.code == 500){
@@ -115,6 +190,28 @@
     this.clearData();
     this.collectData();
 
+    if(!this.validate()){
+        return ;
+    }
+
+    var idcardFront = $("#idcardFront").val();
+    if ("" == idcardFront){
+        Feng.info("请上传身份证正面照");
+        return;
+    }
+
+    var idcardBack = $("#idcardBack").val();
+    if ("" == idcardBack){
+        Feng.info("请上传身份证背面照");
+        return;
+    }
+
+    var driverLicense = $("#driverLicense").val();
+    if ("" == driverLicense){
+        Feng.info("请上传驾驶证");
+        return;
+    }
+
     //提交信息
     var ajax = new $ax(Feng.ctxPath + "/tDriver/update", function(data){
         if(data.code == 500){
@@ -132,5 +229,5 @@
 }
 
 $(function() {
-
+    Feng.initValidator("driverInfoForm", TDriverInfoDlg.validateFields);
 });
diff --git a/management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js b/management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js
index ad138fe..0fe960c 100644
--- a/management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js
+++ b/management/guns-admin/src/main/webapp/static/modular/system/tEvaluate/tEvaluate.js
@@ -14,13 +14,38 @@
 TEvaluate.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
-            {title: '主键', field: 'id', visible: true, align: 'center', valign: 'middle'},
-            {title: '订单id', field: 'orderId', visible: true, align: 'center', valign: 'middle'},
-            {title: '用户id', field: 'userId', visible: true, align: 'center', valign: 'middle'},
-            {title: '评分', field: 'score', visible: true, align: 'center', valign: 'middle'},
-            {title: '评价内容', field: 'evaluate', 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: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
+            {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
+            {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
+            {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
+        {title: '评价时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
+
+        {title: '订单编号', field: 'code', visible: true, align: 'center', valign: 'middle'},
+        {title: '评论用户', field: 'userName', visible: true, align: 'center', valign: 'middle'},
+        {title: '评论用户手机号', field: 'userPhone', visible: true, align: 'center', valign: 'middle'},
+        {title: '评论司机', field: 'driverName', visible: true, align: 'center', valign: 'middle'},
+        {title: '司机手机号', field: 'driverPhone', visible: true, align: 'center', valign: 'middle'},
+        {title: '评价分数', field: 'score', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row) {
+                if (row.score === 1){
+                    return '<span>非常差</span>'
+                }else if (row.score === 2){
+                    return '<span>差</span>'
+                }else if (row.score === 3){
+                    return '<span>一般</span>'
+                }else if (row.score === 4){
+                    return '<span>满意</span>'
+                }else if (row.score === 5){
+                    return '<span>非常满意</span>'
+                }
+            }
+        },
+        {title: '评价内容', field: 'evaluate', visible: true, align: 'center', valign: 'middle'},
+        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
+            formatter: function (value, row) {
+                return '<a href="#" onclick="TEvaluate.searchTAppUserDetail('+row.id+')" style="color:blue">详情</a>'
+            }
+        }
     ];
 };
 
@@ -71,6 +96,21 @@
 };
 
 /**
+ * 打开查看详情(使用中)
+ */
+TEvaluate.searchTAppUserDetail = function (id) {
+    var index = layer.open({
+        type: 2,
+        title: '详情',
+        area: ['100%', '100%'], //宽高
+        fix: false, //不固定
+        maxmin: true,
+        content: Feng.ctxPath + '/tEvaluate/evaluateDetail?evaluateId=' + id
+    });
+    this.layerIndex = index;
+};
+
+/**
  * 删除
  */
 TEvaluate.delete = function () {
@@ -87,14 +127,47 @@
 };
 
 /**
+ * 订单信息导出
+ */
+TEvaluate.export=function(){
+    var createTime=$("#createTime").val()
+    var userName=$("#userName").val()
+    var driverName=$("#driverName").val()
+    var orderType=$("#orderType").val()
+    var score=$("#score").val()
+    window.location.href=Feng.ctxPath + "/tEvaluate/export?createTime="+createTime
+        +"&userName="+userName
+        +"&driverName="+driverName
+        +"&orderType="+orderType
+        +"&score="+score
+    ;
+}
+
+/**
  * 查询列表
  */
 TEvaluate.search = function () {
     var queryData = {};
-    queryData['condition'] = $("#condition").val();
+    queryData['createTime'] = $("#createTime").val();
+    queryData['userName'] = $("#userName").val();
+    queryData['driverName'] = $("#driverName").val();
+    queryData['orderType'] = $("#orderType").val();
+    queryData['score'] = $("#score").val();
     TEvaluate.table.refresh({query: queryData});
 };
 
+/**
+ * 重置
+ */
+TEvaluate.resetSearch = function (){
+    $("#createTime").val('');
+    $("#userName").val('');
+    $("#driverName").val('');
+    $("#orderType").val('');
+    $("#score").val('');
+    TEvaluate.search();
+}
+
 $(function () {
     var defaultColunms = TEvaluate.initColumn();
     var table = new BSTable(TEvaluate.id, "/tEvaluate/list", defaultColunms);

--
Gitblit v1.7.1