Jelajahi Sumber

fix 优化全部车票接口,车票广告接口

zoujiajian 1 tahun lalu
induk
melakukan
a15b958f57

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

@@ -10,6 +10,7 @@ import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.views.GroupsRelationUserView;
 import com.cyksj.model.views.RenewalView;
 import com.cyksj.model.views.UserRecommendGoodsFrontView;
+import com.cyksj.model.views.UserTicketView;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
@@ -80,4 +81,6 @@ public interface GroupsRelationMapper extends BaseMapper<GroupsRelation> {
 	List<GroupsRelation> selectExtraRelation(@Param("userId") Long userId, @Param("skuId") Long skuId, @Param("relationId") Long relationId);
 
 	void incrExpiryTime(@Param("relationId") Long relationId, @Param("userId") Long userId);
+
+	List<UserTicketView> selectUserTickets(@Param("userIds") List<Long> userIds, @Param("goodsId") Long goodsId, @Param("skuId") Long skuId);
 }

+ 4 - 2
netflix-dao/src/main/java/com/cyksj/model/views/TicketAdvertiseConfigFrontView.java

@@ -3,7 +3,6 @@ package com.cyksj.model.views;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.SearchBean;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -22,7 +21,6 @@ public class TicketAdvertiseConfigFrontView {
 	private Long configId;
 
 	@DbField("tc.goods_id")
-	@JsonIgnore
 	private Long goodsId;
 
 	@DbField("tc.title")
@@ -36,4 +34,8 @@ public class TicketAdvertiseConfigFrontView {
 
 	@DbField("tc.pic")
 	private String pic;
+
+	@DbField("tc.sorted")
+	@JsonIgnore
+	private Integer sorted;
 }

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

@@ -49,4 +49,7 @@ public class UserTicketView {
 
 	@DbField("gr.cmt")
 	private Integer cmt;
+
+	@DbField("gdk.is_mirror")
+	private Boolean isMirror;
 }

+ 18 - 0
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -393,4 +393,22 @@
             and gt.sku_id = #{skuId}
             and not exists (select 1 from order_don o where o.user_id = gr.user_id and o.relation_id = gr.id and o.status not in ('close','noPayment','refund'))
     </select>
+
+    <select id="selectUserTickets" resultType="com.cyksj.model.views.UserTicketView">
+        select gr.id as relation_id,gr.user_id,g.id as goods_id,gt.sku_id,g.title,gdk.spec_val,gr.expiry_time,gdk.is_mirror from groups_relation gr left join groups_trips gt on gt.id = gr.groups_id
+        left join goods_don_sku gdk on gdk.id = gt.sku_id left join goods_don g on g.id = gdk.goods_id
+        where gr.user_id in
+        <foreach collection="userIds" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        and gr.status in ('validity','outside')
+        and gr.cmt != 2
+        and (gr.expiry_time is null or gr.expiry_time > now())
+        <if test="goodsId != null">
+            and g.id = #{goodsId}
+        </if>
+        <if test="skuId != null">
+            and gt.sku_id = #{skuId}
+        </if>
+    </select>
 </mapper>

+ 14 - 15
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -211,18 +211,11 @@ public class GroupRelationController {
      * 获取全部车票
      */
     @GetMapping("/get")
-    public Result<List<UserTicketView>> getUserTicketView() {
+    public Result<List<UserTicketView>> getUserTicketView(Long goodsId, Long skuId) {
         long userId = StpUserUtil.getLoginIdAsLong();
         List<Long> userIds = userBindRelationService.getRelationUserIdList(userId, null);
-        List<UserTicketView> ticketViews = beanSearcher.searchAll(UserTicketView.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(UserTicketView::getUserId, userIds).op(Operator.InList)
-                .field(UserTicketView::getStatus, List.of("validity", "outside")).op(Operator.InList)
-                .field(UserTicketView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
-                //过滤镜像店铺车票
-                .field(UserTicketView::getCmt, 2).op(Operator.NotEqual)
-                .orderBy(UserTicketView::getRelationId).asc()
-                .build());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(ticketViews);
+        List<UserTicketView> tickets = relationMapper.selectUserTickets(userIds, goodsId, skuId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(tickets);
     }
 
     /**
@@ -537,14 +530,20 @@ public class GroupRelationController {
     /**
      * 对应平台车票 广告配置列表
      */
-    @GetMapping("/get/advertise/{goodsId}")
-    public Result<List<TicketAdvertiseConfigFrontView>> getTicketAdvertiseConfig(@PathVariable Long goodsId) {
+    @GetMapping("/get/advertise")
+    public Result<List<TicketAdvertiseConfigFrontView>> getTicketAdvertiseConfig() {
         long userId = StpUserUtil.getLoginIdAsLong();
+        List<RenewalView> hasPayGoods = groupRelationFrontService.getHasPayGoods(userId);
+        if (CollUtil.isEmpty(hasPayGoods)) {
+            return GatewayResponse.SUCCESS.newBuilder().toResult();
+        }
+        List<Long> goodsIds = hasPayGoods.stream().map(RenewalView::getGoodsId).collect(Collectors.toList());
         log.info("userId:{}获取广告位配置", userId);
         List<TicketAdvertiseConfigFrontView> views = beanSearcher.searchAll(TicketAdvertiseConfigFrontView.class, MapUtils.flatBuilder(request.getParameterMap())
-                .field(TicketAdvertiseConfig::getGoodsId, goodsId)
-                .orderBy(TicketAdvertiseConfig::getSorted).desc()
-                .orderBy(TicketAdvertiseConfig::getId).desc()
+                .field(TicketAdvertiseConfigFrontView::getGoodsId, goodsIds).op(Operator.InList)
+                .orderBy(TicketAdvertiseConfigFrontView::getSorted).desc()
+                .orderBy(TicketAdvertiseConfigFrontView::getGoodsId).asc()
+                .orderBy(TicketAdvertiseConfigFrontView::getConfigId).desc()
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(views);
     }