|
@@ -21,6 +21,7 @@ import com.qs.mp.channel.service.IChannelMoneyLogService;
|
|
import com.qs.mp.channel.service.IChannelOrderDetailService;
|
|
import com.qs.mp.channel.service.IChannelOrderDetailService;
|
|
import com.qs.mp.channel.service.IChannelService;
|
|
import com.qs.mp.channel.service.IChannelService;
|
|
import com.qs.mp.channel.service.IChannelUserRelService;
|
|
import com.qs.mp.channel.service.IChannelUserRelService;
|
|
|
|
+import com.qs.mp.common.core.redis.RedisCache;
|
|
import com.qs.mp.common.enums.ChannelMoneyEnum;
|
|
import com.qs.mp.common.enums.ChannelMoneyEnum;
|
|
import com.qs.mp.common.enums.CommStatusEnum;
|
|
import com.qs.mp.common.enums.CommStatusEnum;
|
|
import com.qs.mp.common.enums.ErrorCodeEnum;
|
|
import com.qs.mp.common.enums.ErrorCodeEnum;
|
|
@@ -35,6 +36,7 @@ import com.qs.mp.common.pulsar.PulsarClientService;
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
import com.qs.mp.common.utils.RSAUtil;
|
|
import com.qs.mp.common.utils.RSAUtil;
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
|
|
+import com.qs.mp.framework.redis.RedisKey;
|
|
import com.qs.mp.pay.domain.PayOrder;
|
|
import com.qs.mp.pay.domain.PayOrder;
|
|
import com.qs.mp.system.service.id.BizIdGenerator;
|
|
import com.qs.mp.system.service.id.BizIdGenerator;
|
|
import com.qs.mp.user.domain.UserCoupon;
|
|
import com.qs.mp.user.domain.UserCoupon;
|
|
@@ -54,6 +56,7 @@ import java.math.RoundingMode;
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
import org.apache.pulsar.client.api.PulsarClientException;
|
|
import org.apache.pulsar.client.api.PulsarClientException;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -94,9 +97,6 @@ public class UserTicketOrderServiceImpl extends
|
|
@Autowired
|
|
@Autowired
|
|
private ITicketService ticketService;
|
|
private ITicketService ticketService;
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private PulsarClientService pulsarClientService;
|
|
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private IChannelService channelService;
|
|
private IChannelService channelService;
|
|
|
|
|
|
@@ -109,6 +109,9 @@ public class UserTicketOrderServiceImpl extends
|
|
@Autowired
|
|
@Autowired
|
|
private BizIdGenerator bizIdGenerator;
|
|
private BizIdGenerator bizIdGenerator;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private RedisCache redisCache;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
public String submitOrder(Long userId, TicketOrderSettleVO orderSettleVO, UserShareVO userShareVO) {
|
|
public String submitOrder(Long userId, TicketOrderSettleVO orderSettleVO, UserShareVO userShareVO) {
|
|
@@ -213,6 +216,11 @@ public class UserTicketOrderServiceImpl extends
|
|
Ticket ticket = ticketService.getById(orderSettleVO.getTicketId());
|
|
Ticket ticket = ticketService.getById(orderSettleVO.getTicketId());
|
|
Assert.isTrue(ticket.getStatus() == TicketStatusEnum.NOT_PAY,
|
|
Assert.isTrue(ticket.getStatus() == TicketStatusEnum.NOT_PAY,
|
|
"盲票已付款,ticketId:" + ticket.getTicketId());
|
|
"盲票已付款,ticketId:" + ticket.getTicketId());
|
|
|
|
+ if (redisCache.getCacheObject(RedisKey.build(RedisKey.OFFLINE_TICKET_ID_KEY, ticket.getTicketId()))) {
|
|
|
|
+ LogUtil.error(logger, "线下盲票重复购买,ticketNo:", ticket.getSerialNo());
|
|
|
|
+ throw new ServiceException("重复购买,请稍后再试");
|
|
|
|
+ }
|
|
|
|
+ redisCache.setCacheObject(RedisKey.build(RedisKey.OFFLINE_TICKET_ID_KEY, ticket.getTicketId()), userId, 5, TimeUnit.MINUTES);
|
|
|
|
|
|
// 核销优惠券
|
|
// 核销优惠券
|
|
String couponIds = verifyUserCoupon(orderSettleVO.getCouponList());
|
|
String couponIds = verifyUserCoupon(orderSettleVO.getCouponList());
|
|
@@ -373,11 +381,6 @@ public class UserTicketOrderServiceImpl extends
|
|
Assert.isTrue(rst, "支付回调用户购票订单处理,更新订单明细的盲票ID失败,itemId:" + orderItem.getItemId());
|
|
Assert.isTrue(rst, "支付回调用户购票订单处理,更新订单明细的盲票ID失败,itemId:" + orderItem.getItemId());
|
|
} else {
|
|
} else {
|
|
ticket = ticketService.getById(orderItem.getTicketId());
|
|
ticket = ticketService.getById(orderItem.getTicketId());
|
|
- // 线下票更新销量,此处不做乐观锁控制,因为不用控制库存
|
|
|
|
- TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
|
|
|
|
- ticketBoxService.update(
|
|
|
|
- new LambdaUpdateWrapper<TicketBox>().set(TicketBox::getSaleQty, ticketBox.getSaleQty() + 1)
|
|
|
|
- .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
|
|
|
|
}
|
|
}
|
|
// 开幸运数字,更新ticket状态为已激活
|
|
// 开幸运数字,更新ticket状态为已激活
|
|
boolean rtn = ticketService.update(
|
|
boolean rtn = ticketService.update(
|
|
@@ -396,12 +399,6 @@ public class UserTicketOrderServiceImpl extends
|
|
.eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
|
|
.eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
|
|
Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());
|
|
Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());
|
|
|
|
|
|
- try {
|
|
|
|
- pulsarClientService.producer(MqTopicType.ticket_pay, ticketOrder.getOrderId());
|
|
|
|
- } catch (PulsarClientException e) {
|
|
|
|
- LogUtil.error(logger, e, "盲票支付成功,发送异步消息失败. {0}", JSONObject.toJSONString(ticketOrder));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|