فهرست منبع

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

Dev

See merge request quanshu/mp-server!137
zhong chunping 3 سال پیش
والد
کامیت
07dc64ae28

+ 11 - 9
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java

@@ -94,18 +94,20 @@ public class GoodsMgrController extends BaseApiController {
 	@PostMapping("/list")
 	public TableDataInfo list(@RequestBody GoodsQueryParam queryParam) {
 		startPage();
-		LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<Goods>();
-		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), Goods::getTitle, queryParam.getTitle());
-		queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getGoodsId()), Goods::getGoodsId, queryParam.getGoodsId());
+		QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
+		queryWrapper.lambda().like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), Goods::getTitle, queryParam.getTitle());
+		queryWrapper.lambda().eq(null != queryParam && StringUtils.isNotBlank(queryParam.getGoodsId()), Goods::getGoodsId, queryParam.getGoodsId());
 		// 成本
-		queryWrapper.ge(null != queryParam && null != queryParam.getMinCost(), Goods::getCost, queryParam.getMinCost());
-		queryWrapper.le(null != queryParam && null != queryParam.getMaxCost(), Goods::getCost, queryParam.getMaxCost());
+		queryWrapper.lambda().ge(null != queryParam && null != queryParam.getMinCost(), Goods::getCost, queryParam.getMinCost());
+		queryWrapper.lambda().le(null != queryParam && null != queryParam.getMaxCost(), Goods::getCost, queryParam.getMaxCost());
 		// 价格
-		queryWrapper.ge(null != queryParam && null != queryParam.getMinValue(), Goods::getValue, queryParam.getMinValue());
-		queryWrapper.le(null != queryParam && null != queryParam.getMaxValue(), Goods::getValue, queryParam.getMaxValue());
+		queryWrapper.lambda().ge(null != queryParam && null != queryParam.getMinValue(), Goods::getValue, queryParam.getMinValue());
+		queryWrapper.lambda().le(null != queryParam && null != queryParam.getMaxValue(), Goods::getValue, queryParam.getMaxValue());
 		// 状态
-		queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), Goods::getStatus, queryParam.getStatus());
-		queryWrapper.eq(Goods::getIsDeleted, 0);
+		queryWrapper.lambda().eq(null != queryParam && null != queryParam.getStatus(), Goods::getStatus, queryParam.getStatus());
+		queryWrapper.lambda().eq(Goods::getIsDeleted, 0);
+		queryWrapper.orderByAsc("FIELD(`status`, 'init', 'on', 'off')");
+		queryWrapper.lambda().orderByDesc(Goods::getGoodsId);
 		List<Goods> goodsList = goodsService.list(queryWrapper);
 		TableDataInfo res = getDataTable(goodsList);
 		res.setRows(goodsList);

+ 3 - 3
mp-admin/src/main/resources/application-dev.yml

@@ -25,9 +25,9 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/mpdb_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC
-                username: root
-                password: 123456
+                url: jdbc:mysql://110.40.236.236:3306/mpdb_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC
+                username: mptest
+                password: wan789*@dfhzHu518!dr2xosn
                 # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 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 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java

@@ -15,6 +15,7 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -32,6 +33,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
 	@Autowired
 	private ITicketService ticketService;
 
+	@Value("${export.page-size}")
+	private int pageSize;
+
 	@Override
 	public Ticket getRandOne(Wrapper<Ticket> queryWrapper) {
 		return getBaseMapper().getRandOne(queryWrapper);
@@ -57,7 +61,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
 				}
 			}
 			if(null != ticketList && ticketList.size() > 0) {
-				boolean res = ticketService.updateBatchById(ticketList);
+				boolean res = ticketService.updateBatchById(ticketList,pageSize);
 				if(!res) {
 					throw new ServiceException("盲票导入失败,请联系管理员");
 				}

+ 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>