package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.OrderNos; import com.ruoyi.system.dto.CreateOrderDto; import com.ruoyi.system.dto.CreateOrderRequest; import com.ruoyi.system.dto.VisitPerson; import com.ruoyi.system.model.TTicketOrder; import com.ruoyi.system.mapper.TTicketOrderMapper; import com.ruoyi.system.model.TTourist; import com.ruoyi.system.query.AppletOrderListQuery; import com.ruoyi.system.query.TTicketOrderQuery; import com.ruoyi.system.service.TAppUserService; import com.ruoyi.system.service.TTicketOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.service.TTouristService; import com.ruoyi.system.utils.ticketUtil.TicketUtil; import com.ruoyi.system.vo.CreateOrderVo; import com.ruoyi.system.vo.TTicketOrderVo; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author L * @since 2025-12-30 */ @Service public class TTicketOrderServiceImpl extends ServiceImpl implements TTicketOrderService { private final TicketUtil ticketUtil; private final TTouristService tTouristService; public TTicketOrderServiceImpl(TicketUtil ticketUtil, TTouristService tTouristService) { this.ticketUtil = ticketUtil; this.tTouristService = tTouristService; } @Override public Page pageList(Page page, TTicketOrderQuery query) { List list = this.baseMapper.pageList(page,query); page.setRecords( list); return page; } @Override public Page getOrderList(AppletOrderListQuery query, Integer userId) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.getOrderList(page,query,userId); page.setRecords(list); return page; } @Override public Page refundPageList(Page page, TTicketOrderQuery query) { List list = this.baseMapper.refundPageList(page,query); page.setRecords( list); return page; } @Override public boolean addOrder(CreateOrderDto dto, Integer userId) throws Exception { CreateOrderRequest request = new CreateOrderRequest(); String did = OrderNos.getDid(); request.setOrderId(did); request.setTravelDate(dto.getTravelDate()); request.setQuantity(dto.getQuantity()); request.setProductId(dto.getProductId()); if (dto.getQuantity()!=dto.getVisitPersons().size()) { throw new RuntimeException("人数不匹配"); } List tTourists = tTouristService.listByIds(dto.getVisitPersons()); ArrayList visitPeople = new ArrayList<>(); for (TTourist tTourist : tTourists) { VisitPerson visitPerson = new VisitPerson(); visitPerson.setName(tTourist.getName()); visitPerson.setMobile(tTourist.getPhone()); visitPerson.setIdCard(tTourist.getIdCard()); visitPeople.add(visitPerson); } request.setVisitPersons(visitPeople); CreateOrderVo createOrderVo = ticketUtil.saveOrder(request); TTicketOrder order = new TTicketOrder(); order.setAppUserId(userId); order.setOrderNo(did); order.setPartnerOrderId(createOrderVo.getPartnerOrderId()); order.setOrderPrice(new BigDecimal(createOrderVo.getOrderAmount()).setScale(2, BigDecimal.ROUND_HALF_UP)); String result = dto.getVisitPersons().stream() .map(String::valueOf) // Integer 转 String .collect(Collectors.joining(",")); order.setTourist(result); order.setTicketNum(dto.getQuantity()); order.setStatus(0); order.setTicketInfo(dto.getProductName()); boolean save = this.save(order); return save; } }