소스 검색

盲票导入

chunping 3 년 전
부모
커밋
9e957367e7

+ 4 - 2
mp-common/src/main/java/com/qs/mp/common/pulsar/PulsarClientService.java

@@ -1,6 +1,7 @@
 package com.qs.mp.common.pulsar;
 
 import com.qs.mp.common.enums.MqTopicType;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.StringUtils;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
@@ -94,11 +95,12 @@ public class PulsarClientService {
         try {
           pulsarConsumer.wsConsumer(key, jsons);
           logger.info("receive data>>>>>>" + jsons);
+          consumer.acknowledge(message);
         } catch (Exception e) {
-          logger.error("消费Pulsar数据异常,key【{}】,json【{}】:", message.getKey(), jsons, e);
+          LogUtil.error(logger, "消费Pulsar数据异常,key【{}】,json【{}】:", message.getKey(), jsons, e);
         }
       }
-      consumer.acknowledge(message);
+
     }
   }
 

+ 5 - 5
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelCommission.java

@@ -35,14 +35,14 @@ public class ChannelCommission implements Serializable {
   /**
    * 用户订单ID
    */
-  @TableField("order_id")
+  @TableField("order_item_id")
   private String orderId;
 
   /**
-   * 盲票ID
+   * 盲票ID
    */
-  @TableField("ticket_id")
-  private String ticketId;
+  @TableField("box_id")
+  private String boxId;
 
   /**
    * 销售金额
@@ -54,7 +54,7 @@ public class ChannelCommission implements Serializable {
    * 参与分佣的销售金额比例
    */
   @TableField("sale_comm_rate")
-  private Integer saleCommRate;
+  private BigDecimal saleCommRate;
 
   /**
    * 参与分佣的销售金额

+ 7 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrder.java

@@ -105,6 +105,13 @@ public class UserTicketOrder implements Serializable {
   @TableField("coupon_info")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private CommStatusEnum commStatus;
+
+  /**
+   * 结佣渠道ID
+   */
+  @TableField("channel_id")
+  private Long channelId;
+
   /**
    * 创建时间
    */

+ 0 - 6
mp-service/src/main/java/com/qs/mp/user/domain/UserTicketOrderItem.java

@@ -50,12 +50,6 @@ public class UserTicketOrderItem implements Serializable {
   @TableField("ticket_id")
   private String ticketId;
 
-  /**
-   * 线下购买渠道ID
-   */
-  @TableField("channel_id")
-  private Long channelId;
-
   /**
    * 创建时间
    */

+ 59 - 8
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -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;
   }
 }

+ 4 - 4
mp-service/src/main/resources/mapper/channel/ChannelCommissionMapper.xml

@@ -7,7 +7,7 @@
         <id column="id" property="id" />
         <result column="channel_id" property="channelId" />
         <result column="order_id" property="orderId" />
-        <result column="ticket_id" property="ticketId" />
+        <result column="box_id" property="boxId" />
         <result column="sale_amt" property="saleAmt" />
         <result column="sale_comm_rate" property="saleCommRate" />
         <result column="sale_comm_amt" property="saleCommAmt" />
@@ -19,7 +19,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, channel_id, order_id, ticket_id, sale_amt, sale_comm_rate, sale_comm_amt, comm_rate, comm_amt, created_time, updated_time
+        id, channel_id, order_id, box_id, sale_amt, sale_comm_rate, sale_comm_amt, comm_rate, comm_amt, created_time, updated_time
     </sql>
 
     <!-- 查询子渠道一定时间范围内的佣金金额 -->
@@ -44,8 +44,8 @@
 			GROUP BY t1.ticket_id
 		) t3
 	</select>
-	
-	
+
+
 	  <!-- 查询子渠道全部的佣金金额 -->
     <select id="getChannelTotalCommAmtCnt" resultType="integer">
 		select IFNULL(SUM(t1.comm_amt),0) as commAmt

+ 1 - 2
mp-service/src/main/resources/mapper/user/UserTicketOrderItemMapper.xml

@@ -9,14 +9,13 @@
         <result column="user_id" property="userId" />
         <result column="box_id" property="boxId" />
         <result column="ticket_id" property="ticketId" />
-        <result column="channel_id" property="channelId" />
         <result column="created_time" property="createdTime" />
         <result column="updated_time" property="updatedTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        item_id, order_id, user_id, box_id, ticket_id, channel_id, created_time, updated_time
+        item_id, order_id, user_id, box_id, ticket_id, created_time, updated_time
     </sql>
 
     <select id="listTicketOrderItemVO" resultMap="BaseResultMap">

+ 2 - 1
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -17,13 +17,14 @@
         <result column="coupon_info" property="couponInfo" />
         <result column="status" property="status" />
         <result column="comm_status" property="commStatus" />
+        <result column="channel_id" property="channelId" />
         <result column="created_time" property="createdTime" />
         <result column="updated_time" property="updatedTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        order_id, user_id, title, box_id, order_amt, discount_amt, pay_amt, ticket_num, memo, resource, coupon_info, status, comm_status, created_time, updated_time
+        order_id, user_id, title, box_id, order_amt, discount_amt, pay_amt, ticket_num, memo, resource, coupon_info, status, comm_status, channel_id, created_time, updated_time
     </sql>
 
 </mapper>