home 2 лет назад
Родитель
Сommit
33d8e8d97a
26 измененных файлов с 716 добавлено и 42 удалено
  1. 6 0
      hx-common/common-file/pom.xml
  2. 10 1
      hx-common/common-file/src/main/java/com/fjhx/controller/FileInfoController.java
  3. 6 1
      hx-common/common-file/src/main/java/com/fjhx/service/FileInfoService.java
  4. 56 32
      hx-common/common-file/src/main/java/com/fjhx/service/impl/FileInfoServiceImpl.java
  5. 5 0
      hx-common/common-video/pom.xml
  6. 55 0
      hx-common/common-video/src/main/java/com/fjhx/controller/video/VideoClassifyController.java
  7. 56 0
      hx-common/common-video/src/main/java/com/fjhx/controller/video/VideoInfoController.java
  8. 16 0
      hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoClassifyMapper.java
  9. 5 0
      hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoClassifyMapper.xml
  10. 16 0
      hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoInfoMapper.java
  11. 5 0
      hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoInfoMapper.xml
  12. 37 0
      hx-common/common-video/src/main/java/com/fjhx/service/video/VideoClassifyService.java
  13. 28 0
      hx-common/common-video/src/main/java/com/fjhx/service/video/VideoInfoService.java
  14. 133 0
      hx-common/common-video/src/main/java/com/fjhx/service/video/impl/VideoClassifyServiceImpl.java
  15. 54 0
      hx-common/common-video/src/main/java/com/fjhx/service/video/impl/VideoInfoServiceImpl.java
  16. 14 7
      hx-common/pom.xml
  17. 1 1
      hx-common/product-library/src/main/java/com/fjhx/service/impl/ClassifyServiceImpl.java
  18. 5 0
      hx-service-api/common-file-api/src/main/java/com/fjhx/entity/FileInfo.java
  19. 14 0
      hx-service-api/common-video-api/pom.xml
  20. 61 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/entity/video/VideoClassify.java
  21. 64 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/entity/video/VideoInfo.java
  22. 17 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoClassifyEx.java
  23. 17 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoClassifyVo.java
  24. 17 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoInfoEx.java
  25. 17 0
      hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoInfoVo.java
  26. 1 0
      hx-service-api/pom.xml

+ 6 - 0
hx-common/common-file/pom.xml

@@ -23,6 +23,12 @@
             <artifactId>common-file-api</artifactId>
         </dependency>
 
+
+        <dependency>
+            <groupId>ws.schild</groupId>
+            <artifactId>jave-all-deps</artifactId>
+        </dependency>
+
     </dependencies>
 
 

+ 10 - 1
hx-common/common-file/src/main/java/com/fjhx/controller/FileInfoController.java

@@ -1,13 +1,16 @@
 package com.fjhx.controller;
 
+import com.fjhx.entity.FileInfo;
 import com.fjhx.service.FileInfoService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -26,7 +29,13 @@ public class FileInfoController {
 
     @PostMapping("/uploadFile")
     public R uploadFile(@RequestParam("file") MultipartFile file) {
-        Map<String, String> result = fileInfoService.uploadFile(file);
+        FileInfo result = fileInfoService.uploadFile(file);
+        return R.success(result);
+    }
+
+    @PostMapping("/getFileList")
+    public R getFileList(@RequestBody Map<String, String> condition) {
+        List<FileInfo> result = fileInfoService.getFileList(condition);
         return R.success(result);
     }
 

+ 6 - 1
hx-common/common-file/src/main/java/com/fjhx/service/FileInfoService.java

@@ -21,7 +21,12 @@ public interface FileInfoService extends BaseService<FileInfo> {
     /**
      * 文件上传
      */
-    Map<String, String> uploadFile(MultipartFile file);
+    FileInfo uploadFile(MultipartFile file);
+
+    /**
+     * 获取文件列表
+     */
+    List<FileInfo> getFileList(Map<String, String> condition);
 
     /**
      * 绑定文件

+ 56 - 32
hx-common/common-file/src/main/java/com/fjhx/service/impl/FileInfoServiceImpl.java

@@ -11,17 +11,24 @@ import com.fjhx.entity.FileInfo;
 import com.fjhx.mapper.FileInfoMapper;
 import com.fjhx.params.FileInfoParam;
 import com.fjhx.service.FileInfoService;
+import com.fjhx.utils.Assert;
 import org.springblade.core.launch.BladeApplication;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
+import ws.schild.jave.MultimediaInfo;
+import ws.schild.jave.MultimediaObject;
 
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -36,7 +43,7 @@ import java.util.stream.Collectors;
 public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> implements FileInfoService {
 
     @Override
-    public Map<String, String> uploadFile(MultipartFile file) {
+    public FileInfo uploadFile(MultipartFile file) {
 
         String fileName = file.getOriginalFilename();
         String suffix = FileUtil.getSuffix(fileName);
@@ -79,18 +86,29 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         FileInfo fileInfo = new FileInfo();
         fileInfo.setFileName(fileName);
         fileInfo.setFileSuffix(suffix);
-        fileInfo.setContentType(file.getContentType());
-        fileInfo.setFileSize(file.getSize());
+
+        String contentType = file.getContentType();
+        fileInfo.setContentType(contentType);
+        setDuration(contentType, fileInfo, rootPath + filePath);
+
+        fileInfo.setFileSize(file.getSize() / 1024);
         fileInfo.setFilePath(filePath);
         save(fileInfo);
 
-        Map<String, String> map = new HashMap<>();
+        return fileInfo;
+    }
+
+    @Override
+    public List<FileInfo> getFileList(Map<String, String> condition) {
+        String businessId = condition.get("businessId");
+        Assert.notEmpty(businessId, "业务id不能为空");
 
-        map.put("fileName", fileName);
-        map.put("filePath", filePath);
-        map.put("id", fileInfo.getId().toString());
+        String businessType = condition.get("businessType");
 
-        return map;
+        return list(Wrappers.<FileInfo>lambdaQuery()
+                .eq(FileInfo::getBusinessId, businessId)
+                .eq(ObjectUtil.isNotEmpty(businessType), FileInfo::getBusinessType, businessType)
+        );
     }
 
     public void bindingFile(String applicationName, Long businessId, Integer businessType, List<FileInfoParam> paramList) {
@@ -117,33 +135,19 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
     @Override
     public void againBindingFile(String applicationName, Long businessId, Integer businessType, List<FileInfoParam> paramList) {
 
-        // 记录排除编辑的文件id
-        List<Long> excludeIdList = new ArrayList<>();
+        if (paramList.size() == 0) {
+            return;
+        }
 
-        // 获取需要添加业务id的文件列表
-        List<FileInfo> collect = paramList.stream().filter(fileInfo -> {
-            if (ObjectUtil.isNotEmpty(fileInfo.getBusinessId())) {
-                excludeIdList.add(fileInfo.getId());
-                return false;
-            }
-            return true;
-        }).map(item -> {
-            FileInfo fileInfo = new FileInfo();
-            fileInfo.setId(item.getId());
-            fileInfo.setBusinessId(businessId);
-            fileInfo.setBusinessType(businessType);
-            fileInfo.setApplicationName(applicationName);
-            return fileInfo;
-        }).collect(Collectors.toList());
+        bindingFile(applicationName, businessId, businessType, paramList);
+
+        List<Long> id = paramList.stream().map(FileInfoParam::getId).collect(Collectors.toList());
 
-        // 如果排除的id数等于提交文件数,则不执行删除逻辑
-        int excludeIdSize = excludeIdList.size();
+        // 删除其他文件
         remove(Wrappers.<FileInfo>lambdaQuery()
                 .eq(FileInfo::getBusinessId, businessId)
                 .eq(FileInfo::getBusinessType, businessType)
-                .notIn(excludeIdSize > 0, BaseEntity::getId, excludeIdSize));
-
-        updateBatchById(collect);
+                .notIn(BaseEntity::getId, id));
     }
 
     @Override
@@ -158,8 +162,28 @@ public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> i
         if (businessIdList.size() == 0) {
             return new ArrayList<>();
         }
-        List<FileInfo> list = lambdaQuery().in(FileInfo::getBusinessId, businessIdList).list();
+        List<FileInfo> list = lambdaQuery().in(FileInfo::getBusinessId, businessIdList).orderByAsc(FileInfo::getSort).list();
         return list.stream().map(item -> BeanUtil.toBean(item, FileInfoParam.class)).collect(Collectors.toList());
     }
 
+    /**
+     * 如果是视频,赋值视频时长
+     */
+    private void setDuration(String contentType, FileInfo fileInfo, String path) {
+        try {
+            if (!contentType.startsWith("video")) {
+                return;
+            }
+
+            File file = new File(path);
+            MultimediaObject instance = new MultimediaObject(file);
+            MultimediaInfo result = instance.getInfo();
+            long s = result.getDuration() / 1000;
+            fileInfo.setDuration(s);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ServiceException("获取视频时长失败");
+        }
+    }
+
 }

+ 5 - 0
hx-common/common-video/pom.xml

@@ -33,6 +33,11 @@
             <artifactId>jave-all-deps</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>common-video-api</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 55 - 0
hx-common/common-video/src/main/java/com/fjhx/controller/video/VideoClassifyController.java

@@ -0,0 +1,55 @@
+package com.fjhx.controller.video;
+
+import com.fjhx.params.video.VideoClassifyVo;
+import com.fjhx.service.video.VideoClassifyService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 分类 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@RestController
+@RequestMapping("/videoClassify")
+public class VideoClassifyController {
+
+    @Autowired
+    private VideoClassifyService videoClassifyService;
+
+    @PostMapping("/tree")
+    public R tree(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = videoClassifyService.getTree(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody VideoClassifyVo videoClassifyVo) {
+        videoClassifyService.add(videoClassifyVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody VideoClassifyVo videoClassifyVo) {
+        videoClassifyService.edit(videoClassifyVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody VideoClassifyVo videoClassifyVo) {
+        videoClassifyService.delete(videoClassifyVo);
+        return R.success();
+    }
+
+}
+

+ 56 - 0
hx-common/common-video/src/main/java/com/fjhx/controller/video/VideoInfoController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.video;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.video.VideoInfo;
+import com.fjhx.params.video.VideoInfoVo;
+import com.fjhx.service.video.VideoInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@RestController
+@RequestMapping("/videoInfo")
+public class VideoInfoController {
+
+    @Autowired
+    private VideoInfoService videoInfoService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition){
+        Page<VideoInfo> result = videoInfoService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody VideoInfoVo videoInfoVo){
+        videoInfoService.add(videoInfoVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody VideoInfoVo videoInfoVo){
+        videoInfoService.edit(videoInfoVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody VideoInfoVo videoInfoVo){
+        videoInfoService.delete(videoInfoVo);
+        return R.success();
+    }
+
+}
+

+ 16 - 0
hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoClassifyMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.video;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.entity.video.VideoClassify;
+
+/**
+ * <p>
+ * 分类 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+public interface VideoClassifyMapper extends BaseMapper<VideoClassify> {
+
+}

+ 5 - 0
hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoClassifyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.video.VideoClassifyMapper">
+
+</mapper>

+ 16 - 0
hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoInfoMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.video;
+
+import com.fjhx.entity.video.VideoInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+public interface VideoInfoMapper extends BaseMapper<VideoInfo> {
+
+}

+ 5 - 0
hx-common/common-video/src/main/java/com/fjhx/mapper/video/VideoInfoMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.video.VideoInfoMapper">
+
+</mapper>

+ 37 - 0
hx-common/common-video/src/main/java/com/fjhx/service/video/VideoClassifyService.java

@@ -0,0 +1,37 @@
+package com.fjhx.service.video;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.video.VideoClassify;
+import com.fjhx.params.video.VideoClassifyVo;
+import com.fjhx.base.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 分类 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+public interface VideoClassifyService extends BaseService<VideoClassify> {
+
+    List<Map<String, Object>> getTree(Map<String, String> condition);
+
+    void add(VideoClassifyVo videoClassifyVo);
+
+    void edit(VideoClassifyVo videoClassifyVo);
+
+    void delete(VideoClassifyVo videoClassifyVo);
+
+    /**
+     * 获取 分类id 和 分类子级id 数组
+     *
+     * @param classifyId 分类id
+     * @return 分类id 和 分类子级id 数组
+     */
+    List<Long> getChildrenIdList(Long classifyId);
+
+}

+ 28 - 0
hx-common/common-video/src/main/java/com/fjhx/service/video/VideoInfoService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.video;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.video.VideoInfo;
+import com.fjhx.params.video.VideoInfoVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+public interface VideoInfoService extends BaseService<VideoInfo> {
+
+    Page<VideoInfo> getPage(Map<String, String> condition);
+
+    void add(VideoInfoVo videoInfoVo);
+
+    void edit(VideoInfoVo videoInfoVo);
+
+    void delete(VideoInfoVo videoInfoVo);
+
+}

+ 133 - 0
hx-common/common-video/src/main/java/com/fjhx/service/video/impl/VideoClassifyServiceImpl.java

@@ -0,0 +1,133 @@
+package com.fjhx.service.video.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BaseEntity;
+import com.fjhx.entity.video.VideoClassify;
+import com.fjhx.mapper.video.VideoClassifyMapper;
+import com.fjhx.params.video.VideoClassifyVo;
+import com.fjhx.service.video.VideoClassifyService;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.TreeUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 分类 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Service
+public class VideoClassifyServiceImpl extends ServiceImpl<VideoClassifyMapper, VideoClassify> implements VideoClassifyService {
+
+    @Override
+    public List<Map<String, Object>> getTree(Map<String, String> condition) {
+
+        // 分类名称
+        String name = condition.get("name");
+
+        List<VideoClassify> list = lambdaQuery()
+                .select(VideoClassify::getId, VideoClassify::getName, VideoClassify::getParentId)
+                .like(ObjectUtil.isNotEmpty(name), VideoClassify::getName, name)
+                .list();
+
+        // 构建树形
+        return TreeUtil.buildTreeObj(list);
+    }
+
+    @Override
+    public void add(VideoClassifyVo classifyVo) {
+
+        Assert.notEmpty(classifyVo.getName(), "分类名称不能为空");
+
+        Long parentId = classifyVo.getParentId();
+        if (parentId == null) {
+            classifyVo.setParentId(0L);
+            classifyVo.setParentIdSet(null);
+        } else if (parentId == 0L) {
+            classifyVo.setParentIdSet(null);
+        } else {
+            // 查询父级分类
+            VideoClassify parentClassify = getById(parentId);
+            Assert.notEmpty(parentClassify, "没有找到父级分类");
+
+            // 赋值父级id集合
+            String parentIdSet = parentClassify.getParentIdSet();
+            classifyVo.setParentIdSet(
+                    (ObjectUtil.isEmpty(parentIdSet) ? "" : parentIdSet + ",") + parentId);
+        }
+
+        peerNameOnly(classifyVo.getParentId(), classifyVo.getName(), null);
+        save(classifyVo);
+    }
+
+    @Override
+    public void edit(VideoClassifyVo classifyVo) {
+        Assert.notEmpty(classifyVo.getId(), "分类Id不能为空");
+        Assert.notEmpty(classifyVo.getParentId(), "父分类id不能为空");
+        Assert.notEmpty(classifyVo.getName(), "分类名称不能为空");
+
+        peerNameOnly(classifyVo.getParentId(), classifyVo.getName(), classifyVo.getId());
+        updateById(classifyVo);
+    }
+
+    @Override
+    public void delete(VideoClassifyVo classifyVo) {
+        Long id = classifyVo.getId();
+
+        Assert.notEmpty(id, "分类id不能为空");
+
+        Integer childrenCount = lambdaQuery().eq(VideoClassify::getParentId, id).count();
+        Assert.eqZero(childrenCount, "该分类下存在子级分类,无法删除");
+
+//        if (type.equals(ClassifyTypeEnum.PRODUCT_TYPE.getCode())) {
+//            Integer relationCount = productService.lambdaQuery().eq(Product::getClassifyId, id).count();
+//            Assert.eqZero(relationCount, "该分类下存在产品,无法删除");
+//        } else {
+//            Integer relationCount = materialService.lambdaQuery().eq(Material::getClassifyId, id).count();
+//            Assert.eqZero(relationCount, "该分类下存在物料,无法删除");
+//        }
+
+        removeById(classifyVo.getId());
+    }
+
+    @Override
+    public List<Long> getChildrenIdList(Long classifyId) {
+
+        List<VideoClassify> list = lambdaQuery()
+                .select(BaseEntity::getId)
+                .eq(BaseEntity::getTenantId, AuthUtil.getTenantId())
+                .like(VideoClassify::getParentIdSet, classifyId)
+                .list();
+
+        List<Long> result = list.stream().map(BaseEntity::getId).collect(Collectors.toList());
+
+        result.add(0, classifyId);
+
+        return result;
+    }
+
+    /**
+     * 保证同级名称不重复
+     */
+    private void peerNameOnly(Long parentId, String classifyName, Long excludeId) {
+
+        Integer count = lambdaQuery()
+                .eq(BaseEntity::getTenantId, AuthUtil.getTenantId())
+                .eq(VideoClassify::getParentId, parentId)
+                .eq(VideoClassify::getName, classifyName)
+                .ne(ObjectUtil.isNotEmpty(excludeId), BaseEntity::getId, excludeId)
+                .count();
+
+        Assert.eqZero(count, "存在相同分类名称");
+
+    }
+
+}

+ 54 - 0
hx-common/common-video/src/main/java/com/fjhx/service/video/impl/VideoInfoServiceImpl.java

@@ -0,0 +1,54 @@
+package com.fjhx.service.video.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.utils.WrapperUtil;
+import com.fjhx.entity.video.VideoInfo;
+import com.fjhx.params.video.VideoInfoVo;
+import com.fjhx.mapper.video.VideoInfoMapper;
+import com.fjhx.service.video.VideoInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Service
+public class VideoInfoServiceImpl extends ServiceImpl<VideoInfoMapper, VideoInfo> implements VideoInfoService {
+
+    @Override
+    public Page<VideoInfo> getPage(Map<String, String> condition) {
+
+        QueryWrapper<VideoInfo> wrapper = Wrappers.query();
+
+        WrapperUtil.init(condition, wrapper)
+                .createTimeDesc();
+
+        Page<VideoInfo> page = page(condition, wrapper);
+        return page;
+    }
+
+    @Override
+    public void add(VideoInfoVo videoInfoVo) {
+        save(videoInfoVo);
+    }
+
+    @Override
+    public void edit(VideoInfoVo videoInfoVo) {
+        updateById(videoInfoVo);
+    }
+
+    @Override
+    public void delete(VideoInfoVo videoInfoVo) {
+        removeById(videoInfoVo.getId());
+    }
+
+}

+ 14 - 7
hx-common/pom.xml

@@ -71,6 +71,19 @@
                 <version>${velocity.version}</version>
             </dependency>
 
+            <!-- 计算视频时长工具 -->
+            <dependency>
+                <groupId>ws.schild</groupId>
+                <artifactId>jave-all-deps</artifactId>
+                <version>2.5.1</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>common-client-util</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
+
             <dependency>
                 <groupId>org.springblade</groupId>
                 <artifactId>blade-user-api</artifactId>
@@ -103,16 +116,10 @@
 
             <dependency>
                 <groupId>com.fjhx</groupId>
-                <artifactId>common-client-util</artifactId>
+                <artifactId>common-video-api</artifactId>
                 <version>${hx.version}</version>
             </dependency>
 
-            <dependency>
-                <groupId>ws.schild</groupId>
-                <artifactId>jave-all-deps</artifactId>
-                <version>2.5.1</version>
-            </dependency>
-
         </dependencies>
     </dependencyManagement>
 

+ 1 - 1
hx-common/product-library/src/main/java/com/fjhx/service/impl/ClassifyServiceImpl.java

@@ -62,7 +62,7 @@ public class ClassifyServiceImpl extends ServiceImpl<ClassifyMapper, Classify> i
     public void add(ClassifyVo classifyVo) {
 
         Assert.notEmpty(classifyVo.getType(), "分类类型不能为空");
-        Assert.notEmpty(classifyVo.getType(), "分类名称不能为空");
+        Assert.notEmpty(classifyVo.getName(), "分类名称不能为空");
 
         Long parentId = classifyVo.getParentId();
         if (parentId == null) {

+ 5 - 0
hx-common/common-file/src/main/java/com/fjhx/entity/FileInfo.java → hx-service-api/common-file-api/src/main/java/com/fjhx/entity/FileInfo.java

@@ -60,6 +60,11 @@ public class FileInfo extends BaseEntity {
     private String applicationName;
 
     /**
+     * 时长
+     */
+    private Long duration;
+
+    /**
      * 排序
      */
     private Integer sort;

+ 14 - 0
hx-service-api/common-video-api/pom.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>hx-service-api</artifactId>
+        <groupId>com.fjhx</groupId>
+        <version>3.2.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>common-video-api</artifactId>
+
+</project>

+ 61 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/entity/video/VideoClassify.java

@@ -0,0 +1,61 @@
+package com.fjhx.entity.video;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 分类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoClassify extends BaseEntity {
+
+
+    /**
+     * 父级分类id
+     */
+    private Long parentId;
+
+    /**
+     * 父级分类id集合,用,拼接
+     */
+    private String parentIdSet;
+
+    /**
+     * 分类名称
+     */
+    private String name;
+
+    /**
+     * 视频数量
+     */
+    private Integer videoNum;
+
+    /**
+     * 乐观锁
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Version
+    private Integer version;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 64 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/entity/video/VideoInfo.java

@@ -0,0 +1,64 @@
+package com.fjhx.entity.video;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoInfo extends BaseEntity {
+
+
+    /**
+     * 分类id
+     */
+    private Long videoClassifyId;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 状态 1审核中 2已发布
+     */
+    private Integer status;
+
+    /**
+     * 总时长
+     */
+    private Long duration;
+
+    /**
+     * 文件大小(kb)
+     */
+    private Long size;
+
+    /**
+     * 说明
+     */
+    private String richText;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 17 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoClassifyEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.video;
+
+import com.fjhx.entity.video.VideoClassify;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 分类
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoClassifyEx extends VideoClassify {
+
+}

+ 17 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoClassifyVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.video;
+
+import com.fjhx.entity.video.VideoClassify;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 分类
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoClassifyVo extends VideoClassify {
+
+}

+ 17 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoInfoEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.video;
+
+import com.fjhx.entity.video.VideoInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoInfoEx extends VideoInfo {
+
+}

+ 17 - 0
hx-service-api/common-video-api/src/main/java/com/fjhx/params/video/VideoInfoVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.video;
+
+import com.fjhx.entity.video.VideoInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ${author}
+ * @since 2022-08-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class VideoInfoVo extends VideoInfo {
+
+
+
+}

+ 1 - 0
hx-service-api/pom.xml

@@ -25,6 +25,7 @@
         <module>common-file-api</module>
         <module>common-flow-api</module>
         <module>common-rocketmq-api</module>
+        <module>common-video-api</module>
         <module>iot-management-api</module>
         <module>iot-production-api</module>
         <module>storage-api</module>