|
|
@@ -14,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -33,36 +35,41 @@ public class TicketServiceImpl implements TicketService {
|
|
|
CouponMapper couponMapper;
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public ResponseVO addTicket(TicketForm ticketForm) {
|
|
|
-
|
|
|
- Ticket ticket = new Ticket();
|
|
|
- ticket.setUserId(ticketForm.getUserId());
|
|
|
- ticket.setScheduleId(ticketForm.getScheduleId());
|
|
|
- ticket.setColumnIndex(ticketForm.getColumnIndex());
|
|
|
- ticket.setRowIndex(ticketForm.getRowIndex());
|
|
|
- ticket.setState(0);
|
|
|
- try {
|
|
|
- if(ticketMapper.selectTicketByScheduleIdAndSeat(ticketForm.getScheduleId(),ticketForm.getColumnIndex(),ticketForm.getRowIndex())!=null){
|
|
|
+ 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("该位置已被占");
|
|
|
}
|
|
|
- ticketMapper.insertTicket(ticket);
|
|
|
- return ResponseVO.buildSuccess(ticket.getVO());
|
|
|
+ tickets.add(ticket);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ ticketMapper.insertTickets(tickets);
|
|
|
+ return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return ResponseVO.buildFailure("失败");
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public ResponseVO completeTicket(int id,int couponId) {
|
|
|
+ public ResponseVO completeTicket(List<Integer> id, int couponId) {
|
|
|
try {
|
|
|
- ticketMapper.updateTicketState(id, 1);
|
|
|
- Ticket ticket=ticketMapper.selectTicketById(id);
|
|
|
- if(couponId!=0) {
|
|
|
- couponMapper.deleteCouponUser(couponId, ticket.getUserId());
|
|
|
+ List<Ticket> tickets=updateState(id,1);
|
|
|
+ if (couponId != 0) {
|
|
|
+ couponMapper.deleteCouponUser(couponId, tickets.get(0).getUserId());
|
|
|
}
|
|
|
- return ResponseVO.buildSuccess(ticket.getVO());
|
|
|
+ return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return ResponseVO.buildFailure("失败");
|
|
|
@@ -100,24 +107,22 @@ public class TicketServiceImpl implements TicketService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public ResponseVO completeByVIPCard(int ticketId,int couponId) {
|
|
|
+ public ResponseVO completeByVIPCard(List<Integer> id, int couponId) {
|
|
|
try {
|
|
|
- Ticket ticket=ticketMapper.selectTicketById(ticketId);
|
|
|
+ Ticket ticket = ticketMapper.selectTicketById(id.get(0));
|
|
|
VIPCard vipCard = vipCardMapper.selectCardByUserId(ticket.getUserId());
|
|
|
ScheduleItem scheduleItem = scheduleMapper.selectScheduleById(ticket.getScheduleId());
|
|
|
//todo 优惠券门槛校验
|
|
|
- double balance = vipCard.getBalance() - scheduleItem.getFare();
|
|
|
- if(couponId!=0) {
|
|
|
- Coupon coupon=couponMapper.selectById(couponId);
|
|
|
- balance+=coupon.getDiscountAmount();
|
|
|
+ double balance = vipCard.getBalance() - scheduleItem.getFare()*id.size();
|
|
|
+ if (couponId != 0) {
|
|
|
+ Coupon coupon = couponMapper.selectById(couponId);
|
|
|
+ balance += coupon.getDiscountAmount();
|
|
|
}
|
|
|
if (balance < 0) {
|
|
|
return ResponseVO.buildFailure("会员卡余额不足");
|
|
|
}
|
|
|
vipCardMapper.updateCardBalance(vipCard.getId(), balance);
|
|
|
- completeTicket(ticketId,couponId);
|
|
|
- ticket.setState(1);
|
|
|
- return ResponseVO.buildSuccess(ticket.getVO());
|
|
|
+ return completeTicket(id, couponId);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return ResponseVO.buildFailure("失败");
|
|
|
@@ -125,15 +130,26 @@ public class TicketServiceImpl implements TicketService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseVO cancelTicket(int ticketId) {
|
|
|
+ public ResponseVO cancelTicket(List<Integer> id) {
|
|
|
try {
|
|
|
- ticketMapper.updateTicketState(ticketId, 2);
|
|
|
- return ResponseVO.buildSuccess(ticketMapper.selectTicketById(ticketId).getVO());
|
|
|
+ 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("失败");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ 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;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|