2021与蓝度共同重构项目,服务端
liuhaonan
2022-04-07 b95c910f14377d4f15cc4c05fa0b7bf8df759e91
ip音柱文件上传
已添加2个文件
已修改9个文件
已删除1个文件
254 ■■■■ 文件已修改
sandu-common/src/main/java/com/sandu/common/file/FileService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sandu-common/src/main/java/com/sandu/common/file/FileStorage.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/config/MinIoConstant.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeFileController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/BroadcastPostUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskAPIUtils.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/vo/TaskVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/resources/application-test.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sandu-common/src/main/java/com/sandu/common/file/FileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.sandu.common.file;
import cn.hutool.core.collection.CollectionUtil;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
 * @author chenjiantian
 * @date 2020-12-17
 * æ–‡ä»¶ä¸Šä¼ æœåŠ¡ç±» æœ‰å¤šä¸ªå®žçް
 */
public interface FileService {
    /**
     * å°†å›¾ç‰‡å›¾ç‰‡è½¬å­˜ä¸ºè‡ªå·±çš„存储介质(本地、OSS、fastDfs)
     *
     * @param file å®¢æˆ·ç«¯å‘送的文件
     * @return æ–°å›¾ç‰‡åœ°å€
     */
    FileStorage uploadFile(MultipartFile file);
    static List<String> videoSuffixList = CollectionUtil.newArrayList("mp4", "mov", "avi", "mkv", "m4v", "wmv",
            "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob");
    static List<String> imageSuffixList = CollectionUtil.newArrayList("jpg","jpeg", "png", "gif", "tif", "bmp", "psd");
}
sandu-common/src/main/java/com/sandu/common/file/FileStorage.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.sandu.common.file;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sandu.common.object.AbstractDO;
import lombok.Data;
/**
 * file_storage
 * @author
 */
@Data
public class FileStorage extends AbstractDO {
    @TableId(type = IdType.INPUT)
    private Long id;
    /**
     * çœŸå®žåç§°
     */
    private String realName;
    /**
     * æ–‡ä»¶åç§°
     */
    private String filePrefix;
    /**
     * åç§°åŽç¼€
     */
    private String fileSuffix;
    /**
     * æ–‡ä»¶è·¯å¾„
     */
    private String fileUrl;
    /**
     * æ–‡ä»¶ ç±»åž‹
     */
    private String fileType;
    /**
     * å­˜å‚¨ç±»åž‹
     */
    private String storageType;
    /**
     * æ–‡ä»¶å¤§å°
     */
    private Long fileSize;
    /**
     * 1:图片,2:视频
     */
    private Integer category;
    /**
     * å›¾ç‰‡é«˜åº¦
     */
    private Integer height;
    /**
     * å›¾ç‰‡å®½åº¦
     */
    private Integer width;
    /**
     * è§†é¢‘时长,秒
     */
    private Integer duration;
    /**
     * æ“ä½œäºº
     */
    private String operator;
}
sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java
@@ -13,6 +13,7 @@
import com.sandu.common.util.SpringContextHolder;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
@@ -27,6 +28,7 @@
 * @author chenjiantian æœ¬åœ°æœåŠ¡å™¨ä¸Šä¼ 
 */
@Slf4j
@Service
@AllArgsConstructor
public class LocalFileUploadImpl implements IFileUpload {
ximon-admin/src/main/java/com/sandu/ximon/admin/config/MinIoConstant.java
ÎļþÒÑɾ³ý
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeFileController.java
@@ -4,19 +4,26 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.enums.FileStorageEnums;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.file.FileUploadDto;
import com.sandu.common.file.impl.LocalFileUploadImpl;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.param.IpVolumeFileParam;
import com.sandu.ximon.admin.param.ReceiveParam;
import com.sandu.ximon.admin.service.BroadcastV2TaskFileService;
import com.sandu.ximon.admin.service.FileOperationRecordService;
import com.sandu.ximon.admin.service.IpVolumeFileService;
import com.sandu.ximon.dao.domain.BroadcastV2TaskFile;
import com.sandu.ximon.dao.domain.FileOperationRecord;
import com.sandu.ximon.dao.domain.IpVolumeFile;
import com.sandu.ximon.dao.domain.LedSFile;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -32,6 +39,8 @@
    private final IpVolumeFileService ipVolumeFileService;
    private final BroadcastV2TaskFileService v2TaskFileService;
    private final FileOperationRecordService fileOperationRecordService;
    private final LocalFileUploadImpl fileUpload;
    @PostMapping("/add")
    public ResponseVO<Object> addFile(@RequestBody @Validated IpVolumeFileParam fileParam){
@@ -56,4 +65,18 @@
        }*/
        return ResponseUtil.success(ipVolumeFileService.list(wrapper));
    }
    @PostMapping("/IpVolumeFileUploading")
    public ResponseVO<Object> uploadingFile(@RequestParam("file") MultipartFile file) {
        FileUploadDto fileUploadDto = fileUpload.uploadFile(file);
        FileOperationRecord fileOperationRecord = new FileOperationRecord();
//        if("mp4".equals(fileUploadDto.getFileType())){
//            fileUploadDto.setScreenShot(fileUploadDto.getFileUrl()+"?x-oss-process=video/snapshot,t_10000,m_fast");
//        }
        BeanUtils.copyProperties(fileUploadDto, fileOperationRecord);
        fileOperationRecord.setDataType(3);
        fileOperationRecordService.save(fileOperationRecord);
        return ResponseUtil.success(fileUploadDto);
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java
@@ -110,5 +110,10 @@
        return ResponseUtil.success(ipVolumeMissionService.playTask(taskId));
    }
    @GetMapping("/stopTask/{taskId}")
    public ResponseVO<Object> stopTask(@PathVariable Integer taskId) {
        return ResponseUtil.success(ipVolumeMissionService.stopTask(taskId));
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java
@@ -27,9 +27,13 @@
    public boolean addFile(IpVolumeFileParam fileParam) {
        IpVolumeFile file = new IpVolumeFile();
        file.setUserId(SecurityUtils.getClientId());
//        if(SecurityUtils.getClientId()!=null){
//            file.setUserName(SecurityUtils.getUsername());
//        }
//
        if(SecurityUtils.getClientId()!=null){
            file.setUserName(SecurityUtils.getUsername());
            file.setUserId(SecurityUtils.getClientId());
        }
        if(clientService.getClientId()!=null){
@@ -59,4 +63,24 @@
        }
    }
    public boolean upload(IpVolumeFileParam fileParam) {
        IpVolumeFile file = new IpVolumeFile();
//        if(SecurityUtils.getClientId()!=null){
//            file.setUserName(SecurityUtils.getUsername());
//        }
//
        if(SecurityUtils.getClientId()!=null){
            file.setUserName(SecurityUtils.getUsername());
            file.setUserId(SecurityUtils.getClientId());
        }
        if(clientService.getClientId()!=null){
            file.setClientId(clientService.getClientId());
        }
        file.setFileName(fileParam.getFileName());
        file.setFileUrl(fileParam.getFileUrl());
        file.setOriginSize(fileParam.getOriginSize());
        return save(file);
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java
@@ -1,12 +1,12 @@
package com.sandu.ximon.admin.service;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.config.MinIoConstant;
import com.sandu.ximon.admin.param.IpVolumeMissionParam;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.TaskAPIUtils;
@@ -84,7 +84,7 @@
        //  å°è£…播放文件列表
        List<TaskMediaFileVO> taskMediaFileVOS = new ArrayList<>();
        List<BroadcastV2TaskFile> taskFileEntityList = new ArrayList<>();
        int i = 1;
        int i = 6666;
        for (Integer fileId : new HashSet<>(missionparam.getFileIds())) {
            TaskMediaFileVO taskMediaFileVO = new TaskMediaFileVO();
            BroadcastV2TaskFile taskFileEntity = new BroadcastV2TaskFile();
@@ -214,15 +214,15 @@
            taskFileEntity.setFileId(fileId);
            IpVolumeFile fileEntity = ipVolumeFileService.getById(fileId);
            String absolutePath = MinIoConstant.getAbsolutePath(
                    MinIoConstant.BROADCAST_FILE.getBucketName() + fileEntity.getUserId(),
                    fileEntity.getFileName()
            );
//            String absolutePath = MinIoConstant.getAbsolutePath(
//                    MinIoConstant.BROADCAST_FILE.getBucketName() + fileEntity.getUserId(),
//                    fileEntity.getFileName()
//            );
            taskMediaFileVO.setI(i);
            i++;
            taskMediaFileVO.setT(0);
            taskMediaFileVO.setN(absolutePath);
            taskMediaFileVO.setN(fileEntity.getFileUrl());
            taskMediaFileVO.setS(BigInteger.valueOf(fileEntity.getOriginSize()));
            taskMediaFileVOS.add(taskMediaFileVO);
@@ -381,8 +381,6 @@
        }
        task.setWeeks("0" + Integer.toBinaryString(byId.getWeek()));
//        byId.setWeeks("0" + Integer.toBinaryString(byId.getWeek()));
        task.setBdate(byId.getOnDate());
        task.setEdate(byId.getOffDate());
        List<BroadcastV2TaskFile> taskFiles = broadcastV2TaskFileService.list(Wrappers.lambdaQuery(BroadcastV2TaskFile.class)
                .eq(BroadcastV2TaskFile::getTaskId, taskId));
@@ -415,6 +413,12 @@
            );
        }
//        Map map=new HashMap();
//        map.put("本地",byId);
//        map.put("服务器",task);
        System.out.println(JSON.toJSONString(task));
        System.out.println(task);
        return task;
@@ -425,4 +429,7 @@
    }
    public boolean stopTask(Integer taskId) {
        return TaskAPIUtils.stopTask(taskId);
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/BroadcastPostUtils.java
@@ -42,6 +42,14 @@
        return result;
    }
    /**
     * m 1 1 1
     * f 1 1 1
     * y 1
     * @param in
     * @param encoding
     * @return
     */
    public static String streamToString(InputStream in, String encoding) {
        // å°†æµè½¬æ¢ä¸ºå­—符串
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/TaskAPIUtils.java
@@ -199,6 +199,11 @@
        return false;
    }
    /**
     * æš‚停
     * @param taskId
     * @return
     */
    public static boolean pauseTask(Integer taskId) {
        LoginResponseVO responseVO1 = JSON.parseObject(
                BroadcastPostUtils.Post(
@@ -225,6 +230,11 @@
        return false;
    }
    /**
     * ç»§ç»­
     * @param taskId
     * @return
     */
    public static boolean continueTask(Integer taskId) {
        LoginResponseVO responseVO1 = JSON.parseObject(
                BroadcastPostUtils.Post(
@@ -306,8 +316,11 @@
        }else {
            task.setName(param.getMissionName());
            task.setVol(param.getMissionVolume());
            task.setBdate(param.getOnDate());
            task.setEdate(param.getOffDate());
            task.setTerminals(param.getTerminals());
            task.setFiles(param.getFiles());
            task.setExec(param.getExec());
            LoginResponseVO responseVO1 = JSON.parseObject(
                    BroadcastPostUtils.Post(
ximon-admin/src/main/java/com/sandu/ximon/admin/vo/TaskVO.java
@@ -37,7 +37,7 @@
        taskVO.setRule(1);  //  ä»»åŠ¡æ‰§è¡Œè§„åˆ™ï¼ˆæ¯å¤©ä¸º 0,每周为 1,手动为 2)
        taskVO.setBdate(param.getOnDate()); //  ä»»åŠ¡å¼€å§‹æ—¥æœŸï¼Œä¸€èˆ¬ä¸ºä»»åŠ¡åˆ›å»ºæ—¥æœŸ
        taskVO.setEdate(param.getOffDate()); //  ä»»åŠ¡ç»“æŸæ—¥æœŸï¼Œä¸€ç›´æœ‰æ•ˆä¸º-1
        taskVO.setWeek(0);  //  æ¯å‘¨æ‰§è¡Œè§„则,rule ä¸º 1 æ—¶ï¼Œæœ‰æ•ˆ
        taskVO.setWeek(1);  //  æ¯å‘¨æ‰§è¡Œè§„则,rule ä¸º 1 æ—¶ï¼Œæœ‰æ•ˆ
        taskVO.setType(BroadcastTaskType.TIMED_TASK.getType()); //任务类型,定时任务为 1,采集任务为 2,实时音 é¢‘任务为 26,实时喊话任务为 27
        taskVO.setSchemeID(1);  //  ä»»åŠ¡æ–¹æ¡ˆ ID
        taskVO.setEi(0);    //
@@ -115,10 +115,8 @@
    //  ä»»åŠ¡æ‰§è¡Œæ—¶é—´åˆ—è¡¨
    private TaskRunTimeVO[] exec;
    //  éŸ³é¢‘文件列表
    @JsonIgnore
    private TaskMediaFileVO[] files;
    //  æ’­æ”¾ç»ˆç«¯ ID åˆ—表
    @JsonIgnore
    private TaskTerminalVO[] terminals;
    @JsonIgnore
    private String userName;
ximon-admin/src/main/resources/application-test.yml
@@ -37,7 +37,7 @@
    enable: true
listenter:
  isOpen: true
  isOpen: false