Przeglądaj źródła

fix 镜像过期车票

zoujiajian 1 rok temu
rodzic
commit
2b13ad4350

+ 4 - 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,7 @@ 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);
+
 }

+ 27 - 7
netflix-dao/src/main/resources/mapper/GroupRelationMapper.xml

@@ -345,14 +345,16 @@
     </select>
 
     <select id="getUserHasPayGoods" resultType="com.cyksj.model.views.RenewalView">
-        select g.id as goods_id,g.title,g.logo from (select distinct groups_id from groups_relation where status in
-        ('validity', 'outside') and cmt != 2 and (expiry_time is null
-        or
-        expiry_time > #{now}) and user_id != 0 and user_id in <foreach
-            collection="list" item="item" open="(" separator="," close=")">
-        #{item}
-    </foreach> ) gr inner join groups_trips gt on gt.id = gr.groups_id
+        select g.id as goods_id,g.title,g.logo from groups_relation gr inner join groups_trips gt on gt.id = gr.groups_id
         inner join goods_don_sku sku on sku.id = gt.sku_id inner join goods_don g on g.id = sku.goods_id
+        where gr.status in ('validity', 'outside')
+        and gr.cmt != 2
+        and (gr.expiry_time is null or gr.expiry_time > #{now} or (sku.is_mirror and gr.expiry_time > DATE_ADD(#{now},interval -7 day)))
+        and gr.user_id != 0
+        and gr.user_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
         group by g.id,g.title,g.logo
         order by goods_id
     </select>
@@ -393,4 +395,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() or (gdk.is_mirror and gr.expiry_time > DATE_ADD(now(),interval -7 day)))
+        <if test="goodsId != null">
+            and g.id = #{goodsId}
+        </if>
+        <if test="skuId != null">
+            and gt.sku_id = #{skuId}
+        </if>
+    </select>
 </mapper>

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

@@ -20,7 +20,7 @@ import java.util.List;
  *创建时间:2022/12/29 15:42
  */
 public interface GroupRelationFrontService {
-	SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt);
+	SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt, Integer ast);
 
 	Boolean isJoinCorpWx(Long userId, Boolean isJoin, Boolean noCoupon);
 

+ 10 - 5
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -171,7 +171,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	private final UserMirrorShopMapper userMirrorShopMapper;
 
 	@Override
-	public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt) {
+	public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt, Integer ast) {
 		User u = userMapper.selectById(userId);
 		if (u == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
 		if (u.getIsBlack()) {
@@ -195,14 +195,19 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		if (StrUtil.isNotBlank(account)) {
 			builder.field(RenewalView::getAccount, account).op(Operator.Contain);
 		}
-		String conditionSql = String.format("(gr.expiry_time is null or gr.expiry_time > '%s')", now);
+		String conditionSql = String.format("(gr.expiry_time is null or gr.expiry_time > '%s'", now);
+		//镜像车票 过期7天后清除
+		//ast!=1时,镜像店铺过期过期车票
+		if (ast == null || ast != 1) {
+			conditionSql = String.format(conditionSql, String.format(" or (sku.is_mirror and gr.expiry_time > '%s')", DateUtil.offsetDay(now, -7)));
+		}
+		conditionSql += ")";
 		if (StrUtil.isNotEmpty(orderNo)) {
 			conditionSql += String.format(" and exists(select 1 from order_don o where o.relation_id = gr.id and o.user_id = gr.user_id and o.order_no = %s and o.status not in ('close','noPayment','refund'))", orderNo);
 		}
 		SearchResult<RenewalView> list = beanSearcher.search(RenewalView.class, builder
 				.field(RenewalView::getUserId, 0).op(Operator.GreaterThan)
 				.field(RenewalView::getUserId, userIds).op(Operator.InList)
-				//.field(RenewalView::getYhsId, yhsId)
 				.put("condition", conditionSql)
 				.field(RenewalView::getStatus, List.of("validity", "overdue", "outside")).op(Operator.InList)
 				.orderBy(RenewalView::getExpiryTime).asc()
@@ -320,8 +325,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			//设置镜像车票信息
 			setMirrorTicketInfo(ticket);
 
-			List<GroupsRelationUserView> relationUserViews = groupsRelationMapper.getUserRelationUserViews(ticket.getGroupId(), ticket.getRelationId(), ticket.getUserId(), List.of(GroupsRelation.Status.validity, GroupsRelation.Status.outside));
-			ticket.setRelationViews(relationUserViews);
+//			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"));
 			}

+ 9 - 16
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -141,12 +141,12 @@ public class GroupRelationController {
 
     private final static Sequence SEQUENCE = new Sequence(0);
 
-	@RequestMapping("/get/renewal")
-	public Result<SearchResult<RenewalView>> get(Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt) {
-		long userId = StpUserUtil.getLoginIdAsLong();
-		SearchResult<RenewalView> list = groupRelationFrontService.getMyTicket(userId, isLoginPopularize, customId, account, orderNo, cmt);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(list);
-	}
+    @RequestMapping("/get/renewal")
+    public Result<SearchResult<RenewalView>> get(Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt, Integer ast) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        SearchResult<RenewalView> list = groupRelationFrontService.getMyTicket(userId, isLoginPopularize, customId, account, orderNo, cmt, ast);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(list);
+    }
 
     @GetMapping("/get/pay/goods")
     public Result<List<RenewalView>> getHasPayGoods() {
@@ -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);
     }
 
     /**