refactor(版本升级): 版本升级1.2.1

This commit is contained in:
MAC 2022-06-09 23:05:00 +08:00
parent dd0ef69459
commit 894440e81e
25 changed files with 159 additions and 487 deletions

28
pom.xml
View File

@ -6,11 +6,11 @@
<parent>
<groupId>com.qiwenshare</groupId>
<artifactId>qiwenshare</artifactId>
<version>1.2.0</version>
<version>1.2.1</version>
</parent>
<artifactId>qiwen-file</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.2.1-SNAPSHOT</version>
<name>qiwen-file</name>
<description>pan.qiwenshare.com</description>
<packaging>jar</packaging>
@ -45,8 +45,8 @@
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
<!-- 导入Mysql数据库链接jar包-->
@ -86,12 +86,6 @@
</dependency>
<!--mybatis end-->
<!--登陆认证和权限管理-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
</dependency>
<dependency>
<groupId>com.qiwenshare</groupId>
<artifactId>ufop-spring-boot-starter</artifactId>
@ -112,38 +106,25 @@
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>com.inversoft</groupId>
<artifactId>prime-jwt</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.mpatric</groupId>-->
<!-- <artifactId>mp3agic</artifactId>-->
<!-- <version>0.9.1</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org</groupId>
<artifactId>jaudiotagger</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>com.github.stuxuhai</groupId>
<artifactId>jpinyin</artifactId>
<version>1.1.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- <plugin>-->
@ -175,6 +156,7 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- not append assembly id in release file name -->

View File

@ -13,8 +13,8 @@ public interface IUserFileService extends IService<UserFile> {
List<UserFile> selectSameUserFile(String fileName, String filePath, String extendName, Long userId);
IPage<FileListVo> userFileList(Long userId, String filePath, Long beginCount, Long pageCount);
void updateFilepathByFilepath(String oldfilePath, String newfilePath, String fileName, String extendName, long userId);
void userFileCopy(String oldfilePath, String newfilePath, String fileName, String extendName, long userId);
void updateFilepathByUserFileId(String userFileId, String newfilePath, long userId);
void userFileCopy(String userFileId, String newfilePath, long userId);
IPage<FileListVo> getFileByFileType(Integer fileTypeId, Long currentPage, Long pageCount, long userId);
List<UserFile> selectUserFileListByPath(String filePath, Long userId);

View File

@ -1,6 +1,6 @@
package com.qiwenshare.file.component;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qiwenshare.file.api.IFiletransferService;
import com.qiwenshare.file.api.IRecoveryFileService;

View File

@ -3,12 +3,13 @@ package com.qiwenshare.file.component;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.stuxuhai.jpinyin.PinyinException;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
import com.qiwenshare.common.util.DateUtil;
import com.qiwenshare.common.util.HttpsUtils;
import com.qiwenshare.file.api.IShareFileService;
import com.qiwenshare.file.api.IShareService;
import com.qiwenshare.file.api.IUserService;
@ -18,17 +19,13 @@ import com.qiwenshare.file.io.QiwenFile;
import com.qiwenshare.file.mapper.FileMapper;
import com.qiwenshare.file.mapper.MusicMapper;
import com.qiwenshare.file.mapper.UserFileMapper;
import com.qiwenshare.file.util.HttpsUtils;
import com.qiwenshare.file.util.QiwenFileUtil;
import com.qiwenshare.file.util.TreeNode;
import com.qiwenshare.ufop.constant.StorageTypeEnum;
import com.qiwenshare.ufop.factory.UFOPFactory;
import com.qiwenshare.ufop.operation.copy.Copier;
import com.qiwenshare.ufop.operation.copy.domain.CopyFile;
import com.qiwenshare.ufop.operation.download.Downloader;
import com.qiwenshare.ufop.operation.download.domain.DownloadFile;
import com.qiwenshare.ufop.operation.read.Reader;
import com.qiwenshare.ufop.operation.read.domain.ReadFile;
import com.qiwenshare.ufop.operation.write.Writer;
import com.qiwenshare.ufop.operation.write.domain.WriteFile;
import com.qiwenshare.ufop.util.UFOPUtils;
@ -144,9 +141,8 @@ public class FileDealComp {
*
* @param sessionUserId
*/
public void restoreParentFilePath(QiwenFile ufopFile1, Long sessionUserId) {
public void restoreParentFilePath(QiwenFile qiwenFile, Long sessionUserId) {
QiwenFile qiwenFile = new QiwenFile(ufopFile1.getPath(), ufopFile1.isDirectory());
if (qiwenFile.isFile()) {
qiwenFile = qiwenFile.getParentFile();
}
@ -166,7 +162,11 @@ public class FileDealComp {
try {
userFileMapper.insert(userFile);
} catch (Exception e) {
//ignore
if (e.getMessage().contains("Duplicate entry")) {
//ignore
} else {
log.error(e.getMessage());
}
}
}
qiwenFile = new QiwenFile(parentFilePath, true);
@ -549,8 +549,9 @@ public class FileDealComp {
}
public String getLyc(String singerName, String mp3Name) {
String s = HttpsUtils.doGetString("https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?_=1651992748984&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=0&g_tk_new_20200303=5381&g_tk=5381&hostUin=0&is_xml=0&key=" + mp3Name.replaceAll(" ", ""));
Map<String, Object> headMap = new HashMap<>();
headMap.put("Referer", "https://y.qq.com/");
String s = HttpsUtils.doGetString("https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?_=1651992748984&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=0&g_tk_new_20200303=5381&g_tk=5381&hostUin=0&is_xml=0&key=" + mp3Name.replaceAll(" ", ""), headMap);
Map map = JSON.parseObject(s, Map.class);
Map data = (Map) map.get("data");
Map song = (Map) data.get("song");
@ -603,7 +604,7 @@ public class FileDealComp {
id = (String) item.get("id");
mid = (String) item.get("mid");
if (singer.equals(singerName) && mp3Name.equals(mp3name)) {
String res = HttpsUtils.doGetString("https://c.y.qq.com/v8/fcg-bin/musicmall.fcg?_=1652026128283&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=0&g_tk_new_20200303=5381&g_tk=5381&cmd=get_album_buy_page&albummid=" + mid + "&albumid=0");
String res = HttpsUtils.doGetString("https://c.y.qq.com/v8/fcg-bin/musicmall.fcg?_=1652026128283&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=0&g_tk_new_20200303=5381&g_tk=5381&cmd=get_album_buy_page&albummid=" + mid + "&albumid=0", headMap);
Map map1 = JSON.parseObject(res, Map.class);
Map data1 = (Map) map1.get("data");
List<Map> list1 = (List<Map>) data1.get("songlist");
@ -625,7 +626,7 @@ public class FileDealComp {
String s1 = HttpsUtils.doGetString("https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg?_=1651993218842&cv=4747474&ct=24&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=1&uin=0&g_tk_new_20200303=5381&g_tk=5381&loginUin=0&" +
"songmid="+mid+"&" +
"musicid=" + id);
"musicid=" + id, headMap);
Map map1 = JSON.parseObject(s1, Map.class);
return (String) map1.get("lyric");
}

View File

@ -1,6 +1,6 @@
package com.qiwenshare.file.component;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.qiwenshare.common.util.math.CalculatorUtils;
import com.qiwenshare.file.config.jwt.JwtProperties;
import io.jsonwebtoken.Claims;
@ -8,7 +8,7 @@ import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.impl.DefaultClaims;
import org.apache.commons.net.util.Base64;
import org.apache.commons.codec.binary.Base64;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;

View File

@ -1,7 +1,7 @@
package com.qiwenshare.file.controller;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qiwenshare.common.anno.MyLog;
import com.qiwenshare.common.result.RestResult;
@ -10,7 +10,6 @@ import com.qiwenshare.common.util.security.SessionUtil;
import com.qiwenshare.file.api.ICommonFileService;
import com.qiwenshare.file.api.IFilePermissionService;
import com.qiwenshare.file.api.IUserFileService;
import com.qiwenshare.file.constant.CommonFileTypeEnum;
import com.qiwenshare.file.domain.CommonFile;
import com.qiwenshare.file.domain.FilePermission;
import com.qiwenshare.file.domain.UserFile;

View File

@ -5,7 +5,7 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.HighlighterEncoder;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qiwenshare.common.anno.MyLog;
@ -235,7 +235,7 @@ public class FileController {
}
@Operation(summary = "解压文件", description = "解压缩功能为体验功能可以解压zip和rar格式的压缩文件目前只支持本地存储文件解压部分高版本rar格式不支持", tags = {"file"})
@Operation(summary = "解压文件", description = "解压文件。", tags = {"file"})
@RequestMapping(value = "/unzipfile", method = RequestMethod.POST)
@MyLog(operation = "解压文件", module = CURRENT_MODULE)
@ResponseBody
@ -264,7 +264,6 @@ public class FileController {
String oldfilePath = userFile.getFilePath();
String newfilePath = copyFileDTO.getFilePath();
String fileName = userFile.getFileName();
String extendName = userFile.getExtendName();
if (userFile.getIsDir() == 1) {
QiwenFile qiwenFile = new QiwenFile(oldfilePath, fileName, true);
if (newfilePath.startsWith(qiwenFile.getPath() + QiwenFile.separator) || newfilePath.equals(qiwenFile.getPath())) {
@ -272,7 +271,7 @@ public class FileController {
}
}
userFileService.userFileCopy(oldfilePath, newfilePath, fileName, extendName, sessionUserBean.getUserId());
userFileService.userFileCopy(userFileId, newfilePath,sessionUserBean.getUserId());
fileDealComp.deleteRepeatSubDirFile(newfilePath, sessionUserBean.getUserId());
return RestResult.success();
@ -285,11 +284,11 @@ public class FileController {
public RestResult<String> moveFile(@RequestBody MoveFileDTO moveFileDto) {
JwtUser sessionUserBean = SessionUtil.getSession();
String oldfilePath = moveFileDto.getOldFilePath();
UserFile userFile = userFileService.getById(moveFileDto.getUserFileId());
String oldfilePath = userFile.getFilePath();
String newfilePath = moveFileDto.getFilePath();
String fileName = moveFileDto.getFileName();
String extendName = moveFileDto.getExtendName();
String fileName = userFile.getFileName();
String extendName = userFile.getExtendName();
if (StringUtil.isEmpty(extendName)) {
QiwenFile qiwenFile = new QiwenFile(oldfilePath, fileName, true);
if (newfilePath.startsWith(qiwenFile.getPath() + QiwenFile.separator) || newfilePath.equals(qiwenFile.getPath())) {
@ -297,7 +296,7 @@ public class FileController {
}
}
userFileService.updateFilepathByFilepath(oldfilePath, newfilePath, fileName, extendName, sessionUserBean.getUserId());
userFileService.updateFilepathByUserFileId(moveFileDto.getUserFileId(), newfilePath, sessionUserBean.getUserId());
fileDealComp.deleteRepeatSubDirFile(newfilePath, sessionUserBean.getUserId());
return RestResult.success();
@ -325,8 +324,7 @@ public class FileController {
return RestResult.fail().message("原路径与目标路径冲突,不能移动");
}
}
userFileService.updateFilepathByFilepath(userFile.getFilePath(), newfilePath, userFile.getFileName(), userFile.getExtendName(), sessionUserBean.getUserId());
userFileService.updateFilepathByUserFileId(userFile.getUserFileId(), newfilePath, sessionUserBean.getUserId());
}
return RestResult.success().data("批量移动文件成功");

View File

@ -23,6 +23,7 @@ import com.qiwenshare.file.vo.file.UploadFileVo;
import com.qiwenshare.ufop.factory.UFOPFactory;
import com.qiwenshare.ufop.operation.download.Downloader;
import com.qiwenshare.ufop.operation.download.domain.DownloadFile;
import com.qiwenshare.ufop.operation.download.domain.Range;
import com.qiwenshare.ufop.util.UFOPUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -213,40 +214,49 @@ public class FiletransferController {
}
httpServletResponse.addHeader("Content-Disposition", "fileName=" + fileName);// 设置文件名
String mime = MimeUtils.getMime(userFile.getExtendName());
httpServletResponse.setHeader("Content-Type", mime);
FileBean fileBean = fileService.getById(userFile.getFileId());
if ((UFOPUtils.isVideoFile(userFile.getExtendName()) || "mp3".equalsIgnoreCase(userFile.getExtendName()) || "flac".equalsIgnoreCase(userFile.getExtendName()))
&& !"true".equals(previewDTO.getIsMin())) {
//获取从那个字节开始读取文件
String rangeString = httpServletRequest.getHeader("Range");
int start = 0;
if (StringUtils.isNotBlank(rangeString)) {
start = Integer.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-")));
}
Downloader downloader = ufopFactory.getDownloader(fileBean.getStorageType());
DownloadFile downloadFile = new DownloadFile();
downloadFile.setFileUrl(fileBean.getFileUrl());
Range range = new Range();
range.setStart(start);
range.setLength(1024 * 1024 * 1);
downloadFile.setRange(range);
InputStream inputStream = downloader.getInputStream(downloadFile);
String mime = MimeUtils.getMime(userFile.getExtendName());
httpServletResponse.setHeader("Content-Type", mime);
//获取从那个字节开始读取文件
String rangeString = httpServletRequest.getHeader("Range");
int range = 0;
if (StringUtils.isNotBlank(rangeString)) {
range = Integer.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-")));
}
//获取响应的输出流
OutputStream outputStream = httpServletResponse.getOutputStream();
//返回码需要为206代表只处理了部分请求响应了部分数据
httpServletResponse.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
// 每次请求只返回1MB的视频流
byte[] bytes = new byte[1024 * 1024 * 5];
inputStream.skip(range);
int len = IOUtils.read(inputStream, bytes);
//设置此次相应返回的数据长度
httpServletResponse.setContentLength(len);
httpServletResponse.setHeader("Accept-Ranges", "bytes");
//设置此次相应返回的数据范围
httpServletResponse.setHeader("Content-Range", "bytes " + range + "-" + (fileBean.getFileSize() - 1) + "/" + fileBean.getFileSize());
// 将这1MB的视频流响应给客户端
outputStream.write(bytes, 0, len);
outputStream.close();
try {
//返回码需要为206代表只处理了部分请求响应了部分数据
httpServletResponse.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
// 每次请求只返回1MB的视频流
httpServletResponse.setHeader("Accept-Ranges", "bytes");
//设置此次相应返回的数据范围
httpServletResponse.setHeader("Content-Range", "bytes " + start + "-" + (fileBean.getFileSize() - 1) + "/" + fileBean.getFileSize());
IOUtils.copy(inputStream, outputStream);
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
if (downloadFile.getOssClient() != null) {
downloadFile.getOssClient().shutdown();
}
}
} else {
filetransferService.previewFile(httpServletResponse, previewDTO);
}

View File

@ -1,8 +1,8 @@
package com.qiwenshare.file.controller;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ClassUtils;
import com.qiwenshare.common.exception.NotLoginException;

View File

@ -1,6 +1,6 @@
package com.qiwenshare.file.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.qiwenshare.common.anno.MyLog;
import com.qiwenshare.common.result.RestResult;
import com.qiwenshare.common.util.security.JwtUser;

View File

@ -3,7 +3,7 @@ package com.qiwenshare.file.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qiwenshare.common.anno.MyLog;
import com.qiwenshare.common.result.RestResult;

View File

@ -7,7 +7,6 @@ import com.qiwenshare.file.component.FileDealComp;
import com.qiwenshare.file.domain.ShareFile;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.io.QiwenFile;
import com.qiwenshare.file.service.ShareFileService;
import com.qiwenshare.file.service.UserFileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -1,11 +1,11 @@
package com.qiwenshare.file.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qiwenshare.common.anno.MyLog;
import com.qiwenshare.common.result.RestResult;
import com.qiwenshare.common.util.DateUtil;
import com.qiwenshare.common.util.HashUtils;
import com.qiwenshare.common.util.security.JwtUser;
import com.qiwenshare.common.util.security.SessionUtil;
import com.qiwenshare.file.api.IUserLoginInfoService;
@ -19,8 +19,6 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -69,7 +67,7 @@ public class UserController {
@Parameter(description = "登录密码") String password){
RestResult<UserLoginVo> restResult = new RestResult<UserLoginVo>();
String salt = userService.getSaltByTelephone(telephone);
String hashPassword = new SimpleHash("MD5", password, salt, 1024).toHex();
String hashPassword = HashUtils.hashHex("MD5", password, salt, 1024);
UserBean result = userService.selectUserByTelephoneAndPassword(telephone, hashPassword);
if (result == null) {
return RestResult.fail().message("手机号或密码错误!");

View File

@ -12,7 +12,7 @@ import javax.persistence.*;
@Data
@Table(name = "userfile", uniqueConstraints = {
@UniqueConstraint(name = "fileindex", columnNames = { "userId", "filePath", "fileName", "extendName", "deleteFlag"})}
@UniqueConstraint(name = "fileindex", columnNames = { "userId", "filePath", "fileName", "extendName", "deleteFlag", "isDir"})}
)
@Entity
@TableName("userfile")
@ -35,7 +35,7 @@ public class UserFile {
@Column(columnDefinition="varchar(500) comment '文件路径'")
private String filePath;
@Column(columnDefinition="varchar(100) comment '扩展名'")
@Column(columnDefinition="varchar(100) NULL DEFAULT '' comment '扩展名'")
private String extendName;
@Column(columnDefinition="int(1) comment '是否是目录(0-否,1-是)'")
@ -66,4 +66,12 @@ public class UserFile {
this.deleteFlag = 0;
}
public boolean isDirectory() {
return this.isDir == 1;
}
public boolean isFile() {
return this.isDir == 0;
}
}

View File

@ -6,16 +6,17 @@ import lombok.Data;
@Data
@Schema(name = "移动文件DTO",required = true)
public class MoveFileDTO {
@Schema(description = "用户文件id", required = true)
private String userFileId;
@Schema(description = "文件路径", required = true)
private String filePath;
@Schema(description = "文件名", required = true)
private String fileName;
@Schema(description = "旧文件名", required = true)
private String oldFilePath;
@Schema(description = "扩展名", required = true)
private String extendName;
//
// @Schema(description = "文件名", required = true)
// private String fileName;
//
// @Schema(description = "旧文件名", required = true)
// private String oldFilePath;
// @Schema(description = "扩展名", required = true)
// private String extendName;
}

View File

@ -19,7 +19,7 @@
package com.qiwenshare.file.helper;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSONObject;
import com.qiwenshare.file.component.JwtComp;
import com.qiwenshare.file.service.OfficeConverterService;
import org.springframework.stereotype.Component;
@ -231,7 +231,7 @@ public class DocumentManager
File meta = new File(histDir + File.separator + "createdInfo.json");
try (FileWriter writer = new FileWriter(meta)) {
json.writeJSONString(writer);
// json.writeJSONString(writer);
}
}

View File

@ -18,9 +18,9 @@
package com.qiwenshare.file.helper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.google.gson.Gson;
import com.qiwenshare.file.component.JwtComp;
import com.qiwenshare.file.service.OfficeConverterService;

View File

@ -1,7 +1,7 @@
package com.qiwenshare.file.service;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;

View File

@ -1,13 +1,8 @@
package com.qiwenshare.file.service;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.stuxuhai.jpinyin.PinyinException;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
import com.qiwenshare.common.util.DateUtil;
import com.qiwenshare.common.util.MimeUtils;
import com.qiwenshare.common.util.security.JwtUser;
@ -20,7 +15,6 @@ import com.qiwenshare.file.dto.file.PreviewDTO;
import com.qiwenshare.file.dto.file.UploadFileDTO;
import com.qiwenshare.file.io.QiwenFile;
import com.qiwenshare.file.mapper.*;
import com.qiwenshare.file.util.HttpsUtils;
import com.qiwenshare.file.util.QiwenFileUtil;
import com.qiwenshare.file.vo.file.UploadFileVo;
import com.qiwenshare.ufop.constant.StorageTypeEnum;
@ -28,8 +22,6 @@ import com.qiwenshare.ufop.constant.UploadFileStatusEnum;
import com.qiwenshare.ufop.exception.operation.DownloadException;
import com.qiwenshare.ufop.exception.operation.UploadException;
import com.qiwenshare.ufop.factory.UFOPFactory;
import com.qiwenshare.ufop.operation.copy.Copier;
import com.qiwenshare.ufop.operation.copy.domain.CopyFile;
import com.qiwenshare.ufop.operation.delete.Deleter;
import com.qiwenshare.ufop.operation.delete.domain.DeleteFile;
import com.qiwenshare.ufop.operation.download.Downloader;
@ -42,26 +34,8 @@ import com.qiwenshare.ufop.operation.upload.domain.UploadFileResult;
import com.qiwenshare.ufop.util.UFOPUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.AudioHeader;
import org.jaudiotagger.audio.exceptions.CannotReadException;
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
import org.jaudiotagger.audio.flac.FlacFileReader;
import org.jaudiotagger.audio.mp3.MP3AudioHeader;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.TagException;
import org.jaudiotagger.tag.TagField;
import org.jaudiotagger.tag.id3.AbstractID3v2Frame;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
import org.jaudiotagger.tag.id3.framebody.FrameBodyAPIC;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.nio.cs.ext.GBK;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -70,7 +44,10 @@ import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
@ -98,8 +75,6 @@ public class FiletransferService implements IFiletransferService {
UploadTaskMapper uploadTaskMapper;
@Resource
ImageMapper imageMapper;
@Resource
MusicMapper musicMapper;
@Resource
PictureFileMapper pictureFileMapper;
@ -125,11 +100,6 @@ public class FiletransferService implements IFiletransferService {
if (list != null && !list.isEmpty()) {
FileBean file = list.get(0);
if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, sessionUserBean.getUserId());
fileDealComp.deleteRepeatSubDirFile(uploadFileDTO.getFilePath(), sessionUserBean.getUserId());
}
UserFile userFile = new UserFile(qiwenFile, sessionUserBean.getUserId(), file.getFileId());
UserFile param1 = QiwenFileUtil.searchQiwenFileParam(userFile);
List<UserFile> userFileList = userFileMapper.selectList(new QueryWrapper<>(param1));
@ -137,6 +107,9 @@ public class FiletransferService implements IFiletransferService {
userFileMapper.insert(userFile);
fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
}
if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, sessionUserBean.getUserId());
}
uploadFileVo.setSkipUpload(true);
} else {
@ -188,7 +161,7 @@ public class FiletransferService implements IFiletransferService {
uploadFileResultList = uploader.upload(request, uploadFile);
} catch (Exception e) {
log.error("上传失败请检查UFOP连接配置是否正确");
throw new UploadException("上传失败");
throw new UploadException("上传失败", e);
}
for (int i = 0; i < uploadFileResultList.size(); i++){
UploadFileResult uploadFileResult = uploadFileResultList.get(i);
@ -208,10 +181,7 @@ public class FiletransferService implements IFiletransferService {
UserFile userFile = new UserFile(qiwenFile, userId, fileBean.getFileId());
if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, userId);
fileDealComp.deleteRepeatSubDirFile(uploadFileDto.getFilePath(), userId);
}
UserFile param = QiwenFileUtil.searchQiwenFileParam(userFile);
List<UserFile> userFileList = userFileMapper.selectList(new QueryWrapper<>(param));
@ -221,6 +191,10 @@ public class FiletransferService implements IFiletransferService {
}
userFileMapper.insert(userFile);
if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, userId);
}
fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
@ -306,8 +280,8 @@ public class FiletransferService implements IFiletransferService {
downloader.download(httpServletResponse, downloadFile);
} else {
List<UserFile> userFileList = userFileMapper.selectUserFileByLikeRightFilePath(userFile.getFilePath() + "/" + userFile.getFileName()
, userFile.getUserId());
QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true);
List<UserFile> userFileList = userFileMapper.selectUserFileByLikeRightFilePath(qiwenFile.getPath() , userFile.getUserId());
List<String> userFileIds = userFileList.stream().map(UserFile::getUserFileId).collect(Collectors.toList());
downloadUserFileList(httpServletResponse, userFile.getFilePath(), userFile.getFileName(), userFileIds);

View File

@ -18,7 +18,7 @@
package com.qiwenshare.file.service;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSONObject;
import com.google.gson.Gson;
import com.qiwenshare.file.component.JwtComp;
import com.qiwenshare.file.helper.ConfigManager;

View File

@ -1,6 +1,6 @@
package com.qiwenshare.file.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiwenshare.file.api.IShareFileService;

View File

@ -4,7 +4,6 @@ import cn.hutool.core.net.URLDecoder;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -18,20 +17,15 @@ import com.qiwenshare.file.component.FileDealComp;
import com.qiwenshare.file.domain.RecoveryFile;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.io.QiwenFile;
import com.qiwenshare.file.mapper.FileMapper;
import com.qiwenshare.file.mapper.FileTypeMapper;
import com.qiwenshare.file.mapper.RecoveryFileMapper;
import com.qiwenshare.file.mapper.UserFileMapper;
import com.qiwenshare.file.util.QiwenFileUtil;
import com.qiwenshare.file.vo.file.FileListVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.Executor;
@ -39,17 +33,13 @@ import java.util.concurrent.Executors;
@Slf4j
@Service
@Transactional(rollbackFor=Exception.class)
public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> implements IUserFileService {
@Transactional(rollbackFor = Exception.class)
public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> implements IUserFileService {
@Resource
UserFileMapper userFileMapper;
@Resource
FileMapper fileMapper;
@Resource
RecoveryFileMapper recoveryFileMapper;
@Resource
FileTypeMapper fileTypeMapper;
@Resource
FileDealComp fileDealComp;
public static Executor executor = Executors.newFixedThreadPool(20);
@ -94,32 +84,23 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
}
@Override
public void updateFilepathByFilepath(String oldfilePath, String newfilePath, String fileName, String extendName, long userId) {
public void updateFilepathByUserFileId(String userFileId, String newfilePath, long userId) {
UserFile userFile = userFileMapper.selectById(userFileId);
String oldfilePath = userFile.getFilePath();
String fileName = userFile.getFileName();
QueryWrapper<UserFile> queryWrapper = new QueryWrapper<UserFile>()
.eq("userId", userId)
.eq("filePath", oldfilePath).eq("fileName", fileName);
if (extendName == null) {
queryWrapper.eq("isDir", 1);
} else {
queryWrapper.eq("extendName", extendName);
}
queryWrapper.eq("deleteFlag", 0);
List<UserFile> userFileList = userFileMapper.selectList(queryWrapper);
for (UserFile userFile : userFileList) {
userFile.setFilePath(newfilePath);
if (userFile.getIsDir() == 0) {
String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(repeatFileName);
}
userFileMapper.updateById(userFile);
userFile.setFilePath(newfilePath);
if (userFile.getIsDir() == 0) {
String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(repeatFileName);
}
userFileMapper.updateById(userFile);
//移动子目录
oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath();
newfilePath = new QiwenFile(newfilePath, fileName, true).getPath();
if (StringUtils.isEmpty(extendName)) { //为空说明是目录则需要移动子目录
if (userFile.isDirectory()) { //为空说明是目录则需要移动子目录
List<UserFile> list = selectUserFileByLikeRightFilePath(oldfilePath, userId);
for (UserFile newUserFile : list) {
@ -135,43 +116,34 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
}
@Override
public void userFileCopy(String oldfilePath, String newfilePath, String fileName, String extendName, long userId) {
public void userFileCopy(String userFileId, String newfilePath, long userId) {
UserFile userFile = userFileMapper.selectById(userFileId);
String oldfilePath = userFile.getFilePath();
String fileName = userFile.getFileName();
QueryWrapper<UserFile> queryWrapper = new QueryWrapper<UserFile>()
.eq("userId", userId)
.eq("filePath", oldfilePath).eq("fileName", fileName);
if (extendName == null) {
queryWrapper.eq("isDir", 1);
} else {
queryWrapper.eq("extendName", extendName);
}
queryWrapper.eq("deleteFlag", 0);
List<UserFile> userFileList = userFileMapper.selectList(queryWrapper);
for (UserFile userFile : userFileList) {
userFile.setFilePath(newfilePath);
userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr());
if (userFile.getIsDir() == 0) {
String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(repeatFileName);
}
userFileMapper.insert(userFile);
userFile.setFilePath(newfilePath);
userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr());
if (userFile.getIsDir() == 0) {
String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(repeatFileName);
}
userFileMapper.insert(userFile);
oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath();
newfilePath = new QiwenFile(newfilePath, fileName, true).getPath();
if (extendName == null) { //为null说明是目录则需要移动子目录
if (userFile.isDirectory()) { //为null说明是目录则需要移动子目录
List<UserFile> subUserFileList = userFileMapper.selectUserFileByLikeRightFilePath(oldfilePath, userId);
for (UserFile userFile : subUserFileList) {
userFile.setFilePath(userFile.getFilePath().replaceFirst(oldfilePath, newfilePath));
userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr());
if (userFile.getIsDir() == 0) {
String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(repeatFileName);
for (UserFile newUserFile : subUserFileList) {
newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(oldfilePath, newfilePath));
newUserFile.setUserFileId(IdUtil.getSnowflakeNextIdStr());
if (!newUserFile.isFile()) {
String repeatFileName = fileDealComp.getRepeatFileName(newUserFile, newUserFile.getFilePath());
newUserFile.setFileName(repeatFileName);
}
userFileMapper.insert(userFile);
userFileMapper.insert(newUserFile);
}
}
@ -221,7 +193,7 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
String filePath = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath();
updateFileDeleteStateByFilePath(filePath, uuid, sessionUserId);
}else{
} else {
UserFile userFileTemp = userFileMapper.selectById(userFileId);
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, RandomUtil.randomInt(1, FileConstant.deleteFileRandomSize))
@ -248,16 +220,16 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) {
executor.execute(() -> {
List<UserFile> fileList = selectUserFileByLikeRightFilePath(filePath, userId);
for (int i = 0; i < fileList.size(); i++){
for (int i = 0; i < fileList.size(); i++) {
UserFile userFileTemp = fileList.get(i);
//标记删除标志
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper1 = new LambdaUpdateWrapper<>();
userFileLambdaUpdateWrapper1.set(UserFile::getDeleteFlag, RandomUtil.randomInt(FileConstant.deleteFileRandomSize))
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
.set(UserFile::getDeleteBatchNum, deleteBatchNum)
.eq(UserFile::getUserFileId, userFileTemp.getUserFileId())
.eq(UserFile::getDeleteFlag, 0);
userFileMapper.update(null, userFileLambdaUpdateWrapper1);
//标记删除标志
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper1 = new LambdaUpdateWrapper<>();
userFileLambdaUpdateWrapper1.set(UserFile::getDeleteFlag, RandomUtil.randomInt(FileConstant.deleteFileRandomSize))
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
.set(UserFile::getDeleteBatchNum, deleteBatchNum)
.eq(UserFile::getUserFileId, userFileTemp.getUserFileId())
.eq(UserFile::getDeleteFlag, 0);
userFileMapper.update(null, userFileLambdaUpdateWrapper1);
}
});

View File

@ -1,10 +1,11 @@
package com.qiwenshare.file.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiwenshare.common.result.RestResult;
import com.qiwenshare.common.util.DateUtil;
import com.qiwenshare.common.util.HashUtils;
import com.qiwenshare.common.util.PasswordUtil;
import com.qiwenshare.common.util.security.JwtUser;
import com.qiwenshare.file.api.IUserService;
@ -17,7 +18,6 @@ import com.qiwenshare.file.mapper.UserMapper;
import io.jsonwebtoken.Claims;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
@ -91,7 +91,7 @@ public class UserService extends ServiceImpl<UserMapper, UserBean> implements IU
String salt = PasswordUtil.getSaltValue();
String newPassword = new SimpleHash("MD5", userBean.getPassword(), salt, 1024).toHex();
String newPassword = HashUtils.hashHex("MD5", userBean.getPassword(), salt, 1024);
userBean.setSalt(salt);

View File

@ -1,268 +0,0 @@
package com.qiwenshare.file.util;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HttpsUtils {
private static final int MAX_TIMEOUT = 7000;
private static final Logger logger = LoggerFactory.getLogger(HttpsUtils.class);
private static PoolingHttpClientConnectionManager connMgr;
private static RequestConfig requestConfig;
static {
// 设置连接池
connMgr = new PoolingHttpClientConnectionManager();
// 设置连接池大小
connMgr.setMaxTotal(100);
connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());
// Validate connections after 1 sec of inactivity
connMgr.setValidateAfterInactivity(1000);
RequestConfig.Builder configBuilder = RequestConfig.custom();
// 设置连接超时
configBuilder.setConnectTimeout(MAX_TIMEOUT);
// 设置读取超时
configBuilder.setSocketTimeout(MAX_TIMEOUT);
// 设置从连接池获取连接实例的超时
configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
requestConfig = configBuilder.build();
}
/**
* 发送 GET 请求HTTP不带输入数据
*
* @param url url
* @return 返回
*/
public static InputStream doGet(String url) {
HttpEntity httpEntity = doGetHttpEntity(url, new HashMap<String, Object>());
InputStream inputStream = null;
try {
inputStream = httpEntity.getContent();
} catch (IOException e) {
logger.error(e.getMessage());
}
return inputStream;
}
public static String doGetString(String url, Map<String, Object> params) {
HttpEntity httpEntity = doGetHttpEntity(url, params);
String result = null;
try {
result = EntityUtils.toString(httpEntity, "UTF-8");
} catch (IOException e) {
logger.error(e.getMessage());
}
return result;
}
public static String doGetString(String url) {
HttpEntity httpEntity = doGetHttpEntity(url, new HashMap<String, Object>());
String result = null;
try {
result = EntityUtils.toString(httpEntity, "UTF-8");
} catch (IOException e) {
logger.error(e.getMessage());
}
return result;
}
/**
* 发送 GET 请求HTTPK-V形式
*
* @param url url
* @param params 参数
* @return 返回
*/
public static HttpEntity doGetHttpEntity(String url, Map<String, Object> params) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i++;
}
apiUrl += param;
String result = null;
HttpClient httpClient = null;
if (apiUrl.startsWith("https")) {
httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory())
.setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
} else {
httpClient = HttpClients.createDefault();
}
InputStream instream = null;
HttpEntity httpEntity = null;
try {
HttpGet httpGet = new HttpGet(apiUrl);
httpGet.setHeader("Referer", "https://y.qq.com/");
HttpResponse response = httpClient.execute(httpGet);
httpEntity = response.getEntity();
} catch (IOException e) {
logger.error(e.getMessage());
}
return httpEntity;
}
/**
* 发送 POST 请求HTTP不带输入数据
*
* @param apiUrl url
* @return 返回
*/
public static String doPost(String apiUrl) {
return doPost(apiUrl, new HashMap<String, Object>());
}
/**
* 发送 POST 请求K-V形式
*
* @param apiUrl API接口URL
* @param params 参数map
* @return 返回
*/
public static String doPost(String apiUrl, Map<String, Object> params) {
CloseableHttpClient httpClient = null;
if (apiUrl.startsWith("https")) {
httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory())
.setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
} else {
httpClient = HttpClients.createDefault();
}
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
List<NameValuePair> pairList = new ArrayList<>(params.size());
for (Map.Entry<String, Object> entry : params.entrySet()) {
NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
pairList.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
logger.error(e.getMessage());
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
logger.error(e.getMessage());
}
}
}
return httpStr;
}
/**
* 发送 POST 请求JSON形式
*
* @param apiUrl url
* @param json json对象
* @return 返回
*/
public static String doPost(String apiUrl, Object json) {
CloseableHttpClient httpClient = null;
if (apiUrl.startsWith("https")) {
httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory())
.setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
} else {
httpClient = HttpClients.createDefault();
}
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
logger.error(e.getMessage());
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
logger.error(e.getMessage());
}
}
}
return httpStr;
}
/**
* 创建SSL安全连接
*
* @return 返回
*/
private static SSLConnectionSocketFactory createSSLConnSocketFactory() {
SSLConnectionSocketFactory sslsf = null;
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
sslsf = new SSLConnectionSocketFactory(sslContext, new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch (GeneralSecurityException e) {
logger.error(e.getMessage());
}
return sslsf;
}
}

View File

@ -172,5 +172,3 @@ INSERT INTO `fileclassification` (`fileClassificationId`, `fileTypeId`, `fileExt
INSERT INTO `fileclassification` (`fileClassificationId`, `fileTypeId`, `fileExtendName`) VALUES (70, 2, 'md');
INSERT INTO `fileclassification` (`fileClassificationId`, `fileTypeId`, `fileExtendName`) VALUES (71, 2, 'markdown');