1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.ruoyi.media.service.impl;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.device.camera.domain.CameraCmd;
import com.ruoyi.device.camera.service.ICameraSdkService;
import com.ruoyi.media.service.IMediaService;
import com.ruoyi.utils.forest.MediaClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.ruoyi.media.mapper.VtduMapper;
import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IVtduService;
 
import javax.annotation.Resource;
 
/**
 * 流媒体管理Service业务层处理
 *
 * @author ard
 * @date 2023-08-29
 */
@Service
@Slf4j
public class VtduServiceImpl implements IVtduService {
    @Resource
    private VtduMapper vtduMapper;
    @Resource
    private IMediaService mediaService;
 
    /**
     * 查询流媒体管理
     *
     * @param name 流媒体管理主键
     * @return 流媒体管理
     */
    @Override
    public Vtdu selectVtduByName(String name) {
 
        return vtduMapper.selectVtduByName(name);
    }
 
    /**
     * 查询流媒体管理列表
     *
     * @param vtdu 流媒体管理
     * @return 流媒体管理
     */
    @Override
    public List<Vtdu> selectVtduList(Vtdu vtdu) {
        return vtduMapper.selectVtduList(vtdu);
    }
 
    /**
     * 新增流媒体管理
     *
     * @param vtdu 流媒体管理
     * @return 结果
     */
    @Override
    public int insertVtdu(Vtdu vtdu) {
        log.info("流媒体【" + vtdu.getName() + "】通道添加");
        Map<String, String> map = mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
        vtdu.setRtspUrl(map.get("rtspUrl"));
        vtdu.setRtmpUrl(map.get("rtmpUrl"));
        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
 
        vtdu.setName(vtdu.getName());
        vtdu.setRtspSource(vtdu.getRtspSource());
        vtdu.setIsCode(vtdu.getIsCode());
        vtdu.setMode(vtdu.getMode());
        vtdu.setCreateTime(DateUtils.getNowDate());
        return vtduMapper.insertVtdu(vtdu);
    }
 
    /**
     * 修改流媒体管理
     *
     * @param vtdu 流媒体管理
     * @return 结果
     */
    @Override
    public int updateVtdu(Vtdu vtdu) {
 
        log.info("流媒体【" + vtdu.getName() + "】通道更新");
        Map<String, String> map = mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
        vtdu.setName(vtdu.getName());
        vtdu.setRtspSource(vtdu.getRtspSource());
        vtdu.setIsCode(vtdu.getIsCode());
        vtdu.setMode(vtdu.getMode());
        vtdu.setRtspUrl(map.get("rtspUrl"));
        vtdu.setRtmpUrl(map.get("rtmpUrl"));
        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
        vtdu.setUpdateTime(DateUtils.getNowDate());
        return vtduMapper.updateVtdu(vtdu);
    }
 
    /**
     * 批量删除流媒体管理
     *
     * @param names 需要删除的数据主键集合
     * @return 结果
     */
    @Override
    public int deleteVtduByNames(String[] names) {
        mediaService.removePath(names);
        return vtduMapper.deleteVtduByNames(names);
    }
 
    /**
     * 删除流媒体管理
     *
     * @param name 流媒体通道名称
     * @return 结果
     */
    @Override
    public int deleteVtduByName(String name) {
        mediaService.removePath(name);
        return vtduMapper.deleteVtduByName(name);
    }
 
    /**
     * 删除流媒体管理信息
     *
     * @param cameraId 相机ID
     * @return 结果
     */
    @Override
    public int deleteVtduByCameraId(String cameraId) {
        Vtdu vtdu = new Vtdu();
        vtdu.setCameraId(cameraId);
        List<Vtdu> vtdus = vtduMapper.selectVtduList(vtdu);
        if (vtdus.size() > 0) {
            for (Vtdu v : vtdus) {
                mediaService.removePath(v.getName());
            }
        }
        return vtduMapper.deleteVtduByCameraId(cameraId);
    }
}