Merge pull request #35 from besscroft/dev

🎉v0.7.0
This commit is contained in:
云淑
2023-08-05 18:58:23 +08:00
committed by GitHub
10 changed files with 64 additions and 203 deletions

View File

@@ -1,5 +1,5 @@
# 该镜像需要依赖的基础镜像
FROM eclipse-temurin:17.0.7_7-jre-jammy
FROM eclipse-temurin:17.0.8_7-jre-jammy
# 设置环境变量
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m -Dfile.encoding=utf-8" SPRING_CONFIG="--spring.application.name=diyfile" SPRING_PROFILE="sqlite"
# 设置时区

View File

@@ -1,141 +0,0 @@
package com.besscroft.diyfile.common.result;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.http.HttpStatus;
import java.util.HashMap;
import java.util.Objects;
/**
* @Description 通用封装返回对象
* @Author Bess Croft
* @Date 2022/12/15 14:39
*/
@Schema(title = "通用封装返回对象")
public class AjaxResult extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
/** 状态码 */
public static final String CODE_TAG = "code";
/** 返回消息 */
public static final String MSG_TAG = "message";
/** 数据对象 */
public static final String DATA_TAG = "data";
/**
* 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
*/
public AjaxResult() {
}
/**
* 初始化一个新创建的 AjaxResult 对象
*
* @param code 状态码
* @param message 返回内容
*/
public AjaxResult(int code, String message) {
super.put(CODE_TAG, code);
super.put(MSG_TAG, message);
}
/**
* 初始化一个新创建的 AjaxResult 对象
*
* @param code 状态码
* @param message 消息提示
* @param data 数据对象
*/
public AjaxResult(int code, String message, Object data) {
super.put(CODE_TAG, code);
super.put(MSG_TAG, message);
if (Objects.nonNull(data)) {
super.put(DATA_TAG, data);
}
}
/**
* 成功封装方法
*
* @return 成功消息
*/
public static AjaxResult success() {
return AjaxResult.success("操作成功!");
}
/**
* 成功封装方法
*
* @param message 消息提示
* @return 成功消息
*/
public static AjaxResult success(String message) {
return AjaxResult.success(message, null);
}
/**
* 成功封装方法
*
* @param data 数据对象
* @return 成功消息
*/
public static AjaxResult success(Object data) {
return AjaxResult.success("操作成功!", data);
}
/**
* 成功封装方法
*
* @param message 消息提示
* @param data 数据对象
* @return 成功消息
*/
public static AjaxResult success(String message, Object data) {
return new AjaxResult(HttpStatus.OK.value(), message, data);
}
/**
* 失败封装方法
*
* @return 错误消息
*/
public static AjaxResult error() {
return AjaxResult.error("操作失败!");
}
/**
* 失败封装方法
*
* @param message 消息提示
* @return 错误消息
*/
public static AjaxResult error(String message) {
return AjaxResult.error(message, null);
}
/**
* 失败封装方法
*
* @param message 消息提示
* @param data 数据对象
* @return 错误消息
*/
public static AjaxResult error(String message, Object data) {
return new AjaxResult(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, data);
}
/**
* 失败封装方法
*
* @param code 状态码
* @param message 消息提示
* @return 错误消息
*/
public static AjaxResult error(int code, String message) {
return new AjaxResult(code, message, null);
}
}

View File

@@ -20,7 +20,7 @@ public class OpenApiConfiguration {
return new OpenAPI()
.info(new Info().title("DiyFile")
.description("一款好看的在线文件列表程序")
.version("v0.6.1")
.version("v0.7.0")
.license(new License().name("MIT license").url("https://github.com/besscroft/diyfile/blob/main/LICENSE")))
.externalDocs(new ExternalDocumentation()
.description("DiyFile 文档")

View File

@@ -6,7 +6,6 @@ import cn.dev33.satoken.annotation.SaMode;
import com.besscroft.diyfile.common.constant.MessageConstants;
import com.besscroft.diyfile.common.constant.RoleConstants;
import com.besscroft.diyfile.common.param.file.*;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.common.util.PathUtils;
import com.besscroft.diyfile.common.vo.FileInfoVo;
@@ -87,8 +86,8 @@ public class FileController {
)
@Operation(summary = "获取文件上传地址")
@PostMapping("/getUploadUrl")
public AjaxResult getUploadUrl(@RequestBody @Valid GetUploadUrlParam param) {
return AjaxResult.success("获取成功!", fileService.getUploadUrl(param.getStorageKey(), param.getPath()));
public CommonResult<String> getUploadUrl(@RequestBody @Valid GetUploadUrlParam param) {
return CommonResult.success("获取成功!", fileService.getUploadUrl(param.getStorageKey(), param.getPath()));
}
@SaCheckRole(
@@ -101,20 +100,20 @@ public class FileController {
)
@Operation(summary = "删除文件接口")
@PostMapping("/deleteFile")
public AjaxResult deleteFile(@RequestBody @Valid DeleteFileParam param) {
public CommonResult<Void> deleteFile(@RequestBody @Valid DeleteFileParam param) {
// 校验路径
PathUtils.checkPath(param.getPath());
fileService.deleteFile(param.getStorageKey(), param.getPath());
return AjaxResult.success(MessageConstants.DELETE_SUCCESS);
return CommonResult.success(MessageConstants.DELETE_SUCCESS);
}
@SaIgnore
@Operation(summary = "获取文件下载地址")
@PostMapping("/getDownloadUrl")
public AjaxResult getDownloadUrl(@RequestBody @Valid GetDownloadUrlParam param) {
public CommonResult<String> getDownloadUrl(@RequestBody @Valid GetDownloadUrlParam param) {
// 校验路径
PathUtils.checkPath(param.getPath());
return AjaxResult.success("获取成功!", fileService.getDownloadUrl(param.getStorageKey(), param.getPath(), param.getFullPath()));
return CommonResult.success("获取成功!", fileService.getDownloadUrl(param.getStorageKey(), param.getPath(), param.getFullPath()));
}
@SaIgnore

View File

@@ -5,7 +5,6 @@ import cn.dev33.satoken.annotation.SaMode;
import com.besscroft.diyfile.common.constant.RoleConstants;
import com.besscroft.diyfile.common.dto.ServerInfo;
import com.besscroft.diyfile.common.exception.DiyFileException;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.service.SystemConfigService;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -15,6 +14,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
/**
* @Description 系统监控
* @Author Bess Croft
@@ -36,8 +37,8 @@ public class MonitorController {
@Operation(summary = "统计信息接口")
@GetMapping("/getTotalInfo")
public AjaxResult getTotalInfo() {
return AjaxResult.success(systemConfigService.getTotalInfo());
public CommonResult<Map<String, Object>> getTotalInfo() {
return CommonResult.success(systemConfigService.getTotalInfo());
}
@SaCheckRole(
@@ -48,9 +49,9 @@ public class MonitorController {
)
@Operation(summary = "获取备份数据")
@GetMapping("/getBackupFile")
public AjaxResult getBackupFile() {
public CommonResult<String> getBackupFile() {
try {
return AjaxResult.success("success", systemConfigService.getBackupJsonString());
return CommonResult.success("success", systemConfigService.getBackupJsonString());
} catch (JsonProcessingException e) {
throw new DiyFileException("获取备份数据失败!");
}
@@ -64,9 +65,9 @@ public class MonitorController {
)
@Operation(summary = "恢复数据")
@PostMapping("/restoreData")
public AjaxResult restoreData(@ModelAttribute MultipartFile file) {
public CommonResult<Void> restoreData(@ModelAttribute MultipartFile file) {
systemConfigService.restoreData(file);
return AjaxResult.success("恢复数据成功!");
return CommonResult.success("恢复数据成功!");
}
}

View File

@@ -11,7 +11,6 @@ import com.besscroft.diyfile.common.exception.DiyFileException;
import com.besscroft.diyfile.common.param.storage.StorageAddParam;
import com.besscroft.diyfile.common.param.storage.StorageUpdateParam;
import com.besscroft.diyfile.common.param.storage.StorageUpdateStatusParam;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.common.util.CommonPage;
import com.besscroft.diyfile.common.vo.StorageInfoVo;
@@ -66,9 +65,9 @@ public class StorageController {
mode = SaMode.OR
)
@DeleteMapping("/delete/{storageId:[\\d]+}")
public AjaxResult delete(@PathVariable(name = "storageId") Long storageId) {
public CommonResult<Void> delete(@PathVariable(name = "storageId") Long storageId) {
storageService.deleteStorage(storageId);
return AjaxResult.success(MessageConstants.DELETE_SUCCESS);
return CommonResult.success(MessageConstants.DELETE_SUCCESS);
}
@Operation(summary = "存储新增接口")
@@ -81,7 +80,7 @@ public class StorageController {
mode = SaMode.OR
)
@PostMapping("/add")
public AjaxResult add(@RequestBody @Valid StorageAddParam param) {
public CommonResult<Void> add(@RequestBody @Valid StorageAddParam param) {
if (Objects.equals("proxy", param.getStorageKey())) {
throw new DiyFileException("存储 key 不能为 proxy");
}
@@ -89,7 +88,7 @@ public class StorageController {
throw new DiyFileException("存储 key 不能包含 /");
}
storageService.addStorage(param);
return AjaxResult.success(MessageConstants.ADD_SUCCESS);
return CommonResult.success(MessageConstants.ADD_SUCCESS);
}
@Operation(summary = "存储更新接口")
@@ -102,9 +101,9 @@ public class StorageController {
mode = SaMode.OR
)
@PutMapping("/update")
public AjaxResult update(@RequestBody @Valid StorageUpdateParam param) {
public CommonResult<Void> update(@RequestBody @Valid StorageUpdateParam param) {
storageService.updateStorage(param);
return AjaxResult.success(MessageConstants.UPDATE_SUCCESS);
return CommonResult.success(MessageConstants.UPDATE_SUCCESS);
}
@Operation(summary = "存储详情接口")
@@ -138,9 +137,9 @@ public class StorageController {
mode = SaMode.OR
)
@PutMapping("/updateStatus")
public AjaxResult updateStatus(@RequestBody @Valid StorageUpdateStatusParam param) {
public CommonResult<Void> updateStatus(@RequestBody @Valid StorageUpdateStatusParam param) {
storageService.updateStatus(param.getStorageId(), param.getStatus());
return AjaxResult.success(MessageConstants.UPDATE_SUCCESS);
return CommonResult.success(MessageConstants.UPDATE_SUCCESS);
}
@Operation(summary = "默认存储设置")
@@ -153,9 +152,9 @@ public class StorageController {
mode = SaMode.OR
)
@PutMapping("/setDefault/{storageId:[\\d]+}")
public AjaxResult setDefault(@PathVariable(name = "storageId") Long storageId) {
public CommonResult<Void> setDefault(@PathVariable(name = "storageId") Long storageId) {
storageService.setDefault(storageId);
return AjaxResult.success(MessageConstants.UPDATE_SUCCESS);
return CommonResult.success(MessageConstants.UPDATE_SUCCESS);
}
@SaIgnore

View File

@@ -1,7 +1,7 @@
package com.besscroft.diyfile.controller;
import com.besscroft.diyfile.common.param.sync.SyncTaskParam;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.common.util.PathUtils;
import com.besscroft.diyfile.service.SyncService;
import io.swagger.v3.oas.annotations.Operation;
@@ -27,14 +27,14 @@ public class SyncController {
@PostMapping("/taskAdd")
@Operation(summary = "添加同步任务")
public AjaxResult taskAdd(@RequestBody SyncTaskParam param) {
public CommonResult<Void> taskAdd(@RequestBody SyncTaskParam param) {
PathUtils.checkPath(param.getBeforePath());
PathUtils.checkPath(param.getAfterPath());
syncService.taskAdd(param.getBeforeStorageKey(),
PathUtils.decode(param.getBeforePath()),
param.getAfterStorageKey(),
PathUtils.decode(param.getAfterPath()));
return AjaxResult.success();
return CommonResult.success();
}
}

View File

@@ -5,8 +5,9 @@ import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.annotation.SaMode;
import com.besscroft.diyfile.common.constant.MessageConstants;
import com.besscroft.diyfile.common.constant.RoleConstants;
import com.besscroft.diyfile.common.entity.SystemConfig;
import com.besscroft.diyfile.common.param.system.SystemUpdateConfigParam;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.service.SystemConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -14,6 +15,9 @@ import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @Description 系统配置接口
* @Author Bess Croft
@@ -38,16 +42,16 @@ public class SystemConfigController {
mode = SaMode.OR
)
@Operation(summary = "获取系统配置")
public AjaxResult getConfig(){
return AjaxResult.success(systemConfigService.getConfig());
public CommonResult<List<SystemConfig>> getConfig(){
return CommonResult.success(systemConfigService.getConfig());
}
@GetMapping("/getSiteTitle")
@SaIgnore
@Operation(summary = "获取网站标题")
public AjaxResult getSiteTitle() {
public CommonResult<String> getSiteTitle() {
String siteTitle = systemConfigService.getSiteTitle();
return AjaxResult.success(MessageConstants.SUCCESS, siteTitle);
return CommonResult.success(MessageConstants.SUCCESS, siteTitle);
}
@GetMapping("/getSiteConfig")
@@ -61,40 +65,40 @@ public class SystemConfigController {
mode = SaMode.OR
)
@Operation(summary = "获取网站配置")
public AjaxResult getSiteConfig() {
return AjaxResult.success(systemConfigService.getSiteConfig());
public CommonResult<Map<String, String>> getSiteConfig() {
return CommonResult.success(systemConfigService.getSiteConfig());
}
@GetMapping("/getBeian")
@SaIgnore
@Operation(summary = "获取备案信息")
public AjaxResult getBeian() {
public CommonResult<String> getBeian() {
String beian = systemConfigService.getBeian();
return AjaxResult.success(MessageConstants.SUCCESS, beian);
return CommonResult.success(MessageConstants.SUCCESS, beian);
}
@PutMapping("/updateConfig")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@Operation(summary = "更新配置接口")
public AjaxResult updateConfig(@RequestBody @Valid SystemUpdateConfigParam param) {
public CommonResult<Void> updateConfig(@RequestBody @Valid SystemUpdateConfigParam param) {
systemConfigService.updateConfig(param.getConfigKey(), param.getConfigValue());
return AjaxResult.success(MessageConstants.SUCCESS);
return CommonResult.success(MessageConstants.SUCCESS);
}
@GetMapping("/getBarkId")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@Operation(summary = "获取 Bark 推送 id")
public AjaxResult getBarkId() {
public CommonResult<String> getBarkId() {
String barkId = systemConfigService.getBarkId();
return AjaxResult.success(MessageConstants.SUCCESS, barkId);
return CommonResult.success(MessageConstants.SUCCESS, barkId);
}
@GetMapping("/getBarkStatus")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@Operation(summary = "获取 Bark 推送状态")
public AjaxResult getBarkStatus() {
public CommonResult<Integer> getBarkStatus() {
Integer barkStatus = systemConfigService.getBarkStatus();
return AjaxResult.success(MessageConstants.SUCCESS, barkStatus);
return CommonResult.success(MessageConstants.SUCCESS, barkStatus);
}
}

View File

@@ -12,7 +12,6 @@ import com.besscroft.diyfile.common.param.user.UserAddParam;
import com.besscroft.diyfile.common.param.user.UserUpdateParam;
import com.besscroft.diyfile.common.param.user.UserUpdatePwdParam;
import com.besscroft.diyfile.common.param.user.UserUpdateStatusParam;
import com.besscroft.diyfile.common.result.AjaxResult;
import com.besscroft.diyfile.common.result.CommonResult;
import com.besscroft.diyfile.common.util.CommonPage;
import com.besscroft.diyfile.service.UserService;
@@ -41,16 +40,16 @@ public class UserController {
@SaIgnore
@PostMapping("/login")
@Operation(summary = "登录")
public AjaxResult login(@RequestBody @Valid LoginParam param) {
public CommonResult<SaTokenInfo> login(@RequestBody @Valid LoginParam param) {
SaTokenInfo tokenInfo = userService.login(param.getUsername(), param.getPassword());
return AjaxResult.success(tokenInfo);
return CommonResult.success(tokenInfo);
}
@GetMapping("/info")
@Operation(summary = "获取已登录用户信息")
public AjaxResult info() {
public CommonResult<Map<String, Object>> info() {
Map<String, Object> info = userService.info();
return AjaxResult.success(info);
return CommonResult.success(info);
}
@GetMapping("/userPage")
@@ -74,9 +73,9 @@ public class UserController {
@Operation(summary = "用户删除接口")
@SaCheckRole({ RoleConstants.PLATFORM_SUPER_ADMIN })
@DeleteMapping("/delete/{userId:[\\d]+}")
public AjaxResult delete(@PathVariable(name = "userId") Long userId) {
public CommonResult<Void> delete(@PathVariable(name = "userId") Long userId) {
userService.deleteUser(userId);
return AjaxResult.success(MessageConstants.DELETE_SUCCESS);
return CommonResult.success(MessageConstants.DELETE_SUCCESS);
}
@Operation(summary = "用户信息获取接口")
@@ -97,17 +96,17 @@ public class UserController {
@Operation(summary = "用户新增接口")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@PostMapping("/add")
public AjaxResult add(@RequestBody @Valid UserAddParam param) {
public CommonResult<Void> add(@RequestBody @Valid UserAddParam param) {
userService.addUser(param);
return AjaxResult.success();
return CommonResult.success();
}
@Operation(summary = "用户更新接口")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@PutMapping("/update")
public AjaxResult update(@RequestBody @Valid UserUpdateParam param) {
public CommonResult<Void> update(@RequestBody @Valid UserUpdateParam param) {
userService.updateUser(param);
return AjaxResult.success();
return CommonResult.success();
}
@Operation(summary = "用户查询接口")
@@ -121,16 +120,16 @@ public class UserController {
@Operation(summary = "用户启用状态更新接口")
@SaCheckRole(value = { RoleConstants.PLATFORM_SUPER_ADMIN, RoleConstants.PLATFORM_ADMIN }, mode = SaMode.OR)
@PutMapping("/updateStatus")
public AjaxResult updateStatus(@RequestBody @Valid UserUpdateStatusParam param) {
public CommonResult<Void> updateStatus(@RequestBody @Valid UserUpdateStatusParam param) {
userService.updateStatus(param.getUserId(), param.getStatus());
return AjaxResult.success(MessageConstants.UPDATE_SUCCESS);
return CommonResult.success(MessageConstants.UPDATE_SUCCESS);
}
@Operation(summary = "用户密码更新接口")
@PutMapping("/updatePassword")
public AjaxResult updatePassword(@RequestBody @Valid UserUpdatePwdParam param) {
public CommonResult<Void> updatePassword(@RequestBody @Valid UserUpdatePwdParam param) {
userService.updatePassword(param.getUserId(), param.getIsSelf(), param.getOldPassword(), param.getNewPassword());
return AjaxResult.success(MessageConstants.UPDATE_SUCCESS);
return CommonResult.success(MessageConstants.UPDATE_SUCCESS);
}
}

View File

@@ -17,7 +17,7 @@
<packaging>pom</packaging>
<properties>
<revision>0.6.1</revision>
<revision>0.7.0</revision>
<java.version>17</java.version>
<maven.compiler.release>17</maven.compiler.release>
<maven.compiler.source>${java.version}</maven.compiler.source>
@@ -35,7 +35,7 @@
<oshi.version>6.4.4</oshi.version>
<okhttps.version>3.5.3</okhttps.version>
<caffeine.version>3.1.7</caffeine.version>
<aliyun-sdk-oss.version>3.16.0</aliyun-sdk-oss.version>
<aliyun-sdk-oss.version>3.17.1</aliyun-sdk-oss.version>
<jaxb-api.version>2.3.1</jaxb-api.version>
<activation.version>1.1.1</activation.version>
<jaxb-runtime.version>2.3.3</jaxb-runtime.version>