瀏覽代碼

CMS add AudioImg module

guozhaoshun 6 年之前
父節點
當前提交
c18b9479e5

+ 31 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/resource/ResourceController.java

@@ -8,6 +8,8 @@ import cn.rankin.common.utils.dto.resource.ResourceDTO;
 import cn.rankin.common.utils.dto.resource.ResourceSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
 import cn.rankin.common.utils.vo.resource.ResourceVo;
+import cn.rankin.data.api.resource.dto.AudioImgDTO;
+import cn.rankin.data.api.resource.entity.AudioImg;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -42,4 +44,33 @@ public class ResourceController {
         }
         return resourceService.update(id,resourceDTO);
     }
+
+
+    //创建有声读物
+    @RequestMapping(value="/audioImg",method = RequestMethod.POST)
+    public APIResult<AudioImg> createAudioImg(@RequestBody AudioImgDTO dto) {
+        AudioImg audioImg = resourceService.createAudioImg(dto);
+        if(null == audioImg){
+            return APIResult.error(CmsWebAPICode.PARAMETER_ERROR);
+        }else{
+            return APIResult.ok(audioImg);
+        }
+    }
+
+    //修改有声读物
+    @RequestMapping(value="/audioImg",method = RequestMethod.PUT)
+    public APIResult<AudioImg> updateAudioImg(@RequestBody AudioImgDTO dto) {
+        String id = dto.getId();
+        if (null == id || id.isEmpty()){
+            log.error("id Is Null");
+            return APIResult.error(CmsWebAPICode.PARAMETER_ERROR);
+        }
+
+        AudioImg audioImg = resourceService.updateAudioImg(dto);
+        if(null == audioImg){
+            return APIResult.error(CmsWebAPICode.PARAMETER_ERROR);
+        }else{
+            return APIResult.ok(audioImg);
+        }
+    }
 }

+ 9 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/resource/ResourceService.java

@@ -4,6 +4,8 @@ import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.dto.resource.ResourceDTO;
 import cn.rankin.common.utils.vo.resource.ResourceVo;
+import cn.rankin.data.api.resource.dto.AudioImgDTO;
+import cn.rankin.data.api.resource.entity.AudioImg;
 import cn.rankin.data.api.resource.vo.OSSSignature;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -28,5 +30,12 @@ public interface ResourceService {
 
     @RequestMapping(value = "/resource/{id}", method = RequestMethod.PUT)
     APIResult<ResourceVo> update(@PathVariable("id") String id, @RequestBody ResourceDTO resourceDTO);
+
+    //有声读物
+    @RequestMapping(value = "/resource/audioImg", method = RequestMethod.POST)
+    AudioImg createAudioImg(@RequestBody AudioImgDTO dto);
+
+    @RequestMapping(value = "/resource/audioImg", method = RequestMethod.PUT)
+    AudioImg updateAudioImg(@RequestBody AudioImgDTO dto);
 }
 

+ 178 - 0
rankin-resource-service/src/main/java/cn/rankin/resourceservice/controller/ResourceController.java

@@ -5,14 +5,21 @@ import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.constant.ResourceType;
 import cn.rankin.common.utils.dto.resource.ResourceSearchDTO;
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import cn.rankin.common.utils.util.DateUtil;
+import cn.rankin.data.api.resource.dto.AudioImgDTO;
+import cn.rankin.data.api.resource.entity.AudioImg;
 import cn.rankin.data.api.resource.entity.Resource;
+import cn.rankin.resourceservice.service.AudioImgService;
 import cn.rankin.resourceservice.service.ResourceService;
 import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -24,6 +31,9 @@ public class ResourceController {
     @Autowired
     private ResourceService resourceService;
 
+    @Autowired
+    private AudioImgService audioImgService;
+
     public static String HTTP_VIDEO_DOMAIN = "http://efunvideo.ai160.com";
     public static String LJ_VIDEO_DOMAIN = "http://ljvideo.ai160.com";
 
@@ -53,6 +63,62 @@ public class ResourceController {
                 resource.setName("%" + name.trim() + "%");
             }
             return resourceService.search(resource, resourceSearchDTO.getPageNo(), resourceSearchDTO.getPageSize());
+        }else if(type.intValue() == ResourceType.AUDIO_IMG){
+            // 本地取
+            AudioImg audioImg = new AudioImg();
+
+            String code = resourceSearchDTO.getCode();
+            if (!StringUtils.isEmpty(code)) {
+                audioImg.setCode("%" + code.trim() + "%");
+            }
+
+            String name = resourceSearchDTO.getName();
+            if (!StringUtils.isEmpty(name)) {
+                audioImg.setName("%" + name.trim() + "%");
+            }
+            Page<AudioImg> audioImgPage = audioImgService.search(audioImg, resourceSearchDTO.getPageNo(), resourceSearchDTO.getPageSize());
+
+            //创建一个默认为0
+            Page<Resource> page = new Page(0L, resourceSearchDTO.getPageNo(), resourceSearchDTO.getPageSize());
+
+            if(audioImgPage.getPageSize() > 0 ){
+                List<AudioImg> audioImgList = audioImgPage.getList();
+
+                if(!CollectionUtils.isEmpty(audioImgList)){
+                    List<Resource> resourceList = new ArrayList<>();
+                    page.setTotalSize(audioImgList.size());
+
+                    //有声读物   转  资源
+                    audioImgList.forEach(ai -> {
+                        String audioId = ai.getAudioId();
+                        Resource audio = resourceService.get(audioId);
+                        resourceService.initResourceUrl(audio);
+                        String imgId = ai.getImgId();
+                        Resource img = resourceService.get(imgId);
+                        resourceService.initResourceUrl(img);
+
+                        Resource resource = new Resource();
+                        //有声读物info
+                        resource.setType(ai.getType());
+                        resource.setId(ai.getId());
+                        resource.setCode(ai.getCode());
+                        resource.setName(ai.getName());
+                        resource.setStatus(ai.getStatus());
+                        resource.setGmtCreated(ai.getGmtCreated());
+                        resource.setGmtModified(ai.getGmtModified());
+
+                        //图片info
+                        resource.setImg(img);
+                        //音频info
+                        resource.setAudio(audio);
+
+                        resourceList.add(resource);
+                    });
+                    page.setList(resourceList);
+                }
+            }
+            return APIResult.ok(page);
+
         }else {
             // 其他去云平台
             if (resourceSearchDTO.getCode() != null) {
@@ -102,4 +168,116 @@ public class ResourceController {
 
         return APIResult.ok();
     }
+
+
+    /* ------------ 有声读物  audioImg    ---------------------start---------------------------------*/
+    @RequestMapping(value="/audioImg",method = RequestMethod.POST)
+    public AudioImg createAudioImg(@RequestBody AudioImgDTO dto) {
+        if (audioImgService.exists(dto.getCode())) {
+            return null;
+        }
+
+        Resource audio = toAudioResource(dto);
+        Resource img = toImgResource(dto);
+
+        img = saveResource(img);
+        audio = saveResource(audio);
+
+        if(null != audio && null != img){
+            AudioImg ai = new AudioImg();
+            ai.setStatus(dto.getStatus());
+            ai.setName(dto.getName());
+            ai.setCode(dto.getCode());
+            ai.setType(ResourceType.AUDIO_IMG);
+
+            //audio  info
+            ai.setAudioId(audio.getId());
+
+            //img  info
+            ai.setImgId(img.getId());
+
+            AudioImg audioImg = audioImgService.save(ai);
+
+            return audioImg;
+        }else{
+            return null;
+        }
+    }
+
+    @RequestMapping(value="/audioImg",method = RequestMethod.PUT)
+    public AudioImg updateAudioImg(@RequestBody AudioImgDTO dto) {
+
+        Resource audio = toAudioResource(dto);
+        Resource img = toImgResource(dto);
+
+        img = saveResource(img);
+        audio = saveResource(audio);
+
+        if(null != audio && null != img){
+            AudioImg ai = audioImgService.get(dto.getId());
+
+            ai.setStatus(dto.getStatus());
+            ai.setName(dto.getName());
+            ai.setCode(dto.getCode());
+
+            //audio  info
+            ai.setAudioId(audio.getId());
+            //img  info
+            ai.setImgId(img.getId());
+
+            AudioImg audioImg = audioImgService.update(ai);
+
+            return audioImg;
+        }else{
+            return null;
+        }
+    }
+
+    private Resource toAudioResource(AudioImgDTO dto) {
+        Resource audio = new Resource();
+        audio.setCode(dto.getCode()+"_"+ResourceType.AUDIO+DateUtil.getTimeStamp());
+        audio.setName(dto.getName()+"_"+ResourceType.AUDIO+DateUtil.getTimeStamp());
+        audio.setFormat(dto.getAudioFormat());
+        audio.setPath(dto.getAudioPath());
+        audio.setSize(dto.getAudioSize());
+        audio.setStatus(BaseStatusEnum.NORMAL);
+        audio.setType(ResourceType.AUDIO);
+        audio.setQuality(dto.getAudioQuality());
+        return audio;
+    }
+
+    private Resource toImgResource(AudioImgDTO dto) {
+        Resource img = new Resource();
+        img.setCode(dto.getCode()+"_"+ResourceType.IMG+DateUtil.getTimeStamp());
+        img.setName(dto.getName()+"_"+ResourceType.IMG+DateUtil.getTimeStamp());
+        img.setFormat(dto.getImgFormat());
+        img.setPath(dto.getImgPath());
+        img.setSize(dto.getImgSize());
+        img.setQuality(dto.getImgQuality());
+        img.setStatus(BaseStatusEnum.NORMAL);
+        img.setType(ResourceType.IMG);
+        return img;
+    }
+
+    /**
+     * 存储资源
+     * @param resource
+     * @return
+     */
+    private Resource saveResource(Resource resource) {
+
+        if (StringUtils.isEmpty(resource.getCode()) || StringUtils.isEmpty(resource.getPath())) {
+            return null;
+        }
+
+        if (resourceService.exists(resource.getCode())) {
+            return null;
+        }
+
+        //图片,音频类型  存本地
+        Resource result = resourceService.save(resource);
+        return result;
+    }
+
+    /* ------------ 有声读物  audioImg    ---------------------start---------------------------------*/
 }

+ 20 - 0
rankin-resource-service/src/main/java/cn/rankin/resourceservice/repository/AudioImgRepository.java

@@ -0,0 +1,20 @@
+package cn.rankin.resourceservice.repository;
+
+import cn.rankin.common.utils.jpa.BasicJpaRepository;
+import cn.rankin.data.api.resource.entity.AudioImg;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface AudioImgRepository extends BasicJpaRepository<AudioImg, String> {
+
+    Long countByCode(String code);
+
+    /**
+     * find resource by code
+      * @param code
+     * @return
+     */
+    List<AudioImg> findByCode(String code);
+}

+ 68 - 0
rankin-resource-service/src/main/java/cn/rankin/resourceservice/service/AudioImgService.java

@@ -0,0 +1,68 @@
+package cn.rankin.resourceservice.service;
+
+import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.common.utils.exception.DuplicateValueException;
+import cn.rankin.common.utils.exception.NotFoundException;
+import cn.rankin.common.utils.exception.UnsupportedOperationException;
+import cn.rankin.data.api.resource.entity.AudioImg;
+import cn.rankin.resourceservice.repository.AudioImgRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+
+@Slf4j
+@Service
+public class AudioImgService {
+
+    @Autowired
+    private AudioImgRepository audioImgRepository;
+
+    public boolean exists(String code) {
+        Long count = audioImgRepository.countByCode(code);
+        return count > 0L;
+    }
+
+    public AudioImg get(String id) {
+        return audioImgRepository.find(id);
+    }
+
+    public AudioImg save(AudioImg audioImg) {
+        return audioImgRepository.save(audioImg);
+    }
+
+    public Page<AudioImg> search(AudioImg ai, Integer pageNo, Integer pageSize) {
+        Long count = audioImgRepository.count(ai);
+        Page<AudioImg> page = new Page(count, pageNo, pageSize);
+
+        if (count == 0) {
+            return page;
+        }
+
+        List<AudioImg> audioImgList = audioImgRepository.find(ai, page.getStart(), pageSize, new Sort(Sort.Direction.DESC, "gmtModified"));
+        page.setList(audioImgList);
+
+        return page;
+    }
+
+    /**
+     *
+      * @param audioImg
+     * @throws DuplicateValueException
+     * @throws NotFoundException
+     */
+    public AudioImg update(AudioImg audioImg) throws DuplicateValueException, NotFoundException, UnsupportedOperationException {
+        if (null == audioImg){
+            log.error("audioImg is null");
+            return null;
+        }
+
+        AudioImg result = audioImgRepository.update(audioImg);
+        return result;
+    }
+
+}
+

+ 9 - 0
rankin-resource-service/src/main/java/cn/rankin/resourceservice/service/ResourceService.java

@@ -39,6 +39,9 @@ public class ResourceService {
     private String imgDomain;
 
     @Value("${resource.video.domain}")
+    private String audioDomain;
+
+    @Value("${resource.video.domain}")
     private String videoDomain;
 
     public boolean exists(String code) {
@@ -46,6 +49,10 @@ public class ResourceService {
         return count > 0L;
     }
 
+    public Resource get(String id) {
+        return resourceRepository.find(id);
+    }
+
     public Resource save(Resource resource) {
         return resourceRepository.save(resource);
     }
@@ -159,6 +166,8 @@ public class ResourceService {
         String path = resource.getPath();
         if (ResourceType.VIDEO == resource.getType()) {
             resource.setUrl(concatUrl(videoDomain, path));
+        }else if (ResourceType.AUDIO_IMG == resource.getType()) {
+            resource.setUrl(concatUrl(audioDomain, path));
         }else if (ResourceType.IMG == resource.getType()) {
             resource.setUrl(concatUrl(imgDomain, path).replace(" ", ""));
         }