Browse Source

20201128v1.3合并冲突

tiaosheng
zy_Java 5 years ago
parent
commit
4ab48b94b2
  1. 10
      mt/src/main/java/com/ccsens/mt/api/KCPlayerController.java
  2. 22
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteVideo.java
  3. 140
      mt/src/main/java/com/ccsens/mt/bean/po/CompeteVideoExample.java
  4. 3
      mt/src/main/java/com/ccsens/mt/service/IKCPlayerService.java
  5. 88
      mt/src/main/java/com/ccsens/mt/service/KCPlayerService.java
  6. 12
      mt/src/main/java/com/ccsens/mt/util/Constant.java
  7. 42
      mt/src/main/resources/mapper_raw/CompeteVideoMapper.xml
  8. 2
      util/src/main/java/com/ccsens/util/KCPlayerSignature.java
  9. 34
      util/src/test/java/com/ccsens/util/VideoTest.java

10
mt/src/main/java/com/ccsens/mt/api/KCPlayerController.java

@ -1,25 +1,17 @@
package com.ccsens.mt.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.CompeteVo;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.mt.service.IKCPlayerService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Slf4j
@Api(tags = "云点播", description = "")

22
mt/src/main/java/com/ccsens/mt/bean/po/CompeteVideo.java

@ -26,6 +26,10 @@ public class CompeteVideo implements Serializable {
private Byte recStatus;
private String taskId;
private String videoUrlOrigin;
private static final long serialVersionUID = 1L;
public Long getId() {
@ -116,6 +120,22 @@ public class CompeteVideo implements Serializable {
this.recStatus = recStatus;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId == null ? null : taskId.trim();
}
public String getVideoUrlOrigin() {
return videoUrlOrigin;
}
public void setVideoUrlOrigin(String videoUrlOrigin) {
this.videoUrlOrigin = videoUrlOrigin == null ? null : videoUrlOrigin.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
@ -133,6 +153,8 @@ public class CompeteVideo implements Serializable {
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append(", recStatus=").append(recStatus);
sb.append(", taskId=").append(taskId);
sb.append(", videoUrlOrigin=").append(videoUrlOrigin);
sb.append("]");
return sb.toString();
}

140
mt/src/main/java/com/ccsens/mt/bean/po/CompeteVideoExample.java

@ -774,6 +774,146 @@ public class CompeteVideoExample {
addCriterion("rec_status not between", value1, value2, "recStatus");
return (Criteria) this;
}
public Criteria andTaskIdIsNull() {
addCriterion("task_id is null");
return (Criteria) this;
}
public Criteria andTaskIdIsNotNull() {
addCriterion("task_id is not null");
return (Criteria) this;
}
public Criteria andTaskIdEqualTo(String value) {
addCriterion("task_id =", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotEqualTo(String value) {
addCriterion("task_id <>", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdGreaterThan(String value) {
addCriterion("task_id >", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdGreaterThanOrEqualTo(String value) {
addCriterion("task_id >=", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdLessThan(String value) {
addCriterion("task_id <", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdLessThanOrEqualTo(String value) {
addCriterion("task_id <=", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdLike(String value) {
addCriterion("task_id like", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotLike(String value) {
addCriterion("task_id not like", value, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdIn(List<String> values) {
addCriterion("task_id in", values, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotIn(List<String> values) {
addCriterion("task_id not in", values, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdBetween(String value1, String value2) {
addCriterion("task_id between", value1, value2, "taskId");
return (Criteria) this;
}
public Criteria andTaskIdNotBetween(String value1, String value2) {
addCriterion("task_id not between", value1, value2, "taskId");
return (Criteria) this;
}
public Criteria andVideoUrlOriginIsNull() {
addCriterion("video_url_origin is null");
return (Criteria) this;
}
public Criteria andVideoUrlOriginIsNotNull() {
addCriterion("video_url_origin is not null");
return (Criteria) this;
}
public Criteria andVideoUrlOriginEqualTo(String value) {
addCriterion("video_url_origin =", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginNotEqualTo(String value) {
addCriterion("video_url_origin <>", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginGreaterThan(String value) {
addCriterion("video_url_origin >", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginGreaterThanOrEqualTo(String value) {
addCriterion("video_url_origin >=", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginLessThan(String value) {
addCriterion("video_url_origin <", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginLessThanOrEqualTo(String value) {
addCriterion("video_url_origin <=", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginLike(String value) {
addCriterion("video_url_origin like", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginNotLike(String value) {
addCriterion("video_url_origin not like", value, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginIn(List<String> values) {
addCriterion("video_url_origin in", values, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginNotIn(List<String> values) {
addCriterion("video_url_origin not in", values, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginBetween(String value1, String value2) {
addCriterion("video_url_origin between", value1, value2, "videoUrlOrigin");
return (Criteria) this;
}
public Criteria andVideoUrlOriginNotBetween(String value1, String value2) {
addCriterion("video_url_origin not between", value1, value2, "videoUrlOrigin");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

3
mt/src/main/java/com/ccsens/mt/service/IKCPlayerService.java

@ -1,6 +1,7 @@
package com.ccsens.mt.service;
import org.json.JSONObject;
import com.alibaba.fastjson.JSONObject;
public interface IKCPlayerService {
/**

88
mt/src/main/java/com/ccsens/mt/service/KCPlayerService.java

@ -1,7 +1,9 @@
package com.ccsens.mt.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.mt.bean.po.CompeteStartOrder;
import com.ccsens.mt.bean.po.CompeteVideo;
import com.ccsens.mt.bean.po.CompeteVideoExample;
@ -13,12 +15,14 @@ import com.ccsens.util.KCPlayerSignature;
import com.ccsens.util.RedisUtil;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
@Slf4j
@Service
@ -67,16 +71,53 @@ public class KCPlayerService implements IKCPlayerService{
@Override
public void saveVideoUrl(JSONObject jsonObject) {
log.info("云点播事件通知:{}", jsonObject);
switch (jsonObject.getString(Constant.KCPlayer.EVENT_TYPE)) {
// 任务流状态变更
case Constant.KCPlayer.FILE_PROCEDURE_CHANGE : procedureChange(jsonObject);break;
// 文件上传
case Constant.KCPlayer.FILE_UPLOAD : fileUpload(jsonObject);break;
}
}
private void procedureChange(JSONObject json) {
log.info("任务流变更");
JSONObject procedure = json.getJSONObject(Constant.KCPlayer.PROCEDURE_STATUS_CHANGE);
String taskId = procedure.getString(Constant.KCPlayer.TASK_ID);
Object result = procedure.getJSONArray(Constant.KCPlayer.PROCEDURE_RESULT).get(0);
JSONObject resultJson = JSONObject.parseObject(JSONObject.toJSONString(result));
String url = resultJson.getJSONObject("TranscodeTask").getJSONObject("Output").getString("Url");
CompeteVideoExample competeVideoExample = new CompeteVideoExample();
competeVideoExample.createCriteria().andTaskIdEqualTo(taskId);
List<CompeteVideo> competeVideos = competeVideoMapper.selectByExample(competeVideoExample);
if (CollectionUtil.isEmpty(competeVideos)) {
log.info("{}未找到,{}", taskId, url);
return;
}
CompeteVideo competeVideo = competeVideos.get(0);
CompeteVideo update = new CompeteVideo();
update.setId(competeVideo.getId());
update.setVideoUrl(url);
competeVideoMapper.updateByPrimaryKeySelective(update);
}
private void fileUpload(JSONObject jsonObject) {
log.info("文件上传");
JSONObject fileUploadEvent = jsonObject.getJSONObject("FileUploadEvent");
JSONObject mediaBasicInfo = fileUploadEvent.getJSONObject("MediaBasicInfo");
// TODO 获取回传的id(场次id)
JSONObject sourceInfo = mediaBasicInfo.getJSONObject("SourceInfo");
JSONObject sourceContext = sourceInfo.getJSONObject("SourceContext");
Long orderId = Long.parseLong(sourceContext.toString());
long orderId = sourceInfo.getLongValue("SourceContext");
log.info("获取场次id:{}",orderId);
// TODO 获取视频路径
JSONObject mediaUrl = mediaBasicInfo.getJSONObject("MediaUrl");
String videoUrl = mediaUrl.toString();
String videoUrl = mediaBasicInfo.getString("MediaUrl");
log.info("获取视频路径:{}",videoUrl);
//通过场次id获取场次信息
CompeteStartOrder startOrder = startOrderMapper.selectByPrimaryKey(orderId);
@ -87,20 +128,29 @@ public class KCPlayerService implements IKCPlayerService{
CompeteVideoExample competeVideoExample = new CompeteVideoExample();
competeVideoExample.createCriteria().andProjectIdEqualTo(startOrder.getProjectId())
.andPlayerIdEqualTo(startOrder.getPlayerId());
long count = competeVideoMapper.countByExample(competeVideoExample);
log.info("查询以前上传的视频的记录:{}",count);
if(count > 0){
throw new BaseException(CodeEnum.ALREADY_UPLOAD_VIDEO);
}
List<CompeteVideo> competeVideos = competeVideoMapper.selectByExample(competeVideoExample);
//将视频信息存入视频表
CompeteVideo competeVideo = new CompeteVideo();
competeVideo.setId(snowflake.nextId());
competeVideo.setProjectId(startOrder.getProjectId());
competeVideo.setPlayerId(startOrder.getPlayerId());
competeVideo.setVideoUrl(videoUrl);
competeVideo.setUploadTime(System.currentTimeMillis());
log.info("添加上传视频记录:{}",count);
competeVideoMapper.insertSelective(competeVideo);
log.info("查询以前上传的视频的记录:{}",competeVideos);
if(CollectionUtil.isNotEmpty(competeVideos)){
CompeteVideo competeVideo = competeVideos.get(0);
CompeteVideo update = new CompeteVideo();
update.setId(competeVideo.getId());
update.setVideoUrl(videoUrl);
update.setVideoUrlOrigin(videoUrl);
update.setTaskId(fileUploadEvent.getString(Constant.KCPlayer.PROCEDURE_TASK_ID));
competeVideoMapper.updateByPrimaryKeySelective(update);
} else {
//将视频信息存入视频表
CompeteVideo competeVideo = new CompeteVideo();
competeVideo.setId(snowflake.nextId());
competeVideo.setProjectId(startOrder.getProjectId());
competeVideo.setPlayerId(startOrder.getPlayerId());
competeVideo.setVideoUrl(videoUrl);
competeVideo.setVideoUrlOrigin(videoUrl);
competeVideo.setUploadTime(System.currentTimeMillis());
competeVideo.setTaskId(fileUploadEvent.getString(Constant.KCPlayer.PROCEDURE_TASK_ID));
log.info("添加上传视频记录:{}", competeVideo);
competeVideoMapper.insertSelective(competeVideo);
}
}
}

12
mt/src/main/java/com/ccsens/mt/util/Constant.java

@ -8,6 +8,18 @@ import com.ccsens.util.WebConstant;
* @time: 2020/8/13 17:14
*/
public class Constant {
public static class KCPlayer{
public final static String EVENT_TYPE = "EventType";
public final static String PROCEDURE_RESULT = "MediaProcessResultSet";
public final static String PROCEDURE_TASK_ID = "ProcedureTaskId";
public final static String TASK_ID = "TaskId";
public final static String FILE_URL = "FileUrl";
public final static String PROCEDURE_STATUS_CHANGE = "ProcedureStateChangeEvent";
/**文件上传*/
public final static String FILE_UPLOAD = "NewFileUpload";
public final static String FILE_PROCEDURE_CHANGE = "ProcedureStateChanged";
}
public static class Redis{
// 项目正在进行中的题目 项目ID_start_question
public final static String START_QUESTION = "_start_question";

42
mt/src/main/resources/mapper_raw/CompeteVideoMapper.xml

@ -13,6 +13,8 @@
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
<result column="task_id" jdbcType="VARCHAR" property="taskId" />
<result column="video_url_origin" jdbcType="VARCHAR" property="videoUrlOrigin" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -74,7 +76,7 @@
</sql>
<sql id="Base_Column_List">
id, compete_time_id, project_id, player_id, user_id, video_url, upload_time, upload_status,
created_at, updated_at, rec_status
created_at, updated_at, rec_status, task_id, video_url_origin
</sql>
<select id="selectByExample" parameterType="com.ccsens.mt.bean.po.CompeteVideoExample" resultMap="BaseResultMap">
select
@ -110,11 +112,13 @@
insert into t_compete_video (id, compete_time_id, project_id,
player_id, user_id, video_url,
upload_time, upload_status, created_at,
updated_at, rec_status)
updated_at, rec_status, task_id,
video_url_origin)
values (#{id,jdbcType=BIGINT}, #{competeTimeId,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT},
#{playerId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{videoUrl,jdbcType=VARCHAR},
#{uploadTime,jdbcType=BIGINT}, #{uploadStatus,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP},
#{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT})
#{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}, #{taskId,jdbcType=VARCHAR},
#{videoUrlOrigin,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.mt.bean.po.CompeteVideo">
insert into t_compete_video
@ -152,6 +156,12 @@
<if test="recStatus != null">
rec_status,
</if>
<if test="taskId != null">
task_id,
</if>
<if test="videoUrlOrigin != null">
video_url_origin,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -187,6 +197,12 @@
<if test="recStatus != null">
#{recStatus,jdbcType=TINYINT},
</if>
<if test="taskId != null">
#{taskId,jdbcType=VARCHAR},
</if>
<if test="videoUrlOrigin != null">
#{videoUrlOrigin,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.ccsens.mt.bean.po.CompeteVideoExample" resultType="java.lang.Long">
@ -231,6 +247,12 @@
<if test="record.recStatus != null">
rec_status = #{record.recStatus,jdbcType=TINYINT},
</if>
<if test="record.taskId != null">
task_id = #{record.taskId,jdbcType=VARCHAR},
</if>
<if test="record.videoUrlOrigin != null">
video_url_origin = #{record.videoUrlOrigin,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -248,7 +270,9 @@
upload_status = #{record.uploadStatus,jdbcType=TINYINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
rec_status = #{record.recStatus,jdbcType=TINYINT},
task_id = #{record.taskId,jdbcType=VARCHAR},
video_url_origin = #{record.videoUrlOrigin,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -286,6 +310,12 @@
<if test="recStatus != null">
rec_status = #{recStatus,jdbcType=TINYINT},
</if>
<if test="taskId != null">
task_id = #{taskId,jdbcType=VARCHAR},
</if>
<if test="videoUrlOrigin != null">
video_url_origin = #{videoUrlOrigin,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
@ -300,7 +330,9 @@
upload_status = #{uploadStatus,jdbcType=TINYINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}
rec_status = #{recStatus,jdbcType=TINYINT},
task_id = #{taskId,jdbcType=VARCHAR},
video_url_origin = #{videoUrlOrigin,jdbcType=VARCHAR}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

2
util/src/main/java/com/ccsens/util/KCPlayerSignature.java

@ -39,7 +39,9 @@ public class KCPlayerSignature{
contextStr += "&currentTimeStamp=" + currentTime;
contextStr += "&expireTime=" + endTime;
contextStr += "&random=" + random;
contextStr += "&procedure=videoEncode";
contextStr += "&sourceContext=" + id;
System.out.println("------------------contextStr:" + contextStr);
try {

34
util/src/test/java/com/ccsens/util/VideoTest.java

@ -97,23 +97,23 @@ public class VideoTest {
public static void main(String[] args) throws Exception {
// 指定资源地址,下载文件测试
downloadFile("http://1258473962.vod2.myqcloud.com/1e124671vodcq1258473962/d4650b135285890810564491478/wyGRWPX5qlgA.mp4", "D:/temp/");
// List<Object[]> objects = PoiUtil.readExce(new File("D:\\temp\\test.xlsx"), 0, null, 0, false);
//// for (int i = 0; i < objects.size(); i++) {
//// Object[] obj = objects.get(i);
//// if (obj == null || obj.length < 3) {
//// continue;
//// }
//// String path = (String)obj[2];
//// String dir = "D:\\temp\\" + obj[0] + "\\" + obj[1];
//// try{
//// downloadFile(path, dir);
//// } catch (Exception e) {
//// System.out.println("下载失败:" + dir);
//// e.printStackTrace();
////
//// }
//// }
// downloadFile("http://1258473962.vod2.myqcloud.com/1e124671vodcq1258473962/76557f735285890810478037694/VCj25SXUgFsA.mp4", "D:/temp/");
List<Object[]> objects = PoiUtil.readExce(new File("D:\\temp\\test.xlsx"), 0, null, 0, false);
for (int i = 0; i < objects.size(); i++) {
Object[] obj = objects.get(i);
if (obj == null || obj.length < 3) {
continue;
}
String path = (String)obj[2];
String dir = "D:\\temp\\" + obj[0] + "\\" + obj[1];
try{
downloadFile(path, dir);
} catch (Exception e) {
System.out.println("下载失败:" + dir);
e.printStackTrace();
}
}
}
}

Loading…
Cancel
Save