Procházet zdrojové kódy

1、内容下发,前端获取节目详情接口优化

lihao16 před 6 měsíci
rodič
revize
ff74e977cb

+ 54 - 14
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/FrontItemInfoVO.java

@@ -1,5 +1,6 @@
 package com.inspur.source.domain.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.inspur.source.domain.bo.SmsbItemPushTimeRangeBo;
 import lombok.Data;
 
@@ -15,36 +16,75 @@ import java.util.List;
 public class FrontItemInfoVO {
 
     /**
-     * 内容下发ID
+     * 节目ID
      */
-    private Long pushId;
+    private Long itemId;
 
     /**
-     * 推送名称
+     * 优先级 1-垫片 2-常规 3-紧急
      */
-    private String pushName;
+    private Long level;
 
+    /**
+     * 类型 1-轮播 2-分屏 3-素材
+     */
+    private Long itemType;
 
-    private Long itemId;
+    /**
+     * 资源列表
+     */
+    private List<FrontItemSourceVO> sourceList;
 
-    private Date createTime;
+    /** 分屏组 begin */
+    /**
+     * 宽
+     */
+    private Integer itemWidth;
 
     /**
-     * 优先级 1-垫片 2-常规 3-紧急
+     * 
      */
-    private Long level;
+    private Integer itemHeight;
 
     /**
-     * 类型 1-轮播 2-分屏 3-素材
+     * 类型 2 3 独立播放
      */
-    private Long itemType;
+    private Integer splitScreen;
 
-    private List<SmsbItemPushTimeRangeBo> timeRange;
+    /**
+     * 背景图
+     */
+    private String background;
 
-    private String weekDays;
+    /**
+     * 坐标
+     */
+    private String position;
 
-    private List<FrontItemSourceVO> sourceList;
+    /**
+     * 是否跑马灯
+     */
+    private Integer hasPmd;
+
+    /**
+     * 跑马灯位置 1-上 2-下
+     */
+    private Integer positionPmd;
 
-    private SmsbItemSplitScreenVo splitItemInfo;
+    /**
+     * 跑马灯内容
+     */
+    private String contentPmd;
+
+    /**
+     * 有无天气
+     */
+    private Integer hasWeather;
+
+    /**
+     * 有无时间
+     */
+    private Integer hasTime;
+    /** 分屏组 end */
 
 }

+ 22 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/FrontPushInfoVo.java

@@ -1,5 +1,6 @@
 package com.inspur.source.domain.vo;
 
+import com.inspur.source.domain.bo.SmsbItemPushTimeRangeBo;
 import lombok.Data;
 
 import java.util.List;
@@ -11,6 +12,16 @@ import java.util.List;
 @Data
 public class FrontPushInfoVo {
 
+    /**
+     * 内容下发ID
+     */
+    private Long pushId;
+
+    /**
+     * 推送名称
+     */
+    private String pushName;
+
     /**
      * 设备ID
      */
@@ -26,10 +37,20 @@ public class FrontPushInfoVo {
      */
     private Integer height;
 
+    /**
+     * 时间段
+     */
+    private List<SmsbItemPushTimeRangeBo> timeRange;
+
+    /**
+     * 周
+     */
+    private String weekDays;
+
 
     /**
      * 节目列表
      */
-    private List<FrontItemInfoVO> itemInfoList;
+    private FrontItemInfoVO itemInfo;
 
 }

+ 1 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemPushVo.java

@@ -56,7 +56,7 @@ public class SmsbItemPushVo implements Serializable {
     /**
      * 发布状态 1-待审核 2-发布中 3-已发布
      */
-    @ExcelProperty(value = "发布状态 1-待审核 2-发布中 3-已发布", converter = ExcelDictConvert.class)
+    @ExcelProperty(value = "发布状态 1-待审核 2-发布中 3-已发布 4-已下架", converter = ExcelDictConvert.class)
     @ExcelDictFormat(dictType = "smsb_push_state")
     private String status;
 

+ 7 - 7
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemSplitScreenVo.java

@@ -41,19 +41,19 @@ public class SmsbItemSplitScreenVo implements Serializable {
      * 宽
      */
     @ExcelProperty(value = "宽")
-    private Long width;
+    private Integer width;
 
     /**
      * 高
      */
     @ExcelProperty(value = "高")
-    private Long height;
+    private Integer height;
 
     /**
      * 类型 2 3 独立播放
      */
     @ExcelProperty(value = "类型 2 3 独立播放")
-    private Long splitScreen;
+    private Integer splitScreen;
 
     /**
      * 背景图
@@ -71,13 +71,13 @@ public class SmsbItemSplitScreenVo implements Serializable {
      * 是否跑马灯
      */
     @ExcelProperty(value = "是否跑马灯")
-    private Long hasPmd;
+    private Integer hasPmd;
 
     /**
      * 跑马灯位置 1-上 2-下
      */
     @ExcelProperty(value = "跑马灯位置 1-上 2-下")
-    private Long positionPmd;
+    private Integer positionPmd;
 
     /**
      * 跑马灯内容
@@ -89,13 +89,13 @@ public class SmsbItemSplitScreenVo implements Serializable {
      * 有无天气
      */
     @ExcelProperty(value = "有无天气")
-    private Long hasWeather;
+    private Integer hasWeather;
 
     /**
      * 有无时间
      */
     @ExcelProperty(value = "有无时间")
-    private Long hasTime;
+    private Integer hasTime;
 
     /**
      * 分屏组包含的资源ID列表

+ 1 - 2
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemPushMapper.java

@@ -27,11 +27,10 @@ public interface SmsbItemPushMapper extends BaseMapperPlus<SmsbItemPush, SmsbIte
 
     /**
      * 根据设备id查询内容发布信息
-     * @param level
      * @param deviceId
      * @return
      */
-    List<SmsbItemPushVo> selectFrontOnePushByDeviceId(@Param("deviceId") Long deviceId, @Param("level") Integer level);
+    List<SmsbItemPushVo> selectFrontOnePushByDeviceId(@Param("deviceId") Long deviceId);
 
     /**
      * 查询需要当前人员审核的内容发布

+ 55 - 63
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushServiceImpl.java

@@ -419,12 +419,12 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
         return R.ok(result);
     }
 
-    @Cacheable(cacheNames = "global:msr:device:identifier", key = "#identifier")
+    // @Cacheable(cacheNames = "global:msr:device:push", key = "#identifier")
     public FrontPushInfoVo getItemPushInfoByCache(String identifier) {
         return generatePushInfo(identifier);
     }
 
-    @CachePut(cacheNames = "global:msr:device:identifier", key = "#identifier")
+    // @CachePut(cacheNames = "global:msr:device:push", key = "#identifier")
     public FrontPushInfoVo cachePushInfo(String identifier) {
         return generatePushInfo(identifier);
     }
@@ -437,75 +437,67 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
         result.setDeviceId(deviceId);
         result.setWidth(deviceVo.getWidth());
         result.setHeight(deviceVo.getHeight());
-        // 查询不同等级的节目发布 100垫片 200常规 300紧急
-        List<SmsbItemPushVo> smsbItemPushVoLevel1 = baseMapper.selectFrontOnePushByDeviceId(deviceId, 100);
-        buildPushItemInfo(result, smsbItemPushVoLevel1);
-        List<SmsbItemPushVo> smsbItemPushVoLevel2 = baseMapper.selectFrontOnePushByDeviceId(deviceId, 200);
-        buildPushItemInfo(result, smsbItemPushVoLevel2);
-        List<SmsbItemPushVo> smsbItemPushVoLevel3 = baseMapper.selectFrontOnePushByDeviceId(deviceId, 300);
-        buildPushItemInfo(result, smsbItemPushVoLevel3);
+        // 根据等级倒序100垫片 200常规 300紧急 时间范围内的节目列表
+        List<SmsbItemPushVo> smsbItemPushVoList = baseMapper.selectFrontOnePushByDeviceId(deviceId);
+        if (CollectionUtil.isEmpty(smsbItemPushVoList)) {
+            return result;
+        }
+        buildPushItemInfo(result, smsbItemPushVoList.get(0));
         return result;
     }
 
-    private void buildPushItemInfo(FrontPushInfoVo result, List<SmsbItemPushVo> smsbItemPushVoList) {
-        if (CollectionUtil.isEmpty(smsbItemPushVoList)) {
-            return;
+    private void buildPushItemInfo(FrontPushInfoVo result, SmsbItemPushVo smsbItemPushVo) {
+        FrontItemInfoVO itemInfoVO = new FrontItemInfoVO();
+        // pushId - 内容下发基础信息
+        Long pushId = smsbItemPushVo.getId();
+        result.setPushId(pushId);
+        result.setPushName(smsbItemPushVo.getName());
+        itemInfoVO.setLevel(smsbItemPushVo.getLevel());
+        // 时间排期
+        List<SmsbItemPushTimeVo> pushTimeList = itemPushTimeMapper.selectVoList(new LambdaQueryWrapper<SmsbItemPushTime>()
+            .eq(SmsbItemPushTime::getPushId, pushId));
+        String dateStart = pushTimeList.get(0).getStartDate();
+        String dateEnd = pushTimeList.get(0).getEndDate();
+        List<SmsbItemPushTimeRangeBo> timeRangeList = new ArrayList<>();
+        for (SmsbItemPushTimeVo pushTime : pushTimeList) {
+            SmsbItemPushTimeRangeBo timeRange = new SmsbItemPushTimeRangeBo();
+            timeRange.setStart(dateStart + " " + pushTime.getTimeStart());
+            timeRange.setEnd(dateEnd + " " + pushTime.getTimeEnd());
+            timeRangeList.add(timeRange);
         }
-        for (SmsbItemPushVo smsbItemPushVo : smsbItemPushVoList) {
-            FrontItemInfoVO itemInfoVO = new FrontItemInfoVO();
-            // pushId - 内容下发基础信息
-            Long pushId = smsbItemPushVo.getId();
-            itemInfoVO.setPushId(pushId);
-            itemInfoVO.setPushName(smsbItemPushVo.getName());
-            itemInfoVO.setLevel(smsbItemPushVo.getLevel());
-            // 时间排期
-            List<SmsbItemPushTimeVo> pushTimeList = itemPushTimeMapper.selectVoList(new LambdaQueryWrapper<SmsbItemPushTime>()
-                .eq(SmsbItemPushTime::getPushId, pushId));
-            String dateStart = pushTimeList.get(0).getStartDate();
-            String dateEnd = pushTimeList.get(0).getEndDate();
-            List<SmsbItemPushTimeRangeBo> timeRangeList = new ArrayList<>();
-            for (SmsbItemPushTimeVo pushTime : pushTimeList) {
-                SmsbItemPushTimeRangeBo timeRange = new SmsbItemPushTimeRangeBo();
-                timeRange.setStart(dateStart + " " + pushTime.getTimeStart());
-                timeRange.setEnd(dateEnd + " " + pushTime.getTimeEnd());
-                timeRangeList.add(timeRange);
-            }
-            itemInfoVO.setTimeRange(timeRangeList);
-            // weekDays
-            itemInfoVO.setWeekDays(pushTimeList.get(0).getWeekDays());
-            // 根据pushId 查询出最新的一个节目
-            SmsbItemPushRel itemPushRel = itemPushRelMapper.selectOne(new LambdaQueryWrapper<SmsbItemPushRel>()
-                .eq(SmsbItemPushRel::getPushId, pushId).orderByDesc(SmsbItemPushRel::getCreateTime));
-            // 节目详情
-            SmsbItemVo smsbItemVo = itemMapper.selectVoById(itemPushRel.getItemId());
-            itemInfoVO.setItemType(smsbItemVo.getItemType());
-            itemInfoVO.setItemId(smsbItemVo.getId());
-            // 资源列表
-            // 轮播组
-            List<FrontItemSourceVO> sourceList = new ArrayList<>();
-            if (smsbItemVo.getItemType() == 1) {
-                sourceList = getItemType1SourceList(pushId);
-                itemInfoVO.setSourceList(sourceList);
-            } else if (smsbItemVo.getItemType() == 2) {
-                SmsbItemSplitScreenVo splitItemInfo = getSplitItemInfo(smsbItemVo, pushId);
-                itemInfoVO.setSplitItemInfo(splitItemInfo);
-                sourceList = getItemType1SourceList(pushId);
-                itemInfoVO.setSourceList(sourceList);
-            }
-            if (null == result.getItemInfoList()) {
-                List<FrontItemInfoVO> itemInfoList = new ArrayList<>();
-                itemInfoList.add(itemInfoVO);
-                result.setItemInfoList(itemInfoList);
-            } else {
-                result.getItemInfoList().add(itemInfoVO);
-            }
+        result.setTimeRange(timeRangeList);
+        // weekDays
+        result.setWeekDays(pushTimeList.get(0).getWeekDays());
+        // 根据pushId 查询出最新的一个节目
+        SmsbItemPushRel itemPushRel = itemPushRelMapper.selectOne(new LambdaQueryWrapper<SmsbItemPushRel>()
+            .eq(SmsbItemPushRel::getPushId, pushId).orderByDesc(SmsbItemPushRel::getCreateTime));
+        // 节目详情
+        SmsbItemVo smsbItemVo = itemMapper.selectVoById(itemPushRel.getItemId());
+        itemInfoVO.setItemType(smsbItemVo.getItemType());
+        itemInfoVO.setItemId(smsbItemVo.getId());
+        // 资源列表
+        // 轮播组
+        List<FrontItemSourceVO> sourceList = new ArrayList<>();
+        if (smsbItemVo.getItemType() == 1) {
+            sourceList = getItemSourceListByPushId(pushId);
+            itemInfoVO.setSourceList(sourceList);
+        } else if (smsbItemVo.getItemType() == 2) {
+            getSplitItemInfo(smsbItemVo, itemInfoVO);
+            sourceList = getItemSourceListByPushId(pushId);
+            itemInfoVO.setSourceList(sourceList);
         }
+        result.setItemInfo(itemInfoVO);
     }
 
-    private SmsbItemSplitScreenVo getSplitItemInfo(SmsbItemVo smsbItemVo, Long pushId) {
+    private void getSplitItemInfo(SmsbItemVo smsbItemVo,FrontItemInfoVO itemInfoVO) {
         SmsbItemSplitScreenVo smsbItemSplitScreenVo = itemSplitScreenMapper.selectVoOne(new LambdaQueryWrapper<SmsbItemSplitScreen>()
             .eq(SmsbItemSplitScreen::getItemId, smsbItemVo.getId()).orderByDesc(SmsbItemSplitScreen::getCreateTime));
-        return smsbItemSplitScreenVo;
+        if (null == smsbItemSplitScreenVo) {
+            return;
+        }
+        BeanUtils.copyProperties(smsbItemSplitScreenVo, itemInfoVO);
+        itemInfoVO.setItemHeight(smsbItemSplitScreenVo.getHeight());
+        itemInfoVO.setItemWidth(smsbItemSplitScreenVo.getWidth());
     }
 
     @Override
@@ -524,7 +516,7 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
             .eq(SmsbItemPushDevice::getPushId, pushId).eq(SmsbItemPushDevice::getDeviceId, deviceId));
     }
 
-    private List<FrontItemSourceVO> getItemType1SourceList(Long pushId) {
+    private List<FrontItemSourceVO> getItemSourceListByPushId(Long pushId) {
         // 根据pushId 查询关联的轮播组
         List<FrontItemSourceVO> fileRelList = itemFileRelMapper.selectVoListByPushId(pushId);
         return fileRelList;

+ 2 - 2
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushMapper.xml

@@ -18,9 +18,9 @@
                  INNER JOIN smsb_item_push_device ipd ON ip.id = ipd.push_id
         WHERE ipd.device_id = #{deviceId}
           AND ip.STATUS = 'finish'
-          AND ip.level = #{level}
+          AND ipd.push_state != 4
           AND now() between ip.start_date and ip.end_date
-        ORDER BY ipd.create_time DESC
+        ORDER BY ip.level desc, ipd.create_time DESC
     </select>
 
     <select id="selectNeedReviewList" resultType="com.inspur.source.domain.vo.SmsbItemPushVo">