Procházet zdrojové kódy

fix 不同平台同用户续费车票

zoujiajian před 3 roky
rodič
revize
b44669f05d

+ 11 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -56,6 +56,7 @@ import com.cyksj.service.exchange.ExchangeCodeService;
 import com.cyksj.service.mange.stock.GoodsDonStockService;
 import com.cyksj.service.market.task.TaskService;
 import com.cyksj.service.order.OrderDonService;
+import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import com.cyksj.task.JobManager;
@@ -166,6 +167,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final TemplateCommonService templateCommonService;
 
+	private final GroupRelationFrontService groupRelationFrontService;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -566,7 +569,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public OrderDon renewal(OrderPayRequest payRequest) throws Exception {
-		User user = userMapper.selectById(payRequest.getUserId());
+		Long userId = payRequest.getUserId();
+		User user = userMapper.selectById(userId);
 		CouponUser couponUser = null;
 		if (StrUtil.isNotBlank(payRequest.getCouponExCode()) || payRequest.getCouponId() != null) {
 			checkCouponStatus(payRequest.getSkuId(), payRequest.getCouponExCode(), payRequest.getCouponId(), payRequest.getUserId(), true);
@@ -584,9 +588,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
         if (relation == null) {
             throw new BusinessRuntimeException("");
         }
-        if (!relation.getUserId().equals(user.getId())) {
-            throw new BusinessRuntimeException("");
-        }
+		Long otherUserId = groupRelationFrontService.getOtherUserId(user);
+		if (!relation.getUserId().equals(user.getId())) {
+			if (otherUserId == null || !relation.getUserId().equals(otherUserId)) {
+				throw new BusinessRuntimeException("");
+			}
+		}
         GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
 
 		GoodsDon goodsDon = goodsDonMapper.selectById(sku.getGoodsId());

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationFrontService.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.relation;
 
+import com.cyksj.model.entity.User;
 import com.cyksj.model.views.RenewalView;
 
 import java.util.List;
@@ -12,4 +13,6 @@ import java.util.List;
  */
 public interface GroupRelationFrontService {
 	List<RenewalView> getMyTicket(long userId);
+
+	Long getOtherUserId(User user);
 }

+ 37 - 23
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -39,47 +40,60 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	@Override
 	public List<RenewalView> getMyTicket(long userId) {
 		User u = userMapper.selectById(userId);
+		Long otherUserId = getOtherUserId(u);
+		List<Long> userIdList = new ArrayList<>(2);
+		userIdList.add(u.getId());
+		if (otherUserId != null) {
+			userIdList.add(otherUserId);
+		}
+		List<RenewalView> list = beanSearcher.searchAll(RenewalView.class, MapUtils.builder()
+				.field(RenewalView::getUserId, userIdList).op(Operator.InList)
+				.field(RenewalView::getStatus, List.of("validity", "overdue")).op(Operator.InList)
+				.orderBy(RenewalView::getExpiryTime).asc()
+				.build());
+		//过滤邀请制、已失效的车位
+		DateTime now = DateTime.now();
+		List<RenewalView> collect = list.stream().filter(ticket -> {
+			if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) {
+				return false;
+			}
+			if (ticket.getSecondType() == 1) {
+				ticket.setAccount(null);
+				ticket.setPassword(null);
+			}
+			return true;
+		}).collect(Collectors.toList());
+		return collect;
+	}
+
+
+	public Long getOtherUserId(User user) {
+		Long userId = user.getId();
+		//是否是同一个用户
 		Boolean isPcUser = false;
-		if (StrUtil.isNotBlank(u.getLoginPhone())) {
+		if (StrUtil.isNotBlank(user.getLoginPhone())) {
 			isPcUser = true;
 		}
 		//是否绑定过手机号
 		LambdaQueryWrapper<UserBindPhone> wrapper = Wrappers.lambdaQuery(UserBindPhone.class).last("limit 1");
 		if (isPcUser) {
-			wrapper.eq(UserBindPhone::getPhone, u.getLoginPhone());
+			wrapper.eq(UserBindPhone::getPhone, user.getLoginPhone());
 		} else {
 			wrapper.eq(UserBindPhone::getUserId, userId);
 		}
 		UserBindPhone userBindPhone = userBindPhoneMapper.selectOne(wrapper);
-		Long otherUserId = 0l;
+		Long otherUserId = null;
 		if (userBindPhone != null) {
 			if (isPcUser) {
 				otherUserId = userBindPhone.getUserId();
 			}else {
-				User user = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
+				User otherUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
 						.eq(User::getLoginPhone, userBindPhone.getPhone()).last("limit 1"));
 				if (user != null) {
-					otherUserId = user.getId();
+					otherUserId = otherUser.getId();
 				}
 			}
 		}
-		List<RenewalView> list = beanSearcher.searchAll(RenewalView.class, MapUtils.builder()
-				.field(RenewalView::getUserId, userId, otherUserId).op(Operator.InList)
-				.field(RenewalView::getStatus, List.of("validity", "overdue")).op(Operator.InList)
-				.orderBy(RenewalView::getExpiryTime).asc()
-				.build());
-		//过滤邀请制、已失效的车位
-		DateTime now = DateTime.now();
-		List<RenewalView> collect = list.stream().filter(ticket -> {
-			if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) {
-				return false;
-			}
-			if (ticket.getSecondType() == 1) {
-				ticket.setAccount(null);
-				ticket.setPassword(null);
-			}
-			return true;
-		}).collect(Collectors.toList());
-		return collect;
+		return otherUserId;
 	}
 }