Pārlūkot izejas kodu

Merge branch 'dev' into 'mp-server-test'

盲票结佣

See merge request quanshu/mp-server!149
zhong chunping 3 gadi atpakaļ
vecāks
revīzija
036a1fd3b2

+ 51 - 17
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -306,15 +306,20 @@ public class UserTicketOrderServiceImpl extends
         ticket = ticketService.getById(orderItem.getTicketId());
       }
       // 开幸运数字,更新ticket状态为已激活
-      ticket.setPlainLuckyNum(Integer.valueOf(RSAUtil.decrypt(ticket.getCipherLuckyNum())));
-      ticket.setStatus(TicketStatusEnum.ACTIVATED);
-      boolean rtn = ticketService.updateById(ticket);
+      boolean rtn = ticketService.update(
+          new LambdaUpdateWrapper<Ticket>().set(Ticket::getPlainLuckyNum,
+                  Integer.valueOf(RSAUtil.decrypt(ticket.getCipherLuckyNum())))
+              .set(Ticket::getStatus, TicketStatusEnum.ACTIVATED)
+              .eq(Ticket::getTicketId, ticket.getTicketId()));
       Assert.isTrue(rtn, "支付回调用户购票订单处理,更新盲票状态失败,ticketId:" + ticket.getTicketId());
     }
 
     // 更新订单状态为已完成
-    ticketOrder.setStatus(UserTicketOrderStatusEnum.FINISHED);
-    boolean updateRst = updateById(ticketOrder);
+    boolean updateRst = update(
+        new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getStatus,
+                UserTicketOrderStatusEnum.FINISHED)
+            .eq(UserTicketOrder::getOrderId, ticketOrder.getOrderId())
+            .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.NOT_PAY));
     Assert.isTrue(updateRst, "支付回调用户购票订单处理,更新订单状态失败,orderId:" + ticketOrder.getOrderId());
 
     try {
@@ -339,32 +344,61 @@ public class UserTicketOrderServiceImpl extends
       Channel channel = channelService.getById(ticketOrder.getChannelId());
       ChannelCommission siteCommission = saveSiteCommAmt(ticketOrder, ticketBox, channel);
       // 经销商账户余额增加
-      ChannelMoneyLog moneyLog = new ChannelMoneyLog();
-      moneyLog.setChannelId(channel.getChannelId());
-      moneyLog.setType(ChannelMoneyEnum.COMMISSION);
-      moneyLog.setLogMoney(siteCommission.getCommAmt());
-      moneyLog.setBizTime(new Date());
-      moneyLog.setRefType(ChannelMoneyBizTypeEnum.COMMISSION);
-      moneyLog.setRefId(String.valueOf(siteCommission.getId()));
-      channelMoneyLogService.changeMoney(moneyLog);
+      changeMoney(channel, siteCommission);
 
       int sumCommAmt = siteCommission.getCommAmt();
       // 渠道分润
       while (channel.getParentId() > 0) {
         channel = channelService.getById(channel.getParentId());
         ChannelCommission channelCommission = new ChannelCommission();
+        channelCommission.setChannelId(channel.getChannelId());
+        channelCommission.setOrderId(siteCommission.getOrderId());
+        channelCommission.setBoxId(siteCommission.getBoxId());
+        channelCommission.setSaleAmt(siteCommission.getSaleAmt());
+        channelCommission.setSaleCommRate(siteCommission.getSaleCommRate());
+        channelCommission.setSaleCommAmt(siteCommission.getSaleCommAmt());
+        channelCommission.setCommRate(channel.getCommRate());
+        channelCommission.setCommAmt(new BigDecimal(channelCommission.getSaleCommAmt()).multiply(
+            channelCommission.getCommRate()).intValue() - sumCommAmt);
+        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, "渠道结佣时,订单对应的渠道不存在,无需结佣。itemId:{0}",
+      LogUtil.info(logger, "渠道结佣时,订单对应的渠道不存在,无需结佣。orderId:{0}",
           ticketOrder.getOrderId());
     }
+    boolean rst = update(
+        new LambdaUpdateWrapper<UserTicketOrder>().set(UserTicketOrder::getCommStatus,
+                CommStatusEnum.YES)
+            .eq(UserTicketOrder::getOrderId, orderId)
+            .eq(UserTicketOrder::getCommStatus, CommStatusEnum.DOING));
+    Assert.isTrue(rst, "渠道结佣完成,更新订单状态失败。orderId:" + orderId);
+    return true;
+  }
 
-    return false;
+  private void changeMoney(Channel channel, ChannelCommission siteCommission) {
+    ChannelMoneyLog moneyLog = new ChannelMoneyLog();
+    moneyLog.setChannelId(channel.getChannelId());
+    moneyLog.setType(ChannelMoneyEnum.COMMISSION);
+    moneyLog.setLogMoney(siteCommission.getCommAmt());
+    moneyLog.setBizTime(new Date());
+    moneyLog.setRefType(ChannelMoneyBizTypeEnum.COMMISSION);
+    moneyLog.setRefId(String.valueOf(siteCommission.getId()));
+    channelMoneyLogService.changeMoney(moneyLog);
   }
 
-  private ChannelCommission saveSiteCommAmt(UserTicketOrder ticketOrder, TicketBox ticketBox, Channel channel) {
+  private ChannelCommission saveSiteCommAmt(UserTicketOrder ticketOrder, TicketBox ticketBox,
+      Channel channel) {
     ChannelCommission siteCommission = new ChannelCommission();
     siteCommission.setChannelId(channel.getChannelId());
     siteCommission.setOrderId(ticketOrder.getOrderId());