Explorar o código

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-im/src/main/java/com/ym/pojo/RecordConfig.java
zouxuan %!s(int64=3) %!d(string=hai) anos
pai
achega
5151246973

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveRoomVideoDao.java

@@ -16,5 +16,6 @@ public interface ImLiveRoomVideoDao extends BaseMapper<ImLiveRoomVideo> {
 
     int insertBatch(@Param("entities") List<ImLiveRoomVideo> entities);
 
+    ImLiveRoomVideo getLastRecord(@Param("roomId") String roomId, @Param("recordId") String recordId);
 }
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsServiceImpl.java

@@ -41,7 +41,7 @@ public class LiveGoodsServiceImpl extends BaseServiceImpl<Integer, LiveGoods>  i
     @Override
 	@Transactional(rollbackFor = Exception.class)
     public void updateLiveGoods(LiveGoods liveGoods) {
-		Optional.ofNullable(liveGoodsDao.get(liveGoods.getId())).orElseThrow(() -> new RuntimeException("商品信息不存在"));
+		Optional.ofNullable(liveGoodsDao.get(liveGoods.getId())).orElseThrow(() -> new BizException("商品信息不存在"));
 		//如果商品已在直播间上架,那么不允许变更商品信息
 		if (liveGoodsMapperService.findByLiveGoodsIdAndStatus(liveGoods.getId(),true).size() > 0) {
 			throw new BizException("商品已在直播间上架,不能修改");

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveRoomVideoMapper.xml

@@ -27,5 +27,8 @@
             #{entity.endTime}, #{entity.type}, #{entity.createdTime})
         </foreach>
     </insert>
+    <select id="getLastRecord" resultMap="BaseResultMap">
+        SELECT * FROM im_live_room_video WHERE room_uid_ = #{roomId} AND record_id_ = #{recordId} ORDER BY id_ DESC LIMIT 1
+    </select>
 
 </mapper>

+ 30 - 20
mec-im/src/main/java/com/ym/service/Impl/LiveRoomServiceImpl.java

@@ -13,16 +13,14 @@ import com.ym.pojo.RecordConfig;
 import com.ym.pojo.RecordNotify;
 import com.ym.service.LiveRoomService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.net.HttpURLConnection;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -129,15 +127,18 @@ public class LiveRoomServiceImpl implements LiveRoomService {
                 .eq("type", 0));
         if (Objects.nonNull(video)) {
             return;
-        } else {
-            video = new ImLiveRoomVideo();
         }
+        imLiveRoomVideoService.save(initImLiveRoomVideo(roomId, recordId,new Date()));
+    }
+
+    private ImLiveRoomVideo initImLiveRoomVideo(String roomId, String recordId,Date now) {
+        ImLiveRoomVideo video = new ImLiveRoomVideo();
         video.setRoomUid(roomId);
         video.setRecordId(recordId);
-        video.setStartTime(new Date());
+        video.setStartTime(now);
         video.setType(0);
-        video.setCreatedTime(new Date());
-        imLiveRoomVideoService.save(video);
+        video.setCreatedTime(now);
+        return video;
     }
 
     @Override
@@ -160,19 +161,28 @@ public class LiveRoomServiceImpl implements LiveRoomService {
                 String roomId = recordNotify.getRoomId();
                 //写入数据库
                 try {
-                    ImLiveRoomVideo video = imLiveRoomVideoService.getOne(new QueryWrapper<ImLiveRoomVideo>()
-                            .eq("room_uid_", roomId)
-                            .eq("record_id_", recordNotify.getRecordId())
-                            .eq("type", 0));
-                    if (Objects.isNull(video)) {
+                    Date now = new Date();
+                    //获取最后一次录制视频
+                    ImLiveRoomVideo video = imLiveRoomVideoService.getDao().getLastRecord(roomId,recordNotify.getRecordId());
+                    if(Objects.isNull(video)){
+                        log.error("获取录制视频失败:roomId : {} ,recordId:{}", roomId, recordNotify.getRecordId());
                         return;
                     }
-                    Date now = new Date();
-                    video.setEndTime(now);
-                    video.setType(2);
-                    video.setUrl(fileUrl);
-                    video.setCreatedTime(now);
-                    imLiveRoomVideoService.updateById(video);
+                    if (StringUtils.isNotEmpty(video.getUrl())) {
+                        //保存切片
+                        ImLiveRoomVideo imLiveRoomVideo = initImLiveRoomVideo(roomId, recordNotify.getRecordId(), now);
+                        imLiveRoomVideo.setStartTime(video.getEndTime());
+                        video.setUrl(fileUrl);
+                        video.setType(2);
+                        imLiveRoomVideoService.save(imLiveRoomVideo);
+                        return;
+                    }else {
+                        video.setEndTime(now);
+                        video.setType(2);
+                        video.setUrl(fileUrl);
+                        video.setCreatedTime(now);
+                        imLiveRoomVideoService.updateById(video);
+                    }
                 } catch (Exception e) {
                     log.error("recordSync >>>>  error : {}", e.getMessage());
                 }

+ 1 - 1
mec-im/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-    <property name="LOG_HOME" value="/Users/chenxiaoyu/Documents/logs/im-%d{yyyy-MM-dd_HH}-%i.log" />
+    <property name="LOG_HOME" value="/mdata/logs/im-%d{yyyy-MM-dd_HH}-%i.log" />
     <property name="CONSOLE_LOG_PATTERN"
               value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />