lt14 7 years ago
parent
commit
cb64ddc91f

+ 40 - 5
src/main/java/com/example/cinema/bl/TicketService.java

@@ -1,6 +1,5 @@
 package com.example.cinema.bl;
 
-import com.example.cinema.po.Ticket;
 import com.example.cinema.vo.ResponseVO;
 import com.example.cinema.vo.TicketForm;
 
@@ -11,17 +10,53 @@ import java.util.List;
  * Created by liying on 2019/4/16.
  */
 public interface TicketService {
+    /**
+     * TODO:锁座【增加票但状态为未付款】
+     *
+     * @param ticketForm
+     * @return
+     */
     ResponseVO addTicket(TicketForm ticketForm);
 
+    /**
+     * TODO:完成购票【不使用会员卡】流程包括校验优惠券和根据优惠活动赠送优惠券
+     *
+     * @param id
+     * @param couponId
+     * @return
+     */
     ResponseVO completeTicket(List<Integer> id, int couponId);
 
+    /**
+     * 获得该场次的被锁座位和场次信息
+     *
+     * @param scheduleId
+     * @return
+     */
     ResponseVO getBySchedule(int scheduleId);
 
+    /**
+     * TODO:获得用户买过的票
+     *
+     * @param userId
+     * @return
+     */
     ResponseVO getTicketByUser(int userId);
 
-    ResponseVO completeByVIPCard(List<Integer> id,int couponId);
-
+    /**
+     * TODO:完成购票【使用会员卡】流程包括会员卡扣费、校验优惠券和根据优惠活动赠送优惠券
+     *
+     * @param id
+     * @param couponId
+     * @return
+     */
+    ResponseVO completeByVIPCard(List<Integer> id, int couponId);
+
+    /**
+     * TODO:取消锁座(只有状态是"锁定中"的可以取消)
+     *
+     * @param id
+     * @return
+     */
     ResponseVO cancelTicket(List<Integer> id);
-
-
 }

+ 5 - 113
src/main/java/com/example/cinema/blImpl/TicketServiceImpl.java

@@ -38,72 +38,13 @@ public class TicketServiceImpl implements TicketService {
     @Override
     @Transactional
     public ResponseVO addTicket(TicketForm ticketForm) {
-        List<SeatForm> seats = ticketForm.getSeats();
-        List<Ticket> tickets=new ArrayList<>();
-        for (SeatForm seat : seats) {
-            Ticket ticket = new Ticket();
-            ticket.setUserId(ticketForm.getUserId());
-            ticket.setScheduleId(ticketForm.getScheduleId());
-            ticket.setColumnIndex(seat.getColumnIndex());
-            ticket.setRowIndex(seat.getRowIndex());
-            ticket.setState(0);
-            if (ticketMapper.selectTicketByScheduleIdAndSeat(ticketForm.getScheduleId(), seat.getColumnIndex(), seat.getRowIndex()) != null) {
-                return ResponseVO.buildFailure("该位置已被占");
-            }
-            tickets.add(ticket);
-        }
-        try {
-            ticketMapper.insertTickets(tickets);
-            TicketWithCouponVO vo=new TicketWithCouponVO();
-            vo.setTicketVOList(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
-            ScheduleItem scheduleItem = scheduleMapper.selectScheduleById(tickets.get(0).getScheduleId());
-            double total=scheduleItem.getFare()*tickets.size();
-            vo.setTotal(total);
-            vo.setCoupons(couponMapper.selectCouponByUserAndAmount(tickets.get(0).getUserId(),total));
-            //  按电影优惠
-            List<ActivityVO> activityVOS=activityMapper.selectActivitiesByMovie(scheduleItem.getMovieId());
-            //  按时间优惠
-            List<ActivityVO> timeActivityVOS=activityMapper.selectActivitiesWithoutMovie();
-            activityVOS.addAll(timeActivityVOS);
-            vo.setActivities(activityVOS);
-            return ResponseVO.buildSuccess(vo);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseVO.buildFailure("失败");
-        }
-
+        return null;
     }
 
     @Override
     @Transactional
     public ResponseVO completeTicket(List<Integer> id, int couponId) {
-        try {
-            List<Ticket> tickets=updateState(id,1);
-            int userId=tickets.get(0).getUserId();
-            if (couponId != 0) {
-                couponMapper.deleteCouponUser(couponId, userId);
-            }
-            ScheduleItem schedule=scheduleMapper.selectScheduleById(tickets.get(0).getScheduleId());
-            //  按电影优惠
-            List<ActivityVO> activityVOS=activityMapper.selectActivitiesByMovie(schedule.getMovieId());
-            List<Integer> coupons=new ArrayList<>();
-            for (ActivityVO vo:activityVOS ) {
-                coupons.add(vo.getCoupon().getId());
-            }
-            //  按时间优惠
-            List<ActivityVO> timeActivityVOS=activityMapper.selectActivitiesWithoutMovie();
-            for (ActivityVO vo:timeActivityVOS ) {
-                coupons.add(vo.getCoupon().getId());
-            }
-            coupons=coupons.stream().distinct().collect(Collectors.toList());
-            for (Integer coupon : coupons) {
-                couponMapper.insertCouponUser(coupon,userId);
-            }
-            return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseVO.buildFailure("失败");
-        }
+        return null;
     }
 
     @Override
@@ -128,69 +69,20 @@ public class TicketServiceImpl implements TicketService {
 
     @Override
     public ResponseVO getTicketByUser(int userId) {
-        try {
-            List<TicketWithScheduleVO> vos = ticketMapper.selectTicketByUser(userId).stream().map(ticket -> {
-                TicketWithScheduleVO vo=ticket.getWithScheduleVO();
-                ScheduleItem scheduleItem=scheduleMapper.selectScheduleById(ticket.getScheduleId());
-                vo.setSchedule(scheduleItem);
-                return vo;
-            }).collect(Collectors.toList());
-            return ResponseVO.buildSuccess(vos);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseVO.buildFailure("失败");
-        }
+        return null;
     }
 
     @Override
     @Transactional
     public ResponseVO completeByVIPCard(List<Integer> id, int couponId) {
-        try {
-            Ticket ticket = ticketMapper.selectTicketById(id.get(0));
-            VIPCard vipCard = vipCardMapper.selectCardByUserId(ticket.getUserId());
-            ScheduleItem scheduleItem = scheduleMapper.selectScheduleById(ticket.getScheduleId());
-            double balance = vipCard.getBalance() - scheduleItem.getFare()*id.size();
-            if (couponId != 0) {
-                Coupon coupon = couponMapper.selectById(couponId);
-                if(scheduleItem.getFare()*id.size()<coupon.getTargetAmount()){
-                    return ResponseVO.buildFailure("未达到优惠券使用标准");
-                }
-
-                balance += coupon.getDiscountAmount();
-            }
-            if (balance < 0) {
-                return ResponseVO.buildFailure("会员卡余额不足");
-            }
-            vipCardMapper.updateCardBalance(vipCard.getId(), balance);
-            return completeTicket(id, couponId);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseVO.buildFailure("失败");
-        }
+        return null;
     }
 
     @Override
     public ResponseVO cancelTicket(List<Integer> id) {
-        try {
-            List<Ticket> tickets=updateState(id,2);
-
-            return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseVO.buildFailure("失败");
-        }
+        return null;
     }
 
-    private  List<Ticket>  updateState(List<Integer> id,int state){
-        List<Ticket> tickets=new ArrayList<>();
-        for (Integer i:id) {
-            ticketMapper.updateTicketState(i, state);
-            Ticket ticket = ticketMapper.selectTicketById(id.get(0));
-            tickets.add(ticket);
-        }
-        return tickets;
-
-    }
 
 
 }

+ 2 - 12
src/main/resources/static/js/userBuy.js

@@ -12,19 +12,9 @@ $(document).ready(function () {
             });
     }
 
+    // TODO:填空
     function renderTicketList(list) {
-        var ticketStr = '';
-        list.forEach(function (ticket) {
-            ticketStr += "<tr>" +
-                "<td>" + ticket.schedule.movieName + "</td>" +
-                "<td>" + ticket.schedule.hallName + "</td>" +
-                "<td>" + (ticket.rowIndex + 1) + "排" + (ticket.columnIndex + 1) + "座</td>" +
-                "<td>" + ticket.schedule.startTime.substring(5, 7) + "月" + ticket.schedule.startTime.substring(8, 10) + "日 " + ticket.schedule.startTime.substring(11, 16) + "</td>" +
-                "<td>" + ticket.schedule.endTime.substring(5, 7) + "月" + ticket.schedule.endTime.substring(8, 10) + "日 " + ticket.schedule.endTime.substring(11, 16) + "</td>" +
-                "<td>" + ticket.state + "</td>" +
-                "</tr>"
-        });
-        $('#ticket-body').html(ticketStr);
+
     }
 
 });

+ 68 - 41
src/main/resources/static/js/userMovieBuy.js

@@ -99,28 +99,72 @@ function seatClick(id, i, j) {
 }
 
 function orderConfirmClick() {
-    var seats = [];
-    for (let seat of selectedSeats) {
-        seats.push({rowIndex: seat[0], columnIndex: seat[1]});
-    }
-
-    // 锁座位
-    postRequest(
-        '/ticket/lockSeat',
-        {userId: sessionStorage.getItem('id'), scheduleId: scheduleId, seats: seats},
-        function (res) {
-            if (res.success) {
-                $('#seat-state').css("display", "none");
-                $('#order-state').css("display", "");
+    $('#seat-state').css("display", "none");
+    $('#order-state').css("display", "");
 
-                renderOrder(res.content);
-            } else {
-                alert(res.message);
+    // TODO:这里是假数据,需要连接后端获取真数据,数据格式可以自行修改,但如果改了格式,别忘了修改renderOrder方法
+    var orderInfo = {
+        "ticketVOList": [{
+            "id": 63,
+            "userId": 15,
+            "scheduleId": 67,
+            "columnIndex": 5,
+            "rowIndex": 1,
+            "state": "未完成"
+        }, {"id": 64, "userId": 15, "scheduleId": 67, "columnIndex": 6, "rowIndex": 1, "state": "未完成"}],
+        "total": 41.0,
+        "coupons": [{
+            "id": 5,
+            "description": "测试优惠券",
+            "name": "品质联盟",
+            "targetAmount": 30.0,
+            "discountAmount": 4.0,
+            "startTime": "2019-04-21T05:14:46.000+0800",
+            "endTime": "2019-04-25T05:14:51.000+0800"
+        }, {
+            "id": 5,
+            "description": "测试优惠券",
+            "name": "品质联盟",
+            "targetAmount": 30.0,
+            "discountAmount": 4.0,
+            "startTime": "2019-04-21T05:14:46.000+0800",
+            "endTime": "2019-04-25T05:14:51.000+0800"
+        }],
+        "activities": [{
+            "id": 4,
+            "name": "测试活动",
+            "description": "测试活动",
+            "startTime": "2019-04-21T00:00:00.000+0800",
+            "endTime": "2019-04-27T00:00:00.000+0800",
+            "movieList": [{
+                "id": 10,
+                "name": "夏目友人帐",
+                "posterUrl": "http://n.sinaimg.cn/translate/640/w600h840/20190312/ampL-hufnxfm4278816.jpg",
+                "director": "大森贵弘 /伊藤秀樹",
+                "screenWriter": "",
+                "starring": "神谷浩史 /井上和彦 /高良健吾 /小林沙苗 /泽城美雪",
+                "type": "动画",
+                "country": null,
+                "language": null,
+                "startDate": "2019-04-14T22:54:31.000+0800",
+                "length": 120,
+                "description": "在人与妖怪之间过着忙碌日子的夏目,偶然与以前的同学结城重逢,由此回忆起了被妖怪缠身的苦涩记忆。此时,夏目认识了在归还名字的妖怪记忆中出现的女性·津村容莉枝。和玲子相识的她,现在和独子椋雄一同过着平稳的生活。夏目通过与他们的交流,心境也变得平和。但这对母子居住的城镇,却似乎潜伏着神秘的妖怪。在调查此事归来后,寄生于猫咪老师身体的“妖之种”,在藤原家的庭院中,一夜之间就长成树结出果实。而吃掉了与自己形状相似果实的猫咪老师,竟然分裂成了3个",
+                "status": 0,
+                "islike": null,
+                "likeCount": null
+            }],
+            "coupon": {
+                "id": 8,
+                "description": "测试优惠券",
+                "name": "123",
+                "targetAmount": 100.0,
+                "discountAmount": 99.0,
+                "startTime": "2019-04-21T00:00:00.000+0800",
+                "endTime": "2019-04-27T00:00:00.000+0800"
             }
-        },
-        function (error) {
-            alert(error);
-        });
+        }]
+    };
+    renderOrder(orderInfo);
 
     getRequest(
         '/vip/' + sessionStorage.getItem('id') + '/get',
@@ -208,30 +252,13 @@ function payConfirmClick() {
     }
 }
 
+// TODO:填空
 function postPayRequest() {
-    var url = useVIP ? '/ticket/vip/buy?couponId=' + order.couponId : '/ticket/buy?couponId=' + order.couponId;
-    for (let id of order.ticketId) {
-        url += "&ticketId=" + id;
-    }
-
-    postRequest(
-        url,
-        null,
-        function (res) {
-            if (res.success) {
-                $('#order-state').css("display", "none");
-                $('#success-state').css("display", "");
-                $('#buyModal').modal('hide')
-            } else {
-                alert(res.message);
-            }
-        },
-        function (error) {
-            alert(error);
-        });
+    $('#order-state').css("display", "none");
+    $('#success-state').css("display", "");
+    $('#buyModal').modal('hide')
 }
 
-
 function validateForm() {
     var isValidate = true;
     if (!$('#userBuy-cardNum').val()) {

+ 0 - 24
src/main/resources/templates/userBuy.html

@@ -41,30 +41,6 @@
     </div>
 </div>
 <div class="content-container">
-
-    <!--优惠券-->
-    <div class="card col-md-8 col-md-offset-2">
-        <div class="header">
-            <div class="title">我的电影票</div>
-        </div>
-        <div class="table-wrapper">
-            <table class="table table-striped">
-                <thead>
-                <tr>
-                    <th>电影名称</th>
-                    <th>影厅名</th>
-                    <th>座位</th>
-                    <th>放映时间</th>
-                    <th>预计结束时间</th>
-                    <th>状态</th>
-                </tr>
-                </thead>
-
-                <tbody id="ticket-body">
-                </tbody>
-            </table>
-        </div>
-    </div>
 </div>
 </body>
 </html>