From 688d08d9041202eade24beb2c8977786949902ee Mon Sep 17 00:00:00 2001 From: callmeyan Date: Thu, 26 May 2022 15:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E4=BA=AB=E5=9F=BA=E7=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../longicorn/driver/config/BizException.java | 3 + .../config/ResponseExceptionConfig.java | 29 ++ .../driver/controller/ShareController.java | 21 +- .../xyz/longicorn/driver/dto/ShareDto.java | 8 +- .../driver/service/ShareService.java | 4 +- web/public/logo.svg | 4 +- web/src/components/AppLogo.vue | 45 ++++ web/src/pages/Login.vue | 9 +- web/src/pages/Main.vue | 11 +- web/src/pages/Share.vue | 247 ++++++++++++++++-- web/src/service/api.js | 9 +- web/src/service/strings.js | 4 +- web/src/service/type.d.ts | 9 + 13 files changed, 357 insertions(+), 46 deletions(-) create mode 100644 driver/src/main/java/xyz/longicorn/driver/config/ResponseExceptionConfig.java create mode 100644 web/src/components/AppLogo.vue diff --git a/driver/src/main/java/xyz/longicorn/driver/config/BizException.java b/driver/src/main/java/xyz/longicorn/driver/config/BizException.java index 3e45bee..ff8a5e9 100644 --- a/driver/src/main/java/xyz/longicorn/driver/config/BizException.java +++ b/driver/src/main/java/xyz/longicorn/driver/config/BizException.java @@ -14,4 +14,7 @@ public class BizException extends RuntimeException { public static BizException create(String message) { return new BizException(-1, message); } + public static BizException create(int code,String message) { + return new BizException(code, message); + } } diff --git a/driver/src/main/java/xyz/longicorn/driver/config/ResponseExceptionConfig.java b/driver/src/main/java/xyz/longicorn/driver/config/ResponseExceptionConfig.java new file mode 100644 index 0000000..c0aa846 --- /dev/null +++ b/driver/src/main/java/xyz/longicorn/driver/config/ResponseExceptionConfig.java @@ -0,0 +1,29 @@ +package xyz.longicorn.driver.config; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import xyz.longicorn.driver.dto.ApiResult; + +import javax.servlet.http.HttpServletRequest; + +@RestControllerAdvice +public class ResponseExceptionConfig { + + @ExceptionHandler(value = BizException.class) // 要捕获的异常类型 + @ResponseBody + @ResponseStatus(HttpStatus.OK) + public ApiResult bizExceptionHandler(HttpServletRequest req, BizException e) { + return ApiResult.error(e.getCode(), e.getMessage()); + } + + // + @ExceptionHandler(value = Exception.class) // 要捕获的异常类型 + @ResponseBody + @ResponseStatus(HttpStatus.OK) + public ApiResult exceptionHandler(HttpServletRequest req, Exception e) { + return ApiResult.error(-1, "App Internal Error:" + e.getMessage()); + } +} diff --git a/driver/src/main/java/xyz/longicorn/driver/controller/ShareController.java b/driver/src/main/java/xyz/longicorn/driver/controller/ShareController.java index f16eca6..38c4b40 100644 --- a/driver/src/main/java/xyz/longicorn/driver/controller/ShareController.java +++ b/driver/src/main/java/xyz/longicorn/driver/controller/ShareController.java @@ -7,8 +7,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import xyz.longicorn.driver.dto.ApiResult; +import xyz.longicorn.driver.dto.ShareDto; import xyz.longicorn.driver.pojo.ShareInfo; import xyz.longicorn.driver.service.ShareService; +import xyz.longicorn.driver.service.UserService; import javax.annotation.Resource; @@ -17,6 +19,8 @@ import javax.annotation.Resource; public class ShareController { @Resource private ShareService shareService; + @Resource + private UserService userService; /** * 创建分享 @@ -41,12 +45,21 @@ public class ShareController { @RequestMapping("/info") public ApiResult info(String id) { - return ApiResult.success(shareService.getById(id)); + final ShareInfo shareInfo = shareService.getById(id); + if (shareInfo == null) { + return ApiResult.error(1, "分享码不正确或分享已过期"); + } + ShareDto share = new ShareDto(); + share.setShare(shareInfo); + share.setUser( + userService.getById( + shareInfo.getUid() + )); + return ApiResult.success(share); } @RequestMapping("/list") - public ApiResult list(@RequestParam(required = true) String id, String parent,String password) { - - return ApiResult.success(shareService.listFiles(id, parent,password)); + public ApiResult list(@RequestParam(required = true) String id, String parent, String password) { + return ApiResult.success(shareService.listFiles(id, parent, password)); } } diff --git a/driver/src/main/java/xyz/longicorn/driver/dto/ShareDto.java b/driver/src/main/java/xyz/longicorn/driver/dto/ShareDto.java index 88362ea..a127a05 100644 --- a/driver/src/main/java/xyz/longicorn/driver/dto/ShareDto.java +++ b/driver/src/main/java/xyz/longicorn/driver/dto/ShareDto.java @@ -1,5 +1,11 @@ package xyz.longicorn.driver.dto; -public class ShareDto { +import lombok.Data; +import xyz.longicorn.driver.pojo.ShareInfo; +import xyz.longicorn.driver.pojo.UserInfo; +@Data +public class ShareDto { + private ShareInfo share; + private UserInfo user; } diff --git a/driver/src/main/java/xyz/longicorn/driver/service/ShareService.java b/driver/src/main/java/xyz/longicorn/driver/service/ShareService.java index 2ff92d6..dde5afd 100644 --- a/driver/src/main/java/xyz/longicorn/driver/service/ShareService.java +++ b/driver/src/main/java/xyz/longicorn/driver/service/ShareService.java @@ -57,12 +57,12 @@ public class ShareService extends ServiceImpl { public List listFiles(String id, String parent, String password) { ShareInfo info = this.getById(id); if (null == info) { - throw BizException.create("分享信息有误"); + throw BizException.create(1001,"分享信息有误"); } // 需要先验证密码 if (info.getPassword() != null) { if (!info.getPassword().equalsIgnoreCase(password)) { - throw BizException.create("提取密码不正确"); + throw BizException.create(1002,"提取密码不正确"); } } // 是否是文件 diff --git a/web/public/logo.svg b/web/public/logo.svg index 6736ab0..07fb04f 100644 --- a/web/public/logo.svg +++ b/web/public/logo.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/web/src/components/AppLogo.vue b/web/src/components/AppLogo.vue new file mode 100644 index 0000000..6ba76d0 --- /dev/null +++ b/web/src/components/AppLogo.vue @@ -0,0 +1,45 @@ + + + + + \ No newline at end of file diff --git a/web/src/pages/Login.vue b/web/src/pages/Login.vue index 04b77a2..ec339d8 100644 --- a/web/src/pages/Login.vue +++ b/web/src/pages/Login.vue @@ -65,12 +65,7 @@
- \ No newline at end of file diff --git a/web/src/service/api.js b/web/src/service/api.js index 113d5c8..49e9b0b 100644 --- a/web/src/service/api.js +++ b/web/src/service/api.js @@ -188,11 +188,16 @@ export default { create(info) { return request('/api/share/create', 'POST', info) }, + /** + * + * @param {string} id + * @returns {Promise} + */ info(id){ return request('/api/share/info', 'GET', {id}) }, - list(id,parent='/'){ - return request('/api/share/list', 'GET', {id,parent}) + list(id,parent='/',password){ + return request('/api/share/list', 'GET', {id,parent,password}) } }, code() { diff --git a/web/src/service/strings.js b/web/src/service/strings.js index fd4ecba..cc7712f 100644 --- a/web/src/service/strings.js +++ b/web/src/service/strings.js @@ -13,8 +13,8 @@ export function formatDate(time, format = 'MM-DD') { return dayjs(time).format(format); } -export function formatSize(a, b = 2) { - if (0 == a) return "0 B"; +export function formatSize(a, b = 1) { + if (0 == a) return "-"; let c = 1024, d = b || 2, e = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"], f = Math.floor(Math.log(a) / Math.log(c)); return parseFloat((a / Math.pow(c, f)).toFixed(d)) + " " + e[f]; diff --git a/web/src/service/type.d.ts b/web/src/service/type.d.ts index 455be0e..2d37e92 100644 --- a/web/src/service/type.d.ts +++ b/web/src/service/type.d.ts @@ -3,6 +3,7 @@ interface ApiResult { message: string data: T } + declare type FileItem = { createTime: string, id: number, @@ -55,6 +56,14 @@ declare type UserInfo = { status: number updateTime: string } +/** + * 分享数据 + */ +declare type ShareData = { + share: ShareInfo + user: UserInfo +} + declare type LoginUser = { account: string permissions: string[]