Quellcode durchsuchen

首页站点活动查询优化

skyline vor 1 Jahr
Ursprung
Commit
5224a8d5ab

+ 4 - 0
service/src/main/java/com/kym/service/admin/ActivityService.java

@@ -6,6 +6,8 @@ import com.kym.entity.admin.queryParams.ActivityQueryParam;
 import com.kym.entity.admin.vo.ActivityVo;
 import com.kym.entity.common.PageBean;
 
+import java.util.List;
+
 /**
  * <p>
  * 服务类
@@ -25,4 +27,6 @@ public interface ActivityService extends MPJBaseService<Activity> {
     void terminateActivity(String activityId);
 
     void handleRechargeActivity(long userId, int rechargeAmount);
+
+    List<Activity> getAvailableCouponActivities();
 }

+ 21 - 2
service/src/main/java/com/kym/service/admin/impl/ActivityServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.github.pagehelper.PageHelper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.IDGenerator;
 import com.kym.entity.admin.*;
@@ -14,10 +16,10 @@ import com.kym.entity.common.PageBean;
 import com.kym.entity.common.RedisKeys;
 import com.kym.entity.miniapp.UserRechargeRights;
 import com.kym.mapper.admin.ActivityMapper;
-import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import com.kym.service.admin.*;
 import com.kym.service.jobs.DelayService;
 import com.kym.service.miniapp.UserRechargeRightsService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
@@ -95,7 +97,7 @@ public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activ
         // 新增充值优惠活动
         if (activityVo.getDiscountType().equals(Activity.DISCOUNT_TYPE_服务费折扣权益) && !CommUtil.isEmptyOrNull(activityVo.getRechargeRightsList())) {
             var rechargeRightsList = activityVo.getRechargeRightsList().stream().peek(rechargeRights -> {
-                BeanUtils.copyProperties(activity, rechargeRights, "id","name");
+                BeanUtils.copyProperties(activity, rechargeRights, "id", "name");
                 rechargeRights.setActivityId(activity.getId());
             }).toList();
             rechargeRightsService.saveBatch(rechargeRightsList);
@@ -261,4 +263,21 @@ public class ActivityServiceImpl extends MyBaseServiceImpl<ActivityMapper, Activ
         log.info("RechargeActivityTask run end....");
     }
 
+
+    /**
+     * 获取可参与的优惠券(主动领取)活动
+     *
+     * @return
+     */
+    @Override
+    public List<Activity> getAvailableCouponActivities() {
+        MPJLambdaWrapper<Activity> wrapper = JoinWrappers.lambda(Activity.class)
+                .selectAll(Activity.class)
+                .leftJoin(Coupon.class, Coupon::getActivityId, Activity::getId)
+                .eq(Activity::getStatus, Coupon.STATUS_进行中)
+                .eq(Coupon::getReceiveType, Coupon.RECEIVE_TYPE_主动领取);
+        return this.selectJoinList(Activity.class, wrapper);
+    }
+
+
 }

+ 8 - 2
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -6,6 +6,8 @@ import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.kym.common.annotation.DynamicCache;
 import com.kym.common.enums.EnPlusApi;
 import com.kym.common.exception.BusinessException;
@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -156,8 +159,11 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
             }
         }
 
-        // 查询正在进行中的活动和各站点正在进行中的活动
-        var activityList = activityService.lambdaQuery().eq(Activity::getStatus, Activity.STATUS_进行中).list();
+        // 查询正在进行中的活动和各站点正在进行中的活动 (限充值优惠和优惠券领取活动)
+        var rechargeRightsActivityList = activityService.lambdaQuery().eq(Activity::getStatus, Activity.STATUS_进行中).eq(Activity::getDiscountType, Activity.DISCOUNT_TYPE_服务费折扣权益).list();
+        var couponActivityList = activityService.getAvailableCouponActivities();
+        var activityList = Stream.concat(rechargeRightsActivityList.stream(), couponActivityList.stream()).toList();
+
         if (CommUtil.isNotEmptyAndNull(activityList)) {
             var station2ActivityListMap = activityStationService.lambdaQuery().eq(ActivityStation::getStatus, Activity.STATUS_进行中).list()
                     .stream().collect(Collectors.groupingBy(ActivityStation::getStationId));