1. 程式人生 > 實用技巧 >客車網上售票系統(2)

客車網上售票系統(2)

一、今日完成任務

車票查詢

車票查詢分頁

預訂車票

提交訂單

付款、取消訂單

退票

二、核心原始碼:

1)車票查詢:根據出發地、目的地、出發日期查詢車票

//查詢 
    $("#searchBtn").click(function(){
        //ajax提交後臺
        $.ajax({
            type:"post",
            url:"search",
            data:{"begin_sta":$("#begin").val(),"end_sta":$("#cf").val(),"start_date":$("#time").val()},
            dataType:
"json", success:function(data){ $("#start_y").val(data[0].start); $("#start_c").val(data[0].count); $("#start_l").val(data[0].last); $("#tbody").html(""); $.each(data[1],function(i,item){ var
str="<tr><td>" + item.tnum + "</td><td>"+item.begin_sta+"</td><td>"+item.end_sta+ "</td><td>"+item.start_time+"</td><td>"+item.end_time+"</td><td>"+item.price+"</td><td>" +item.snum+"</td><td><a class='yd' href='yd/"+item.cid+"'>預訂</a></td></tr>"; $(
"#tbody").append(str); }); } }); });

dao

//根據出發地、目的地、出發日期  查票
    @Select("select c.*,t.tnum,t.seatnum from carinfo c,traininfo t where c.tid=t.tid and c.begin_sta=#{begin_sta} and c.end_sta=#{end_sta} and start_date=#{start_date}")
    public List<CarTrain> findByProperty(Carinfo car);

controller

//查票
    @RequestMapping(value="/search",produces={"application/json;charset=utf-8"})
    @ResponseBody
    public String serackCar(Carinfo car,HttpServletRequest request,Page page){
        PageHelper.offsetPage(page.getStart(), 5);
        List<CarTrain> list = carSerivce.findByProperty(car);
        System.out.println(list.size());
        //總數
        PageInfo<CarTrain> pageInfo=new PageInfo<CarTrain>(list);
        int total=(int) pageInfo.getTotal();
        page.caculateLast(total);
        
        JSONArray array=new JSONArray();
        array.add(page);
        array.add(list);
        return array.toString();
        
    }

(2)預訂車票 查詢列車資訊顯示到預訂頁面

//點選預訂查詢列車資訊
    @Select("select c.*,t.tnum,t.seatnum from carinfo c,traininfo t where c.tid=t.tid and c.cid=#{cid}")
    public CarTrain findByCid(int cid);

(3)提交訂單 在預訂頁面點選提交訂單,提交訂單需要新增一條訂單資訊,還需鎖定座位

//新增訂單
    @Insert("insert into orderinfo(cid,ucard,urealname,tel,oprice,state,odate,seatnum) values(#{cid},#{ucard},#{urealname},#{tel},#{oprice},#{state},#{odate},#{seatnum})")
    public int addOrder(Orderinfo orderinfo);
    
    //座位數減少
    @Update("update carinfo set snum=snum-1 where cid=#{cid}")
    public int updateSnum(int cid);

controller

//提交訂單
    @RequestMapping("/addOrder")
    public String addOrder(Orderinfo order,HttpServletRequest request){
        //獲取訂單提交時間
        Date date=new Date();
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        String d = format.format(date);
        
        order.setOdate(d);
        order.setState("0");//未支付
        
        int a = carSerivce.addOrder(order);
        carSerivce.updateSnum(order.getCid());
        //待確認訂單
        return "redirect:/confirmOrder";
    }

(4)付款、取消訂單 提交訂單後查詢待確認訂單(未付款訂單),在此頁面可以取消訂單和付款

取消訂單 mapperdao
//取消訂單
    //刪除訂單
    @Delete("delete from orderinfo where oid=#{oid}")
    public int delOrder(int oid);
    //座位數增加
    @Update("update carinfo set snum=snum+1 where cid=#{cid}")
    public int updateSnum2(int cid);

付款

//訂單編號查詢訂單
    @Select("select * from orderinfo where oid=#{oid}")
    public Orderinfo findOrderByOid(int oid);
    
    //付款 更改訂單狀態
    @Update("update orderinfo set state=1 where oid=#{oid}")
    public int updateOrderByOid(int oid);
    
    //新增車票資訊
    @Insert("insert into ticketinfo(oid) values(#{oid})")
    public int addTicket(int oid);

controller

@RequestMapping("/endOrder/{oid}")
    @ResponseBody
    public String endOrder(@PathVariable("oid")int oid){
        carSerivce.updateOrderByOid(oid);
        return oid+"";
    }

(5)退票 退票需要先查詢所有已付款訂單,然後需要在發車前兩小時錢退票

三、頁面展示:

四、遇到的問題:

1)業務流程不熟悉,花費時間較多

2)layui框架分頁等的使用不熟練

五、解決的方法:

1)瀏覽售票網站,參考功能設計

2)熟悉layui框架

六、專案燃盡圖更新: