Przeglądaj źródła

fix 多余车票清除

zoujiajian 1 rok temu
rodzic
commit
2b64c7ba39

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

@@ -76,4 +76,6 @@ public interface GroupsRelationMapper extends BaseMapper<GroupsRelation> {
 	Long selectGoodsDonQaByGoodsId(Long goodsId);
 
 	GroupsRelation selectRelationByAccountAndNum(@Param("account") String account, @Param("password") String password, @Param("goodsId") Long goodsId, @Param("num") Integer num);
+
+	List<GroupsRelation> selectExtraRelation(@Param("userId") Long userId, @Param("skuId") Long skuId, @Param("relationId") Long relationId);
 }

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

@@ -376,4 +376,12 @@
                  inner join groups_relation gr on gr.groups_id = gt.id
         where gr.num = #{num} and gr.expiry_time > now() limit 1
     </select>
+
+    <select id="selectExtraRelation" resultType="com.cyksj.model.entity.GroupsRelation">
+        select gr.*
+        from (select * from groups_relation where user_id = #{userId} and id != #{relationId} and status not in ('none','locking')) gr
+                 inner join groups_trips gt on gt.id = gr.groups_id
+            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>
 </mapper>

+ 21 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -297,6 +297,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                                 List<GoodsDonSku> goodsDonSkus = Jsons.parseList(sku.getBenefitsList(), GoodsDonSku.class);
                                 //自购实物 获取权益
                                 userRealOrderBenefitsService.getPayRealGoodsBenefits(orderDon.getUserId(), orderDon.getId(), orderDon.getYhsId(), goodsDonSkus);
+                                //清除多余的车票
+                                clearExtraRelation(orderDon);
                             } catch (Exception e) {
                                 redisService.del(benefitsKey);
                             }
@@ -1407,4 +1409,23 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
         }
     }
+
+    private void clearExtraRelation(OrderDon orderDon) {
+        List<UserPayEquipmentReceiveBenefitsRecord> userPayEquipmentReceiveBenefitsRecords = receiveBenefitsRecordMapper.selectList(Wrappers.lambdaQuery(UserPayEquipmentReceiveBenefitsRecord.class)
+                .eq(UserPayEquipmentReceiveBenefitsRecord::getRealOrderId, orderDon.getId()));
+        userPayEquipmentReceiveBenefitsRecords.forEach(record -> {
+            Long skuId = record.getSkuId();
+            List<GroupsRelation> relations = relationMapper.selectExtraRelation(orderDon.getUserId(), skuId, record.getRelationId());
+            relations.forEach(relation -> {
+                //不是优惠加购
+                Integer count = orderDiscountPlusPurchaseSkuRelationMapper.selectCount(Wrappers.lambdaQuery(OrderDiscountPlusPurchaseSkuRelation.class)
+                        .eq(OrderDiscountPlusPurchaseSkuRelation::getUserId, relation.getUserId())
+                        .apply("JSON_CONTAINS(relation_ids,'" + relation.getId() + "')"));
+                if (count == 0) {
+                    log.info("非优惠加购订单,直接清除userId:{}车票:{}", relation.getUserId(), relation.getId());
+                    relationClearService.clearTicket(relation, UserTicketClearedRecord.Source.manual);
+                }
+            });
+        });
+    }
 }