admin
2025-02-20 f537abe9f3646c739beaf15076246a2f71a347e9
src/main/java/com/yeshi/buwan/service/imp/juhe/InternetSearchVideoServiceImpl.java
@@ -1,11 +1,15 @@
package com.yeshi.buwan.service.imp.juhe;
import com.yeshi.buwan.dao.juhe.youku.InternetSearchVideoDao;
import com.yeshi.buwan.domain.system.SystemConfig;
import com.yeshi.buwan.domain.video.InternetSearchVideo;
import com.yeshi.buwan.dto.mq.InternetSearchVideoMQMsg;
import com.yeshi.buwan.exception.ParamsException;
import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
import com.yeshi.buwan.util.mq.CMQManager;
import com.yeshi.buwan.service.inter.system.SystemConfigService;
import com.yeshi.buwan.util.mq.rabbit.RabbitmqManager;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -21,12 +25,38 @@
    @Resource
    private InternetSearchVideoDao internetSearchVideoDao;
    @Resource
    private SystemConfigService systemConfigService;
    @Resource
    private RabbitmqManager rabbitmqManager;
    private boolean isCanSave(InternetSearchVideo video) {
        SystemConfig systemConfig = systemConfigService.getConfigByKeyCache("internetSearchInvalidKeyForSave");
        if (systemConfig == null)
            return true;
        String value = systemConfig.getValue();
        String[] invalidNames = value.split("#");
        for (String st : invalidNames) {
            if (video.getName().contains(st)) {
                return false;
            }
        }
        return true;
    }
    @Validated
    @Override
    public void save(@Valid InternetSearchVideo video) throws ParamsException, Exception {
    public InternetSearchVideo save(@Valid InternetSearchVideo video) throws ParamsException, Exception {
        if (!isCanSave(video))
            return null;
        InternetSearchVideo oldVideo = internetSearchVideoDao.get(video.getId());
        Set<Integer> resourceIds = listResourceId(video);
        Set<Integer> resourceIds = new HashSet<>();
        if (oldVideo != null) {
            resourceIds.addAll(listResourceId(oldVideo));
        }
        int resourceId = Integer.parseInt(video.getResourceIds());
        resourceIds.add(resourceId);
        Integer[] rids = new Integer[resourceIds.size()];
@@ -38,11 +68,13 @@
        } else {
            internetSearchVideoDao.updateSelective(video);
        }
        //全网搜入搜索引擎
        InternetSearchVideoMQMsg msg = new InternetSearchVideoMQMsg();
        msg.setId(video.getId());
        msg.setResourceId(resourceId);
        CMQManager.getInstance().addInternetSearchVideoUpdateMsg(msg);
        rabbitmqManager.addInternetSearchVideoUpdateMsg(msg);
        return video;
    }
    private Set<Integer> listResourceId(InternetSearchVideo video) {
@@ -82,5 +114,54 @@
        return internetSearchVideoDao.get(id);
    }
    @Cacheable(value = "internetSearch", key = "'selectByPrimaryKey-'+#id")
    @Override
    public InternetSearchVideo selectByPrimaryKeyCache(String id) {
        return selectByPrimaryKey(id);
    }
    @Override
    public List<InternetSearchVideo> listByIds(List<String> ids) {
        if (ids == null || ids.size() == 0) {
            return new ArrayList<>();
        }
        Query query = new Query();
        List<Criteria> orList = new ArrayList<>();
        for (String id : ids) {
            orList.add(Criteria.where("id").is(id));
        }
        Criteria[] ors = new Criteria[orList.size()];
        orList.toArray(ors);
        query.addCriteria(new Criteria().orOperator(ors));
        return internetSearchVideoDao.findList(query);
    }
    @Override
    public void removeResourceId(String id, Integer resourceId) {
        InternetSearchVideo video = internetSearchVideoDao.get(id);
        if (video == null) {
            return;
        }
        Set<Integer> resourceIds = listResourceId(video);
        if (resourceIds.contains(resourceId)) {
            //移除
            resourceIds.remove(resourceId);
        }
        if (resourceIds.size() <= 0) {
            // 移除数据
            internetSearchVideoDao.deleteByPrimaryKey(id);
        } else {
            InternetSearchVideo update = new InternetSearchVideo();
            update.setId(id);
            Integer[] rids = new Integer[resourceIds.size()];
            resourceIds.toArray(rids);
            video.setResourceIds(StringUtil.concat(rids, ","));
            internetSearchVideoDao.updateSelective(update);
        }
        InternetSearchVideoMQMsg msg = new InternetSearchVideoMQMsg();
        msg.setId(video.getId());
        msg.setResourceId(resourceId);
        rabbitmqManager.addInternetSearchVideoUpdateMsg(msg);
    }
}