Răsfoiți Sursa

fix 记录特殊类型的车票订单

zoujiajian 3 ani în urmă
părinte
comite
038ad0da95

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/GroupsRelationMapper.java

@@ -52,5 +52,5 @@ public interface GroupsRelationMapper extends BaseMapper<GroupsRelation> {
 
 	Page<UserRecommendGoodsFrontView> getRecommendGoodsViews(@Param("page") Page<UserRecommendGoodsFrontView> page, @Param("list") List<Long> filter_goods_id, @Param("isPayNf") Boolean isPayNf);
 
-	Long getOutSideGroupsTripsRelationByGoodsId(@Param("skuId") Long skuId, @Param("beginOfDay") DateTime beginOfDay, @Param("extraNum") Integer extraNum);
+	Long getOutSideGroupsTripsRelationByGoodsId(@Param("skuId") Long skuId, @Param("beginOfDay") DateTime beginOfDay, @Param("extraNum") Integer extraNum, @Param("userId") Long userId);
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -226,6 +226,11 @@ public class OrderDon extends BaseEntity implements Serializable {
 
     private String payTitle;
 
+    /**
+     * 是否是额外硬塞车票车位的订单
+     */
+    private Boolean isOt;
+
     public enum Status {
         /**
          * 订单状态

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonBackView.java

@@ -36,6 +36,12 @@ public class OrderDonBackView {
 	@DbField("o.relation_id")
 	private Long relationId;
 
+	/**
+	 * 是否是额外硬塞的虚拟车票订单
+	 */
+	@DbField("o.is_ot")
+	private Boolean isOt;
+
 	/**
 	 * 邀请制用户账号
 	 */

+ 15 - 2
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -219,8 +219,21 @@
         where gt.sku_id = #{skuId}
           and gt.status = 'validity'
           and a.expiry_time >= #{beginOfDay}
-          and (select count(*) from groups_relation gr where gr.status ='outside' and gr.groups_id = gt.id and
-            gr.user_id != 0) &lt; #{extraNum}
+          and (select count(*)
+               from groups_relation gr
+               where gr.status = 'outside'
+                 and gr.groups_id = gt.id
+                 and gr.user_id
+            != 0)
+         &lt; #{extraNum}
+          and
+            (
+        select count (*)
+        from groups_relation gr
+        where gr.status = 'outside'
+          and gr.groups_id = gt.id
+          and gr.user_id
+            != #{userId}) = 0
         order by RAND() limit 1
     </select>
 </mapper>

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java

@@ -505,7 +505,7 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 		GroupsRelation relation = null;
 		if (sku.getNum() > 1 && Constant.AI_goodsIds.contains(sku.getGoodsId())) {
 			DateTime tenExpiry = DateUtil.offsetDay(DateUtil.beginOfDay(DateTime.now()), 10);
-			Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5);
+			Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5, userId);
 			if (groupsId != null) {
 				relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
 						.eq(GroupsRelation::getGroupsId, groupsId)

+ 13 - 5
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -229,7 +229,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		User user;
 		String payOpenId = null;
 		Long relationId = 0L;
-
+		GroupsRelation relation = null;
 		if (isNoLogin != null && isNoLogin) {
 			user = new User();
 			user.setId(0l);
@@ -242,7 +242,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			payOpenId = user.getOpenId();
 			if (goodsDon.getType() == 1) {
 				//获取座位
-				relationId = getRelation(payRequest, sku);
+				relation = getRelation(payRequest, sku);
+				relationId = relation.getId();
 			} else {
 
 			}
@@ -341,6 +342,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setIsWebPay(payRequest.getIsWebPay());
 		orderDon.setSource(payRequest.getSource());
 		orderDon.setCouponExCode(payRequest.getCouponExCode());
+		if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
+			orderDon.setIsOt(true);
+		}
 		if (isNoLogin == null || !isNoLogin) {
 			//虚拟商品订单,是否是分销订单
 			if (goodsDon.getType() == 1 || goodsDon.getType() == 2) {
@@ -813,6 +817,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			orderDon.setPreSkuId(tripsSkuId);
 		}
 		orderDon.setGoodsId(goodsDon.getId());
+		if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
+			orderDon.setIsOt(true);
+		}
 		//虚拟商品订单,是否是分销订单
 		if (goodsDon.getType() == 1) {
 			UserDistributeShared userDistributeShared = userDistributeSharedMapper.selectOne(Wrappers.lambdaQuery(UserDistributeShared.class).eq(UserDistributeShared::getUserId, user.getId()).last("limit 1"));
@@ -1942,7 +1949,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	/**
 	 * 获取车位
 	 */
-	public Long getRelation(OrderPayRequest payRequest, GoodsDonSku sku) {
+	public GroupsRelation getRelation(OrderPayRequest payRequest, GoodsDonSku sku) {
 		GroupsRelation relation;
 		Long payRelationId = payRequest.getRelationId();
 		Boolean isLoginPopularize = payRequest.getIsLoginPopularize();
@@ -1980,7 +1987,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					//主账号过期时间10天以外
 					if (sku.getNum() > 1 && Constant.AI_goodsIds.contains(sku.getGoodsId())) {
 						DateTime tenExpiry = DateUtil.offsetDay(DateUtil.beginOfDay(DateTime.now()), 10);
-						Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5);
+						//不塞存在该用户的车队
+						Long groupsId = groupsRelationMapper.getOutSideGroupsTripsRelationByGoodsId(sku.getId(), tenExpiry, 5, userId);
 						if (groupsId != null) {
 							relation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
 									.eq(GroupsRelation::getGroupsId, groupsId)
@@ -2022,7 +2030,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 		groupsRelationMapper.updateById(relation);
 		redisService.del(RedisKey.GROUPS_RELATION_NUM_KEY + relation.getId());
-		return relation.getId();
+		return relation;
 	}
 
 	/**