|
@@ -14,26 +14,11 @@ import com.qs.mp.admin.domain.vo.*;
|
|
|
import com.qs.mp.admin.service.ITicketBoxService;
|
|
|
import com.qs.mp.admin.service.ITicketPackageService;
|
|
|
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.ChannelMoneyLog;
|
|
|
-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.IChannelMoneyLogService;
|
|
|
-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.channel.domain.*;
|
|
|
+import com.qs.mp.channel.domain.param.ChannelCommParam;
|
|
|
+import com.qs.mp.channel.service.*;
|
|
|
import com.qs.mp.common.core.redis.RedisCache;
|
|
|
-import com.qs.mp.common.enums.ChannelMoneyEnum;
|
|
|
-import com.qs.mp.common.enums.CommStatusEnum;
|
|
|
-import com.qs.mp.common.enums.ErrorCodeEnum;
|
|
|
-import com.qs.mp.common.enums.TicketBoxStatusEnum;
|
|
|
-import com.qs.mp.common.enums.TicketPkgSaleStatusEnum;
|
|
|
-import com.qs.mp.common.enums.TicketStatusEnum;
|
|
|
-import com.qs.mp.common.enums.TicketTypeEnum;
|
|
|
-import com.qs.mp.common.enums.UserCouponStatusEnum;
|
|
|
-import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
|
|
|
+import com.qs.mp.common.enums.*;
|
|
|
import com.qs.mp.common.exception.ServiceException;
|
|
|
import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
@@ -61,6 +46,7 @@ import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -110,6 +96,12 @@ public class UserTicketOrderServiceImpl extends
|
|
|
@Autowired
|
|
|
private ITicketPackageService ticketPackageService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IChannelOrderService channelOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IChannelOrderItemService channelOrderItemService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private BizIdGenerator bizIdGenerator;
|
|
|
|
|
@@ -432,16 +424,30 @@ public class UserTicketOrderServiceImpl extends
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public boolean commToChannel(String orderId) {
|
|
|
- UserTicketOrder ticketOrder = getById(orderId);
|
|
|
- Assert.isTrue(ticketOrder.getCommStatus() == CommStatusEnum.DOING,
|
|
|
- "结佣处理,结佣状态异常,不是结佣中。orderId=" + orderId);
|
|
|
-
|
|
|
- if (null != ticketOrder.getChannelId()) {
|
|
|
+ public boolean commToChannel(String orderId, Integer resource) {
|
|
|
+ ChannelCommParam channelCommParam = new ChannelCommParam();
|
|
|
+ if (ChannelCommissionResourceEnum.USER.getValue().equals(resource)) {
|
|
|
+ UserTicketOrder ticketOrder = getById(orderId);
|
|
|
+ BeanUtils.copyProperties(ticketOrder, channelCommParam);
|
|
|
+ Assert.isTrue(channelCommParam.getCommStatus() == CommStatusEnum.DOING,
|
|
|
+ "结佣处理,结佣状态异常,不是结佣中。orderId=" + orderId);
|
|
|
+ } else {
|
|
|
+ ChannelOrder channelOrder = channelOrderService.getById(orderId);
|
|
|
+ ChannelOrderItem channelOrderItem = channelOrderItemService.getOne(new LambdaQueryWrapper<ChannelOrderItem>()
|
|
|
+ .eq(ChannelOrderItem::getOrderId, orderId));
|
|
|
+ channelCommParam.setBoxId(channelOrderItem.getBoxId());
|
|
|
+ channelCommParam.setChannelId(channelOrder.getChannelId());
|
|
|
+ channelCommParam.setOrderId(channelOrder.getOrderId());
|
|
|
+ channelCommParam.setPayAmt(channelOrder.getPayAmt());
|
|
|
+ }
|
|
|
+ if (channelCommParam.getPayAmt() == 0) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (null != channelCommParam.getChannelId()) {
|
|
|
// 线下购票,优先给当前票的经销商渠道分润
|
|
|
- TicketBox ticketBox = ticketBoxService.getById(ticketOrder.getBoxId());
|
|
|
- Channel channel = channelService.getById(ticketOrder.getChannelId());
|
|
|
- ChannelCommission siteCommission = saveSiteCommAmt(ticketOrder, ticketBox, channel);
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(channelCommParam.getBoxId());
|
|
|
+ Channel channel = channelService.getById(channelCommParam.getChannelId());
|
|
|
+ ChannelCommission siteCommission = saveSiteCommAmt(channelCommParam, ticketBox, channel);
|
|
|
// 经销商账户余额增加
|
|
|
changeMoney(channel, siteCommission);
|
|
|
|
|
@@ -463,19 +469,9 @@ public class UserTicketOrderServiceImpl extends
|
|
|
channelCommissionService.save(channelCommission);
|
|
|
sumCommAmt += channelCommission.getCommAmt();
|
|
|
}
|
|
|
- // 线下票如果用户没被绑定,则保存经销商用户绑定关系
|
|
|
- ChannelUserRel channelUserRel = channelUserRelService.getOne(
|
|
|
- new LambdaQueryWrapper<ChannelUserRel>()
|
|
|
- .eq(ChannelUserRel::getUserId, ticketOrder.getUserId()));
|
|
|
- if (null == channelUserRel) {
|
|
|
- channelUserRel = new ChannelUserRel();
|
|
|
- channelUserRel.setChannelId(ticketOrder.getChannelId());
|
|
|
- channelUserRel.setUserId(ticketOrder.getUserId());
|
|
|
- channelUserRelService.save(channelUserRel);
|
|
|
- }
|
|
|
} else {
|
|
|
LogUtil.info(logger, "渠道结佣时,订单对应的渠道不存在,无需结佣。orderId:{0}",
|
|
|
- ticketOrder.getOrderId());
|
|
|
+ channelCommParam.getOrderId());
|
|
|
}
|
|
|
boolean rst = update(
|
|
|
new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getCommStatus,
|
|
@@ -496,13 +492,13 @@ public class UserTicketOrderServiceImpl extends
|
|
|
channelMoneyLogService.changeMoney(moneyLog);
|
|
|
}
|
|
|
|
|
|
- private ChannelCommission saveSiteCommAmt(UserTicketOrder ticketOrder, TicketBox ticketBox,
|
|
|
+ private ChannelCommission saveSiteCommAmt(ChannelCommParam channelCommParam, TicketBox ticketBox,
|
|
|
Channel channel) {
|
|
|
ChannelCommission siteCommission = new ChannelCommission();
|
|
|
siteCommission.setChannelId(channel.getChannelId());
|
|
|
- siteCommission.setOrderId(ticketOrder.getOrderId());
|
|
|
- siteCommission.setBoxId(ticketOrder.getBoxId());
|
|
|
- siteCommission.setSaleAmt(ticketOrder.getPayAmt());
|
|
|
+ siteCommission.setOrderId(channelCommParam.getOrderId());
|
|
|
+ siteCommission.setBoxId(channelCommParam.getBoxId());
|
|
|
+ siteCommission.setSaleAmt(channelCommParam.getPayAmt());
|
|
|
siteCommission.setSaleCommRate(ticketBox.getSaleCommRate());
|
|
|
siteCommission.setSaleCommAmt(new BigDecimal(siteCommission.getSaleAmt()).multiply(
|
|
|
siteCommission.getSaleCommRate()).divide(new BigDecimal(100), 0, RoundingMode.DOWN)
|