From 99e8ff82cc84f4ee231a8b4ec70a7ee2253f0bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Mon, 3 Oct 2022 16:00:52 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E8=BF=94=E5=9B=9E=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=9C=B0=E5=9D=80=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/GlobalErrorAttributesHandler.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorAttributesHandler.java b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorAttributesHandler.java index 79541989..d1b1117b 100644 --- a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorAttributesHandler.java +++ b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorAttributesHandler.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.context.request.WebRequest; import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.pojo.CommonResult; +import vip.xiaonuo.common.util.CommonServletUtil; import java.util.Map; @@ -43,9 +44,16 @@ public class GlobalErrorAttributesHandler extends DefaultErrorAttributes { if (ObjectUtil.isNotEmpty(status)) { // 如果其为404,则处理 if (HttpStatus.HTTP_NOT_FOUND == Convert.toInt(status)) { - return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_NOT_FOUND, "路径不存在", null)); + Object path = defaultErrorAttributes.get("path"); + if(ObjectUtil.isNotEmpty(path)) { + return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_NOT_FOUND, "路径不存在,请求地址:" + + Convert.toStr(path), null)); + } else { + return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_NOT_FOUND, "路径不存在", null)); + } } else { - return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常", null)); + return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常,请求地址:" + + CommonServletUtil.getRequest().getRequestURL(), null)); } } @@ -56,11 +64,12 @@ public class GlobalErrorAttributesHandler extends DefaultErrorAttributes { CommonException commonException = (CommonException) throwable; return BeanUtil.beanToMap(CommonResult.error(commonException.getMsg())); } else { - return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常", null)); + return BeanUtil.beanToMap(CommonResult.get(HttpStatus.HTTP_INTERNAL_ERROR, "服务器异常,请求地址:" + + CommonServletUtil.getRequest().getRequestURL(), null)); } } else { // throwable为空,则直接返回默认异常 - return BeanUtil.beanToMap(CommonResult.error("服务器异常")); + return BeanUtil.beanToMap(CommonResult.error("服务器异常,请求地址:" + CommonServletUtil.getRequest().getRequestURL())); } } } From 62d6c381131ccd884938270d3831b38ace939bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Tue, 4 Oct 2022 19:14:51 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E6=96=B0=E5=A2=9EMyBatisSystemException=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=8B=A6=E6=88=AA=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/modular/user/entity/BizUser.java | 8 ++++---- .../modular/user/entity/ClientUser.java | 1 + .../sys/modular/user/entity/SysUser.java | 8 ++++---- .../core/handler/GlobalExceptionUtil.java | 19 ++++++++++++++++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java index e375c9c1..718937b4 100644 --- a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java @@ -75,7 +75,7 @@ public class BizUser extends CommonEntity implements TransPojo { /** 性别 */ @ApiModelProperty(value = "性别", position = 8) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type= TransType.DICTIONARY, key = "GENDER") + @Trans(type = TransType.DICTIONARY, key = "GENDER") private String gender; /** 年龄 */ @@ -196,13 +196,13 @@ public class BizUser extends CommonEntity implements TransPojo { /** 机构id */ @ApiModelProperty(value = "机构id", position = 32) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = BizOrg.class, fields = "name", alias = "org", ref = "orgName") + @Trans(type =TransType.SIMPLE, target = BizOrg.class, fields = "name", alias = "org", ref = "orgName") private String orgId; /** 岗位id */ @ApiModelProperty(value = "岗位id", position = 33) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = BizPosition.class, fields = "name", alias = "position", ref = "positionName") + @Trans(type =TransType.SIMPLE, target = BizPosition.class, fields = "name", alias = "position", ref = "positionName") private String positionId; /** 职级 */ @@ -213,7 +213,7 @@ public class BizUser extends CommonEntity implements TransPojo { /** 主管id */ @ApiModelProperty(value = "主管id", position = 35) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = BizUser.class, fields = "name", alias = "director", ref = "directorName") + @Trans(type =TransType.SIMPLE, target = BizUser.class, fields = "name", alias = "director", ref = "directorName") private String directorId; /** 兼任信息 */ diff --git a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java index 05ba01c7..715ebcb8 100644 --- a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java +++ b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java @@ -68,6 +68,7 @@ public class ClientUser extends CommonEntity { /** 性别 */ @ApiModelProperty(value = "性别", position = 8) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) + @Trans(type = TransType.DICTIONARY, key = "GENDER") private String gender; /** 年龄 */ diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java index 730eaf74..7dccc98b 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java @@ -75,7 +75,7 @@ public class SysUser extends CommonEntity implements TransPojo { /** 性别 */ @ApiModelProperty(value = "性别", position = 8) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type= TransType.DICTIONARY,key = "GENDER") + @Trans(type = TransType.DICTIONARY,key = "GENDER") private String gender; /** 年龄 */ @@ -196,13 +196,13 @@ public class SysUser extends CommonEntity implements TransPojo { /** 组织id */ @ApiModelProperty(value = "组织id", position = 32) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = SysOrg.class, fields = "name", alias = "org", ref = "orgName") + @Trans(type = TransType.SIMPLE, target = SysOrg.class, fields = "name", alias = "org", ref = "orgName") private String orgId; /** 职位id */ @ApiModelProperty(value = "职位id", position = 33) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = SysPosition.class, fields = "name", alias = "position", ref = "positionName") + @Trans(type = TransType.SIMPLE, target = SysPosition.class, fields = "name", alias = "position", ref = "positionName") private String positionId; /** 职级 */ @@ -213,7 +213,7 @@ public class SysUser extends CommonEntity implements TransPojo { /** 主管id */ @ApiModelProperty(value = "主管id", position = 35) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type=TransType.SIMPLE, target = SysUser.class, fields = "name", alias = "director", ref = "directorName") + @Trans(type = TransType.SIMPLE, target = SysUser.class, fields = "name", alias = "director", ref = "directorName") private String directorId; /** 兼任信息 */ diff --git a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalExceptionUtil.java b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalExceptionUtil.java index 88d066cc..00daf539 100644 --- a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalExceptionUtil.java +++ b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalExceptionUtil.java @@ -17,6 +17,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.exceptions.PersistenceException; +import org.mybatis.spring.MyBatisSystemException; import org.springframework.http.HttpMethod; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.validation.BindException; @@ -113,7 +115,22 @@ public class GlobalExceptionUtil { // 如果是SaToken相关异常,则由AuthExceptionUtil处理 return AuthExceptionUtil.getCommonResult(e); - } else if (e instanceof CommonException) { + } else if(e instanceof MyBatisSystemException) { + + // 如果是MyBatisSystemException + Throwable cause = e.getCause(); + if (cause instanceof PersistenceException) { + Throwable secondCause = cause.getCause(); + if (secondCause instanceof CommonException) { + CommonException commonException = (CommonException) secondCause; + commonResult = CommonResult.get(commonException.getCode(), commonException.getMsg(), null); + } else { + commonResult = CommonResult.error("数据操作异常"); + } + }else { + commonResult = CommonResult.error("数据操作异常"); + } + } else if (e instanceof CommonException) { // 通用业务异常,直接返回给前端 CommonException commonException = (CommonException) e; From 65b49420c351d92955528bb146c02ef64ef29974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Tue, 4 Oct 2022 22:51:30 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91C?= =?UTF-8?q?=E7=AB=AF=E7=94=A8=E6=88=B7=E7=9A=84=E5=A2=9E=E5=8A=A0=E5=92=8C?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=BD=BF=E7=94=A8easy=20trans=E5=8A=A0?= =?UTF-8?q?=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modular/user/entity/ClientUser.java | 5 +- .../service/impl/ClientUserServiceImpl.java | 80 +++---------------- 2 files changed, 16 insertions(+), 69 deletions(-) diff --git a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java index 715ebcb8..37f91e95 100644 --- a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java +++ b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/entity/ClientUser.java @@ -15,6 +15,9 @@ package vip.xiaonuo.client.modular.user.entity; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fhs.core.trans.anno.Trans; +import com.fhs.core.trans.constant.TransType; +import com.fhs.core.trans.vo.TransPojo; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -32,7 +35,7 @@ import java.util.Date; @Getter @Setter @TableName("CLIENT_USER") -public class ClientUser extends CommonEntity { +public class ClientUser extends CommonEntity implements TransPojo { /** id */ @ApiModelProperty(value = "id", position = 1) diff --git a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java index cfd58a74..3813c217 100644 --- a/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-client/src/main/java/vip/xiaonuo/client/modular/user/service/impl/ClientUserServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fhs.trans.service.impl.TransService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import vip.xiaonuo.client.modular.relation.service.ClientRelationService; @@ -57,6 +58,9 @@ public class ClientUserServiceImpl extends ServiceImpl().eq(ClientUser::getAccount, account)); if(ObjectUtil.isNotEmpty(clientUser)) { - ClientLoginUser clientLoginUser = BeanUtil.copyProperties(clientUser, ClientLoginUser.class); - if(ObjectUtil.isNotEmpty(clientLoginUser.getPhone())) { - clientLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getPhone())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getIdCardNumber())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getIdCardNumber())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getEmergencyPhone())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getEmergencyPhone())); - } - return clientLoginUser; + transService.transOne(clientUser); + return BeanUtil.copyProperties(clientUser, ClientLoginUser.class); } return null; } @@ -102,17 +88,8 @@ public class ClientUserServiceImpl extends ServiceImpl().eq(ClientUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone))); if(ObjectUtil.isNotEmpty(clientUser)) { - ClientLoginUser clientLoginUser = BeanUtil.copyProperties(clientUser, ClientLoginUser.class); - if(ObjectUtil.isNotEmpty(clientLoginUser.getPhone())) { - clientLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getPhone())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getIdCardNumber())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getIdCardNumber())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getEmergencyPhone())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getEmergencyPhone())); - } - return clientLoginUser; + transService.transOne(clientUser); + return BeanUtil.copyProperties(clientUser, ClientLoginUser.class); } return null; } @@ -121,17 +98,8 @@ public class ClientUserServiceImpl extends ServiceImpl().eq(ClientUser::getEmail, email)); if(ObjectUtil.isNotEmpty(clientUser)) { - ClientLoginUser clientLoginUser = BeanUtil.copyProperties(clientUser, ClientLoginUser.class); - if(ObjectUtil.isNotEmpty(clientLoginUser.getPhone())) { - clientLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getPhone())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getIdCardNumber())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getIdCardNumber())); - } - if(ObjectUtil.isNotEmpty(clientLoginUser.getEmergencyPhone())) { - clientLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(clientLoginUser.getEmergencyPhone())); - } - return clientLoginUser; + transService.transOne(clientUser); + return BeanUtil.copyProperties(clientUser, ClientLoginUser.class); } return null; } @@ -157,18 +125,6 @@ public class ClientUserServiceImpl extends ServiceImpl Date: Tue, 4 Oct 2022 23:00:06 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/vip/xiaonuo/biz/modular/user/entity/BizUser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java index 718937b4..d0d353cc 100644 --- a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java @@ -196,13 +196,13 @@ public class BizUser extends CommonEntity implements TransPojo { /** 机构id */ @ApiModelProperty(value = "机构id", position = 32) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type =TransType.SIMPLE, target = BizOrg.class, fields = "name", alias = "org", ref = "orgName") + @Trans(type = TransType.SIMPLE, target = BizOrg.class, fields = "name", alias = "org", ref = "orgName") private String orgId; /** 岗位id */ @ApiModelProperty(value = "岗位id", position = 33) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type =TransType.SIMPLE, target = BizPosition.class, fields = "name", alias = "position", ref = "positionName") + @Trans(type = TransType.SIMPLE, target = BizPosition.class, fields = "name", alias = "position", ref = "positionName") private String positionId; /** 职级 */ @@ -213,7 +213,7 @@ public class BizUser extends CommonEntity implements TransPojo { /** 主管id */ @ApiModelProperty(value = "主管id", position = 35) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type =TransType.SIMPLE, target = BizUser.class, fields = "name", alias = "director", ref = "directorName") + @Trans(type = TransType.SIMPLE, target = BizUser.class, fields = "name", alias = "director", ref = "directorName") private String directorId; /** 兼任信息 */ From 6ed1b6004b6fb5d4ee7650241c9bbcca82189c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com> Date: Thu, 6 Oct 2022 18:32:15 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0readme=E6=96=87=E4=BB=B6=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=EF=BC=8C=E6=96=87=E6=A1=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d526bde6..08b20608 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## 框架介绍 -Snowy(SnowyAdmin)是国内首个国产化前后端分离快速开发平台,集成国密加解密插件, +Snowy(SnowyAdmin)是国内首个国密前后端分离快速开发平台,集成国密加解密插件, 软件层面完全符合等保测评要求,同时实现国产化机型、中间件、数据库适配,是您的不二之选! 技术框架与密码结合,让更多的人认识密码,使用密码;更是让前后分离“密”不可分。 @@ -16,8 +16,6 @@ Snowy(SnowyAdmin)是国内首个国产化前后端分离快速开发平台 Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯洁的“,寓意框架追求简洁至上,大道至简。 -欢迎加入QQ技术群互相解决问题:732230670 -

@@ -49,9 +47,11 @@ Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯 ## 快速链接 -下载地址:https://gitee.com/xiaonuobase/snowy +下载地址:[https://gitee.com/xiaonuobase/snowy](https://gitee.com/xiaonuobase/snowy) -演示地址:https://snowy.xiaonuo.vip +演示地址:[https://snowy.xiaonuo.vip](https://snowy.xiaonuo.vip) + +文档地址:[https://xiaonuo.vip/doc](https://xiaonuo.vip/doc) ## 支撑组件及启动 @@ -62,7 +62,7 @@ Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯 |--- | ----- | ----- | | node.js | 最新版 | JavaScript运行环境 | -#### 启动前端 +### 启动前端 ``` npm install @@ -74,15 +74,49 @@ npm run dev | 插件 | 版本 | 用途 | | --- | ----- | ----- | | jdk | 11 / 1.8 |java环境 | +| lombok | idea内 |代码简化插件 | | maven | 最新版 |包管理工具 | | redis | 最新版 | 缓存库 | | mysql | 8.0 / 5.7 | 数据库 | -#### 启动后端 +### 启动后端 开发工具内配置好maven并在代码中配置数据库即可启动 ## 代码结构 +Snowy2.0框架对代码以插件化的模式进行分包,使得包层级结构更加清晰合理,同时降低了耦合度,关于插件模块化开发的规范请查阅文档【SNOWY开源文档——前端手册or后端手册——开发规范】板块。 + +``` +snowy + |-snowy-admin-web == 前端 + |-public == 基础静态文件 + |-src == 前端源代码 + |-api == API接口转发 + |-assets == 静态文件 + |-components == VUE组件 + |-config == 基础配置 + |-layout == 基础布局 + |-locales == 多语言配置 + |-router == 基础路由配置 + |-store == VUEX缓存配置 + |-style == 样式风格配置 + |-utils == 工具类 + |-views == 所有视图界面 + |-snowy-common == 基础通用模块 + |-snowy-plugin == 插件包 + |-snowy-plugin-auth == 登录鉴权插件 + |-snowy-plugin-biz == 业务功能插件 + |-snowy-plugin-client == C端功能插件 + |-snowy-plugin-dev == 开发工具插件 + |-snowy-plugin-sys == 系统功能插件 + |-snowy-plugin-api == 插件api包 + |-snowy-plugin-auth-api == 登录鉴权插件api接口 + |-snowy-plugin-biz-api == 业务功能插件api接口 + |-snowy-plugin-client-api == C端功能插件api接口 + |-snowy-plugin-dev-api == 开发工具插件api接口 + |-snowy-plugin-sys-api == 系统功能插件api接口 + |-snowy-web-app == 主启动模块 +``` ## 效果图:fire: @@ -116,9 +150,12 @@ npm run dev | 用户密码 | SM3完整性保护存储,登录时做完整性校验 | | 用户手机号 | SM4(cbc模式)加解密使用字段脱敏 | -## 官方微信群 +## 官方技术群 -因群达到200人以上,需加微信拉群 + +QQ技术群:732230670 + +微信技术群:因群达到200人以上,需加微信拉群 @@ -127,8 +164,6 @@ npm run dev
-## 原理图解 - ## 团队成员 | 成员 | 技术 | 昵称 | From 0b58e4ee1f004c514ce7fd51a850efbe2912e1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Thu, 6 Oct 2022 23:10:56 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=AF=E5=8A=A8=E5=90=8E=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=97=B6=E5=BC=82=E5=B8=B8=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=AD=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaonuo/common/util/CommonFilterExceptionUtil.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java b/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java index 9bd3b00c..deaca2c9 100644 --- a/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java +++ b/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java @@ -12,6 +12,9 @@ */ package vip.xiaonuo.common.util; +import cn.hutool.core.util.ObjectUtil; +import vip.xiaonuo.common.exception.CommonException; + import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; @@ -32,7 +35,11 @@ public class CommonFilterExceptionUtil { **/ public static void handleFilterException(ServletRequest request, ServletResponse response, Exception e) { try { - request.setAttribute("model", e); + if(ObjectUtil.isNotEmpty(e.getMessage())) { + request.setAttribute("model", new CommonException(e.getMessage())); + } else { + request.setAttribute("model", e); + } request.getRequestDispatcher("/errorView").forward(request, response); } catch (Exception ignored) { } From 2573c7a1ed67aea84ff223e67230ba73c99dd468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Thu, 6 Oct 2022 23:19:23 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaonuo/common/util/CommonFilterExceptionUtil.java | 9 +-------- .../xiaonuo/core/handler/GlobalErrorViewController.java | 2 ++ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java b/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java index deaca2c9..9bd3b00c 100644 --- a/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java +++ b/snowy-common/src/main/java/vip/xiaonuo/common/util/CommonFilterExceptionUtil.java @@ -12,9 +12,6 @@ */ package vip.xiaonuo.common.util; -import cn.hutool.core.util.ObjectUtil; -import vip.xiaonuo.common.exception.CommonException; - import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; @@ -35,11 +32,7 @@ public class CommonFilterExceptionUtil { **/ public static void handleFilterException(ServletRequest request, ServletResponse response, Exception e) { try { - if(ObjectUtil.isNotEmpty(e.getMessage())) { - request.setAttribute("model", new CommonException(e.getMessage())); - } else { - request.setAttribute("model", e); - } + request.setAttribute("model", e); request.getRequestDispatcher("/errorView").forward(request, response); } catch (Exception ignored) { } diff --git a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorViewController.java b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorViewController.java index a6a3b5c2..1cfd2517 100644 --- a/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorViewController.java +++ b/snowy-web-app/src/main/java/vip/xiaonuo/core/handler/GlobalErrorViewController.java @@ -53,6 +53,8 @@ public class GlobalErrorViewController { } else { commonResult = CommonResult.error(); } + Exception exception = (Exception) model; + exception.printStackTrace(); } log.error(">>> {}", commonResult.getMsg()); return commonResult; From 9c0a63b9fd68c5e8dab509f07be2dc0277d736b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com> Date: Fri, 7 Oct 2022 00:34:26 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=A8=A1=E5=9D=97=E5=9D=9E=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E3=80=81=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E3=80=81=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0IP=E8=B7=9FIP=E5=9C=B0=E5=9D=80=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E3=80=81=E4=BF=AE=E5=A4=8D=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/XnUpload/index.vue | 33 ++-- snowy-admin-web/src/config/index.js | 2 +- .../src/layout/components/setting.vue | 2 +- snowy-admin-web/src/layout/index.vue | 8 +- snowy-admin-web/src/locales/index.js | 2 +- snowy-admin-web/src/store/modules/global.js | 2 +- snowy-admin-web/src/utils/print.js | 156 ------------------ snowy-admin-web/src/utils/smCrypto.js | 2 +- snowy-admin-web/src/utils/tool.js | 52 +----- .../src/views/dev/log/oplog/detail.vue | 2 + .../src/views/dev/log/oplog/index.vue | 8 + 11 files changed, 38 insertions(+), 231 deletions(-) delete mode 100644 snowy-admin-web/src/utils/print.js diff --git a/snowy-admin-web/src/components/XnUpload/index.vue b/snowy-admin-web/src/components/XnUpload/index.vue index 9fcfbef6..0cc7e505 100644 --- a/snowy-admin-web/src/components/XnUpload/index.vue +++ b/snowy-admin-web/src/components/XnUpload/index.vue @@ -36,6 +36,7 @@ import tool from '@/utils/tool' import sysConfig from '@/config/index' const fileList = ref([]) + const emit = defineEmits({ uploadDone: null }) const headers = ref({ token: tool.data.get('TOKEN') }) @@ -45,12 +46,6 @@ default: '/dev/file/uploadDynamicReturnUrl', required: false }, - // 允许多个 - allowMultiple: { - type: Boolean, - default: false, - required: false - }, // 上传方式 defaults || drag uploadMode: { type: String, @@ -66,22 +61,16 @@ }) const action = sysConfig.API_URL + props.action - const handleChange = () => {} - - // 获取上传的内容 - const getUploadData = () => { - return fileList.value.map((item) => { - return { - uid: item.uid, - name: item.name, - status: item.status, - url: item.response.data + const handleChange = () => { + let result = [] + for (let a = 0; a < props.uploadMumber; a++) { + const file = fileList.value[a] + if (file.status === 'done' && file.response && file.response.code === 200) { + result.push(file.response.data) } - }) + } + if (result.length > 0) { + emit('uploadDone', result) + } } - defineExpose({ - getUploadData - }) - - diff --git a/snowy-admin-web/src/config/index.js b/snowy-admin-web/src/config/index.js index cefe5647..94638817 100644 --- a/snowy-admin-web/src/config/index.js +++ b/snowy-admin-web/src/config/index.js @@ -36,7 +36,7 @@ const DEFAULT_CONFIG = { // 菜单是否折叠 SNOWY_MENU_COLLAPSE: false, - // 目录坞 + // 模块坞 SNOWY_MODULE_UNFOLD_OPEN: true, // 是否开启多标签 diff --git a/snowy-admin-web/src/layout/components/setting.vue b/snowy-admin-web/src/layout/components/setting.vue index b39efbc0..66b60eb7 100644 --- a/snowy-admin-web/src/layout/components/setting.vue +++ b/snowy-admin-web/src/layout/components/setting.vue @@ -55,7 +55,7 @@ - + diff --git a/snowy-admin-web/src/layout/index.vue b/snowy-admin-web/src/layout/index.vue index 1546f5bf..a9a8de15 100644 --- a/snowy-admin-web/src/layout/index.vue +++ b/snowy-admin-web/src/layout/index.vue @@ -484,9 +484,11 @@ : header.classList.remove('snowy-header-primary-color') // 判断是否开启了通栏 const headerLogin = document.getElementById('snowyHeaderLogo') - this.topHanderThemeColorSpread - ? headerLogin.classList.add('snowy-header-logo-primary-color') - : headerLogin.classList.remove('snowy-header-logo-primary-color') + try{ + this.topHanderThemeColorSpread + ? headerLogin.classList.add('snowy-header-logo-primary-color') + : headerLogin.classList.remove('snowy-header-logo-primary-color') + }catch (e) { } // 如果是双排菜单,吧第二排的也给渲染了 if (this.layout === 'doublerow') { const snowyDoublerowSideTop = document.getElementById('snowyDoublerowSideTop') diff --git a/snowy-admin-web/src/locales/index.js b/snowy-admin-web/src/locales/index.js index 5b327239..ab3f23cc 100644 --- a/snowy-admin-web/src/locales/index.js +++ b/snowy-admin-web/src/locales/index.js @@ -14,7 +14,7 @@ import enGB from 'ant-design-vue/es/locale/en_GB' import zh_cn from './lang/zh-cn.js' import en from './lang/en.js' import tool from '@/utils/tool' -import sysConfig from '@/config/index.js' +import sysConfig from '@/config/index' export const messages = { 'zh-cn': { diff --git a/snowy-admin-web/src/store/modules/global.js b/snowy-admin-web/src/store/modules/global.js index 0f364237..f011020a 100644 --- a/snowy-admin-web/src/store/modules/global.js +++ b/snowy-admin-web/src/store/modules/global.js @@ -44,7 +44,7 @@ export default { // 顶栏主题色通栏 topHanderThemeColorSpread: getCacheConfig('SNOWY_TOP_HANDER_THEME_COLOR_SPREAD'), - // 目录坞 + // 模块坞 moduleUnfoldOpen: getCacheConfig('SNOWY_MODULE_UNFOLD_OPEN'), // 主题 theme: getCacheConfig('SNOWY_THEME'), diff --git a/snowy-admin-web/src/utils/print.js b/snowy-admin-web/src/utils/print.js deleted file mode 100644 index 984e804c..00000000 --- a/snowy-admin-web/src/utils/print.js +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Copyright [2022] [https://www.xiaonuo.vip] - * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: - * 1.请不要删除和修改根目录下的LICENSE文件。 - * 2.请不要删除和修改Snowy源码头部的版权声明。 - * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 - * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip - * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 - * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip - */ -/* eslint-disable */ -// 打印类属性、方法定义 -const Print = function(dom, options) { - if (!(this instanceof Print)) return new Print(dom, options) - - this.options = this.extend({ - noPrint: '.no-print', - }, options) - - if ((typeof dom) === 'string') { - try { - this.dom = document.querySelector(dom) - } - catch { - const createDom = document.createElement('div') - createDom.innerHTML = dom - this.dom = createDom - } - } - else { - this.isDOM(dom) - this.dom = this.isDOM(dom) ? dom : dom.$el - } - - this.init() -} -Print.prototype = { - init() { - const content = this.getStyle() + this.getHtml() - this.writeIframe(content) - }, - extend(obj, obj2) { - for (const k in obj2) { - obj[k] = obj2[k] - } - return obj - }, - - getStyle() { - let str = '' - const styles = document.querySelectorAll('style,link') - for (let i = 0; i < styles.length; i++) { - str += styles[i].outerHTML - } - str += `` - str += '' - return str - }, - - getHtml() { - const inputs = document.querySelectorAll('input') - const textareas = document.querySelectorAll('textarea') - const selects = document.querySelectorAll('select') - - for (let k = 0; k < inputs.length; k++) { - if (inputs[k].type == 'checkbox' || inputs[k].type == 'radio') { - if (inputs[k].checked == true) { - inputs[k].setAttribute('checked', 'checked') - } - else { - inputs[k].removeAttribute('checked') - } - } - else if (inputs[k].type == 'text') { - inputs[k].setAttribute('value', inputs[k].value) - } - else { - inputs[k].setAttribute('value', inputs[k].value) - } - } - - for (let k2 = 0; k2 < textareas.length; k2++) { - if (textareas[k2].type == 'textarea') { - textareas[k2].innerHTML = textareas[k2].value - } - } - - for (let k3 = 0; k3 < selects.length; k3++) { - if (selects[k3].type == 'select-one') { - const child = selects[k3].children - for (const i in child) { - if (child[i].tagName == 'OPTION') { - if (child[i].selected == true) { - child[i].setAttribute('selected', 'selected') - } - else { - child[i].removeAttribute('selected') - } - } - } - } - } - - return this.dom.outerHTML - }, - - writeIframe(content) { - let w; let doc; const iframe = document.createElement('iframe') - const f = document.body.appendChild(iframe) - iframe.id = 'myIframe' - // iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;"; - iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;') - w = f.contentWindow || f.contentDocument - doc = f.contentDocument || f.contentWindow.document - doc.open() - doc.write(content) - doc.close() - const _this = this - iframe.onload = function() { - _this.toPrint(w) - setTimeout(() => { - document.body.removeChild(iframe) - }, 100) - } - }, - - toPrint(frameWindow) { - try { - setTimeout(() => { - frameWindow.focus() - try { - if (!frameWindow.document.execCommand('print', false, null)) { - frameWindow.print() - } - } - catch (e) { - frameWindow.print() - } - frameWindow.close() - }, 10) - } - catch (err) { - console.log('err', err) - } - }, - isDOM: (typeof HTMLElement === 'object') - ? function(obj) { - return obj instanceof HTMLElement - } - : function(obj) { - return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string' - }, -} - -export default Print diff --git a/snowy-admin-web/src/utils/smCrypto.js b/snowy-admin-web/src/utils/smCrypto.js index c01b3caf..882f8d09 100644 --- a/snowy-admin-web/src/utils/smCrypto.js +++ b/snowy-admin-web/src/utils/smCrypto.js @@ -49,7 +49,7 @@ export default { doSm3Hash(msgString) { return sm3(msgString) }, - // SM4 CBC加密 + // SM4 加密 doSm4Encrypt(msgString) { return sm4.encrypt(msgString, key) }, diff --git a/snowy-admin-web/src/utils/tool.js b/snowy-admin-web/src/utils/tool.js index c1beec0f..4105e7d8 100644 --- a/snowy-admin-web/src/utils/tool.js +++ b/snowy-admin-web/src/utils/tool.js @@ -14,15 +14,9 @@ * @LastEditors: yubaoshan * @LastEditTime: 2022年4月19日10:58:41 */ - const tool = {} -/** - * localStorage - * - * @author yubaoshan - * @date 2022-05-18 22:59 - */ +// localStorage tool.data = { set(table, settings) { const _set = JSON.stringify(settings) @@ -46,12 +40,7 @@ tool.data = { } } -/** - * sessionStorage - * - * @author yubaoshan - * @date 2022-05-18 22:59 - */ +// sessionStorage tool.session = { set(table, settings) { const _set = JSON.stringify(settings) @@ -74,12 +63,7 @@ tool.session = { } } -/** - * 千分符 - * - * @author yubaoshan - * @date 2022-05-18 22:59 - */ +// 千分符 tool.groupSeparator = (num) => { num = `${num}` if (!num.includes('.')) num += '.' @@ -91,24 +75,12 @@ tool.groupSeparator = (num) => { .replace(/\.$/, '') } -/** - * 获取所有字典数组 - * - * @author yubaoshan - * @date 2022-04-08 01:11 - */ +// 获取所有字典数组 tool.dictDataAll = () => { return tool.data.get('DICT_TYPE_TREE_DATA') } -/** - * 字典翻译方法 - * 界面插槽使用方法 {{ $TOOL.dictType('sex', record.sex) }} - * - * @author yubaoshan - * @date 2022-04-08 01:11 - */ -// todo 每次都从localStorage获取并重新解析,会有性能问题,应该在内存中做一层缓存,后面需要优化掉 +// 字典翻译方法,界面插槽使用方法 {{ $TOOL.dictType('sex', record.sex) }} tool.dictTypeData = (dictValue, value) => { const dictTypeTree = tool.dictDataAll() if (!dictTypeTree) { @@ -123,12 +95,7 @@ tool.dictTypeData = (dictValue, value) => { return dict?.name || '无此字典' } -/** - * 获取某个code下字典的列表,多用于字典下拉框 - * - * @author yubaoshan - * @date 2022-04-08 01:11 - */ +// 获取某个code下字典的列表,多用于字典下拉框 tool.dictTypeList = (dictValue) => { const dictTypeTree = tool.dictDataAll() if (!dictTypeTree) { @@ -141,12 +108,7 @@ tool.dictTypeList = (dictValue) => { return [] } -/** - * 生成UUID - * - * @author yubaoshan - * @date 2022-05-18 22:59 - */ +// 生成UUID tool.snowyUuid = () => { let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { let r = (Math.random() * 16) | 0, diff --git a/snowy-admin-web/src/views/dev/log/oplog/detail.vue b/snowy-admin-web/src/views/dev/log/oplog/detail.vue index 9bc4c8f4..deb694e0 100644 --- a/snowy-admin-web/src/views/dev/log/oplog/detail.vue +++ b/snowy-admin-web/src/views/dev/log/oplog/detail.vue @@ -9,6 +9,8 @@ > {{ formData.name }} + {{ formData.opIp }} + {{ formData.opAddress }} {{ formData.reqUrl }} {{ formData.className }} {{ formData.methodName }} diff --git a/snowy-admin-web/src/views/dev/log/oplog/index.vue b/snowy-admin-web/src/views/dev/log/oplog/index.vue index f60c86ee..7dfb5256 100644 --- a/snowy-admin-web/src/views/dev/log/oplog/index.vue +++ b/snowy-admin-web/src/views/dev/log/oplog/index.vue @@ -87,6 +87,14 @@ title: '名称', dataIndex: 'name' }, + { + title: 'IP地址', + dataIndex: 'opIp' + }, + { + title: '地址', + dataIndex: 'opAddress' + }, { title: '类名称', dataIndex: 'className' From ea670e7d221eb33d27df56a366c72443acbf873a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Fri, 7 Oct 2022 00:45:13 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=81=8C=E4=BD=8D=E5=88=86=E7=B1=BB=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/modular/position/enums/SysPositionCategoryEnum.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/position/enums/SysPositionCategoryEnum.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/position/enums/SysPositionCategoryEnum.java index 6ac93cf1..e3d40877 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/position/enums/SysPositionCategoryEnum.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/position/enums/SysPositionCategoryEnum.java @@ -25,10 +25,10 @@ import vip.xiaonuo.common.exception.CommonException; public enum SysPositionCategoryEnum { /** 高层 */ - COMPANY("HIGH"), + HIGH("HIGH"), /** 中层 */ - DEPT("MIDDLE"), + MIDDLE("MIDDLE"), /** 基层 */ LOW("LOW"); @@ -40,7 +40,7 @@ public enum SysPositionCategoryEnum { } public static void validate(String value) { - boolean flag = COMPANY.getValue().equals(value) || DEPT.getValue().equals(value); + boolean flag = HIGH.getValue().equals(value) || MIDDLE.getValue().equals(value) || LOW.getValue().equals(value); if(!flag) { throw new CommonException("不支持的职位分类:{}", value); } From 9fecd72f4c0da77c346dcb30fdbbff5b137eb06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=8E=89=E7=A5=A5?= Date: Fri, 7 Oct 2022 00:57:05 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java index 7dccc98b..dc700afc 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java @@ -75,7 +75,7 @@ public class SysUser extends CommonEntity implements TransPojo { /** 性别 */ @ApiModelProperty(value = "性别", position = 8) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) - @Trans(type = TransType.DICTIONARY,key = "GENDER") + @Trans(type = TransType.DICTIONARY, key = "GENDER") private String gender; /** 年龄 */