package com.example.xiaoshiweixinback.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.xiaoshiweixinback.business.utils.BatchNoUtil; import com.example.xiaoshiweixinback.domain.AssoPersonProduct; import com.example.xiaoshiweixinback.domain.Order; import com.example.xiaoshiweixinback.domain.Ticket; import com.example.xiaoshiweixinback.domain.Vip; import com.example.xiaoshiweixinback.entity.dto.ticket.TicketProcessUpDTO; import com.example.xiaoshiweixinback.entity.vo.PersonnelVO; import com.example.xiaoshiweixinback.entity.vo.person.PersonVO; import com.example.xiaoshiweixinback.entity.weixinPay.GetPayTicketVO; import com.example.xiaoshiweixinback.entity.weixinPay.JsApiDTO; import com.example.xiaoshiweixinback.entity.weixinPay.WeiXinPayDTO; import com.example.xiaoshiweixinback.mapper.AssoPersonProductMapper; import com.example.xiaoshiweixinback.mapper.OrderMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * @author admin * @description * @createDate 2024-04-10 15:45:40 */ @Service public class OrderService extends ServiceImpl { @Autowired @Lazy private VipService vipService; @Autowired private TicketService ticketService; @Transactional(rollbackFor = Exception.class) public Order addOrder(WeiXinPayDTO weiXinPayDTO, GetPayTicketVO getPayTicketVO, String tradeNo, PersonnelVO personVO) { Integer type = weiXinPayDTO.getGoodType(); String uuid = weiXinPayDTO.getGoodUuid(); Order order = new Order(); order.setOrderState(0); order.setTradeNo(tradeNo); String json = JSONObject.toJSONString(getPayTicketVO); switch (type) { case 1: Vip vip = vipService.getVipByUuId(uuid); order.setOrgPrice(vip.getPrice()); order.setTruePrice(vip.getPrice()); order.setGoodsType(type); order.setGoodUuid(uuid); order.setOrderParameter(json); order.setPersonUuid(personVO.getUuid()); break; case 2: Ticket ticket =ticketService.getTicketByUUid(uuid); order.setOrgPrice(ticket.getPrice()); order.setTruePrice(ticket.getPrice()); order.setGoodsType(type); order.setGoodUuid(uuid); order.setOrderParameter(json); order.setPersonUuid(personVO.getUuid()); } order.insert(); return order; } public Order getOrderByTradeNo(String tradeNo) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Order::getTradeNo, tradeNo); Order order = this.getOne(queryWrapper); return order; } public void payBack(String tradeNo) { Order order = this.getOrderByTradeNo(tradeNo); if(order.getOrderState()!=0){ return; } order.setOrderState(1); order.updateById(); Integer orderType = order.getGoodsType(); String orderuuid = order.getGoodUuid(); switch (orderType) { case 1: vipService.activateVIP(order); break; case 2: ticketService.updateProcess(orderuuid,3); break; } } }