|
@@ -9,7 +9,13 @@ import com.qs.mp.admin.domain.Ticket;
|
|
|
import com.qs.mp.admin.domain.TicketBox;
|
|
|
import com.qs.mp.admin.service.ITicketBoxService;
|
|
|
import com.qs.mp.admin.service.ITicketService;
|
|
|
+import com.qs.mp.channel.domain.Channel;
|
|
|
+import com.qs.mp.channel.domain.ChannelCommission;
|
|
|
+import com.qs.mp.channel.domain.ChannelOrderDetail;
|
|
|
import com.qs.mp.channel.domain.ChannelUserRel;
|
|
|
+import com.qs.mp.channel.service.IChannelCommissionService;
|
|
|
+import com.qs.mp.channel.service.IChannelOrderDetailService;
|
|
|
+import com.qs.mp.channel.service.IChannelService;
|
|
|
import com.qs.mp.channel.service.IChannelUserRelService;
|
|
|
import com.qs.mp.common.enums.CommStatusEnum;
|
|
|
import com.qs.mp.common.enums.MqTopicType;
|
|
@@ -34,6 +40,8 @@ import com.qs.mp.user.mapper.UserTicketOrderMapper;
|
|
|
import com.qs.mp.user.service.IUserCouponService;
|
|
|
import com.qs.mp.user.service.IUserTicketOrderItemService;
|
|
|
import com.qs.mp.user.service.IUserTicketOrderService;
|
|
|
+import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIConversion.User;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
@@ -69,6 +77,9 @@ public class UserTicketOrderServiceImpl extends
|
|
|
@Autowired
|
|
|
private IChannelUserRelService channelUserRelService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IChannelOrderDetailService channelOrderDetailService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IUserTicketOrderItemService userTicketOrderItemService;
|
|
|
|
|
@@ -78,6 +89,12 @@ public class UserTicketOrderServiceImpl extends
|
|
|
@Autowired
|
|
|
private PulsarClientService pulsarClientService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IChannelService channelService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelCommissionService channelCommissionService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private BizIdGenerator bizIdGenerator;
|
|
|
|
|
@@ -133,12 +150,14 @@ public class UserTicketOrderServiceImpl extends
|
|
|
} else {
|
|
|
userTicketOrder.setStatus(UserTicketOrderStatusEnum.FINISHED);
|
|
|
}
|
|
|
- save(userTicketOrder);
|
|
|
-
|
|
|
// 查询用户的所属经销商,线上票直接查询
|
|
|
ChannelUserRel channelUserRel = channelUserRelService.getOne(
|
|
|
new LambdaQueryWrapper<ChannelUserRel>()
|
|
|
.eq(ChannelUserRel::getUserId, userId));
|
|
|
+ userTicketOrder.setChannelId(null == channelUserRel ? null : channelUserRel.getChannelId());
|
|
|
+ save(userTicketOrder);
|
|
|
+
|
|
|
+
|
|
|
for (int i = 0; i < orderSettleVO.getOrderNum(); i++) {
|
|
|
UserTicketOrderItem orderItem = new UserTicketOrderItem();
|
|
|
orderItem.setItemId(bizIdGenerator.newId());
|
|
@@ -146,7 +165,6 @@ public class UserTicketOrderServiceImpl extends
|
|
|
orderItem.setUserId(userId);
|
|
|
orderItem.setBoxId(ticketBox.getBoxId());
|
|
|
orderItem.setTicketId(null); // 付款成功后再分配具体盲票
|
|
|
- orderItem.setChannelId(null == channelUserRel ? null : channelUserRel.getChannelId());
|
|
|
userTicketOrderItemService.save(orderItem);
|
|
|
}
|
|
|
return userTicketOrder.getOrderId();
|
|
@@ -178,19 +196,23 @@ public class UserTicketOrderServiceImpl extends
|
|
|
ticketOrder.setStatus(UserTicketOrderStatusEnum.FINISHED);
|
|
|
ticketOrder.setCommStatus(CommStatusEnum.YES); // 无需结佣,直接置为已结佣
|
|
|
}
|
|
|
+ // 查询用户的所属经销商,线下票根据票包查询
|
|
|
+ ChannelOrderDetail channelOrderDetail = channelOrderDetailService.getOne(new LambdaQueryWrapper<ChannelOrderDetail>()
|
|
|
+ .eq(ChannelOrderDetail::getPkgId, ticket.getPkgId()));
|
|
|
+ if (null == channelOrderDetail) {
|
|
|
+ LogUtil.error(logger, "线下票,根据票包ID查询购买渠道为空。ticketId:{0}, pkgId{1}", new Object[]{ticket.getTicketId(), ticket.getPkgId()});
|
|
|
+ } else {
|
|
|
+ ticketOrder.setChannelId(channelOrderDetail.getChannelId());
|
|
|
+ }
|
|
|
save(ticketOrder);
|
|
|
|
|
|
- // 查询用户的所属经销商,线上票直接查询
|
|
|
- ChannelUserRel channelUserRel = channelUserRelService.getOne(
|
|
|
- new LambdaQueryWrapper<ChannelUserRel>()
|
|
|
- .eq(ChannelUserRel::getUserId, userId));
|
|
|
+
|
|
|
UserTicketOrderItem orderItem = new UserTicketOrderItem();
|
|
|
orderItem.setItemId(bizIdGenerator.newId());
|
|
|
orderItem.setOrderId(ticketOrder.getOrderId());
|
|
|
orderItem.setUserId(userId);
|
|
|
orderItem.setBoxId(ticket.getBoxId());
|
|
|
orderItem.setTicketId(ticket.getTicketId());
|
|
|
- orderItem.setChannelId(null == channelUserRel ? null : channelUserRel.getChannelId());
|
|
|
userTicketOrderItemService.save(orderItem);
|
|
|
return ticketOrder.getOrderId();
|
|
|
}
|
|
@@ -300,7 +322,36 @@ public class UserTicketOrderServiceImpl extends
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public boolean commToChannel(String orderId) {
|
|
|
+ UserTicketOrder ticketOrder = getById(orderId);
|
|
|
+ Assert.isTrue(ticketOrder.getCommStatus() == CommStatusEnum.DOING, "结佣处理,结佣状态异常,不是结佣中。orderId=" + orderId);
|
|
|
+
|
|
|
+ if (null != ticketOrder.getChannelId()) {
|
|
|
+ // 线下购票,优先给当前票的经销商渠道分润
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(ticketOrder.getBoxId());
|
|
|
+ Channel channel = channelService.getById(ticketOrder.getChannelId());
|
|
|
+ ChannelCommission channelCommission = new ChannelCommission();
|
|
|
+ channelCommission.setChannelId(channel.getChannelId());
|
|
|
+ channelCommission.setOrderId(ticketOrder.getOrderId());
|
|
|
+ channelCommission.setBoxId(ticketOrder.getBoxId());
|
|
|
+ channelCommission.setSaleAmt(ticketOrder.getPayAmt());
|
|
|
+ channelCommission.setSaleCommRate(ticketBox.getSaleCommRate());
|
|
|
+ channelCommission.setSaleCommAmt(new BigDecimal(channelCommission.getSaleAmt()).multiply(channelCommission.getSaleCommRate()).intValue());
|
|
|
+ channelCommission.setCommRate(channel.getCommRate());
|
|
|
+ channelCommission.setCommAmt(new BigDecimal(channelCommission.getSaleCommAmt()).multiply(channelCommission.getCommRate()).intValue());
|
|
|
+ channelCommissionService.save(channelCommission);
|
|
|
+ // 经销商账户余额增加
|
|
|
+
|
|
|
+ // 渠道分润
|
|
|
+
|
|
|
+ // 线下票如果用户没被绑定,则保存经销商用户绑定关系
|
|
|
+
|
|
|
+ } else {
|
|
|
+ LogUtil.info(logger, "渠道结佣时,订单对应的渠道不存在,无需结佣。itemId:{0}",
|
|
|
+ new Object[]{ticketOrder.getOrderId()});
|
|
|
+ }
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
}
|