From 0386a736e426bbe1604b393d23189a71b2be2b60 Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Thu, 28 Feb 2019 19:28:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=80=E5=8D=95=E7=9A=84?=
=?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=89=93=E5=8C=85=E8=84=9A=E6=9C=AC=20?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Dubbo=20=E5=8F=82=E6=95=B0=E6=A0=A1?=
=?UTF-8?q?=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Server.md | 18 ++++
admin/admin-application/pom.xml | 10 ++
.../admin/application/AdminApplication.java | 4 +-
.../application/config/MVCConfiguration.java | 14 ++-
.../config/SwaggerConfiguration.java | 4 +-
.../controller/ResourceController.java | 47 ++++++++--
.../application/vo/AdminMenuTreeNodeVO.java | 24 ++---
.../src/main/resources/application.yaml | 2 +-
admin/admin-sdk/pom.xml | 1 +
admin/admin-service-api/pom.xml | 6 +-
.../mall/admin/api/ResourceService.java | 4 +
.../mall/admin/api/dto/ResourceAddDTO.java | 94 +++++++++++++++++++
.../admin/service/ResourceServiceImpl.java | 9 +-
.../main/resources/config/application.yaml | 13 +--
build_admin.sh | 1 +
common/common-framework/pom.xml | 5 +
.../config/GlobalExceptionHandler.java | 31 ++++--
.../framework/constant/SysErrorCodeEnum.java | 1 +
.../common/framework/util/ExceptionUtil.java | 13 +++
publish_admin.sh | 3 +
20 files changed, 251 insertions(+), 53 deletions(-)
create mode 100644 Server.md
create mode 100644 admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/ResourceAddDTO.java
create mode 100644 build_admin.sh
create mode 100644 publish_admin.sh
diff --git a/Server.md b/Server.md
new file mode 100644
index 000000000..d29f3b0fb
--- /dev/null
+++ b/Server.md
@@ -0,0 +1,18 @@
+# 前端 Server
+
+* admin 18083
+*
+
+# 后端 Server
+
+# 基础服务
+
+## MySQL
+
+## Zookeeper
+
+# 运维
+
+* ssh 端口
+* 工作目录 /work2/
+
diff --git a/admin/admin-application/pom.xml b/admin/admin-application/pom.xml
index 7b94a59c4..10b1a2f9e 100644
--- a/admin/admin-application/pom.xml
+++ b/admin/admin-application/pom.xml
@@ -113,6 +113,16 @@
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/AdminApplication.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/AdminApplication.java
index 5513088f7..5aeb5de0f 100644
--- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/AdminApplication.java
+++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/AdminApplication.java
@@ -2,12 +2,14 @@ package cn.iocoder.mall.admin.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication(scanBasePackages = {"cn.iocoder.mall.admin"})
public class AdminApplication {
public static void main(String[] args) {
- SpringApplication.run(AdminApplication.class, args);
+ ConfigurableApplicationContext ctx = SpringApplication.run(AdminApplication.class, args);
+ System.out.println(); // TODO 后面去掉,这里是临时的
}
}
\ No newline at end of file
diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/MVCConfiguration.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/MVCConfiguration.java
index f052bb8a6..8cfdabb64 100644
--- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/MVCConfiguration.java
+++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/MVCConfiguration.java
@@ -5,10 +5,7 @@ import cn.iocoder.mall.admin.sdk.interceptor.AdminSecurityInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.config.annotation.*;
@EnableWebMvc
@Configuration
@@ -36,4 +33,13 @@ public class MVCConfiguration implements WebMvcConfigurer {
registry.addResourceHandler("webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
+ // TODO 芋艿,允许跨域
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ registry.addMapping("/**")
+ .allowedHeaders("*")
+ .allowedMethods("*")
+ .allowedOrigins("*");
+ }
+
}
\ No newline at end of file
diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/SwaggerConfiguration.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/SwaggerConfiguration.java
index eae66c317..adee77e1c 100644
--- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/SwaggerConfiguration.java
+++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/config/SwaggerConfiguration.java
@@ -11,7 +11,7 @@ import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
-@EnableSwagger2
+@EnableSwagger2 // TODO 生产环境时,禁用掉。
public class SwaggerConfiguration {
@Bean
@@ -19,7 +19,7 @@ public class SwaggerConfiguration {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
- .apis(RequestHandlerSelectors.basePackage("cn.iocoder.mall.admin.controller"))
+ .apis(RequestHandlerSelectors.basePackage("cn.iocoder.mall.admin.application.controller"))
.paths(PathSelectors.any())
.build();
}
diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/ResourceController.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/ResourceController.java
index 1316a6b25..12808e6f9 100644
--- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/ResourceController.java
+++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/ResourceController.java
@@ -4,19 +4,19 @@ import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.admin.api.ResourceService;
import cn.iocoder.mall.admin.api.bo.ResourceBO;
import cn.iocoder.mall.admin.api.constant.ResourceType;
+import cn.iocoder.mall.admin.api.dto.ResourceAddDTO;
import cn.iocoder.mall.admin.application.convert.ResourceConvert;
-import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder;
import cn.iocoder.mall.admin.application.vo.AdminMenuTreeNodeVO;
+import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder;
import com.alibaba.dubbo.config.annotation.Reference;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
@RestController
@@ -24,11 +24,13 @@ import java.util.stream.Collectors;
@Api("资源模块")
public class ResourceController {
- @Reference
+ @Reference(validation = "true")
private ResourceService resourceService;
+ // =========== 当前管理员相关的资源 API ===========
+
@GetMapping("/admin_menu_tree")
- @ApiOperation(value = "获得管理员拥有的菜单权限", notes = "以树结构返回")
+ @ApiOperation(value = "获得当前登陆的管理员拥有的菜单权限", notes = "以树结构返回")
public CommonResult> adminMenuTree() {
List resources = resourceService.getResourceByTypeAndRoleIds(ResourceType.MENU, AdminSecurityContextHolder.getContext().getRoleIds());
// 创建 AdminMenuTreeNodeVO Map
@@ -53,9 +55,36 @@ public class ResourceController {
}
@GetMapping("/admin_url_list")
- @ApiOperation(value = "获得管理员拥有的 URL 权限列表")
- public CommonResult adminUrlList() {
- return null;
+ @ApiOperation(value = "获得当前登陆的管理员拥有的 URL 权限列表")
+// @ApiModelProperty(value = "data", example = "['/admin/role/add', '/admin/role/update']") 没效果
+ public CommonResult> adminUrlList() {
+ List resources = resourceService.getResourceByTypeAndRoleIds(ResourceType.URL, AdminSecurityContextHolder.getContext().getRoleIds());
+ return CommonResult.success(resources.stream().map(ResourceBO::getHandler).collect(Collectors.toSet()));
+ }
+
+
+ // =========== 资源管理 API ===========
+
+ // TODO 芋艿,注释
+ @PostMapping("/add")
+ @ApiOperation(value = "创建资源", notes = "例如说,菜单资源,Url 资源")
+ public void add(@RequestParam("name") String name,
+ @RequestParam("type") Integer type,
+ @RequestParam("sort") Integer sort,
+ @RequestParam("displayName") String displayName,
+ @RequestParam("pid") Integer pid,
+ @RequestParam("handler") String handler) {
+ ResourceAddDTO resourceAddDTO = new ResourceAddDTO().setName(name).setType(type).setSort(sort)
+ .setDisplayName(displayName).setPid(pid).setHandler(handler);
+ CommonResult result = resourceService.addResource(resourceAddDTO);
+ }
+
+ public void update() {
+
+ }
+
+ public void delete() {
+
}
}
\ No newline at end of file
diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/vo/AdminMenuTreeNodeVO.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/vo/AdminMenuTreeNodeVO.java
index 39faf1f18..1c9741570 100644
--- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/vo/AdminMenuTreeNodeVO.java
+++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/vo/AdminMenuTreeNodeVO.java
@@ -1,28 +1,22 @@
package cn.iocoder.mall.admin.application.vo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
import java.util.List;
+@ApiModel("管理员拥有的菜单 VO")
public class AdminMenuTreeNodeVO {
- /**
- * 菜单编号
- */
+ @ApiModelProperty(value = "菜单编号", required = true, example = "1")
private Integer id;
- /**
- * 彩蛋名
- */
+ @ApiModelProperty(value = "菜单名", required = true, example = "商品管理")
private String name;
- /**
- * 操作
- */
+ @ApiModelProperty(value = "菜单操作", required = true, example = "/order/list")
private String handler;
- /**
- * 父菜单编号
- */
+ @ApiModelProperty(value = "父菜单编号", required = true, example = "1", notes = "如果无父菜单,则值为 0")
private Integer pid;
- /**
- * 子节点数组
- */
+ @ApiModelProperty(value = "子节点数组", example = "[1, 2, 3]")
private List children;
public Integer getId() {
diff --git a/admin/admin-application/src/main/resources/application.yaml b/admin/admin-application/src/main/resources/application.yaml
index e6d37fdf2..ed6019ec3 100644
--- a/admin/admin-application/src/main/resources/application.yaml
+++ b/admin/admin-application/src/main/resources/application.yaml
@@ -4,4 +4,4 @@ spring:
# server
server:
- port: 8083
\ No newline at end of file
+ port: 18083
\ No newline at end of file
diff --git a/admin/admin-sdk/pom.xml b/admin/admin-sdk/pom.xml
index 16f78d67f..86b96fe90 100644
--- a/admin/admin-sdk/pom.xml
+++ b/admin/admin-sdk/pom.xml
@@ -8,6 +8,7 @@
1.0-SNAPSHOT
4.0.0
+ jar
admin-sdk
diff --git a/admin/admin-service-api/pom.xml b/admin/admin-service-api/pom.xml
index bb3089468..b683c2b0f 100644
--- a/admin/admin-service-api/pom.xml
+++ b/admin/admin-service-api/pom.xml
@@ -8,6 +8,7 @@
1.0-SNAPSHOT
4.0.0
+ jar
admin-service-api
@@ -17,9 +18,8 @@
1.0-SNAPSHOT
- cn.iocoder.mall
- admin-service-api
- 1.0-SNAPSHOT
+ org.hibernate.validator
+ hibernate-validator
diff --git a/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/ResourceService.java b/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/ResourceService.java
index 4baeaa912..61f54a5c3 100644
--- a/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/ResourceService.java
+++ b/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/ResourceService.java
@@ -1,6 +1,8 @@
package cn.iocoder.mall.admin.api;
+import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.admin.api.bo.ResourceBO;
+import cn.iocoder.mall.admin.api.dto.ResourceAddDTO;
import java.util.List;
import java.util.Set;
@@ -9,4 +11,6 @@ public interface ResourceService {
List getResourceByTypeAndRoleIds(Integer type, Set roleIds);
+ CommonResult addResource(ResourceAddDTO resourceAddDTO);
+
}
\ No newline at end of file
diff --git a/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/ResourceAddDTO.java b/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/ResourceAddDTO.java
new file mode 100644
index 000000000..ae3a41e8f
--- /dev/null
+++ b/admin/admin-service-api/src/main/java/cn/iocoder/mall/admin/api/dto/ResourceAddDTO.java
@@ -0,0 +1,94 @@
+package cn.iocoder.mall.admin.api.dto;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 资源添加 DTO
+ */
+public class ResourceAddDTO {
+
+ /**
+ * 资源名字(标识)
+ */
+ @NotEmpty(message = "资源名字不能为空")
+ private String name;
+ /**
+ * 类型
+ */
+ @NotNull(message = "类型不能为空")
+ private Integer type;
+ /**
+ * 排序值
+ */
+ @NotNull(message = "类型不能为空")
+ private Integer sort;
+ /**
+ * 展示名
+ */
+ @NotEmpty(message = "资源名字不能为空")
+ private String displayName;
+ /**
+ * 父资源比那好
+ */
+ private Integer pid;
+ /**
+ * 操作
+ */
+ private String handler;
+
+ public String getName() {
+ return name;
+ }
+
+ public ResourceAddDTO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public ResourceAddDTO setType(Integer type) {
+ this.type = type;
+ return this;
+ }
+
+ public Integer getSort() {
+ return sort;
+ }
+
+ public ResourceAddDTO setSort(Integer sort) {
+ this.sort = sort;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public ResourceAddDTO setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public Integer getPid() {
+ return pid;
+ }
+
+ public ResourceAddDTO setPid(Integer pid) {
+ this.pid = pid;
+ return this;
+ }
+
+ public String getHandler() {
+ return handler;
+ }
+
+ public ResourceAddDTO setHandler(String handler) {
+ this.handler = handler;
+ return this;
+ }
+
+}
\ No newline at end of file
diff --git a/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/ResourceServiceImpl.java b/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/ResourceServiceImpl.java
index 7f796065c..cbfb165fd 100644
--- a/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/ResourceServiceImpl.java
+++ b/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/ResourceServiceImpl.java
@@ -1,7 +1,9 @@
package cn.iocoder.mall.admin.service;
+import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.admin.api.ResourceService;
import cn.iocoder.mall.admin.api.bo.ResourceBO;
+import cn.iocoder.mall.admin.api.dto.ResourceAddDTO;
import cn.iocoder.mall.admin.convert.ResourceConvert;
import cn.iocoder.mall.admin.dao.ResourceMapper;
import cn.iocoder.mall.admin.dataobject.ResourceDO;
@@ -13,7 +15,7 @@ import java.util.List;
import java.util.Set;
@Service
-@com.alibaba.dubbo.config.annotation.Service
+@com.alibaba.dubbo.config.annotation.Service(validation = "true")
public class ResourceServiceImpl implements ResourceService {
@Autowired
@@ -31,4 +33,9 @@ public class ResourceServiceImpl implements ResourceService {
return ResourceConvert.INSTANCE.convert(resourceMapper.selectListByTypeAndRoleIds(type, roleIds));
}
+ @Override
+ public CommonResult addResource(ResourceAddDTO resourceAddDTO) {
+ return null;
+ }
+
}
\ No newline at end of file
diff --git a/admin/admin-service-impl/src/main/resources/config/application.yaml b/admin/admin-service-impl/src/main/resources/config/application.yaml
index d5fa428f0..d6184dea6 100644
--- a/admin/admin-service-impl/src/main/resources/config/application.yaml
+++ b/admin/admin-service-impl/src/main/resources/config/application.yaml
@@ -1,14 +1,10 @@
spring:
# datasource
datasource:
- url: jdbc:mysql://127.0.0.1:33061/mall_admin?useSSL=false
+ url: jdbc:mysql://180.167.213.26:13306/mall_admin?useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: root
- password: 123456
-
-# server
-server:
- port: 8083
+ password: ${MALL_MYSQL_PASSWORD}
# mybatis
mybatis:
@@ -26,7 +22,4 @@ dubbo:
port: -1
name: dubbo
scan:
- base-packages: cn.iocoder.mall.admin.service
-demo:
- service:
- version: 1.0.0
\ No newline at end of file
+ base-packages: cn.iocoder.mall.admin.service
\ No newline at end of file
diff --git a/build_admin.sh b/build_admin.sh
new file mode 100644
index 000000000..0a5a3ea81
--- /dev/null
+++ b/build_admin.sh
@@ -0,0 +1 @@
+mvn clean package -am -DskipTests
\ No newline at end of file
diff --git a/common/common-framework/pom.xml b/common/common-framework/pom.xml
index 8ffb4f056..d8f9e472f 100644
--- a/common/common-framework/pom.xml
+++ b/common/common-framework/pom.xml
@@ -44,6 +44,11 @@
jackson-annotations
2.9.7
+
+ org.hibernate.validator
+ hibernate-validator
+ 6.0.15.Final
+
diff --git a/common/common-framework/src/main/java/cn/iocoder/common/framework/config/GlobalExceptionHandler.java b/common/common-framework/src/main/java/cn/iocoder/common/framework/config/GlobalExceptionHandler.java
index 3e3123e24..5020c32a9 100644
--- a/common/common-framework/src/main/java/cn/iocoder/common/framework/config/GlobalExceptionHandler.java
+++ b/common/common-framework/src/main/java/cn/iocoder/common/framework/config/GlobalExceptionHandler.java
@@ -3,13 +3,14 @@ package cn.iocoder.common.framework.config;
import cn.iocoder.common.framework.constant.SysErrorCodeEnum;
import cn.iocoder.common.framework.exception.ServiceException;
import cn.iocoder.common.framework.util.ExceptionUtil;
-import cn.iocoder.common.framework.vo.RestResult;
+import cn.iocoder.common.framework.vo.CommonResult;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
+import javax.validation.ConstraintViolationException;
import java.lang.reflect.UndeclaredThrowableException;
@ControllerAdvice
@@ -17,33 +18,49 @@ public class GlobalExceptionHandler {
@ResponseBody
@ExceptionHandler(value = ServiceException.class)
- public RestResult serviceExceptionHandler(HttpServletRequest req, ServiceException ex) {
- return RestResult.error(ex.getCode(), ex.getMessage());
+ public CommonResult serviceExceptionHandler(HttpServletRequest req, ServiceException ex) {
+ return CommonResult.error(ex.getCode(), ex.getMessage());
+ }
+
+ @ResponseBody
+ @ExceptionHandler(value = ConstraintViolationException.class)
+ public CommonResult constraintViolationExceptionHandler(HttpServletRequest req, ConstraintViolationException ex) {
+ // TODO 芋艿,后续要想一个更好的方式。
+ // 拼接详细报错
+ StringBuilder detailMessage = new StringBuilder("\n\n详细错误如下:");
+ ex.getConstraintViolations().forEach(constraintViolation -> detailMessage.append("\n").append(constraintViolation.getMessage()));
+ return CommonResult.error(SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getCode(), SysErrorCodeEnum.VALIDATION_REQUEST_PARAM_ERROR.getMessage()
+ + detailMessage.toString());
}
@ResponseBody
@ExceptionHandler(value = UndeclaredThrowableException.class)
- public RestResult undeclaredThrowableExceptionHandler(HttpServletRequest req, UndeclaredThrowableException e) {
+ public CommonResult undeclaredThrowableExceptionHandler(HttpServletRequest req, UndeclaredThrowableException e) {
// 尝试获得 ServiceException 异常。如果是,则使用 serviceExceptionHandler 方法处理。
ServiceException serviceException = ExceptionUtil.getServiceException(e);
if (serviceException != null) {
return serviceExceptionHandler(req, serviceException);
}
+ // 尝试获得 ConstraintViolationException 异常。如果是,
+ ConstraintViolationException constraintViolationException = ExceptionUtil.getConstraintViolationException(e);
+ if (constraintViolationException != null) {
+ return constraintViolationExceptionHandler(req, constraintViolationException);
+ }
// 获得不到,使用 异常日志 方法处理。
return resultExceptionHandler(req, e);
}
@ResponseBody
@ExceptionHandler(value = Exception.class)
- public RestResult resultExceptionHandler(HttpServletRequest req, Exception e) {
+ public CommonResult resultExceptionHandler(HttpServletRequest req, Exception e) {
// TODO 异常日志
e.printStackTrace();
// TODO 翻译不同的异常
if (e instanceof MissingServletRequestParameterException) {
- return RestResult.error(SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getCode(), SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getMessage());
+ return CommonResult.error(SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getCode(), SysErrorCodeEnum.MISSING_REQUEST_PARAM_ERROR.getMessage());
}
// 返回
- return RestResult.error(SysErrorCodeEnum.SYS_ERROR.getCode(), SysErrorCodeEnum.SYS_ERROR.getMessage());
+ return CommonResult.error(SysErrorCodeEnum.SYS_ERROR.getCode(), SysErrorCodeEnum.SYS_ERROR.getMessage());
}
}
\ No newline at end of file
diff --git a/common/common-framework/src/main/java/cn/iocoder/common/framework/constant/SysErrorCodeEnum.java b/common/common-framework/src/main/java/cn/iocoder/common/framework/constant/SysErrorCodeEnum.java
index d0ddbbed1..cdf3a8126 100644
--- a/common/common-framework/src/main/java/cn/iocoder/common/framework/constant/SysErrorCodeEnum.java
+++ b/common/common-framework/src/main/java/cn/iocoder/common/framework/constant/SysErrorCodeEnum.java
@@ -9,6 +9,7 @@ public enum SysErrorCodeEnum {
SYS_ERROR(2001001000, "服务端发生异常"),
MISSING_REQUEST_PARAM_ERROR(2001001001, "参数缺失"),
+ VALIDATION_REQUEST_PARAM_ERROR(2001001002, "参数校验不正确")
;
private final int code;
diff --git a/common/common-framework/src/main/java/cn/iocoder/common/framework/util/ExceptionUtil.java b/common/common-framework/src/main/java/cn/iocoder/common/framework/util/ExceptionUtil.java
index 02f9af696..88bab3d7e 100644
--- a/common/common-framework/src/main/java/cn/iocoder/common/framework/util/ExceptionUtil.java
+++ b/common/common-framework/src/main/java/cn/iocoder/common/framework/util/ExceptionUtil.java
@@ -2,6 +2,7 @@ package cn.iocoder.common.framework.util;
import cn.iocoder.common.framework.exception.ServiceException;
+import javax.validation.ConstraintViolationException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.UndeclaredThrowableException;
@@ -31,4 +32,16 @@ public class ExceptionUtil {
return null;
}
+ public static ConstraintViolationException getConstraintViolationException(UndeclaredThrowableException e) {
+ Throwable undeclaredThrowable = e.getUndeclaredThrowable();
+ if (undeclaredThrowable instanceof InvocationTargetException) {
+ InvocationTargetException invocationTargetException = (InvocationTargetException) undeclaredThrowable;
+ Throwable targetException = invocationTargetException.getTargetException();
+ if (targetException != null && targetException instanceof ConstraintViolationException) {
+ return (ConstraintViolationException) targetException;
+ }
+ }
+ return null;
+ }
+
}
\ No newline at end of file
diff --git a/publish_admin.sh b/publish_admin.sh
new file mode 100644
index 000000000..a9a2ca64c
--- /dev/null
+++ b/publish_admin.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+sh build_admin.sh
+scp admin/admin-application/target/admin-application-1.0-SNAPSHOT.jar runner@192.168.88.10:/work2/project/admin
\ No newline at end of file