ソースを参照

站点独立活动代码修改

skyline 2 年 前
コミット
0cd134a8f3

+ 12 - 1
admin/src/main/java/com/kym/admin/jobs/ActivityDelayJob.java

@@ -3,17 +3,22 @@ package com.kym.admin.jobs;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.Activity;
+import com.kym.entity.admin.ActivityStation;
 import com.kym.entity.admin.Banner;
 import com.kym.entity.admin.RechargeRights;
 import com.kym.entity.admin.delay.DelayActivity;
 import com.kym.service.admin.ActivityService;
+import com.kym.service.admin.ActivityStationService;
 import com.kym.service.admin.BannerService;
 import com.kym.service.admin.RechargeRightsService;
 import com.kym.service.jobs.DelayService;
 import com.kym.service.jobs.DelayedItem;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Scope;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
 
 import java.util.concurrent.DelayQueue;
 import java.util.concurrent.ExecutorService;
@@ -36,6 +41,7 @@ public class ActivityDelayJob implements DelayService<DelayActivity> {
     private final static DelayQueue<DelayedItem<DelayActivity>> DELAY_QUEUE = new DelayQueue<>();
 
     private final ActivityService activityService;
+    private final ActivityStationService activityStationService;
     private final RechargeRightsService rechargeRightsService;
     private final BannerService bannerService;
     /**
@@ -43,8 +49,9 @@ public class ActivityDelayJob implements DelayService<DelayActivity> {
      */
     private final ExecutorService executor = Executors.newFixedThreadPool(1);
 
-    public ActivityDelayJob(ActivityService activityService, RechargeRightsService rechargeRightsService, BannerService bannerService) {
+    public ActivityDelayJob(ActivityService activityService, ActivityStationService activityStationService, RechargeRightsService rechargeRightsService, BannerService bannerService) {
         this.activityService = activityService;
+        this.activityStationService = activityStationService;
         this.rechargeRightsService = rechargeRightsService;
         this.bannerService = bannerService;
     }
@@ -90,6 +97,8 @@ public class ActivityDelayJob implements DelayService<DelayActivity> {
                         // 开始活动
                         // 修改活动状态为进行中
                         activityService.lambdaUpdate().set(Activity::getStatus, Activity.STATUS_进行中).eq(Activity::getId, delayActivity.getId()).update();
+                        // 修改活动站点关联表状态为进行中
+                        activityStationService.lambdaUpdate().set(ActivityStation::getStatus, Activity.STATUS_进行中).eq(ActivityStation::getActivityId, delayActivity.getId()).update();
                         // 修改充值权益为进行中
                         rechargeRightsService.lambdaUpdate().set(RechargeRights::getStatus, RechargeRights.STATUS_进行中).eq(RechargeRights::getActivityId, delayActivity.getId()).update();
                         // 修改banner状态为有效
@@ -100,6 +109,8 @@ public class ActivityDelayJob implements DelayService<DelayActivity> {
                         // 停止活动
                         // 修改活动状态为已结束
                         activityService.lambdaUpdate().set(Activity::getStatus, Activity.STATUS_已结束).eq(Activity::getId, delayActivity.getId()).update();
+                        // 修改活动站点关联表状态为已结束
+                        activityStationService.lambdaUpdate().set(ActivityStation::getStatus, Activity.STATUS_已结束).eq(ActivityStation::getActivityId, delayActivity.getId()).update();
                         // 修改充值权益为进行中
                         rechargeRightsService.lambdaUpdate().set(RechargeRights::getStatus, RechargeRights.STATUS_已结束).eq(RechargeRights::getActivityId, delayActivity.getId()).update();
                         // 修改banner状态为失效

+ 5 - 0
entity/src/main/java/com/kym/entity/admin/ActivityStation.java

@@ -32,4 +32,9 @@ public class ActivityStation extends BaseEntity {
      * 站点id
      */
     private String stationId;
+
+    /**
+     * 活动状态:0-未开始,1-进行中,2-已结束,3-已取消
+     */
+    private Integer status;
 }

+ 6 - 1
entity/src/main/java/com/kym/entity/admin/vo/StationVo.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson2.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.kym.entity.BaseEntity;
+import com.kym.entity.admin.Activity;
 import com.kym.entity.enplus.EnEquipmentInfo;
 import lombok.Getter;
 import lombok.Setter;
@@ -190,7 +191,11 @@ public class StationVo extends BaseEntity implements Serializable {
      */
     @TableField(exist = false)
     private List<EnEquipmentInfo> equipmentInfos;
-
+    /**
+     * 站点活动
+     */
+    @TableField(exist = false)
+    private List<Activity> activityList;
 
     @JSONCreator
     public StationVo(@JSONField(name = "StationLng") Double lng, @JSONField(name = "StationLat") Double lat, @JSONField(name = "EquipmentInfos") JSONArray array) {

+ 4 - 1
mapper/src/main/resources/mappers/admin/ActivityStationMapper.xml

@@ -6,11 +6,14 @@
     <resultMap id="BaseResultMap" type="com.kym.entity.admin.ActivityStation">
         <result column="activity_id" property="activityId" />
         <result column="station_id" property="stationId" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        activity_id, station_id
+        activity_id, station_id,status,create_time, update_time
     </sql>
 
 </mapper>

+ 25 - 10
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -8,29 +8,25 @@ import com.kym.common.annotation.DynamicCache;
 import com.kym.common.enums.EnPlusApi;
 import com.kym.common.utils.AESUtil;
 import com.kym.common.utils.CommUtil;
-import com.kym.entity.admin.ConnectorInfo;
-import com.kym.entity.admin.EquipmentInfo;
-import com.kym.entity.admin.EquipmentRelation;
-import com.kym.entity.admin.Station;
+import com.kym.entity.admin.*;
 import com.kym.entity.admin.vo.ConnectorVo;
 import com.kym.entity.admin.vo.StationVo;
 import com.kym.entity.enplus.EnEquipmentInfo;
 import com.kym.entity.enplus.EnStationStatsInfo;
 import com.kym.entity.enplus.EnStationStatusInfo;
 import com.kym.mapper.admin.StationMapper;
-import com.kym.service.admin.ConnectorInfoService;
-import com.kym.service.admin.EquipmentInfoService;
-import com.kym.service.admin.EquipmentRelationService;
-import com.kym.service.admin.StationService;
+import com.kym.service.admin.*;
 import com.kym.service.cache.KymCache;
 import com.kym.service.enplus.EnPlusService;
 import jakarta.annotation.PostConstruct;
 import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -50,12 +46,18 @@ public class StationServiceImpl extends MPJBaseServiceImpl<StationMapper, Statio
     private final EquipmentInfoService equipmentInfoService;
     private final ConnectorInfoService connectorInfoService;
     private final EquipmentRelationService equipmentRelationService;
+    private final ActivityStationService activityStationService;
+    private final ActivityService activityService;
 
-    public StationServiceImpl(EnPlusService enPlusService, EquipmentInfoService equipmentInfoService, ConnectorInfoService connectorInfoService, EquipmentRelationService equipmentRelationService) {
+    public StationServiceImpl(EnPlusService enPlusService, EquipmentInfoService equipmentInfoService,
+                              ConnectorInfoService connectorInfoService, EquipmentRelationService equipmentRelationService,
+                              ActivityStationService activityStationService, @Lazy ActivityService activityService) {
         this.enPlusService = enPlusService;
         this.equipmentInfoService = equipmentInfoService;
         this.connectorInfoService = connectorInfoService;
         this.equipmentRelationService = equipmentRelationService;
+        this.activityStationService = activityStationService;
+        this.activityService = activityService;
     }
 
     @PostConstruct
@@ -93,7 +95,20 @@ public class StationServiceImpl extends MPJBaseServiceImpl<StationMapper, Statio
             }
         });
 
-        stationList.forEach(vo -> vo.setEquipmentInfos(vo.getEquipmentInfos().stream().sorted(Comparator.comparing(EnEquipmentInfo::getShortId)).toList()));
+        // 查询正在进行中的活动和各站点正在进行中的活动
+        var activityList = activityService.lambdaQuery().eq(Activity::getStatus, Activity.STATUS_进行中).list();
+
+        var activityStationListMap = activityStationService.lambdaQuery().eq(ActivityStation::getStatus, Activity.STATUS_进行中).list()
+                .stream().collect(Collectors.groupingBy(ActivityStation::getStationId));
+
+        var station2ActivityList = new HashMap<String, List<Activity>>();
+
+        activityStationListMap.forEach((k, v) -> {
+            station2ActivityList.put(k,
+                    v.stream().map(item -> activityList.stream().filter(activity -> activity.getId().equals(item.getActivityId())).findFirst().orElse(null)).toList());
+        });
+
+        stationList.forEach(vo -> vo.setActivityList(station2ActivityList.get(vo.getStationId())).setEquipmentInfos(vo.getEquipmentInfos().stream().sorted(Comparator.comparing(EnEquipmentInfo::getShortId)).toList()));
         return stationList;
 
     }