From bd3bc193d18718e0e8cb880cbadf0b9426732ef9 Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Sun, 20 Feb 2022 01:26:52 +0800 Subject: [PATCH] 自定义异常,获取文章详情 --- snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java | 47 +++++++++++++++ snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java | 4 + snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java | 6 ++ snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/BlogException.java | 42 ++++++++++++++ snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/ExpEnumConstant.java | 2 snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/enums/BlogExceptionEnum.java | 71 +++++++++++++++++++++++ snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml | 1 7 files changed, 172 insertions(+), 1 deletions(-) diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/ExpEnumConstant.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/ExpEnumConstant.java index 5c1d837..4d3038d 100644 --- a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/ExpEnumConstant.java +++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/ExpEnumConstant.java @@ -86,4 +86,6 @@ */ int WRAPPER_EXCEPTION_ENUM = 1800; + int BLOG_EXCEPTION_ENUM = 1900; + } diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java index 6fbc65d..4a7f851 100644 --- a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java +++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/consts/MyConstant.java @@ -3,4 +3,10 @@ public interface MyConstant { Integer Yes = 1; Integer No = 1; + + interface AuthStatus { + int publicCode = 1; + int privateCode = 2; + int authCode = 3; + } } diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/BlogException.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/BlogException.java new file mode 100644 index 0000000..bc1c43d --- /dev/null +++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/BlogException.java @@ -0,0 +1,42 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.core.exception; + +import lombok.Getter; +import vip.xiaonuo.core.exception.enums.BlogExceptionEnum; + +@Getter +public class BlogException extends ServiceException { + + private static final int BLOG_EXP_CODE = 15000; + + public BlogException(String msg) { + super(BLOG_EXP_CODE,msg); + } + + public BlogException(BlogExceptionEnum blogExceptionEnum) { + super(blogExceptionEnum); + } +} diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/enums/BlogExceptionEnum.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/enums/BlogExceptionEnum.java new file mode 100644 index 0000000..90f6254 --- /dev/null +++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/exception/enums/BlogExceptionEnum.java @@ -0,0 +1,71 @@ +/* +Copyright [2020] [https://www.xiaonuo.vip] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Snowy源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy +6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.core.exception.enums; + +import vip.xiaonuo.core.annotion.ExpEnumType; +import vip.xiaonuo.core.consts.ExpEnumConstant; +import vip.xiaonuo.core.exception.enums.abs.AbstractBaseExceptionEnum; +import vip.xiaonuo.core.factory.ExpEnumCodeFactory; + +/** + * 认证相关的异常的枚举 + * <p> + * 认证和鉴权的区别: + * <p> + * 认证可以证明你能登录系统,认证的过程是校验token的过程 + * 鉴权可以证明你有系统的哪些权限,鉴权的过程是校验角色是否包含某些接口的权限 + * + * @author yubaoshan + * @date 2019/7/18 22:22 + */ +@ExpEnumType(module = ExpEnumConstant.SNOWY_CORE_MODULE_EXP_CODE, kind = ExpEnumConstant.BLOG_EXCEPTION_ENUM) +public enum BlogExceptionEnum implements AbstractBaseExceptionEnum { + + article_auth_error(1, "日志需要授权"), + article_auth_pass_error(2, "日志授权码错误"), + article_auth_private_error(3, "那属于他的自留地,以后再来探索吧.."), + article_not_found(4, "这是黑洞..什么也没有"), + ; + + private final Integer code; + + private final String message; + + BlogExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + @Override + public Integer getCode() { + return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code); + } + + @Override + public String getMessage() { + return message; + } + +} diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java index d6ec646..fb3b319 100644 --- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/controller/BlogArticleOutsideController.java @@ -24,17 +24,23 @@ */ package vip.xiaonuo.modular.blogarticle.controller; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import vip.xiaonuo.core.annotion.BusinessLog; +import vip.xiaonuo.core.consts.MyConstant; import vip.xiaonuo.core.context.constant.ConstantContextHolder; import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum; +import vip.xiaonuo.core.exception.BlogException; +import vip.xiaonuo.core.exception.enums.BlogExceptionEnum; import vip.xiaonuo.core.pojo.response.ResponseData; import vip.xiaonuo.core.pojo.response.SuccessResponseData; +import vip.xiaonuo.modular.blogarticle.entity.BlogArticle; import vip.xiaonuo.modular.blogarticle.param.BlogArticleQueryDto; import vip.xiaonuo.modular.blogarticle.param.BlogArticleVo; import vip.xiaonuo.modular.blogarticle.service.BlogArticleService; @@ -90,5 +96,46 @@ return new SuccessResponseData(queryPage); } + @GetMapping("/blogArticle/queryBlogArticleDetail") + @BusinessLog(title = "外部blog系统_blog文章详情_查询", opType = LogAnnotionOpTypeEnum.QUERY) + public ResponseData queryBlogArticleDetail(BlogArticleQueryDto queryDto) { + BlogArticle find = blogArticleService.lambdaQuery() + .eq(BlogArticle::getIsEnable, MyConstant.Yes) + .eq(BlogArticle::getEditorStatus, MyConstant.Yes) + .eq(BlogArticle::getId, queryDto.getId()) + .one(); + + if (find == null) { + throw new BlogException(BlogExceptionEnum.article_not_found); + } + + //加密文章 + if (find.getAuthStatus().equals(MyConstant.AuthStatus.authCode)) { + //授权码缺失 + if (StrUtil.isEmpty(queryDto.getAuthWord())) { + throw new BlogException(BlogExceptionEnum.article_auth_error); + } + //授权码比对 + if (!SecureUtil.md5(find.getAuthPassword()).equals(queryDto.getAuthWord())) { + throw new BlogException(BlogExceptionEnum.article_auth_pass_error); + } + }else if(find.getAuthStatus().equals(MyConstant.AuthStatus.privateCode)){ + throw new BlogException(BlogExceptionEnum.article_auth_private_error); + } + + BlogArticleVo vo = new BlogArticleVo(); + + BeanUtil.copyProperties(find, vo); + + if (queryDto.getId() % 2 == 0) { + vo.setArticleFileURL("http://t.inleft.com/share/book/blog/es_index.md"); + } else { + vo.setArticleFileURL("http://t.inleft.com/share/book/blog/es-search.md"); + } + + + return new SuccessResponseData(vo); + } + } diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml index 12f48e0..54571b0 100644 --- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/mapper/mapping/BlogArticleMapper.xml @@ -29,7 +29,6 @@ <sql id="queryListCondition"> <trim prefix="WHERE" prefixOverrides="AND | OR"> a.is_enable=1 - and a.auth_status=1 and a.editor_status=1 </trim> </sql> diff --git a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java index bdcc717..93d89c1 100644 --- a/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java +++ b/snowy-main/src/main/java/vip/xiaonuo/modular/blogarticle/param/BlogArticleQueryDto.java @@ -16,5 +16,9 @@ @ApiModelProperty(value = "pageNo", required = true, example = "1") private Integer pageNo = 1; + private String authWord; + + private Long id; + } -- Gitblit v1.9.1