LiveControllerApi.java 11 KB
package com.cnlive.shenhe.api;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cnlive.shenhe.entity.ShyLive;
import com.cnlive.shenhe.serviceImpl.LiveServiceImpl;
import com.cnlive.shenhe.utils.CommonConst;
import com.cnlive.shenhe.utils.CommonConstStates;
import com.cnlive.shenhe.utils.CommonUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;


/**
 * @author Administrator
 */
@SuppressWarnings("unused")
@Controller
@RequestMapping("/api/live")
public class LiveControllerApi {
	private static Logger logger = LoggerFactory.getLogger(LiveControllerApi.class);

	@Autowired
	LiveServiceImpl liveService;
	 
	@PostMapping("/import")
	@ResponseBody
	public JSONObject impotVideo(String param) {
		JSONObject map = new JSONObject();
		JSONObject result = new JSONObject();
		//初始化一个请求数据库返回结果
		boolean YorN =true;

		logger.info("直播入库,param=====" + param);
        JSONObject json = JSONObject.parseObject(param);
        //获取所有参数
		//直播活动id
		String activityId = json.getString("activityId");
		//直播活动名称
		String activityName = json.getString("activityName");
		//直播活动状态
		Integer activityStatus = Integer.parseInt(json.getString("activityStatus"));
		//直播频道id
		String channelId = json.getString("channelId");
		//直播频道id
		String live_type = json.getString("liveType");
		//rtmp直播流
		String mp4Url = json.getString("mp4Url");
		//m3u8直播流
		String hlsUrl = json.getString("hlsUrl");
		//spid
		Integer spId = Integer.parseInt(json.getString("spId"));
		//回调地址
		String callback = json.getString("callback");
		//优先级
		Integer is_hot = Integer.parseInt(json.getString("priority"));
		//封面
		String coverImgUrl = json.getString("coverImgUrl");
		//活动描述
		String activityIntro = json.getString("activityIntro");
		//回放地址
		String playbackUrl = json.getString("playbackUrl");
		//开始时间
		String startTime = json.getString("startTime");
        Date timestamp_start =null;
        if (CommonUtils.isNotEmpty(startTime)) {
             timestamp_start = new Timestamp(Long.valueOf(startTime));
        }
		//结束时间
		String endTime = json.getString("endTime");
        Date timestamp_end =null;
        if (CommonUtils.isNotEmpty(endTime)) {
        	 timestamp_end = new Timestamp(Long.valueOf(endTime));
        }

		//预计开始时间
		String pre_startTime = json.getString("preStartTime");
        Date pre_timestamp_start =null;
        if (CommonUtils.isNotEmpty(pre_startTime)) {
        	pre_timestamp_start = new Timestamp(Long.valueOf(pre_startTime));
        }
		//预计结束时间
		String pre_endTime = json.getString("preEndTime");
        Date pre_timestamp_end =null;
        if (CommonUtils.isNotEmpty(pre_endTime)) {
        	pre_timestamp_end = new Timestamp(Long.valueOf(pre_endTime));
        }
        
        ShyLive shylive1 = new ShyLive();
        //得到直播活动id去查询是否已有
		shylive1.setActivity_id(activityId);
		//查询一下 存在,更新 没有,插入
        List<ShyLive> listshyLive = liveService.findshyLive(shylive1);
		
        if (listshyLive.size() > 0) {
        	ShyLive shyLive = listshyLive.get(0);
            //封装数据入库
			//设置spid
			shyLive.setSp_id(spId);
			//设置直播活动名称
			shyLive.setActivity_name(activityName);
			//设置直播活动状态
			shyLive.setActivity_status(activityStatus);
        	shyLive.setPre_start_time(pre_timestamp_start);
        	shyLive.setPre_end_time(pre_timestamp_end);

			//直播活动状态,1:直播中,2:直播完成,3:待直播,0:直播撤销(手动),4:直播下线(强制)
			//发布直播
			if(activityStatus.equals(CommonConstStates.ZHIBO_DENGDAI)){
        		shyLive.setActivity_start_time(null);
        		shyLive.setActivity_end_time(null);
				//是否是热点: 1:不是 ,2: 是
				shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANYES);
				//启动直播
			}else if(activityStatus.equals(CommonConstStates.ZHIBO_ZHENGZAI)){
        		shyLive.setActivity_start_time(timestamp_start);
        		shyLive.setActivity_end_time(null);
				//是否是热点: 1:不是 ,2: 是
				shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANYES);
				//停止直播
			}else if(activityStatus.equals(CommonConstStates.ZHIBO_JIESHU)){
        		shyLive.setActivity_start_time(timestamp_start);
        		shyLive.setActivity_end_time(timestamp_end);
				//回放地址
				shyLive.setPlayback_url(playbackUrl);
				//状态 0:未认领 1.已领未审,2:已审
				shyLive.setShenhe_state(CommonConst.RECEIVE_AUDIT);
				//直播完成后自动通过
				shyLive.setUpdater("自动通过");
				//是否是热点: 1:不是 ,2: 是
				shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
				//审核强制下线
			}else if(activityStatus.equals(CommonConstStates.ZHIBO_XIAXIAN)){
        		shyLive.setActivity_start_time(timestamp_start);
        		shyLive.setActivity_end_time(timestamp_end);
				//回放地址
				shyLive.setPlayback_url(playbackUrl);
				//是否是热点: 1:不是 ,2: 是
				shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
        	}
			//直播活动简介
			shyLive.setActivity_intro(activityIntro);
        	shyLive.setLive_type(live_type);
			//m3u8直播流
			shyLive.setM3u8_url(hlsUrl);
			//rtmp直播流
			shyLive.setRtmp_url(mp4Url);
			//回调地址
			shyLive.setCallback(callback);
			//封面
			shyLive.setCover_img_url(coverImgUrl);
			//审核类型,1:免审,2:机审,3:人工审
			shyLive.setShenhe_type(CommonConst.AUDIT_TYPE_USER);
			//抽帧状态 1:不抽帧 2:待抽帧 3:抽帧中 4:抽帧完成 5:抽帧失败
			shyLive.setAvsample_state(1);
			//直播撤销
			if(activityStatus.equals(CommonConstStates.ZHIBO_CHEXIAO)){
				//是否显示 0:不显示 1:显示
				shyLive.setIs_show(CommonConstStates.SHIFOU_XIANSHINO);
				//是否是热点: 1:不是 ,2: 是
				shyLive.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
        	}else{
        		shyLive.setIs_show(CommonConstStates.SHIFOU_XIANSHIYES);
        	}
			//更新时间
			shyLive.setUpdated_at(CommonUtils.getCurrentTime());

        	YorN = liveService.updateshyLive(shyLive);
        }else{
        	//查了,没有,直接插入数据库
			//设置直播活动id
			shylive1.setActivity_id(activityId);
			//设置直播活动名称
			shylive1.setActivity_name(activityName);
			//设置直播活动状态
			shylive1.setActivity_status(activityStatus);
			//设置直播频道
			shylive1.setChannel_id(channelId);
			//设置spid
			shylive1.setSp_id(spId);
			//状态 0:未认领 1.已领未审,2:已审
			shylive1.setShenhe_state(CommonConst.RECEIVE_BEFORE);
			//是否是热点: 1:不是 ,2: 是
			shylive1.setIs_hot(CommonConstStates.SHIFOU_REDIANYES);
        	shylive1.setPre_start_time(pre_timestamp_start);
    		shylive1.setPre_end_time(pre_timestamp_end);
			//发布直播
			if(activityStatus.equals(CommonConstStates.ZHIBO_DENGDAI)){
        		shylive1.setActivity_start_time(null);
        		shylive1.setActivity_end_time(null);
        	}else if(activityStatus.equals(CommonConstStates.ZHIBO_ZHENGZAI)){
				//启动直播
        		shylive1.setActivity_start_time(timestamp_start);
        		shylive1.setActivity_end_time(null);
				//停止直播
			}else if(activityStatus.equals(CommonConstStates.ZHIBO_JIESHU)){
        		shylive1.setActivity_start_time(timestamp_start);
        		shylive1.setActivity_end_time(timestamp_end);
				//回放地址
				shylive1.setPlayback_url(playbackUrl);
				//状态 0:未认领 1.已领未审,2:已审
				shylive1.setShenhe_state(CommonConst.RECEIVE_AUDIT);
				//直播完成后自动通过
				shylive1.setUpdater("自动通过");
				//是否是热点: 1:不是 ,2: 是
				shylive1.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
				//审核强制下线
			}else if(activityStatus.equals(CommonConstStates.ZHIBO_XIAXIAN)){
        		shylive1.setActivity_start_time(timestamp_start);
        		shylive1.setActivity_end_time(timestamp_end);
				//回放地址
				shylive1.setPlayback_url(playbackUrl);
				//状态 0:未认领 1.已领未审,2:已审
				shylive1.setShenhe_state(CommonConst.RECEIVE_AUDIT);
				//是否是热点: 1:不是 ,2: 是
				shylive1.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
        	}
			//直播活动简介
			shylive1.setActivity_intro(activityIntro);
        	shylive1.setLive_type(live_type);
			//m3u8直播流
			shylive1.setM3u8_url(hlsUrl);
			//rtmp直播流
			shylive1.setRtmp_url(mp4Url);
			//回调地址
			shylive1.setCallback(callback);
			//封面
			shylive1.setCover_img_url(coverImgUrl);
			//审核类型,1:免审,2:机审,3:人工审
			shylive1.setShenhe_type(CommonConst.AUDIT_TYPE_USER);
			//抽帧状态 1:不抽帧 2:待抽帧 3:抽帧中 4:抽帧完成 5:抽帧失败
			shylive1.setAvsample_state(1);
			//直播撤销
			if(activityStatus.equals(CommonConstStates.ZHIBO_CHEXIAO)){
				//是否显示 0:不显示 1:显示
				shylive1.setIs_show(CommonConstStates.SHIFOU_XIANSHINO);
				//是否是热点: 1:不是 ,2: 是
				shylive1.setIs_hot(CommonConstStates.SHIFOU_REDIANNO);
        	}else{
        		shylive1.setIs_show(CommonConstStates.SHIFOU_XIANSHIYES);
        	}

			//创建时间
			shylive1.setCreated_at(CommonUtils.getCurrentTime());
			//更新时间
			shylive1.setUpdated_at(CommonUtils.getCurrentTime());
        	YorN = liveService.impotVideo(shylive1);
        }
		
        if (YorN == true) {
        	result.put("errorCode", "0");
     		result.put("errorMessage", "直播审核请求收到成功");
     		map.put("statusCode", "200");
    		map.put("result", result);
         } else {
        	result.put("errorCode", "-1");
      		result.put("errorMessage", "直播审核入库失败");
      		map.put("statusCode", "300");
     		map.put("result", result);
         }
         return map;
	}
	 
	 
    @RequestMapping(value = "callbackLiveResult", method = RequestMethod.POST)
    @ResponseBody
    public void getFilterVideoResult(@RequestBody String json) {
        logger.info("数美视频过滤回调,json:{}", json);
        if (StringUtils.isNotEmpty(json)) {
            JSONObject jsonObj = JSON.parseObject(json);
            JSONObject resultObj = jsonObj.getJSONObject("result");
            Integer code = resultObj.getInteger("code");
            if (code != null && code == 1100) {
                String riskLevel = resultObj.getString("riskLevel");
                if ("PASS".equals(riskLevel)) {

                }
                if ("REJECT".equals(riskLevel)) {
                	JSONObject detail = resultObj.getJSONObject("detail");
                	logger.info("数美视频回调--REJECT,detail:{}", detail);
                }
                if ("REVIEW".equals(riskLevel)) {
                }
            }else{
            }
        }
    }
    
}