xuhy
2023-03-01 2fa574ff399acc86528ebe8dd916e6866a3b7df7
订单管理详情,优推管理
16个文件已修改
20个文件已添加
2236 ■■■■■ 已修改文件
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCancelOrderController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCancelOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TUserToCouponMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TYouTuiMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TUserToCouponMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TYouTuiMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUserToCoupon.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TYouTui.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCancelOrderService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITUserToCouponService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITYouTuiService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TUserToCouponServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TYouTuiServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrderDetail.html 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderExceptionDetail.html 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_edit.html 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tCancelOrder.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderException.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui.js 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui_info.js 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCancelOrderController.java
@@ -68,6 +68,15 @@
    }
    /**
     * 跳转详情页面
     */
    @RequestMapping("/cancelOrderDetail")
    public String cancelOrderDetail(Integer cancelOrderId, Model model) {
        tCancelOrderService.cancelOrderDetail(cancelOrderId,model);
        return PREFIX + "tCancelOrderDetail.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
@@ -91,6 +100,15 @@
                            String driverName) {
        return tCancelOrderService.getCancelOrderList(createTime, code, source, userName, userPhone, state, driverName);
    }
    /**
     * 获取取消订单列表(订单异常详情页面使用)
     */
    @ApiOperation(value = "获取取消订单列表(订单异常详情页面使用)")
    @RequestMapping(value = "/userCancelOrderList")
    @ResponseBody
    public Object userCancelOrderList(Integer userId,Integer orderId) {
        return tCancelOrderService.userCancelOrderList(userId,orderId);
    }
    /**
     * 新增
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCouponController.java
@@ -6,9 +6,11 @@
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.TAgent;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hdf.extractor.TC;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
@@ -146,6 +148,33 @@
    }
    /**
     * 修改优惠券状态
     */
    @RequestMapping(value = "/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TCoupon tCoupon = tCouponService.selectById(id);
        // 查询已启用的新人券数量
        int count = tCouponService.selectCount(new EntityWrapper<TCoupon>().eq("coupon_state", 1)
                .eq("coupon_type",2));
        // 判断是否为新人券,新人券只可启用一条记录
        if(count > 0 && 2 == tCoupon.getCouponType() && 2 == status){
            return new SuccessTip(500,"已有启动的新人券!");
        }
        if(1 == status){
            tCoupon.setCouponState(2);
        }
        if(2 == status){
            tCoupon.setCouponState(1);
        }
        tCouponService.updateById(tCoupon);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -122,6 +122,24 @@
    }
    /**
     * 跳转详情页面
     */
    @RequestMapping("/orderDetail")
    public String orderDetail(Integer orderId, Model model) {
        tOrderService.orderDetail(orderId,model);
        return PREFIX + "tOrderDetail.html";
    }
    /**
     * 跳转异常详情页面
     */
    @RequestMapping("/orderExceptionDetail")
    public String orderExceptionDetail(Integer orderId, Model model) {
        tOrderService.orderExceptionDetail(orderId,model);
        return PREFIX + "tOrderExceptionDetail.html";
    }
    /**
     * 获取列表
     */
    @ApiOperation(value = "用户获取订单列表")
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java
New file
@@ -0,0 +1,157 @@
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.base.tips.SuccessTip;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.model.TAgent;
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.TYouTui;
import com.stylefeng.guns.modular.system.service.ITYouTuiService;
import java.util.Date;
import java.util.Objects;
/**
 * 控制器
 *
 * @author fengshuonan
 * @Date 2023-03-01 16:17:43
 */
@Controller
@RequestMapping("/tYouTui")
public class TYouTuiController extends BaseController {
    private String PREFIX = "/system/tYouTui/";
    @Autowired
    private ITYouTuiService tYouTuiService;
    /**
     * 跳转到首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "tYouTui.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tYouTui_add")
    public String tYouTuiAdd() {
        return PREFIX + "tYouTui_add.html";
    }
    /**
     * 跳转到修改
     */
    @RequestMapping("/tYouTui_update/{tYouTuiId}")
    public String tYouTuiUpdate(@PathVariable Integer tYouTuiId, Model model) {
        TYouTui tYouTui = tYouTuiService.selectById(tYouTuiId);
        model.addAttribute("item",tYouTui);
        LogObjectHolder.me().set(tYouTui);
        return PREFIX + "tYouTui_edit.html";
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
    public Object list(String createTime,Integer type) {
        EntityWrapper<TYouTui> wrapper = new EntityWrapper<>();
        if(Objects.nonNull(type)){
            wrapper.eq("type",type);
        }
        // 开始,结束时间
        if(StringUtils.hasLength(createTime)){
            String[] split = createTime.split(" - ");
            Date startTime = DateUtil.getDate_str4(split[0]);
            Date endTime = DateUtil.getDate_str4(split[1]);
            wrapper.between("createTime",startTime,endTime);
        }
        return tYouTuiService.selectList(wrapper);
    }
    /**
     * 获取列表
     */
    @RequestMapping(value = "/list-back")
    @ResponseBody
    public Object listBack(String condition) {
        return tYouTuiService.selectList(null);
    }
    /**
     * 新增
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Object add(TYouTui tYouTui) {
        tYouTui.setContent(tYouTui.getServiceContent());
        tYouTuiService.insert(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 删除
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Object delete(@RequestParam Integer tYouTuiId) {
        TYouTui tYouTui = tYouTuiService.selectById(tYouTuiId);
        if(1 == tYouTui.getStatus()){
            return new SuccessTip(500,"启用下的优推不可删除!");
        }
        tYouTuiService.deleteById(tYouTuiId);
        return SUCCESS_TIP;
    }
    /**
     * 修改用户状态
     */
    @RequestMapping(value = "/update-status")
    @ResponseBody
    public Object updateStatus(Integer id,Integer status) {
        TYouTui tYouTui = tYouTuiService.selectById(id);
        if(1 == status){
            tYouTui.setStatus(2);
        }
        if(2 == status){
            tYouTui.setStatus(1);
        }
        tYouTuiService.updateById(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 修改
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Object update(TYouTui tYouTui) {
        tYouTuiService.updateById(tYouTui);
        return SUCCESS_TIP;
    }
    /**
     * 详情
     */
    @RequestMapping(value = "/detail/{tYouTuiId}")
    @ResponseBody
    public Object detail(@PathVariable("tYouTuiId") Integer tYouTuiId) {
        return tYouTuiService.selectById(tYouTuiId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TCancelOrderMapper.java
@@ -34,4 +34,12 @@
    List<TOrderResp> getCancelOrderList(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("code") String code,
                                        @Param("source") Integer source, @Param("userName")String userName, @Param("userPhone")String userPhone,
                                        @Param("state")Integer state, @Param("driverName")String driverName);
    /**
     * 订单异常详情页面的取消记录列表
     * @param userId
     * @param orderId
     * @return
     */
    List<TOrderResp> userCancelOrderList(@Param("userId") Integer userId,@Param("orderId") Integer orderId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TUserToCouponMapper.java
New file
@@ -0,0 +1,18 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * <p>
 * 用户优惠券中间表 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
@Mapper
public interface TUserToCouponMapper extends BaseMapper<TUserToCoupon> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TYouTuiMapper.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.dao;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 * 优推 Mapper 接口
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
public interface TYouTuiMapper extends BaseMapper<TYouTui> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TCancelOrderMapper.xml
@@ -55,5 +55,20 @@
        </where>
        ORDER BY co.createTime
    </select>
    <select id="userCancelOrderList" resultType="com.stylefeng.guns.modular.system.controller.resp.TOrderResp">
        select co.createTime,o.code,o.startAddress,o.endAddress
        from t_cancel_order co
        left join t_order o  on co.orderId = o.id
        <where>
            <if test="userId != null">
                AND co.userId = #{userId}
            </if>
            <if test="orderId != null">
                AND co.orderId = #{orderId}
            </if>
            AND co.userType = 1
        </where>
        ORDER BY co.createTime DESC
    </select>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TUserToCouponMapper.xml
New file
@@ -0,0 +1,22 @@
<?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.TUserToCouponMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TUserToCoupon">
        <id column="id" property="id" />
        <result column="userId" property="userId" />
        <result column="couponId" property="couponId" />
        <result column="couponTotal" property="couponTotal" />
        <result column="validCount" property="validCount" />
        <result column="expireTime" property="expireTime" />
        <result column="createTime" property="createTime" />
        <result column="status" property="status" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, userId, couponId, couponTotal, validCount, expireTime, createTime, status
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TYouTuiMapper.xml
New file
@@ -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.TYouTuiMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TYouTui">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="type" property="type" />
        <result column="number" property="number" />
        <result column="integral" property="integral" />
        <result column="effectiveTime" property="effectiveTime" />
        <result column="content" property="content" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, name, type, number, integral, effectiveTime, content, status, createTime
    </sql>
</mapper>
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrder.java
@@ -177,6 +177,17 @@
    @ApiModelProperty(value = "恶劣天气超出费")
    private BigDecimal overBadWeatherPrice;
    @ApiModelProperty(value = "折扣优惠金额")
    private BigDecimal discountAmount;
    public BigDecimal getDiscountAmount() {
        return discountAmount;
    }
    public void setDiscountAmount(BigDecimal discountAmount) {
        this.discountAmount = discountAmount;
    }
    public Double getStartDistance() {
        return startDistance;
    }
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUserToCoupon.java
New file
@@ -0,0 +1,152 @@
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-02-28
 */
@TableName("t_user_to_coupon")
public class TUserToCoupon extends Model<TUserToCoupon> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 优惠券id
     */
    private Integer couponId;
    /**
     * 领取总数量
     */
    private Integer couponTotal;
    /**
     * 有效数量
     */
    private Integer validCount;
    /**
     * 过期时间
     */
    private Date expireTime;
    /**
     * 创建时间-领取时间
     */
    private Date createTime;
    /**
     * 状态 1正常 2冻结 3删除
     */
    private Integer status;
    /**
     * 过期数量
     */
    private Integer expireCount;
    public Integer getExpireCount() {
        return expireCount;
    }
    public void setExpireCount(Integer expireCount) {
        this.expireCount = expireCount;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public Integer getCouponTotal() {
        return couponTotal;
    }
    public void setCouponTotal(Integer couponTotal) {
        this.couponTotal = couponTotal;
    }
    public Integer getValidCount() {
        return validCount;
    }
    public void setValidCount(Integer validCount) {
        this.validCount = validCount;
    }
    public Date getExpireTime() {
        return expireTime;
    }
    public void setExpireTime(Date expireTime) {
        this.expireTime = expireTime;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "TUserToCoupon{" +
        "id=" + id +
        ", userId=" + userId +
        ", couponId=" + couponId +
        ", couponTotal=" + couponTotal +
        ", validCount=" + validCount +
        ", expireTime=" + expireTime +
        ", createTime=" + createTime +
        ", status=" + status +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TYouTui.java
New file
@@ -0,0 +1,176 @@
package com.stylefeng.guns.modular.system.model;
import com.baomidou.mybatisplus.annotations.TableField;
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 io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
 * <p>
 * 优推
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
@TableName("t_you_tui")
public class TYouTui extends Model<TYouTui> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 名称
     */
    private String name;
    /**
     * 优推类型(1=次数,2=小时)
     */
    private Integer type;
    /**
     * 优推值
     */
    private Integer number;
    /**
     * 所需积分
     */
    private Integer integral;
    /**
     * 有效天数
     */
    private Integer effectiveTime;
    /**
     * 服务内容
     */
    private String content;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    private Date createTime;
    @ApiModelProperty(value = "优推距离")
    private Integer distance;
    @TableField(exist = false)
    private String serviceContent;
    public String getServiceContent() {
        return serviceContent;
    }
    public void setServiceContent(String serviceContent) {
        this.serviceContent = serviceContent;
    }
    public Integer getDistance() {
        return distance;
    }
    public void setDistance(Integer distance) {
        this.distance = distance;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public Integer getNumber() {
        return number;
    }
    public void setNumber(Integer number) {
        this.number = number;
    }
    public Integer getIntegral() {
        return integral;
    }
    public void setIntegral(Integer integral) {
        this.integral = integral;
    }
    public Integer getEffectiveTime() {
        return effectiveTime;
    }
    public void setEffectiveTime(Integer effectiveTime) {
        this.effectiveTime = effectiveTime;
    }
    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 "TYouTui{" +
        "id=" + id +
        ", name=" + name +
        ", type=" + type +
        ", number=" + number +
        ", integral=" + integral +
        ", effectiveTime=" + effectiveTime +
        ", content=" + content +
        ", status=" + status +
        ", createTime=" + createTime +
        "}";
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITCancelOrderService.java
@@ -3,6 +3,7 @@
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TCancelOrder;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
@@ -30,4 +31,17 @@
     */
    List<TOrderResp> getCancelOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName);
    /**
     * 跳转详情页面
     * @param cancelOrderId
     * @param model
     */
    void cancelOrderDetail(Integer cancelOrderId, Model model);
    /**
     *
     * @param userId
     * @return
     */
    List<TOrderResp> userCancelOrderList(Integer userId,Integer orderId);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderService.java
@@ -4,6 +4,7 @@
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.ui.Model;
import java.util.List;
@@ -29,4 +30,18 @@
     * @return
     */
    List<TOrderResp> getOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName,Integer isException);
    /**
     * 跳转详情页面
     * @param orderId
     * @param model
     */
    void orderDetail(Integer orderId, Model model);
    /**
     * 跳转异常详情页面
     * @param orderId
     * @param model
     */
    void orderExceptionDetail(Integer orderId, Model model);
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITUserToCouponService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 用户优惠券中间表 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
public interface ITUserToCouponService extends IService<TUserToCoupon> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITYouTuiService.java
New file
@@ -0,0 +1,16 @@
package com.stylefeng.guns.modular.system.service;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 * 优推 服务类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
public interface ITYouTuiService extends IService<TYouTui> {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TCancelOrderServiceImpl.java
@@ -5,10 +5,13 @@
import com.stylefeng.guns.modular.system.dao.TCancelOrderMapper;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.service.ITOrderService;
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;
/**
@@ -24,6 +27,8 @@
    @Autowired
    private TCancelOrderMapper tCancelOrderMapper;
    @Autowired
    private ITOrderService tOrderService;
    @Override
    public List<TOrderResp> getCancelOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName) {
@@ -37,4 +42,21 @@
        }
        return tCancelOrderMapper.getCancelOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName);
    }
    @Override
    public void cancelOrderDetail(Integer cancelOrderId, Model model) {
        // 查询取消订单记录
        TCancelOrder tCancelOrder = tCancelOrderMapper.selectById(cancelOrderId);
        model.addAttribute("cancelTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tCancelOrder.getCreateTime()));
        model.addAttribute("cause",tCancelOrder.getCause());
        tOrderService.orderDetail(tCancelOrder.getOrderId(),model);
    }
    @Override
    public List<TOrderResp> userCancelOrderList(Integer userId,Integer orderId) {
        return tCancelOrderMapper.userCancelOrderList(userId,orderId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -3,16 +3,25 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
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.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TBranchOffice;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.dao.TOrderMapper;
import com.stylefeng.guns.modular.system.service.ITOrderService;
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.Date;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -27,6 +36,12 @@
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TAppUserMapper tAppUserMapper;
    @Autowired
    private TDriverMapper tDriverMapper;
    @Autowired
    private TBranchOfficeMapper tBranchOfficeMapper;
    @Override
    public List<TOrderResp> getOrderList(String createTime, String code, Integer source, String userName, String userPhone, Integer state, String driverName,Integer isException) {
@@ -40,4 +55,52 @@
        }
        return tOrderMapper.getOrderList(startTime,endTime,code,source,userName,userPhone,state,driverName,isException);
    }
    @Override
    public void orderDetail(Integer orderId, Model model) {
        // 订单信息
        TOrder tOrder = tOrderMapper.selectById(orderId);
        model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getCreateTime()));//下单时间
        model.addAttribute("code",tOrder.getCode());//订单编号
        model.addAttribute("source",tOrder.getSource());//订单来源
        model.addAttribute("startAddress",tOrder.getStartAddress());//起点
        model.addAttribute("endAddress",tOrder.getEndAddress());//终点
        model.addAttribute("startTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getStartTime()));//乘车时间
        model.addAttribute("boardingTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getBoardingTime()));//上车时间
        model.addAttribute("getoffTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getGetoffTime()));//下车时间
        model.addAttribute("startPrice",tOrder.getStartPrice());//起步价
        model.addAttribute("overDrivePrice",tOrder.getOverDrivePrice());//里程费
        model.addAttribute("waitTimePrice",tOrder.getWaitTimePrice());//等待费
        model.addAttribute("badWeatherPrice",tOrder.getBadWeatherPrice());//恶劣天气费用
        model.addAttribute("orderMoney",tOrder.getOrderMoney());//实际费用
        model.addAttribute("payMoney",tOrder.getPayMoney());//实际支付费用
        model.addAttribute("discountedPrice",tOrder.getDiscountedPrice());//优惠券抵扣费用
        model.addAttribute("payType",tOrder.getPayType());//支付方式
        model.addAttribute("discountAmount",tOrder.getDiscountAmount());//折扣金额
        model.addAttribute("userId",tOrder.getUserId());//用户id
        // 查询用户
        TAppUser tAppUser = tAppUserMapper.selectById(tOrder.getUserId());
        model.addAttribute("userName",tAppUser.getNickname());
        model.addAttribute("userPhone",tAppUser.getPhone());
        // 查询司机
        TDriver tDriver = tDriverMapper.selectById(tOrder.getDriverId());
        model.addAttribute("driverName",tDriver.getName());
        // 查询司机所属分公司
        TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tDriver.getBranchOfficeId());
        if(Objects.nonNull(tBranchOffice)){
            model.addAttribute("branchOfficeName",tBranchOffice.getPrincipal());
        }else {
            model.addAttribute("branchOfficeName","");
        }
    }
    @Override
    public void orderExceptionDetail(Integer orderId, Model model) {
        this.orderDetail(orderId,model);
        model.addAttribute("orderId",orderId);
    }
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TUserToCouponServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TUserToCoupon;
import com.stylefeng.guns.modular.system.dao.TUserToCouponMapper;
import com.stylefeng.guns.modular.system.service.ITUserToCouponService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户优惠券中间表 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-02-28
 */
@Service
public class TUserToCouponServiceImpl extends ServiceImpl<TUserToCouponMapper, TUserToCoupon> implements ITUserToCouponService {
}
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TYouTuiServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.stylefeng.guns.modular.system.service.impl;
import com.stylefeng.guns.modular.system.model.TYouTui;
import com.stylefeng.guns.modular.system.dao.TYouTuiMapper;
import com.stylefeng.guns.modular.system.service.ITYouTuiService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 优推 服务实现类
 * </p>
 *
 * @author stylefeng
 * @since 2023-03-01
 */
@Service
public class TYouTuiServiceImpl extends ServiceImpl<TYouTuiMapper, TYouTui> implements ITYouTuiService {
}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCancelOrder/tCancelOrderDetail.html
New file
@@ -0,0 +1,212 @@
@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>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</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>
                        <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-2 control-label form-group" >
                                <label class="control-label">所属机构:</label>
                                <label>${branchOfficeName}</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>${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-3 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>
                                <label>${cancelTime}</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="cause" style="width: 681px; height: 249px;" readonly>${cause}</textarea>
                                </div>
                            </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>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</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>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</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>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</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>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</label>
                                @}
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TCancelOrderInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tCancelOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tCancelOrder/tCancelOrder_info.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tCoupon/tCoupon_add.html
@@ -1,14 +1,14 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal">
        <div class="form-horizontal" id="couponInfoForm">
            <div class="row">
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券名称:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponName" name="couponName" type="text">
                            <input class="form-control" id="couponName" name="couponName" type="text" required>
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
@@ -17,9 +17,10 @@
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券类型:</label>
                        <select class="input-group col-sm-6" id="couponType" style="width: 180px;height: 33px" name="couponType">
                        <select class="input-group col-sm-6" id="couponType" name="couponType" required>
                            <option value="">请选择优惠券类型</option>
                            <option value="1">活动券</option>
                            <option value="2">优惠券</option>
                            <option value="2">新人券</option>
                        </select>
                    </div>
                    <div class="hr-line-dashed"></div>
@@ -28,7 +29,8 @@
                <div class="col-sm-12">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">服务类类型:</label>
                        <select class="input-group col-sm-6" id="couponServiceType" style="width: 180px;height: 33px" name="couponType">
                        <select class="input-group col-sm-6" id="couponServiceType" name="couponServiceType" required>
                            <option value="">请选择服务类型</option>
                            <option value="1">通用型</option>
                        </select>
                    </div>
@@ -39,7 +41,7 @@
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠券数量:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponCount" name="couponCount" type="text">
                            <input class="form-control" id="couponCount" name="couponCount" type="text" required>
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
@@ -49,7 +51,7 @@
                    <div class="form-group">
                        <label class="col-sm-3 control-label">条件金额:订单满</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponConditionalAmount" name="couponConditionalAmount" type="text">
                            <input class="form-control" id="couponConditionalAmount" name="couponConditionalAmount" type="text" required>
                        </div>
                        <label class="col-sm-2 control-label">可使用</label>
                    </div>
@@ -60,7 +62,7 @@
                    <div class="form-group">
                        <label class="col-sm-3 control-label">优惠金额:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponPreferentialAmount" name="couponPreferentialAmount" type="text">
                            <input class="form-control" id="couponPreferentialAmount" name="couponPreferentialAmount" type="text" required>
                        </div>
                    </div>
                    <div class="hr-line-dashed"></div>
@@ -70,7 +72,7 @@
                    <div class="form-group">
                        <label class="col-sm-3 control-label">有效期:</label>
                        <div class="col-sm-6">
                            <input class="form-control" id="couponValidity" name="couponValidity" type="text">
                            <input class="form-control" id="couponValidity" name="couponValidity" type="text" required>
                        </div>
                        <label class="col-sm-1 control-label">天</label>
                    </div>
@@ -87,6 +89,7 @@
                    </div>
                    <div class="hr-line-dashed"></div>
                </div>
            </div>
            <div class="row btn-group-m-t">
@@ -100,4 +103,6 @@
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tCoupon/tCoupon_info.js"></script>
<script type="text/javascript">
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
New file
@@ -0,0 +1,186 @@
@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>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</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>
                        <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-2 control-label form-group" >
                                <label class="control-label">所属机构:</label>
                                <label>${branchOfficeName}</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>${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-3 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>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</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>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</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>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</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>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</label>
                                @}
                            </div>
                        </div>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.close()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderExceptionDetail.html
New file
@@ -0,0 +1,190 @@
@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">
                        <input hidden id="userId" value="${userId}">
                        <input hidden id="orderId" value="${orderId}">
                        <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>
                                @if(source==1){
                                <label>小程序</label>
                                @}
                                @if(source==2){
                                <label>APP</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>
                        <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-2 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>
                        <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>
                        <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>
                                <label>${startPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >等待费:</label>
                                <label>${waitTimePrice}</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>
                                <label>${overDrivePrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >恶劣天气:</label>
                                <label>${badWeatherPrice}</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>
                                <label>${orderMoney}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >实际支付费用:</label>
                                <label>${payMoney}</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>
                                <label>${discountedPrice}</label>
                            </div>
                            <div class="initialLevel col-sm-3 control-label form-group"  >
                                <label class="control-label" >支付方式:</label>
                                @if(payType==1){
                                <label>微信支付</label>
                                @}
                                @if(payType==2){
                                <label>余额支付</label>
                                @}
                                @if(payType==3){
                                <label>线下收款</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/>
                        <#table id="TOrderExceptionDetailCancelOrderTable"/>
                        <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                            <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.closeException()" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderException.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js"></script>
<script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
<script type="text/javascript">
    $(function (){
        var queryData = {};
        queryData['userId'] = $("#userId").val();
        queryData['orderId'] = $("#orderId").val();
        TOrderExceptionDetailCancelOrder.table.refresh({query: queryData});
    })
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui.html
New file
@@ -0,0 +1,53 @@
@layout("/common/_container.html"){
<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>管理</h5>
            </div>
            <div class="ibox-content">
                <div class="row row-lg">
                    <div class="col-sm-12">
                        <div class="row">
                            <div class="col-sm-3">
                                <#TimeCon id="createTime" name="发布时间" />
                            </div>
                            <div class="col-sm-2">
                                <select class="input-group" id="type" style="width: 180px;height: 33px" name="type">
                                    <option value="">服务类类型</option>
                                    <option value="1">次数</option>
                                    <option value="2">小时</option>
                                </select>
                            </div>
                            <div class="col-sm-3">
                                <#button name="搜索" icon="fa-search" clickFun="TYouTui.search()"/>
                                <#button name="重置" icon="fa-trash" clickFun="TYouTui.resetSearch()"/>
                            </div>
                        </div>
                        <div class="hidden-xs" id="TYouTuiTableToolbar" role="group">
                            @if(shiro.hasPermission("/tYouTui/add")){
                                <#button name="添加" icon="fa-plus" clickFun="TYouTui.openAddTYouTui()"/>
                            @}
                            @if(shiro.hasPermission("/tYouTui/update")){
                                <#button name="修改" icon="fa-edit" clickFun="TYouTui.openTYouTuiDetail()" space="true"/>
                            @}
                            @if(shiro.hasPermission("/tYouTui/delete")){
                                <#button name="删除" icon="fa-remove" clickFun="TYouTui.delete()" space="true"/>
                            @}
                        </div>
                        <#table id="TYouTuiTable"/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#createTime',
        type: 'date',
        range: true
    });
</script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_add.html
New file
@@ -0,0 +1,79 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
    <div class="ibox-content">
        <div class="form-horizontal" id="youTuiInfoForm">
            <div class="row" style="text-align: left">
                <div class="col-sm-12">
                    <input hidden id="areaId" value="areaId">
                    <div class="initialLevel col-sm-12 control-label form-group" style="text-align: center">
                        <div class="initialLevel col-sm-6 control-label form-group"  >
                            <span style="color:red">*</span>
                            <label class="control-label" >优推名称:</label>
                            <input id="name" name="name" type="text" placeholder="最多20个字" maxlength="20" style="height: 30px" required>
                        </div>
                    </div>
                    <div class="initialLevel col-sm-12 control-label form-group">
                        <div class="initialLevel col-sm-6 control-label form-group" style="flex: auto" >
                            <span style="color:red">*</span>
                            <label class="control-label" >优推类型:</label>
                            <input id="number" name="number" type="number" placeholder="请输入0以上的数字" min="0" style="height: 30px" required>
                            <select id="type" name="type" style="height: 30px" required>
                                <option value="">请选择类型</option>
                                <option value="1">次数</option>
                                <option value="2">小时</option>
                            </select>
                        </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" >兑换条件:</label>
                            <input id="integral" name="integral" type="number" max="9999" placeholder="最多4位数" style="height: 30px" required>
                            <label>积分</label>
                        </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" >优推距离:</label>
                            <input id="distance" name="distance" type="number" placeholder="最多2000米" max="2000" style="height: 30px" required>
                            <label>米</label>
                        </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" >有效期:</label>
                            <input id="effectiveTime" name="effectiveTime" maxlength="4" placeholder="最多4位数" type="number" style="height: 30px" required>
                            <label>天</label>
                        </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" >服务内容:</label>
                            <textarea id="serviceContent" name="serviceContent" placeholder="请输入" style="height: 80px" required></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="TYouTuiInfoDlg.addSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TYouTuiInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui_info.js"></script>
@}
management/guns-admin/src/main/webapp/WEB-INF/view/system/tYouTui/tYouTui_edit.html
New file
@@ -0,0 +1,34 @@
@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="name" name="名称" value="${item.name}" underline="true"/>
                            <#input id="type" name="优推类型(1=次数,2=小时)" value="${item.type}" underline="true"/>
                            <#input id="number" name="优推值" value="${item.number}" underline="true"/>
                            <#input id="integral" name="所需积分" value="${item.integral}" />
                </div>
                <div class="col-sm-6">
                            <#input id="effectiveTime" name="有效天数" value="${item.effectiveTime}" underline="true"/>
                            <#input id="content" name="服务内容" value="${item.content}" underline="true"/>
                            <#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="TYouTuiInfoDlg.editSubmit()"/>
                    <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TYouTuiInfoDlg.close()"/>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="${ctxPath}/static/modular/system/tYouTui/tYouTui_info.js"></script>
@}
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon.js
@@ -64,10 +64,10 @@
            {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
                formatter: function (value, row) {
                    if (row.couponState === 1){
                        return '<a href="#" onclick="TCoupon.stop('+row.id+','+row.couponState+')" style="color:red">停用</a>' +'&nbsp;' +
                        return '<a href="#" onclick="TCoupon.updateStatus('+row.id+','+row.couponState+')" style="color:red">停用</a>' +'&nbsp;' +
                            '<a href="#" onclick="TCoupon.delete('+row.id+')" style="color:red">删除</a>'
                    }else if (row.couponState === 2){
                        return '<a href="#" onclick="TCoupon.start('+row.id+','+row.couponState+')" style="color:green">启用</a>' +'&nbsp;' +
                        return '<a href="#" onclick="TCoupon.updateStatus('+row.id+','+row.couponState+')" style="color:green">启用</a>' +'&nbsp;' +
                            '<a href="#" onclick="TCoupon.delete('+row.id+')" style="color:red">删除</a>'
                    }
                }
@@ -124,17 +124,33 @@
/**
 * 删除
 */
TCoupon.delete = function () {
    if (this.check()) {
TCoupon.delete = function (id) {
        var ajax = new $ax(Feng.ctxPath + "/tCoupon/delete", function (data) {
            Feng.success("删除成功!");
            TCoupon.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCouponId",this.seItem.id);
    ajax.set("tCouponId",id);
        ajax.start();
};
/**
 * 提交启用冻结
 */
TCoupon.updateStatus = function (id,couponState) {
    var ajax = new $ax(Feng.ctxPath + "/tCoupon/update-status?id="+id+'&status='+couponState, function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("修改成功!");
            TCoupon.table.refresh();
    }
    }, function (data) {
        Feng.error("修改失败!" + data.message + "!");
    });
    ajax.start();
};
/**
management/guns-admin/src/main/webapp/static/modular/system/tCoupon/tCoupon_info.js
@@ -2,7 +2,67 @@
 * 初始化详情对话框
 */
var TCouponInfoDlg = {
    tCouponInfoData : {}
    tCouponInfoData : {},
    validateFields: {
        couponName: {
            validators: {
                notEmpty: {
                    message: '优惠券名称不能为空'
                }
            }
        },
        couponType: {
            validators: {
                notEmpty: {
                    message: '优惠券类型不能为空'
                }
            }
        },
        couponServiceType: {
            validators: {
                notEmpty: {
                    message: '服务类类型不能为空'
                }
            }
        },
        couponCount: {
            validators: {
                notEmpty: {
                    message: '优惠券数量不能为空'
                }
            }
        },
        couponConditionalAmount: {
            validators: {
                notEmpty: {
                    message: '条件金额不能为空'
                }
            }
        },
        couponPreferentialAmount: {
            validators: {
                notEmpty: {
                    message: '优惠金额不能为空'
                }
            }
        },
        couponValidity: {
            validators: {
                notEmpty: {
                    message: '有效期不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TCouponInfoDlg.validate = function () {
    $('#couponInfoForm').data("bootstrapValidator").resetForm();
    $('#couponInfoForm').bootstrapValidator('validate');
    return $("#couponInfoForm").data('bootstrapValidator').isValid();
};
/**
@@ -65,6 +125,10 @@
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tCoupon/add", function(data){
        Feng.success("添加成功!");
@@ -98,5 +162,5 @@
}
$(function() {
    Feng.initValidator("couponInfoForm", TCouponInfoDlg.validateFields);
});
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tCancelOrder.js
@@ -41,7 +41,7 @@
            {title: '取消时间', field: 'createTime', visible: true, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TCancelOrder.searchTDriverDetail('+row.id+')" style="color:green">详情</a>'
                return '<a href="#" onclick="TCancelOrder.searchTCancelOrderDetail('+row.id+')" style="color:green">详情</a>'
            }
        }
    ];
@@ -94,6 +94,21 @@
};
/**
 * 打开查看详情(使用中)
 */
TCancelOrder.searchTCancelOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/cancelOrderDetail?cancelOrderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TCancelOrder.delete = function () {
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrder.js
@@ -81,7 +81,7 @@
        {title: '状态', field: 'status', visible: false, align: 'center', valign: 'middle'},
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                return '<a href="#" onclick="TOrder.searchTDriverDetail('+row.id+')" style="color:green">详情</a>'
                return '<a href="#" onclick="TOrder.searchTOrderDetail('+row.id+')" style="color:green">详情</a>'
            }
        }
    ];
@@ -134,6 +134,21 @@
};
/**
 * 打开查看详情(使用中)
 */
TOrder.searchTOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/orderDetail?orderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrder.delete = function () {
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderException.js
@@ -82,10 +82,10 @@
        {title: '操作', visible: true, align: 'center', valign: 'middle',width:150,
            formatter: function (value, row) {
                if (row.userStatus === 1){
                    return '<a href="#" onclick="TOrderException.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                    return '<a href="#" onclick="TOrderException.searchTOrderExceptionDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                        '<a href="#" onclick="TOrderException.stop('+row.id+','+row.status+')" style="color:red">冻结</a>'
                }else if (row.userStatus === 2){
                    return '<a href="#" onclick="TOrderException.searchTDriverDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                    return '<a href="#" onclick="TOrderException.searchTOrderExceptionDetail('+row.id+')" style="color:green">详情</a>' +'&nbsp;' +
                        '<a href="#" onclick="TOrderException.start('+row.id+','+row.status+')" style="color:green">启用</a>'
                }
            }
@@ -140,6 +140,21 @@
};
/**
 * 打开查看详情(使用中)
 */
TOrderException.searchTOrderExceptionDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tOrder/orderExceptionDetail?orderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrderException.delete = function () {
management/guns-admin/src/main/webapp/static/modular/system/tOrder/tOrderExceptionDetailCancelOrder.js
New file
@@ -0,0 +1,137 @@
/**
 * 管理初始化
 */
var TOrderExceptionDetailCancelOrder = {
    id: "TOrderExceptionDetailCancelOrderTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TOrderExceptionDetailCancelOrder.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {title: '主键', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '下单时间', field: 'placeTime', 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: 'source', visible: false, align: 'center', valign: 'middle',
            formatter: function (value, row) {
                if (row.source === 1){
                    return '<span>小程序</span>'
                }else if (row.source === 2){
                    return '<span>司机创建</span>'
                }
            }},
        {title: '下单用户昵称', field: 'userName', visible: false, align: 'center', valign: 'middle'},
        {title: '下单用户手机', field: 'userPhone', visible: false, align: 'center', valign: 'middle'},
        {title: '起点地址', field: 'startAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '终点地址', field: 'endAddress', visible: true, align: 'center', valign: 'middle'},
        {title: '接单司机', field: 'driverName', visible: false, align: 'center', valign: 'middle'},
        {title: '司机电话', field: 'driverPhone', visible: false, align: 'center', valign: 'middle'},
        {title: '订单id', field: 'orderId', visible: false, align: 'center', valign: 'middle'},
        {title: '用户类型(1=用户,2=司机)', field: 'userType', visible: false, align: 'center', valign: 'middle'},
        {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'},
        {title: '转单原因', field: 'cause', visible: false, align: 'center', valign: 'middle'},
        {title: '状态(1=正常,2=冻结,3=删除)', field: 'status', visible: false, align: 'center', valign: 'middle'},
    ];
};
/**
 * 检查是否选中
 */
TOrderExceptionDetailCancelOrder.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TOrderExceptionDetailCancelOrder.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TOrderExceptionDetailCancelOrder.openAddTCancelOrder = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['800px', '420px'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TOrderExceptionDetailCancelOrder.openTCancelOrderDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tCancelOrder/tCancelOrder_update/' + TCancelOrder.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 打开查看详情(使用中)
 */
TOrderExceptionDetailCancelOrder.searchTCancelOrderDetail = function (id) {
    var index = layer.open({
        type: 2,
        title: '详情',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tCancelOrder/cancelOrderDetail?cancelOrderId=' + id
    });
    this.layerIndex = index;
};
/**
 * 删除
 */
TOrderExceptionDetailCancelOrder.delete = function () {
    if (this.check()) {
        var ajax = new $ax(Feng.ctxPath + "/tCancelOrder/delete", function (data) {
            Feng.success("删除成功!");
            TCancelOrder.table.refresh();
        }, function (data) {
            Feng.error("删除失败!" + data.responseJSON.message + "!");
        });
        ajax.set("tCancelOrderId",this.seItem.id);
        ajax.start();
    }
};
/**
 * 查询列表
 */
/*TOrderExceptionDetailCancelOrder.search = function () {
    var queryData = {};
    queryData['userId'] = $("#userId").val();
    queryData['orderId'] = $("#orderId").val();
    TOrderExceptionDetailCancelOrder.table.refresh({query: queryData});
};*/
$(function () {
    var defaultColunms = TOrderExceptionDetailCancelOrder.initColumn();
    var table = new BSTable(TOrderExceptionDetailCancelOrder.id, "/tCancelOrder/userCancelOrderList", defaultColunms);
    table.setPaginationType("client");
    TOrderExceptionDetailCancelOrder.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui.js
New file
@@ -0,0 +1,166 @@
/**
 * 管理初始化
 */
var TYouTui = {
    id: "TYouTuiTable",    //表格id
    seItem: null,        //选中的条目
    table: null,
    layerIndex: -1
};
/**
 * 初始化表格的列
 */
TYouTui.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
            {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 row.number+'<span>次</span>'
                }else if (row.type === 2){
                    return row.number+'<span>小时</span>'
                }
            }
        },
        {title: '服务内容', field: 'content', visible: true, align: 'center', valign: 'middle'},
        {title: '兑换积分数', field: 'integral', visible: true, align: 'center', valign: 'middle'},
        {title: '优推值', field: 'number', visible: false, align: 'center', valign: 'middle'},
        {title: '优推距离(米)', field: 'distance', visible: true, align: 'center', valign: 'middle'},
        {title: '有效期', field: 'effectiveTime', visible: false, 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){
                    return '<a href="#" onclick="TYouTui.updateStatus('+row.id+','+row.status+')" style="color:red">冻结</a>' +'&nbsp;' +
                        '<a href="#" onclick="TYouTui.delete('+row.id+')" style="color:red">删除</a>'
                }else if (row.status === 2){
                    return '<a href="#" onclick="TYouTui.updateStatus('+row.id+','+row.status+')" style="color:green">解冻</a>' +'&nbsp;' +
                        '<a href="#" onclick="TYouTui.delete('+row.id+')" style="color:red">删除</a>'
                }
            }
        }
    ];
};
/**
 * 检查是否选中
 */
TYouTui.check = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length == 0){
        Feng.info("请先选中表格中的某一记录!");
        return false;
    }else{
        TYouTui.seItem = selected[0];
        return true;
    }
};
/**
 * 点击添加
 */
TYouTui.openAddTYouTui = function () {
    var index = layer.open({
        type: 2,
        title: '添加',
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tYouTui/tYouTui_add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看详情
 */
TYouTui.openTYouTuiDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: '详情',
            area: ['800px', '420px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tYouTui/tYouTui_update/' + TYouTui.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 删除
 */
TYouTui.delete = function (id) {
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/delete", function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("删除成功!");
            TYouTui.table.refresh();
        }
    }, function (data) {
        Feng.error("删除失败!" + data.responseJSON.message + "!");
    });
    ajax.set("tYouTuiId",id);
    ajax.start();
};
/**
 * 提交启用冻结
 */
TYouTui.updateStatus = function (id,status) {
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/update-status?id="+id+'&status='+status, function (data) {
        if(500 == data.code){
            Feng.error(data.message);
            return;
        }else {
            Feng.success("修改成功!");
            TYouTui.table.refresh();
        }
    }, function (data) {
        Feng.error("修改失败!" + data.message + "!");
    });
    ajax.start();
};
/**
 * 查询列表
 */
TYouTui.search = function () {
    var queryData = {};
    queryData['createTime'] = $("#createTime").val();
    queryData['type'] = $("#type").val();
    TYouTui.table.refresh({query: queryData});
};
/**
 * 重置
 */
TYouTui.resetSearch = function (){
    $("#createTime").val('');
    $("#type").val('');
    TYouTui.search();
}
$(function () {
    var defaultColunms = TYouTui.initColumn();
    var table = new BSTable(TYouTui.id, "/tYouTui/list", defaultColunms);
    table.setPaginationType("client");
    TYouTui.table = table.init();
});
management/guns-admin/src/main/webapp/static/modular/system/tYouTui/tYouTui_info.js
New file
@@ -0,0 +1,160 @@
/**
 * 初始化详情对话框
 */
var TYouTuiInfoDlg = {
    tYouTuiInfoData : {},
    validateFields: {
        name: {
            validators: {
                notEmpty: {
                    message: '优推名称不能为空'
                }
            }
        },
        type: {
            validators: {
                notEmpty: {
                    message: '优推类型不能为空'
                }
            }
        },
        integral: {
            validators: {
                notEmpty: {
                    message: '兑换条件不能为空'
                }
            }
        },
        distance: {
            validators: {
                notEmpty: {
                    message: '优推距离不能为空'
                }
            }
        },
        effectiveTime: {
            validators: {
                notEmpty: {
                    message: '有效期不能为空'
                }
            }
        },
        serviceContent: {
            validators: {
                notEmpty: {
                    message: '服务内容不能为空'
                }
            }
        },
    }
};
/**
 * 验证数据是否为空
 */
TYouTuiInfoDlg.validate = function () {
    $('#youTuiInfoForm').data("bootstrapValidator").resetForm();
    $('#youTuiInfoForm').bootstrapValidator('validate');
    return $("#youTuiInfoForm").data('bootstrapValidator').isValid();
};
/**
 * 清除数据
 */
TYouTuiInfoDlg.clearData = function() {
    this.tYouTuiInfoData = {};
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TYouTuiInfoDlg.set = function(key, val) {
    this.tYouTuiInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val;
    return this;
}
/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
TYouTuiInfoDlg.get = function(key) {
    return $("#" + key).val();
}
/**
 * 关闭此对话框
 */
TYouTuiInfoDlg.close = function() {
    parent.layer.close(window.parent.TYouTui.layerIndex);
}
/**
 * 收集数据
 */
TYouTuiInfoDlg.collectData = function() {
    this
    .set('id')
    .set('name')
    .set('type')
    .set('number')
    .set('integral')
    .set('effectiveTime')
    .set('content')
    .set('status')
    .set('distance')
    .set('serviceContent')
    .set('createTime');
}
/**
 * 提交添加
 */
TYouTuiInfoDlg.addSubmit = function() {
    this.clearData();
    this.collectData();
    if(!this.validate()){
        return ;
    }
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/add", function(data){
        Feng.success("添加成功!");
        window.parent.TYouTui.table.refresh();
        TYouTuiInfoDlg.close();
    },function(data){
        Feng.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tYouTuiInfoData);
    ajax.start();
}
/**
 * 提交修改
 */
TYouTuiInfoDlg.editSubmit = function() {
    this.clearData();
    this.collectData();
    //提交信息
    var ajax = new $ax(Feng.ctxPath + "/tYouTui/update", function(data){
        Feng.success("修改成功!");
        window.parent.TYouTui.table.refresh();
        TYouTuiInfoDlg.close();
    },function(data){
        Feng.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.tYouTuiInfoData);
    ajax.start();
}
$(function() {
    Feng.initValidator("youTuiInfoForm", TYouTuiInfoDlg.validateFields);
});