孙永军 1 жил өмнө
parent
commit
59d64293df

+ 11 - 2
src/main/java/com/smcic/api/epg/controller/EpgController.java

@@ -1,16 +1,17 @@
 package com.smcic.api.epg.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.smcic.api.epg.dto.DisableDTO;
 import com.smcic.api.epg.entity.Channel;
-import com.smcic.api.epg.entity.Program;
+import com.smcic.api.epg.entity.KeywordDisableConfig;
 import com.smcic.api.epg.service.impl.ChannelService;
 import com.smcic.api.epg.service.impl.EpgDisableConfigService;
+import com.smcic.api.epg.service.impl.KeywordDisableConfigService;
 import com.smcic.api.epg.service.impl.ProgramService;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -27,6 +28,9 @@ public class EpgController {
     @Resource
     private EpgDisableConfigService epgDisableConfigService;
 
+    @Resource
+    private KeywordDisableConfigService keywordDisableConfigService;
+
     @GetMapping("check")
     public void check(){
 
@@ -62,4 +66,9 @@ public class EpgController {
         return programService.getProgramList(channelId);
     }
 
+    @GetMapping("keywords")
+    public IPage<KeywordDisableConfig> keywordsList(@Param("channelId") Integer channelId, @Param("page") Integer pageNum, @Param("pageSize") Integer pageSize){
+        return keywordDisableConfigService.keywordConfigList(channelId, pageNum, pageSize);
+    }
+
 }

+ 31 - 0
src/main/java/com/smcic/api/epg/controller/KeywordController.java

@@ -0,0 +1,31 @@
+package com.smcic.api.epg.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.smcic.api.epg.entity.KeywordDisableConfig;
+import com.smcic.api.epg.service.impl.KeywordDisableConfigService;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("keywords")
+public class KeywordController {
+
+    @Resource
+    private KeywordDisableConfigService keywordDisableConfigService;
+
+    @GetMapping("list")
+    public IPage<KeywordDisableConfig> list(@Param("channelId") Integer channelId,
+                                            @RequestParam(value = "page", required = false, defaultValue = "1") Integer page,
+                                            @RequestParam(value = "pagesize", required = false, defaultValue = "20") Integer pageSize) {
+        return keywordDisableConfigService.keywordConfigList(channelId, page, pageSize);
+    }
+
+    @PostMapping("disable")
+    public void disable(@RequestBody KeywordDisableConfig keywordDisableConfig){
+        keywordDisableConfigService.disable(keywordDisableConfig);
+    }
+
+}

+ 26 - 0
src/main/java/com/smcic/api/epg/entity/KeywordDisableConfig.java

@@ -0,0 +1,26 @@
+package com.smcic.api.epg.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class KeywordDisableConfig {
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    private Integer channelId;
+
+    private String channelName;
+
+    private String program;
+
+    private LocalDate startTime;
+
+    private LocalDate endTime;
+
+    private Integer status = 1;
+}

+ 7 - 0
src/main/java/com/smcic/api/epg/mapper/KeywordDisableConfigMapper.java

@@ -0,0 +1,7 @@
+package com.smcic.api.epg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.smcic.api.epg.entity.KeywordDisableConfig;
+
+public interface KeywordDisableConfigMapper extends BaseMapper<KeywordDisableConfig> {
+}

+ 7 - 0
src/main/java/com/smcic/api/epg/service/IKeywordDisableConfigService.java

@@ -0,0 +1,7 @@
+package com.smcic.api.epg.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.smcic.api.epg.entity.KeywordDisableConfig;
+
+public interface IKeywordDisableConfigService extends IService<KeywordDisableConfig> {
+}

+ 65 - 0
src/main/java/com/smcic/api/epg/service/impl/KeywordDisableConfigService.java

@@ -0,0 +1,65 @@
+package com.smcic.api.epg.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.smcic.api.epg.dto.DisableDTO;
+import com.smcic.api.epg.entity.Channel;
+import com.smcic.api.epg.entity.EpgDisableConfig;
+import com.smcic.api.epg.entity.KeywordDisableConfig;
+import com.smcic.api.epg.entity.Program;
+import com.smcic.api.epg.mapper.EpgDisableConfigMapper;
+import com.smcic.api.epg.mapper.KeywordDisableConfigMapper;
+import com.smcic.api.epg.service.IEpgDisableConfigService;
+import com.smcic.api.epg.service.IKeywordDisableConfigService;
+import com.smcic.core.advice.APIException;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class KeywordDisableConfigService extends ServiceImpl<KeywordDisableConfigMapper, KeywordDisableConfig> implements IKeywordDisableConfigService {
+
+    @Resource
+    private ChannelService channelService;
+
+    @Resource
+    private ProgramService programService;
+
+    public void disable(KeywordDisableConfig keywordDisableConfig){
+        Channel channel = channelService.getBaseMapper().channelById(keywordDisableConfig.getChannelId());
+        if(null == channel){
+            throw new APIException("不存在的频率频道");
+        }
+
+        KeywordDisableConfig disableConfig = new KeywordDisableConfig();
+        disableConfig.setChannelId(keywordDisableConfig.getChannelId());
+        disableConfig.setChannelName(channel.getTitle());
+        disableConfig.setStartTime(keywordDisableConfig.getStartTime());
+        disableConfig.setEndTime(keywordDisableConfig.getEndTime());
+        disableConfig.setProgram(keywordDisableConfig.getProgram());
+        disableConfig.setStatus(1);
+        save(disableConfig);
+        programService.setCache(keywordDisableConfig.getChannelId());
+    }
+
+    public IPage<KeywordDisableConfig> keywordConfigList(Integer channelId, Integer page, Integer pageSize){
+        LambdaQueryWrapper<KeywordDisableConfig> wrapper = Wrappers.lambdaQuery();
+        wrapper = wrapper.eq(KeywordDisableConfig::getChannelId, channelId).orderByDesc(KeywordDisableConfig::getId);
+        return baseMapper.selectPage(new Page<>(page, pageSize), wrapper);
+    }
+
+    public List<String> disableKeywords(Integer channelId, LocalDateTime startTime, LocalDateTime endTime){
+        return lambdaQuery().eq(KeywordDisableConfig::getChannelId, channelId).eq(KeywordDisableConfig::getStatus, 1)
+                .le(KeywordDisableConfig::getEndTime, startTime).ge(KeywordDisableConfig::getStartTime, endTime)
+                .list().stream().map(KeywordDisableConfig::getProgram).distinct().collect(Collectors.toList());
+    }
+}

+ 23 - 5
src/main/java/com/smcic/api/epg/service/impl/ProgramService.java

@@ -18,14 +18,16 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 @Service
 public class ProgramService extends ServiceImpl<ProgramMapper, Program> implements IProgramService {
 
     @Resource
-    private EpgDisableConfigService sspDisableConfigService;
+    private EpgDisableConfigService epgDisableConfigService;
+
+    @Resource
+    private KeywordDisableConfigService keywordDisableConfigService;
 
     private final Cache<Integer, Object> cache = Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).build();
 
@@ -38,14 +40,16 @@ public class ProgramService extends ServiceImpl<ProgramMapper, Program> implemen
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("M月d日");
 
-        Map<LocalDateTime, EpgDisableConfig> sspDisableConfigMap = sspDisableConfigService.cfMap(channelId, start, end);
+        Map<LocalDateTime, EpgDisableConfig> sspDisableConfigMap = epgDisableConfigService.cfMap(channelId, start, end);
 
         baseMapper.listByChannel(channelId, start, end).stream().peek(program -> {
             if(sspDisableConfigMap.containsKey(program.getStartTime())){
                 program.setStatus(1);
             }else{
                 program.setStatus(0);
+
             }
+
         }).collect(Collectors.groupingBy(Program::getBroadcastDate)).forEach((k, v) -> {
             int status = 0;
             for(Program program : v){
@@ -79,9 +83,23 @@ public class ProgramService extends ServiceImpl<ProgramMapper, Program> implemen
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("M月d日");
 
-        Map<LocalDateTime, EpgDisableConfig> sspDisableConfigMap = sspDisableConfigService.cfMap(channelId, start, end);
+        Map<LocalDateTime, EpgDisableConfig> sspDisableConfigMap = epgDisableConfigService.cfMap(channelId, start, end);
+
+        /*
 
-        baseMapper.listByChannel(channelId, start, end).stream().filter(program -> sspDisableConfigMap.containsKey(program.getStartTime()))
+        * */
+        List<String> keywords = keywordDisableConfigService.disableKeywords(channelId, start, end);
+        baseMapper.listByChannel(channelId, start, end).stream().filter(program -> {
+            if(sspDisableConfigMap.containsKey(program.getStartTime())){
+                return true;
+            }
+            for(String keyword :keywords){
+                if(program.getTitle().contains(keyword)){
+                    return true;
+                }
+            }
+            return false;
+        })
                 .peek(program -> program.setStatus(1)).collect(Collectors.groupingBy(Program::getBroadcastDate))
                 .forEach((k, v) -> rs.add(ImmutableMap.of("date", k.format(formatter), "title", k.format(formatter1), "epg", v)));
         rs.sort(Comparator.comparing((Map<String, Object> o) -> o.get("date").toString()));