Commit 6818ac56 by 侯昆

上传图片视频接口

1 parent 40103e31
package com.dookay.cihai.admin.controller;
/*****************************************
* *
* @dookay.com Internet make it happen *
* ----------- ----------------------- *
* dddd ddddd Internet make it happen *
* o o o Internet make it happen *
* k k k Internet make it happen *
* a a a Internet make it happen *
* yyyy yyyyy Internet make it happen *
* ----------- ----------------------- *
* @dookay.com Internet make it happen *
* *
****************************************/
import com.alibaba.fastjson.JSON;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.exception.ServiceException;
import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.config.ResourcesMappingProperties;
import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
/**
* 词条相关控制器
*
* @author houkun
* @date 2018/1/9
*/
@RestController
@RequestMapping("/api/word")
public class WordRelateController extends BaseController {
@Autowired
private IWordService wordService;
@Autowired
private ResourcesMappingProperties resourcesMappingProperties;
/**
* 添加词条图片
*
* @author houkun
* @date 2018/1/9
*/
@RequestMapping(value = "/pic/add", method = RequestMethod.POST)
public JsonResult picAdd(String word, MultipartFile image) {
WordQuery q = new WordQuery();
q.setWord(word);
WordDomain wordDomain = wordService.getFirst(q);
if (wordDomain == null) {
return errorResult("词条不存在");
}
List<ImageModel> modelList = doUpload(word, image);
List<ImageModel> current = ImageModel.toList(wordDomain.getBaikePhotos());
current.addAll(modelList);
wordDomain.setBaikePhotos(JSON.toJSONString(current));
wordService.update(wordDomain);
return successResult("success", modelList);
}
/**
* 上传
*
* @author houkun
* @date 2018/1/10
*/
private List<ImageModel> doUpload(String word, MultipartFile image) {
List<ImageModel> modelList = new ArrayList<>();
String prefix = "word/" + word + "/";
String fileUploadPath = resourcesMappingProperties.getUploadsMapping() + prefix;
try {
URI uri = new URI(fileUploadPath + image.getOriginalFilename());
Path path = Paths.get(uri);
Files.write(path, image.getBytes());
ImageModel model = new ImageModel();
String mapInnerPath = resourcesMappingProperties.getUploadsInner();
String fileServerPath =
StringUtils.substring(mapInnerPath, 0,
StringUtils.lastIndexOf(mapInnerPath, '/') + 1)
+ prefix
+ image.getOriginalFilename();
model.setFile(fileServerPath);
model.setAlt(image.getOriginalFilename());
modelList.add(model);
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
throw new ServiceException("保存错误");
}
return modelList;
}
/**
* 添加视频
*
* @param word
* @param video
* @return
* @author houkun
* @date 2018/1/10
*/
@RequestMapping(value = "/video/add", method = RequestMethod.POST)
public JsonResult videoAdd(String word, MultipartFile video) {
WordQuery q = new WordQuery();
q.setWord(word);
WordDomain wordDomain = wordService.getFirst(q);
if (wordDomain == null) {
return errorResult("词条不存在");
}
List<ImageModel> modelList = doUpload(word, video);
List<ImageModel> current = ImageModel.toList(wordDomain.getBaikeVideo());
current.addAll(modelList);
wordDomain.setBaikeVideo(JSON.toJSONString(current));
wordService.update(wordDomain);
return successResult("success", modelList);
}
}
...@@ -20,3 +20,5 @@ spring.datasource.druid.filter.stat.enabled=false ...@@ -20,3 +20,5 @@ spring.datasource.druid.filter.stat.enabled=false
# 设置扫描 mapper xml路径 # 设置扫描 mapper xml路径
mapper.mappers=com.dookay.coral.common.core.persistence.Mapper mapper.mappers=com.dookay.coral.common.core.persistence.Mapper
mybatis.mapper-locations=classpath*:mapper/*.xml mybatis.mapper-locations=classpath*:mapper/*.xml
security.basic.enabled=false
security.enable-csrf=false
\ No newline at end of file \ No newline at end of file
...@@ -22,6 +22,7 @@ import com.dookay.cihai.core.word.domain.WordDomain; ...@@ -22,6 +22,7 @@ import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.service.IWordService; import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.web.controller.BaseController; import com.dookay.coral.common.web.controller.BaseController;
import com.dookay.coral.common.web.response.JsonResult; import com.dookay.coral.common.web.response.JsonResult;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
...@@ -90,4 +91,5 @@ public class WordController extends BaseController { ...@@ -90,4 +91,5 @@ public class WordController extends BaseController {
WordDomain statement = wordService.get(id); WordDomain statement = wordService.get(id);
return successResult("success", StatementBaikeDTO.fromDomain(statement)); return successResult("success", StatementBaikeDTO.fromDomain(statement));
} }
} }
...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto; ...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -35,6 +36,8 @@ public class CharacterBaikeDTO { ...@@ -35,6 +36,8 @@ public class CharacterBaikeDTO {
private List<String> brief; private List<String> brief;
private String body; private String body;
private List<String> spell; private List<String> spell;
private List<ImageModel> images;
private List<ImageModel> videos;
public static CharacterBaikeDTO fromDomain(WordDomain word) { public static CharacterBaikeDTO fromDomain(WordDomain word) {
CharacterBaikeDTO dto = new CharacterBaikeDTO(); CharacterBaikeDTO dto = new CharacterBaikeDTO();
...@@ -51,6 +54,12 @@ public class CharacterBaikeDTO { ...@@ -51,6 +54,12 @@ public class CharacterBaikeDTO {
.collect(Collectors.toList()); .collect(Collectors.toList());
dto.setSpell(spell); dto.setSpell(spell);
dto.setBody(word.getBaikeParaphrase()); dto.setBody(word.getBaikeParaphrase());
if (StringUtils.isNotEmpty(word.getBaikePhotos())) {
dto.setImages(ImageModel.toList(word.getBaikePhotos()));
}
if (StringUtils.isNotEmpty(word.getBaikeVideo())) {
dto.setVideos(ImageModel.toList(word.getBaikeVideo()));
}
return dto; return dto;
} }
} }
...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto; ...@@ -16,6 +16,7 @@ package com.dookay.cihai.app.controller.dto;
import com.dookay.cihai.core.word.domain.WordDomain; import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.coral.common.core.utils.lang.StringUtils; import com.dookay.coral.common.core.utils.lang.StringUtils;
import com.dookay.coral.common.web.utils.upload.model.ImageModel;
import lombok.Data; import lombok.Data;
import java.util.Arrays; import java.util.Arrays;
...@@ -35,6 +36,8 @@ public class StatementBaikeDTO { ...@@ -35,6 +36,8 @@ public class StatementBaikeDTO {
private List<String> brief; private List<String> brief;
private String body; private String body;
private String spell; private String spell;
private List<ImageModel> images;
private List<ImageModel> videos;
public static StatementBaikeDTO fromDomain(WordDomain word) { public static StatementBaikeDTO fromDomain(WordDomain word) {
StatementBaikeDTO dto = new StatementBaikeDTO(); StatementBaikeDTO dto = new StatementBaikeDTO();
...@@ -47,6 +50,12 @@ public class StatementBaikeDTO { ...@@ -47,6 +50,12 @@ public class StatementBaikeDTO {
dto.setBrief(brief); dto.setBrief(brief);
dto.setSpell(word.getWordSpell()); dto.setSpell(word.getWordSpell());
dto.setBody(word.getBaikeParaphrase()); dto.setBody(word.getBaikeParaphrase());
if (StringUtils.isNotEmpty(word.getBaikePhotos())) {
dto.setImages(ImageModel.toList(word.getBaikePhotos()));
}
if (StringUtils.isNotEmpty(word.getBaikeVideo())) {
dto.setVideos(ImageModel.toList(word.getBaikeVideo()));
}
return dto; return dto;
} }
} }
...@@ -18,6 +18,7 @@ import java.util.List; ...@@ -18,6 +18,7 @@ import java.util.List;
@Data @Data
public class WordQuery extends Query { public class WordQuery extends Query {
private String word;
private String keyword; private String keyword;
private List<String> keywordList; private List<String> keywordList;
...@@ -26,6 +27,9 @@ public class WordQuery extends Query { ...@@ -26,6 +27,9 @@ public class WordQuery extends Query {
public QueryCriteria toCriteria() { public QueryCriteria toCriteria() {
QueryCriteria queryCriteria = new QueryCriteria(WordDomain.class); QueryCriteria queryCriteria = new QueryCriteria(WordDomain.class);
Example.Criteria criteria = queryCriteria.createCriteria(); Example.Criteria criteria = queryCriteria.createCriteria();
if (valid(word)) {
criteria.andEqualTo("word", word);
}
if (valid(keyword)) { if (valid(keyword)) {
String str = "%" + keyword + "%"; String str = "%" + keyword + "%";
criteria.andCondition(String.format("(word like '%s' or word_alias like '%s')", str, str)); criteria.andCondition(String.format("(word like '%s' or word_alias like '%s')", str, str));
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!