From 6da3cde42c90fa5383cf1b48e632cb1107c80d3e Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 25 四月 2026 07:27:16 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java |   65 +++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
index c3d6f14..21afa35 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -1,7 +1,9 @@
 package com.xiaopeng.operation.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xiaopeng.api.dto.operation.XpActivityDto;
+import com.xiaopeng.api.feignClient.order.XpOrderClient;
 import com.xiaopeng.api.model.operation.XpActicityStrategy;
 import com.xiaopeng.api.model.operation.XpActicityUser;
 import com.xiaopeng.api.model.operation.XpActivity;
@@ -21,6 +23,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -47,6 +50,11 @@
     @Resource
     private IXpActivityNoticeService activityNotice;
 
+    @Resource
+    private XpOrderClient xpOrderClient;
+
+
+
     @Override
     public PageInfo<XpActivityDto> pageList(XpActivityPageListQuery query) {
         PageInfo<XpActivityDto> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
@@ -63,17 +71,27 @@
         query.like(XpActivity::getActicityName, acticityName);
         return listObjs(query, Object::toString);
     }
+
     @Override
-    public XpActivity activiting() {
-        LambdaQueryWrapper<XpActivity> query = new LambdaQueryWrapper<>();
-        LocalDateTime now = LocalDateTime.now();
-        query.le(XpActivity::getStartTime, now)
-                .ge(XpActivity::getEndTime, now);
-        List<XpActivity> list = list(query);
-        if(!list.isEmpty()){
-            return list.get(new Random().nextInt(list.size()));
-        }
-        return null;
+    public XpActivity activiting(Long uid) {
+        //获取当前用户可参与的活动
+        List<Integer> actitctiyIds = new ArrayList<>();
+        //全部用户
+        List<XpActicityUser> list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", 1));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+        //判断用户类型 2=老用户,3=新用户,4=流失用户
+        Integer userType = xpOrderClient.determineUserType(uid).getData();
+        list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", userType));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+        //指定用户
+        list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", 5)
+                .last("  and JSON_CONTAINS(user_list, '" + uid + "', '$')"));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+
+        XpActivity one = this.getOne(new QueryWrapper<XpActivity>().eq("status", 2).eq("is_deleted", 0)
+                .eq("mini_program_notification", 1).in(!actitctiyIds.isEmpty(), "id", actitctiyIds)
+                .last(" and now() between start_time and end_time order by float_window_priority desc limit 1"));
+        return one;
     }
 
     @Override
@@ -112,4 +130,31 @@
         return ret;
     }
 
+
+    /**
+     * 获取悬浮弹窗活动数据
+     * @param uid
+     * @return
+     */
+    @Override
+    public XpActivity getFloatActicity(Long uid) {
+        //获取当前用户可参与的活动
+        List<Integer> actitctiyIds = new ArrayList<>();
+        //全部用户
+        List<XpActicityUser> list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", 1));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+        //判断用户类型 2=老用户,3=新用户,4=流失用户
+        Integer userType = xpOrderClient.determineUserType(uid).getData();
+        list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", userType));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+        //指定用户
+        list = userService.list(new QueryWrapper<XpActicityUser>().eq("is_deleted", 0).eq("user_type", 5)
+                .last("  and JSON_CONTAINS(user_list, '" + uid + "', '$')"));
+        actitctiyIds.addAll(list.stream().map(XpActicityUser::getActitcityId).collect(Collectors.toList()));
+
+        XpActivity one = this.getOne(new QueryWrapper<XpActivity>().eq("status", 2).eq("is_deleted", 0)
+                .eq("enable_float_window", 1).in(!actitctiyIds.isEmpty(), "id", actitctiyIds)
+                .last(" and now() between start_time and end_time order by float_window_priority desc limit 1"));
+        return one;
+    }
 }

--
Gitblit v1.7.1