Browse Source

Merge remote-tracking branch 'remotes/origin/dev_voice_attachment' into dev_temp

# Conflicts:
#	epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
dev_shibei_match
jianjun 4 years ago
parent
commit
410bdb054d
  1. 12
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  2. 6
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/result/UploadImgResultDTO.java
  3. 12
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AbstractCloudStorageService.java
  4. 19
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AliyunCloudStorageService.java
  5. 57
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java
  6. 8
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/impl/OssServiceImpl.java
  7. 4
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/utils/ModuleConstant.java
  8. 14
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleContentDTO.java
  9. 5
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftContentDTO.java
  10. 9
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java
  11. 7
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftContentDetailDTO.java
  12. 7
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleContentDTO.java
  13. 7
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java
  14. 10
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleContentEntity.java
  15. 10
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftContentEntity.java
  16. 6
      epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.3__addpdf.sql
  17. 5
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml
  18. 1
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml

12
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -405,4 +405,16 @@ public class RedisKeys {
public static String getThirdPlatformAccessTokenKey(String platformId) {
return rootPrefix.concat("thirdplatform:accesstoken:").concat(platformId);
}
/**
* desc: 根据文件路径获取oss 文件缓存key
*
* @param path
* @return java.lang.String
* @author LiuJanJun
* @date 2021/3/30 9:56 上午
*/
public static String getOssFileKey(String path) {
return rootPrefix.concat("oss:temp:").concat(path);
}
}

6
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/result/UploadImgResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
@ -12,4 +13,9 @@ import java.io.Serializable;
@Data
public class UploadImgResultDTO implements Serializable {
private String url;
/**
* 域名
*/
@JsonIgnore
private String domain;
}

12
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AbstractCloudStorageService.java

@ -25,7 +25,17 @@ import java.util.UUID;
public abstract class AbstractCloudStorageService {
/** 云存储配置信息 */
CloudStorageConfig config;
/**
* desc: 获取oss域名
*
* @param privacy
* @return java.lang.String
* @author LiuJanJun
* @date 2021/3/30 10:05 上午
*/
public String getOssDomain(String privacy){
return null;
};
/**
* 文件路径
* @param prefix 前缀

19
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AliyunCloudStorageService.java

@ -36,7 +36,7 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
* @author wxz
* @date 2021.01.04 13:49
*/
private CloudStorageConfig.AliyunCloudStorageConfigProps getPropsByprivacyType(String privacyType) {
public CloudStorageConfig.AliyunCloudStorageConfigProps getPropsByprivacyType(String privacyType) {
if (PrivacyType.INTERNAL.equalsIgnoreCase(privacyType)) {
return config.getAliyun().getInternal();
} else {
@ -44,6 +44,23 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
}
}
/**
* desc: 获取oss域名
*
* @param privacy
* @return java.lang.String
* @author LiuJanJun
* @date 2021/3/30 10:05 上午
*/
@Override
public String getOssDomain(String privacy) {
if (PrivacyType.INTERNAL.equalsIgnoreCase(privacy)) {
return config.getAliyun().getInternal().getAliyunDomain();
} else {
return config.getAliyun().getExternal().getAliyunDomain();
}
}
@Override
public String upload(byte[] data, String path, String privacyType) {
return upload(new ByteArrayInputStream(data), path, privacyType);

57
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java

@ -11,9 +11,12 @@ package com.epmet.controller;
import com.epmet.cloud.CloudStorageConfig;
import com.epmet.cloud.OssFactory;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AliyunGroup;
@ -32,6 +35,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
@ -62,6 +66,8 @@ public class OssController {
private OssService ossService;
@Autowired
private ParamsRemoteService paramsRemoteService;
@Autowired
private RedisUtils redisUtils;
private final static String KEY = ModuleConstant.CLOUD_STORAGE_CONFIG_KEY;
@ -205,25 +211,52 @@ public class OssController {
return ossService.uploadImg(file, null);
}
/**
* desc: 党建声音模块 上传图片2M或附件5M
*
* @param file
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.result.UploadImgResultDTO>
* @author LiuJanJun
* @date 2021/3/29 4:56 下午
*/
@PostMapping("article/upload")
public Result<UploadImgResultDTO> uploadArticleImg(@RequestParam("file") MultipartFile file) {
// 校验文件类型
if (!MediaType.IMAGE_PNG_VALUE.equals(file.getContentType()) && !MediaType.IMAGE_JPEG_VALUE.equals(file.getContentType())
&& !ModuleConstant.FILE_CONTENT_TYPE_JPG.equals(file.getContentType()) ) {
log.error("uploadArticleImg file type:{} is not support 2 upload",file.getContentType() == null? null:file.getContentType());
// 校验文件类型 图片或pdf
if (!MediaType.IMAGE_PNG_VALUE.equals(file.getContentType())
&& !MediaType.IMAGE_JPEG_VALUE.equals(file.getContentType())
&& !ModuleConstant.FILE_CONTENT_TYPE_JPG.equals(file.getContentType())
&& !ModuleConstant.FILE_CONTENT_TYPE_PDF.equals(file.getContentType())) {
log.error("uploadArticleImg file type:{} is not support 2 upload", file.getContentType());
throw new RenException(EpmetErrorCode.OPER_UPLOAD_FILE_TYPE_ERROR.getCode()
, EpmetErrorCode.OPER_UPLOAD_FILE_TYPE_ERROR.getMsg());
}
// 校验文件体积,不超过2m
long maxSize = 2 * 1024 * 1024;
long size = file.getSize();
if (size > maxSize) {
throw new RenException(EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getCode()
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
if (ModuleConstant.FILE_CONTENT_TYPE_PDF.equals(file.getContentType())) {
// 校验文件体积,不超过5m
long maxSize = 5 * 1024 * 1024;
long size = file.getSize();
if (size > maxSize) {
throw new RenException(EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getCode()
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
}
//todo 获取url 缓存半小时 删除时获取并调用删除方法
} else {
// 校验文件体积,不超过2m
long maxSize = 2 * 1024 * 1024;
long size = file.getSize();
if (size > maxSize) {
throw new RenException(EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getCode()
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
}
}
Result<UploadImgResultDTO> result = ossService.uploadImg(file, null);
if (result != null && result.success() ){
UploadImgResultDTO data = result.getData();
if ( data!= null && StringUtils.isNotBlank(data.getUrl())){
String path = data.getUrl().replace(data.getUrl(), StrConstant.EPMETY_STR);
redisUtils.set(RedisKeys.getOssFileKey(path),path,RedisUtils.MINUTE_THIRTY_EXPIRE);
}
}
return ossService.uploadImg(file, null);
}

8
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/impl/OssServiceImpl.java

@ -10,6 +10,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.cloud.AbstractCloudStorageService;
import com.epmet.cloud.OssFactory;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
@ -56,8 +57,11 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
//上传文件
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
String url = null;
String ossDomain = null;
try {
url = OssFactory.build().uploadSuffix(file.getBytes(), extension, privacy);
AbstractCloudStorageService storageService = OssFactory.build();
url = storageService.uploadSuffix(file.getBytes(), extension, privacy);
ossDomain = storageService.getOssDomain(privacy);
} catch (IOException e) {
e.printStackTrace();
logger.error("图片上传异常");
@ -67,10 +71,12 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
//保存文件信息
OssEntity ossEntity = new OssEntity();
ossEntity.setUrl(url);
baseDao.insert(ossEntity);
//文件信息
UploadImgResultDTO dto = new UploadImgResultDTO();
dto.setUrl(url);
dto.setDomain(ossDomain);
return new Result<UploadImgResultDTO>().ok(dto);
}

4
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/utils/ModuleConstant.java

@ -26,6 +26,10 @@ public interface ModuleConstant extends Constant {
* jpg文件类型
*/
String FILE_CONTENT_TYPE_JPG = "image/jpg";
/**
* pdf文件类型
*/
String FILE_CONTENT_TYPE_PDF = "application/pdf";
/**
* 项目附件-允许上传的文件类型

14
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/ArticleContentDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -54,10 +55,19 @@ public class ArticleContentDTO implements Serializable {
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
/**
* desc: 请描述类的业务用途
*
* @param null
* @return
* @author LiuJanJun
* @date 2021/3/29 5:42 下午
*/
/**
* 审核状态 通过:pass失败:fail审核中auditing
*/

5
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/DraftContentDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -54,7 +55,7 @@ public class DraftContentDTO implements Serializable {
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;

9
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DraftContentFromDTO.java

@ -67,14 +67,19 @@ public class DraftContentFromDTO implements Serializable {
*/
private String draftContentId;
/**
* 内容
* 内容 当为非文字时存放oss链接地址
*/
@Length(max = 1000, message = "每段文字最长为1000个字")
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
/**
* 文件名称
*/
private String fileName;
}
}

7
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftContentDetailDTO.java

@ -24,10 +24,15 @@ public class DraftContentDetailDTO implements Serializable {
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
/**
* 文件名称
*/
private String fileName;
/**
* 内容序号
*/

7
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovArticleContentDTO.java

@ -14,10 +14,15 @@ import java.io.Serializable;
public class GovArticleContentDTO implements Serializable {
private static final long serialVersionUID = 1519014754254863006L;
/**
* 内容类型图片img文字text
* 内容类型图片img文字text; 文件file
*/
private String contentType;
/**
* 文件名称
*/
private String fileName;
/**
* 内容
*/

7
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/GovDraftContentDTO.java

@ -15,10 +15,15 @@ public class GovDraftContentDTO implements Serializable {
private static final long serialVersionUID = 5653062658148122552L;
/**
* 内容类型图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
/**
* 文件名称
*/
private String fileName;
/**
* 内容
*/

10
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleContentEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 文章内容表
*
@ -54,10 +51,15 @@ public class ArticleContentEntity extends BaseEpmetEntity {
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
/**
* 文件名称
*/
private String fileName;
/**
* 审核状态 通过:pass失败:fail审核中auditing
*/

10
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/DraftContentEntity.java

@ -18,13 +18,10 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 草稿内容表
*
@ -54,7 +51,7 @@ public class DraftContentEntity extends BaseEpmetEntity {
private String content;
/**
* 内容类型 图片img文字text
* 内容类型 图片img文字text文件file
*/
private String contentType;
@ -73,4 +70,9 @@ public class DraftContentEntity extends BaseEpmetEntity {
*/
private Integer orderNum;
/**
* 文件名称
*/
private String fileName;
}

6
epmet-module/gov-voice/gov-voice-server/src/main/resources/db/migration/V0.0.3__addpdf.sql

@ -0,0 +1,6 @@
ALTER TABLE `epmet_gov_voice`.`draft_content`
MODIFY COLUMN `CONTENT_TYPE` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '内容类型 图片:img;文字:text;文件:file;' AFTER `CONTENT`,
ADD COLUMN `FILE_NAME` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名称' AFTER `CONTENT_TYPE`;
ALTER TABLE `epmet_gov_voice`.`article_content`
MODIFY COLUMN `CONTENT_TYPE` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '内容类型 图片:img;文字:text;文件:file;' AFTER `CONTENT`,
ADD COLUMN `FILE_NAME` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名称' AFTER `CONTENT_TYPE`;

5
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml

@ -25,7 +25,8 @@
<select id="queryGovArticleContent" parameterType="java.lang.String" resultType="com.epmet.dto.result.GovArticleContentDTO">
SELECT
ac.CONTENT_TYPE,
ac.CONTENT
ac.CONTENT,
ac.FILE_NAME
FROM
article_content ac
WHERE
@ -288,6 +289,7 @@
IFNULL(art.TAGS,'') AS tags,
content2.CONTENT,
content2.CONTENT_TYPE,
content2.FILE_NAME,
(SELECT COUNT(1) FROM ARTICLE_VISIT_RECORD WHERE DEL_FLAG = '0' AND ARTICLE_ID = #{articleId} AND GRID_ID = #{gridId}) AS visitRecordCount,
art.CUSTOMER_ID
FROM
@ -297,6 +299,7 @@
content.ARTICLE_ID,
content.CONTENT,
content.CONTENT_TYPE,
content.FILE_NAME,
content.ORDER_NUM
FROM
ARTICLE_CONTENT content

1
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/DraftDao.xml

@ -28,6 +28,7 @@
dc.ID,
dc.CONTENT,
dc.CONTENT_TYPE,
dc.FILE_NAME,
dc.ORDER_NUM,
(case
when dc.AUDIT_STATUS is null then ""

Loading…
Cancel
Save