Browse Source

fix 修改官网平台排序展示规则;多张车票返回购买时间

zoujiajian 2 years ago
parent
commit
473d027138

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/GoodsFrontListView.java

@@ -23,7 +23,7 @@ import java.util.List;
 @Setter
 @SearchBean(tables = "goods_don g",
 		where = "g.deleted is true and g.status is true",
-		orderBy = "g.sort_by desc, g.id")
+		orderBy = "g.sort_by asc, g.id")
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class GoodsFrontListView {
 	@DbField("g.id")

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java

@@ -135,6 +135,9 @@ public class RenewalView {
     @DbField("gr.yhs_id")
     private Long yhsId;
 
+    @DbIgnore
+    private Date payTime;
+
     @DbIgnore
     private GoodsDonViews goodsDonViews;
 

+ 3 - 2
netflix-dao/src/main/resources/mapper/OrderDiscountPlusPurchaseSkuRelationMapper.xml

@@ -5,9 +5,10 @@
 
     <select id="selectPlusRelationByIdAndUserId"
             resultType="com.cyksj.model.entity.OrderDiscountPlusPurchaseSkuRelation">
-        select id, relation_ids
+        select id, relation_ids, order_id
         from order_discount_plus_purchase_sku_relation
         where user_id = #{userId}
-          and relation_ids like concat('%',#{relationId},'%')
+          and relation_ids like concat('%', #{relationId}, '%')
+        order by order_id desc
     </select>
 </mapper>

+ 43 - 8
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -9,8 +9,10 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.mapper.GroupsRelationMapper;
+import com.cyksj.mapper.OrderDiscountPlusPurchaseSkuRelationMapper;
 import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.model.entity.*;
@@ -34,8 +36,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Optional;
 
 /*
  *项目名: netflix
@@ -69,6 +72,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final HttpServletRequest request;
 
+	private final OrderDiscountPlusPurchaseSkuRelationMapper orderDiscountPlusPurchaseSkuRelationMapper;
+
 	@Override
 	public List<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId) {
 		User u = userMapper.selectById(userId);
@@ -88,10 +93,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				.build());
 		//过滤邀请制、已失效的车位
 		DateTime now = DateTime.now();
-		List<RenewalView> collect = list.stream().filter(ticket -> {
-			if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) {
-				return false;
-			}
+		list.stream().forEach(ticket -> {
 			if (ticket.getGoodsId() == 18 && ticket.getSkuNum() > 1) {
 				ticket.setPassword(null);
 			}
@@ -131,14 +133,47 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				}
 				ticket.setRemainDays(remainDays);
 			}
+			if (list.size() > 1 && ticket.getGoodsId() != 18) {
+				OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
+						.eq(OrderDon::getRelationId, ticket.getRelationId())
+						.eq(OrderDon::getUserId, ticket.getUserId())
+						.orderByDesc(OrderDon::getId)
+						.last("limit 1"));
+				Date payTime = null;
+				if (orderDon != null) {
+					payTime = Optional.ofNullable(orderDon.getPayTime()).orElse(orderDon.getCreatedTime());
+				}
+				//加购订单
+				if (orderDon == null) {
+					List<OrderDiscountPlusPurchaseSkuRelation> plusPurchaseSkuRelations = orderDiscountPlusPurchaseSkuRelationMapper.selectPlusRelationByIdAndUserId(ticket.getRelationId(), ticket.getUserId());
+					for (OrderDiscountPlusPurchaseSkuRelation data : plusPurchaseSkuRelations) {
+						String relationIds = data.getRelationIds();
+						if (StrUtil.isEmpty(relationIds)) {
+							return;
+						}
+						try {
+							List<Long> relationList = Jsons.parseList(relationIds, Long.class);
+							if (relationList.contains(ticket.getRelationId())) {
+								OrderDon plusOrder = orderDonMapper.selectById(data.getOrderId());
+								if (plusOrder != null) {
+									payTime = Optional.ofNullable(plusOrder.getPayTime()).orElse(plusOrder.getCreatedTime());
+								}
+								break;
+							}
+						} catch (Exception e) {
+						}
+
+					}
+				}
+				ticket.setPayTime(payTime);
+			}
 			List<GroupsRelationUserView> relationUserViews = groupsRelationMapper.getUserRelationUserViews(ticket.getGroupId(), ticket.getRelationId(), ticket.getUserId(), List.of(GroupsRelation.Status.validity, GroupsRelation.Status.outside));
 			ticket.setRelationViews(relationUserViews);
 			if (ticket.getExpiryTime() != null) {
 				ticket.setExpiryTimeStr(DateUtil.format(ticket.getExpiryTime(), "yyyy-MM-dd"));
 			}
-			return true;
-		}).collect(Collectors.toList());
-		return collect;
+		});
+		return list;
 	}
 
 	@Override

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -71,7 +71,7 @@ public class GoodsDonController {
         SearchResult<GoodsDon> search = beanSearcher.search(GoodsDon.class, MapUtils.flatBuilder(request.getParameterMap())
                 .field(GoodsDon::getStatus, true)
                 .field(GoodsDon::getDeleted, true)
-                .orderBy(GoodsDon::getSortBy).desc()
+                .orderBy(GoodsDon::getSortBy).asc()
                 .orderBy(GoodsDon::getId).asc()
                 .build()
         );
@@ -101,7 +101,7 @@ public class GoodsDonController {
                 .field(GoodsDonPopularizeView::getStatus, true)
                 .field(GoodsDonPopularizeView::getDeleted, true)
                 .field(GoodsDonPopularizeView::getType, 1)
-                .orderBy(GoodsDonPopularizeView::getSortBy).desc()
+                .orderBy(GoodsDonPopularizeView::getSortBy).asc()
                 .orderBy(GoodsDonPopularizeView::getId).asc()
                 .build());
         DateTime now = DateTime.now();