Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
ca28d791
提交
ca28d791
authored
6月 17, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加 CommonResult 的 check 逻辑
上级
ff18d2f3
隐藏空白字符变更
内嵌
并排
正在显示
38 个修改的文件
包含
221 行增加
和
699 行删除
+221
-699
pom.xml
yudao-dependencies/pom.xml
+5
-0
pom.xml
yudao-framework/pom.xml
+5
-1
ServerException.java
...der/yudao/framework/common/exception/ServerException.java
+60
-0
GlobalErrorCodeConstants.java
...work/common/exception/enums/GlobalErrorCodeConstants.java
+8
-2
CommonResult.java
.../cn/iocoder/yudao/framework/common/pojo/CommonResult.java
+10
-0
DeptDataPermissionRule.java
...datapermission/core/rule/dept/DeptDataPermissionRule.java
+1
-3
DictFrameworkUtils.java
...er/yudao/framework/dict/core/util/DictFrameworkUtils.java
+4
-6
OperateLogFrameworkServiceImpl.java
...eratelog/core/service/OperateLogFrameworkServiceImpl.java
+1
-2
TenantFrameworkServiceImpl.java
...ework/tenant/core/service/TenantFrameworkServiceImpl.java
+1
-3
TokenAuthenticationFilter.java
...ework/security/core/filter/TokenAuthenticationFilter.java
+1
-3
SecurityFrameworkServiceImpl.java
...k/security/core/service/SecurityFrameworkServiceImpl.java
+6
-8
ApiAccessLogFrameworkServiceImpl.java
...apilog/core/service/ApiAccessLogFrameworkServiceImpl.java
+1
-2
ApiErrorLogFrameworkServiceImpl.java
.../apilog/core/service/ApiErrorLogFrameworkServiceImpl.java
+1
-2
FileApi.java
.../java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
+1
-3
DeptApi.java
...java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java
+1
-3
ErrorCodeApi.java
...coder/yudao/module/system/api/errorcode/ErrorCodeApi.java
+40
-0
ErrorCodeAutoGenerateReqDTO.java
...system/api/errorcode/dto/ErrorCodeAutoGenerateReqDTO.java
+1
-1
ErrorCodeRespDTO.java
...dao/module/system/api/errorcode/dto/ErrorCodeRespDTO.java
+1
-1
AdminUserApi.java
...cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
+1
-3
pom.xml
yudao-module-system/yudao-module-system-biz/pom.xml
+4
-0
ErrorCodeApiImpl.java
...r/yudao/module/system/api/errorcode/ErrorCodeApiImpl.java
+36
-0
ErrorCodeConvert.java
...dao/module/system/convert/errorcode/ErrorCodeConvert.java
+2
-2
ErrorCodeFrameworkService.java
...ork/errorcode/core/service/ErrorCodeFrameworkService.java
+0
-35
package-info.java
...yudao/module/system/framework/errorcode/package-info.java
+0
-6
ErrorCodeService.java
...dao/module/system/service/errorcode/ErrorCodeService.java
+22
-2
ErrorCodeServiceImpl.java
...module/system/service/errorcode/ErrorCodeServiceImpl.java
+7
-6
ErrorCodeServiceTest.java
...module/system/service/errorcode/ErrorCodeServiceTest.java
+1
-1
MathUtil.java
.../main/java/cn/iocoder/common/framework/util/MathUtil.java
+0
-33
OSUtils.java
...c/main/java/cn/iocoder/common/framework/util/OSUtils.java
+0
-14
CommonResult.java
...ain/java/cn/iocoder/common/framework/vo/CommonResult.java
+0
-154
PageParam.java
...c/main/java/cn/iocoder/common/framework/vo/PageParam.java
+0
-46
PageResult.java
.../main/java/cn/iocoder/common/framework/vo/PageResult.java
+0
-36
SortingField.java
...ain/java/cn/iocoder/common/framework/vo/SortingField.java
+0
-56
pom.xml
归档/common/mall-spring-boot-starter-system-error-code/pom.xml
+0
-46
ErrorCodeAutoConfiguration.java
...l/system/errorcode/config/ErrorCodeAutoConfiguration.java
+0
-26
ErrorCodeProperties.java
...der/mall/system/errorcode/config/ErrorCodeProperties.java
+0
-39
ErrorCodeAutoGenerator.java
...er/mall/system/errorcode/core/ErrorCodeAutoGenerator.java
+0
-84
ErrorCodeRemoteLoader.java
...der/mall/system/errorcode/core/ErrorCodeRemoteLoader.java
+0
-70
没有找到文件。
yudao-dependencies/pom.xml
浏览文件 @
ca28d791
...
...
@@ -135,6 +135,11 @@
<artifactId>
yudao-spring-boot-starter-biz-social
</artifactId>
<version>
${revision}
</version>
</dependency>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-biz-error-code
</artifactId>
<version>
${revision}
</version>
</dependency>
<!-- Spring 核心 -->
<dependency>
...
...
yudao-framework/pom.xml
浏览文件 @
ca28d791
...
...
@@ -19,6 +19,7 @@
<module>
yudao-spring-boot-starter-file
</module>
<module>
yudao-spring-boot-starter-monitor
</module>
<module>
yudao-spring-boot-starter-protection
</module>
<!-- <module>yudao-spring-boot-starter-config</module>-->
<module>
yudao-spring-boot-starter-job
</module>
<module>
yudao-spring-boot-starter-mq
</module>
<module>
yudao-spring-boot-starter-rpc
</module>
...
...
@@ -29,12 +30,15 @@
<module>
yudao-spring-boot-starter-biz-operatelog
</module>
<module>
yudao-spring-boot-starter-biz-dict
</module>
<module>
yudao-spring-boot-starter-biz-sms
</module>
<module>
yudao-spring-boot-starter-activiti
</module>
<module>
yudao-spring-boot-starter-biz-pay
</module>
<module>
yudao-spring-boot-starter-biz-weixin
</module>
<module>
yudao-spring-boot-starter-biz-social
</module>
<module>
yudao-spring-boot-starter-biz-tenant
</module>
<module>
yudao-spring-boot-starter-biz-data-permission
</module>
<module>
yudao-spring-boot-starter-biz-error-code
</module>
<module>
yudao-spring-boot-starter-activiti
</module>
<module>
yudao-spring-boot-starter-flowable
</module>
</modules>
...
...
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/exception/ServerException.java
0 → 100644
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
;
import
cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* 服务器异常 Exception
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
final
class
ServerException
extends
RuntimeException
{
/**
* 全局错误码
*
* @see GlobalErrorCodeConstants
*/
private
Integer
code
;
/**
* 错误提示
*/
private
String
message
;
/**
* 空构造方法,避免反序列化问题
*/
public
ServerException
()
{
}
public
ServerException
(
ErrorCode
errorCode
)
{
this
.
code
=
errorCode
.
getCode
();
this
.
message
=
errorCode
.
getMsg
();
}
public
ServerException
(
Integer
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
Integer
getCode
()
{
return
code
;
}
public
ServerException
setCode
(
Integer
code
)
{
this
.
code
=
code
;
return
this
;
}
@Override
public
String
getMessage
()
{
return
message
;
}
public
ServerException
setMessage
(
String
message
)
{
this
.
message
=
message
;
return
this
;
}
}
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/exception/enums/GlobalErrorCodeConstants.java
浏览文件 @
ca28d791
...
...
@@ -36,9 +36,15 @@ public interface GlobalErrorCodeConstants {
ErrorCode
UNKNOWN
=
new
ErrorCode
(
999
,
"未知错误"
);
static
boolean
isMatch
(
Integer
code
)
{
/**
* 是否为服务端错误,参考 HTTP 5XX 错误码段
*
* @param code 错误码
* @return 是否
*/
static
boolean
isServerErrorCode
(
Integer
code
)
{
return
code
!=
null
&&
code
>=
SUCCESS
.
getCode
()
&&
code
<=
UNKNOWN
.
getCode
()
;
&&
code
>=
INTERNAL_SERVER_ERROR
.
getCode
()
&&
code
<=
INTERNAL_SERVER_ERROR
.
getCode
()
+
99
;
}
}
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/CommonResult.java
浏览文件 @
ca28d791
...
...
@@ -95,6 +95,16 @@ public class CommonResult<T> implements Serializable {
throw
new
ServiceException
(
code
,
msg
);
}
/**
* 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常
* 如果没有,则返回 {@link #data} 数据
*/
@JsonIgnore
// 避免 jackson 序列化
public
T
getCheckedData
()
{
checkError
();
return
data
;
}
public
static
<
T
>
CommonResult
<
T
>
error
(
ServiceException
serviceException
)
{
return
error
(
serviceException
.
getCode
(),
serviceException
.
getMessage
());
}
...
...
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
浏览文件 @
ca28d791
...
...
@@ -106,9 +106,7 @@ public class DeptDataPermissionRule implements DataPermissionRule {
DeptDataPermissionRespDTO
deptDataPermission
=
loginUser
.
getContext
(
CONTEXT_KEY
,
DeptDataPermissionRespDTO
.
class
);
// 从上下文中拿不到,则调用逻辑进行获取
if
(
deptDataPermission
==
null
)
{
CommonResult
<
DeptDataPermissionRespDTO
>
getDeptDataPermissionResult
=
permissionApi
.
getDeptDataPermission
(
loginUser
.
getId
());
getDeptDataPermissionResult
.
checkError
();
deptDataPermission
=
getDeptDataPermissionResult
.
getData
();
deptDataPermission
=
permissionApi
.
getDeptDataPermission
(
loginUser
.
getId
()).
getData
();
if
(
deptDataPermission
==
null
)
{
log
.
error
(
"[getExpression][LoginUser({}) 获取数据权限为 null]"
,
JsonUtils
.
toJsonString
(
loginUser
));
throw
new
NullPointerException
(
String
.
format
(
"LoginUser(%d) Table(%s/%s) 未返回数据权限"
,
...
...
yudao-framework/yudao-spring-boot-starter-biz-dict/src/main/java/cn/iocoder/yudao/framework/dict/core/util/DictFrameworkUtils.java
浏览文件 @
ca28d791
...
...
@@ -34,9 +34,8 @@ public class DictFrameworkUtils {
@Override
public
DictDataRespDTO
load
(
KeyValue
<
String
,
String
>
key
)
{
CommonResult
<
DictDataRespDTO
>
getDictDataResult
=
dictDataApi
.
getDictData
(
key
.
getKey
(),
key
.
getValue
());
getDictDataResult
.
checkError
();
return
ObjectUtil
.
defaultIfNull
(
getDictDataResult
.
getData
(),
DICT_DATA_NULL
);
return
ObjectUtil
.
defaultIfNull
(
dictDataApi
.
getDictData
(
key
.
getKey
(),
key
.
getValue
()).
getCheckedData
(),
DICT_DATA_NULL
);
}
});
...
...
@@ -50,9 +49,8 @@ public class DictFrameworkUtils {
@Override
public
DictDataRespDTO
load
(
KeyValue
<
String
,
String
>
key
)
{
CommonResult
<
DictDataRespDTO
>
parseDictDataResult
=
dictDataApi
.
parseDictData
(
key
.
getKey
(),
key
.
getValue
());
parseDictDataResult
.
checkError
();
return
ObjectUtil
.
defaultIfNull
(
parseDictDataResult
.
getData
(),
DICT_DATA_NULL
);
return
ObjectUtil
.
defaultIfNull
(
dictDataApi
.
parseDictData
(
key
.
getKey
(),
key
.
getValue
()).
getCheckedData
(),
DICT_DATA_NULL
);
}
});
...
...
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -23,8 +23,7 @@ public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkServic
@Async
public
void
createOperateLog
(
OperateLog
operateLog
)
{
OperateLogCreateReqDTO
reqDTO
=
BeanUtil
.
copyProperties
(
operateLog
,
OperateLogCreateReqDTO
.
class
);
CommonResult
<
Boolean
>
result
=
operateLogApi
.
createOperateLog
(
reqDTO
);
result
.
checkError
();
operateLogApi
.
createOperateLog
(
reqDTO
).
checkError
();
}
}
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/service/TenantFrameworkServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -30,9 +30,7 @@ public class TenantFrameworkServiceImpl implements TenantFrameworkService {
@Override
public
List
<
Long
>
load
(
Object
key
)
{
CommonResult
<
List
<
Long
>>
tenantIdsResult
=
tenantApi
.
getTenantIds
();
tenantIdsResult
.
checkError
();
return
tenantIdsResult
.
getData
();
return
tenantApi
.
getTenantIds
().
getCheckedData
();
}
});
...
...
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java
浏览文件 @
ca28d791
...
...
@@ -77,9 +77,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
private
LoginUser
buildLoginUserByToken
(
String
token
,
Integer
userType
)
{
try
{
// 校验访问令牌
CommonResult
<
OAuth2AccessTokenCheckRespDTO
>
accessTokenResult
=
oauth2TokenApi
.
checkAccessToken
(
token
);
accessTokenResult
.
checkError
();
OAuth2AccessTokenCheckRespDTO
accessToken
=
accessTokenResult
.
getData
();
OAuth2AccessTokenCheckRespDTO
accessToken
=
oauth2TokenApi
.
checkAccessToken
(
token
).
getCheckedData
();
if
(
accessToken
==
null
)
{
return
null
;
}
...
...
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -38,13 +38,12 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
private
final
LoadingCache
<
KeyValue
<
Long
,
List
<
String
>>,
Boolean
>
hasAnyRolesCache
=
CacheUtils
.
buildAsyncReloadingCache
(
Duration
.
ofMinutes
(
1L
),
// 过期时间 1 分钟
new
CacheLoader
<
KeyValue
<
Long
,
List
<
String
>>,
Boolean
>()
{
@Override
public
Boolean
load
(
KeyValue
<
Long
,
List
<
String
>>
key
)
{
CommonResult
<
Boolean
>
hasAnyRolesResult
=
permissionApi
.
hasAnyRoles
(
key
.
getKey
(),
key
.
getValue
().
toArray
(
new
String
[
0
]));
hasAnyRolesResult
.
checkError
();
return
hasAnyRolesResult
.
getData
();
return
permissionApi
.
hasAnyRoles
(
key
.
getKey
(),
key
.
getValue
().
toArray
(
new
String
[
0
])).
getCheckedData
();
}
});
/**
...
...
@@ -53,13 +52,12 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
private
final
LoadingCache
<
KeyValue
<
Long
,
List
<
String
>>,
Boolean
>
hasAnyPermissionsCache
=
CacheUtils
.
buildAsyncReloadingCache
(
Duration
.
ofMinutes
(
1L
),
// 过期时间 1 分钟
new
CacheLoader
<
KeyValue
<
Long
,
List
<
String
>>,
Boolean
>()
{
@Override
public
Boolean
load
(
KeyValue
<
Long
,
List
<
String
>>
key
)
{
CommonResult
<
Boolean
>
hasAnyPermissionsResult
=
permissionApi
.
hasAnyPermissions
(
key
.
getKey
(),
key
.
getValue
().
toArray
(
new
String
[
0
]));
hasAnyPermissionsResult
.
checkError
();
return
hasAnyPermissionsResult
.
getData
();
return
permissionApi
.
hasAnyPermissions
(
key
.
getKey
(),
key
.
getValue
().
toArray
(
new
String
[
0
])).
getCheckedData
();
}
});
@Override
...
...
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -23,8 +23,7 @@ public class ApiAccessLogFrameworkServiceImpl implements ApiAccessLogFrameworkSe
@Async
public
void
createApiAccessLog
(
ApiAccessLog
apiAccessLog
)
{
ApiAccessLogCreateReqDTO
reqDTO
=
BeanUtil
.
copyProperties
(
apiAccessLog
,
ApiAccessLogCreateReqDTO
.
class
);
CommonResult
<
Boolean
>
result
=
apiAccessLogApi
.
createApiAccessLog
(
reqDTO
);
result
.
checkError
();
apiAccessLogApi
.
createApiAccessLog
(
reqDTO
).
checkError
();
}
}
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -23,8 +23,7 @@ public class ApiErrorLogFrameworkServiceImpl implements ApiErrorLogFrameworkServ
@Async
public
void
createApiErrorLog
(
ApiErrorLog
apiErrorLog
)
{
ApiErrorLogCreateReqDTO
reqDTO
=
BeanUtil
.
copyProperties
(
apiErrorLog
,
ApiErrorLogCreateReqDTO
.
class
);
CommonResult
<
Boolean
>
result
=
apiErrorLogApi
.
createApiErrorLog
(
reqDTO
);
result
.
checkError
();
apiErrorLogApi
.
createApiErrorLog
(
reqDTO
).
checkError
();
}
}
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
浏览文件 @
ca28d791
...
...
@@ -50,9 +50,7 @@ public interface FileApi {
default
String
createFile
(
@RequestParam
(
"name"
)
String
name
,
@RequestParam
(
"path"
)
String
path
,
@RequestParam
(
"content"
)
byte
[]
content
)
{
CommonResult
<
String
>
result
=
createFile
(
new
FileCreateReqDTO
().
setName
(
name
).
setPath
(
path
).
setContent
(
content
));
result
.
checkError
();
return
result
.
getData
();
return
createFile
(
new
FileCreateReqDTO
().
setName
(
name
).
setPath
(
path
).
setContent
(
content
)).
getCheckedData
();
}
@PostMapping
(
PREFIX
+
"/create"
)
...
...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java
浏览文件 @
ca28d791
...
...
@@ -44,9 +44,7 @@ public interface DeptApi {
* @return 部门 Map
*/
default
Map
<
Long
,
DeptRespDTO
>
getDeptMap
(
Set
<
Long
>
ids
)
{
CommonResult
<
List
<
DeptRespDTO
>>
result
=
getDepts
(
ids
);
result
.
checkError
();
return
CollectionUtils
.
convertMap
(
result
.
getData
(),
DeptRespDTO:
:
getId
);
return
CollectionUtils
.
convertMap
(
getDepts
(
ids
).
getCheckedData
(),
DeptRespDTO:
:
getId
);
}
}
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/ErrorCodeApi.java
0 → 100644
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
api
.
errorcode
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.enums.ApiConstants
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.Valid
;
import
java.util.Date
;
import
java.util.List
;
@FeignClient
(
name
=
ApiConstants
.
NAME
)
// TODO 芋艿:fallbackFactory =
@Api
(
tags
=
"RPC 服务 - 错误码"
)
public
interface
ErrorCodeApi
{
String
PREFIX
=
ApiConstants
.
PREFIX
+
"/oauth2/token"
;
@PostMapping
(
PREFIX
+
"/auto-generate"
)
@ApiOperation
(
"自动创建错误码"
)
CommonResult
<
Boolean
>
autoGenerateErrorCodes
(
@Valid
@RequestBody
List
<
ErrorCodeAutoGenerateReqDTO
>
autoGenerateDTOs
);
@GetMapping
(
PREFIX
+
"/list"
)
@ApiOperation
(
value
=
"增量获得错误码数组"
,
notes
=
"如果 minUpdateTime 为空时,则获取所有错误码"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"applicationName"
,
value
=
"应用名"
,
example
=
"system-server"
,
required
=
true
,
dataTypeClass
=
String
.
class
),
@ApiImplicitParam
(
name
=
"minUpdateTime"
,
value
=
"最小更新时间"
,
dataTypeClass
=
Date
.
class
)
})
CommonResult
<
List
<
ErrorCodeRespDTO
>>
getErrorCodeList
(
@RequestParam
(
value
=
"applicationName"
)
String
applicationName
,
@RequestParam
(
value
=
"minUpdateTime"
,
required
=
false
)
Date
minUpdateTime
);
}
yudao-module-system/yudao-module-system-
biz/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/cor
e/dto/ErrorCodeAutoGenerateReqDTO.java
→
yudao-module-system/yudao-module-system-
api/src/main/java/cn/iocoder/yudao/module/system/api/errorcod
e/dto/ErrorCodeAutoGenerateReqDTO.java
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
cor
e
.
dto
;
package
cn
.
iocoder
.
yudao
.
module
.
system
.
api
.
errorcod
e
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
...
...
yudao-module-system/yudao-module-system-
biz/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/cor
e/dto/ErrorCodeRespDTO.java
→
yudao-module-system/yudao-module-system-
api/src/main/java/cn/iocoder/yudao/module/system/api/errorcod
e/dto/ErrorCodeRespDTO.java
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
cor
e
.
dto
;
package
cn
.
iocoder
.
yudao
.
module
.
system
.
api
.
errorcod
e
.
dto
;
import
lombok.Data
;
...
...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
浏览文件 @
ca28d791
...
...
@@ -49,9 +49,7 @@ public interface AdminUserApi {
* @return 用户 Map
*/
default
Map
<
Long
,
AdminUserRespDTO
>
getUserMap
(
Collection
<
Long
>
ids
)
{
CommonResult
<
List
<
AdminUserRespDTO
>>
getUsersResult
=
getUsers
(
ids
);
getUsersResult
.
checkError
();
return
CollectionUtils
.
convertMap
(
getUsersResult
.
getData
(),
AdminUserRespDTO:
:
getId
);
return
CollectionUtils
.
convertMap
(
getUsers
(
ids
).
getCheckedData
(),
AdminUserRespDTO:
:
getId
);
}
@GetMapping
(
PREFIX
+
"/valid"
)
...
...
yudao-module-system/yudao-module-system-biz/pom.xml
浏览文件 @
ca28d791
...
...
@@ -61,6 +61,10 @@
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-biz-tenant
</artifactId>
</dependency>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-biz-error-code
</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/errorcode/ErrorCodeApiImpl.java
0 → 100644
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
api
.
errorcode
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.service.errorcode.ErrorCodeService
;
import
org.apache.dubbo.config.annotation.DubboService
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ApiConstants
.
VERSION
;
@RestController
// 提供 RESTful API 接口,给 Feign 调用
@DubboService
(
version
=
VERSION
)
// 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
@Validated
public
class
ErrorCodeApiImpl
implements
ErrorCodeApi
{
@Resource
private
ErrorCodeService
errorCodeService
;
@Override
public
CommonResult
<
Boolean
>
autoGenerateErrorCodes
(
List
<
ErrorCodeAutoGenerateReqDTO
>
autoGenerateDTOs
)
{
errorCodeService
.
autoGenerateErrorCodes
(
autoGenerateDTOs
);
return
success
(
true
);
}
@Override
public
CommonResult
<
List
<
ErrorCodeRespDTO
>>
getErrorCodeList
(
String
applicationName
,
Date
minUpdateTime
)
{
return
success
(
errorCodeService
.
getErrorCodeList
(
applicationName
,
minUpdateTime
));
}
}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/errorcode/ErrorCodeConvert.java
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
convert
.
errorcode
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeExcelVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeRespVO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeUpdateReqVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/core/service/ErrorCodeFrameworkService.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
.
core
.
service
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO
;
import
javax.validation.Valid
;
import
java.util.Date
;
import
java.util.List
;
/**
* 错误码 Framework Service 接口
*
* @author 芋道源码
*/
public
interface
ErrorCodeFrameworkService
{
/**
* 自动创建错误码
*
* @param autoGenerateDTOs 错误码信息
*/
void
autoGenerateErrorCodes
(
@Valid
List
<
ErrorCodeAutoGenerateReqDTO
>
autoGenerateDTOs
);
/**
* 增量获得错误码数组
*
* 如果 minUpdateTime 为空时,则获取所有错误码
*
* @param applicationName 应用名
* @param minUpdateTime 最小更新时间
* @return 错误码数组
*/
List
<
ErrorCodeRespDTO
>
getErrorCodeList
(
String
applicationName
,
Date
minUpdateTime
);
}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/errorcode/package-info.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
/**
* 错误码组件
*
* 将错误码缓存在内存中,同时通过定时器每 n 分钟更新
*/
package
cn
.
iocoder
.
yudao
.
module
.
system
.
framework
.
errorcode
;
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeService.java
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
service
.
errorcode
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.service.ErrorCodeFrameworkService
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeExportReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodePageReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeUpdateReqVO
;
import
javax.validation.Valid
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -16,7 +18,25 @@ import java.util.List;
*
* @author 芋道源码
*/
public
interface
ErrorCodeService
extends
ErrorCodeFrameworkService
{
public
interface
ErrorCodeService
{
/**
* 自动创建错误码
*
* @param autoGenerateDTOs 错误码信息
*/
void
autoGenerateErrorCodes
(
@Valid
List
<
ErrorCodeAutoGenerateReqDTO
>
autoGenerateDTOs
);
/**
* 增量获得错误码数组
*
* 如果 minUpdateTime 为空时,则获取所有错误码
*
* @param applicationName 应用名
* @param minUpdateTime 最小更新时间
* @return 错误码数组
*/
List
<
ErrorCodeRespDTO
>
getErrorCodeList
(
String
applicationName
,
Date
minUpdateTime
);
/**
* 创建错误码
...
...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceImpl.java
浏览文件 @
ca28d791
...
...
@@ -2,14 +2,14 @@ package cn.iocoder.yudao.module.system.service.errorcode;
import
cn.hutool.core.collection.CollUtil
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeUpdateReqVO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeRespDTO
;
import
cn.iocoder.yudao.module.system.convert.errorcode.ErrorCodeConvert
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeExportReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodePageReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeUpdateReqVO
;
import
cn.iocoder.yudao.module.system.convert.errorcode.ErrorCodeConvert
;
import
cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO
;
import
cn.iocoder.yudao.module.system.dal.mysql.errorcode.ErrorCodeMapper
;
import
cn.iocoder.yudao.module.system.enums.errorcode.ErrorCodeTypeEnum
;
import
com.google.common.annotations.VisibleForTesting
;
...
...
@@ -24,9 +24,10 @@ import java.util.List;
import
java.util.Map
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
exception
.
util
.
ServiceExceptionUtil
.
exception
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.*;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
collection
.
CollectionUtils
.
convertMap
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
collection
.
CollectionUtils
.
convertSet
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.
ERROR_CODE_DUPLICATE
;
import
static
cn
.
iocoder
.
yudao
.
module
.
system
.
enums
.
ErrorCodeConstants
.
ERROR_CODE_NOT_EXISTS
;
/**
* 错误码 Service 实现类
...
...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/errorcode/ErrorCodeServiceTest.java
浏览文件 @
ca28d791
package
cn
.
iocoder
.
yudao
.
module
.
system
.
service
.
errorcode
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.module.system.api.errorcode.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.errorcode.ErrorCodeDO
;
import
cn.iocoder.yudao.module.system.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeCreateReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodeExportReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.errorcode.vo.ErrorCodePageReqVO
;
...
...
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/util/MathUtil.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
util
;
import
java.util.Random
;
public
class
MathUtil
{
/**
* 随机对象
*/
private
static
final
Random
RANDOM
=
new
Random
();
// TODO 后续优化
/**
* 随机[min, max]范围内的数字
*
* @param min 随机开始
* @param max 随机结束
* @return 数字
*/
public
static
int
random
(
int
min
,
int
max
)
{
if
(
min
==
max
)
{
return
min
;
}
if
(
min
>
max
)
{
int
temp
=
min
;
min
=
max
;
max
=
temp
;
}
// 随即开始
int
diff
=
max
-
min
+
1
;
return
RANDOM
.
nextInt
(
diff
)
+
min
;
}
}
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/util/OSUtils.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
util
;
import
cn.hutool.system.SystemUtil
;
/**
* 操作系统工具类
*/
public
class
OSUtils
{
public
static
String
getHostName
()
{
return
SystemUtil
.
getHostInfo
().
getName
();
}
}
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/vo/CommonResult.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
vo
;
import
cn.iocoder.common.framework.exception.ErrorCode
;
import
cn.iocoder.common.framework.exception.GlobalException
;
import
cn.iocoder.common.framework.exception.ServiceException
;
import
cn.iocoder.common.framework.exception.enums.GlobalErrorCodeConstants
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
org.springframework.util.Assert
;
import
java.io.Serializable
;
/**
* 通用返回
*
* @param <T> 数据泛型
*/
public
final
class
CommonResult
<
T
>
implements
Serializable
{
/**
* 错误码
*
* @see ErrorCode#getCode()
*/
private
Integer
code
;
/**
* 返回数据
*/
private
T
data
;
/**
* 错误提示,用户可阅读
*
* @see ErrorCode#getMessage() ()
*/
private
String
message
;
/**
* 错误明细,内部调试错误
*/
private
String
detailMessage
;
/**
* 将传入的 result 对象,转换成另外一个泛型结果的对象
*
* 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。
*
* @param result 传入的 result 对象
* @param <T> 返回的泛型
* @return 新的 CommonResult 对象
*/
public
static
<
T
>
CommonResult
<
T
>
error
(
CommonResult
<?>
result
)
{
return
error
(
result
.
getCode
(),
result
.
getMessage
(),
result
.
detailMessage
);
}
public
static
<
T
>
CommonResult
<
T
>
error
(
Integer
code
,
String
message
)
{
return
error
(
code
,
message
,
null
);
}
public
static
<
T
>
CommonResult
<
T
>
error
(
Integer
code
,
String
message
,
String
detailMessage
)
{
Assert
.
isTrue
(!
GlobalErrorCodeConstants
.
SUCCESS
.
getCode
().
equals
(
code
),
"code 必须是错误的!"
);
CommonResult
<
T
>
result
=
new
CommonResult
<>();
result
.
code
=
code
;
result
.
message
=
message
;
result
.
detailMessage
=
detailMessage
;
return
result
;
}
public
static
<
T
>
CommonResult
<
T
>
success
(
T
data
)
{
CommonResult
<
T
>
result
=
new
CommonResult
<>();
result
.
code
=
GlobalErrorCodeConstants
.
SUCCESS
.
getCode
();
result
.
data
=
data
;
result
.
message
=
""
;
return
result
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
T
getData
()
{
return
data
;
}
public
void
setData
(
T
data
)
{
this
.
data
=
data
;
}
public
String
getDetailMessage
()
{
return
detailMessage
;
}
public
CommonResult
<
T
>
setDetailMessage
(
String
detailMessage
)
{
this
.
detailMessage
=
detailMessage
;
return
this
;
}
@JSONField
(
serialize
=
false
)
// 避免序列化
public
boolean
isSuccess
()
{
return
GlobalErrorCodeConstants
.
SUCCESS
.
getCode
().
equals
(
code
);
}
@JSONField
(
serialize
=
false
)
// 避免序列化
public
boolean
isError
()
{
return
!
isSuccess
();
}
@Override
public
String
toString
()
{
return
"CommonResult{"
+
"code="
+
code
+
", data="
+
data
+
", message='"
+
message
+
'\''
+
", detailMessage='"
+
detailMessage
+
'\''
+
'}'
;
}
// ========= 和 Exception 异常体系集成 =========
/**
* 判断是否有异常。如果有,则抛出 {@link GlobalException} 或 {@link ServiceException} 异常
*/
public
void
checkError
()
throws
GlobalException
,
ServiceException
{
if
(
isSuccess
())
{
return
;
}
// 全局异常
if
(
GlobalErrorCodeConstants
.
isMatch
(
code
))
{
throw
new
GlobalException
(
code
,
message
).
setDetailMessage
(
detailMessage
);
}
// 业务异常
throw
new
ServiceException
(
code
,
message
).
setDetailMessage
(
detailMessage
);
}
public
static
<
T
>
CommonResult
<
T
>
error
(
ServiceException
serviceException
)
{
return
error
(
serviceException
.
getCode
(),
serviceException
.
getMessage
(),
serviceException
.
getDetailMessage
());
}
public
static
<
T
>
CommonResult
<
T
>
error
(
GlobalException
globalException
)
{
return
error
(
globalException
.
getCode
(),
globalException
.
getMessage
(),
globalException
.
getDetailMessage
());
}
}
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/vo/PageParam.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.hibernate.validator.constraints.Range
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
@ApiModel
(
"分页参数"
)
public
class
PageParam
implements
Serializable
{
@ApiModelProperty
(
value
=
"页码,从 1 开始"
,
required
=
true
,
example
=
"1"
)
@NotNull
(
message
=
"页码不能为空"
)
@Min
(
value
=
1
,
message
=
"页码最小值为 1"
)
private
Integer
pageNo
;
@ApiModelProperty
(
value
=
"每页条数,最大值为 100"
,
required
=
true
,
example
=
"10"
)
@NotNull
(
message
=
"每页条数不能为空"
)
@Range
(
min
=
1
,
max
=
100
,
message
=
"条数范围为 [1, 100]"
)
private
Integer
pageSize
;
public
Integer
getPageNo
()
{
return
pageNo
;
}
public
PageParam
setPageNo
(
Integer
pageNo
)
{
this
.
pageNo
=
pageNo
;
return
this
;
}
public
Integer
getPageSize
()
{
return
pageSize
;
}
public
PageParam
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
return
this
;
}
// public final int getOffset() {
// return (pageNo - 1) * pageSize;
// }
}
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/vo/PageResult.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serializable
;
import
java.util.List
;
@ApiModel
(
"分页结果"
)
public
final
class
PageResult
<
T
>
implements
Serializable
{
@ApiModelProperty
(
value
=
"数据"
,
required
=
true
)
private
List
<
T
>
list
;
@ApiModelProperty
(
value
=
"总量"
,
required
=
true
)
private
Long
total
;
public
List
<
T
>
getList
()
{
return
list
;
}
public
PageResult
<
T
>
setList
(
List
<
T
>
list
)
{
this
.
list
=
list
;
return
this
;
}
public
Long
getTotal
()
{
return
total
;
}
public
PageResult
<
T
>
setTotal
(
Long
total
)
{
this
.
total
=
total
;
return
this
;
}
}
归档/common/common-framework/src/main/java/cn/iocoder/common/framework/vo/SortingField.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
common
.
framework
.
vo
;
import
java.io.Serializable
;
/**
* 排序字段 DTO
*
* 类名加了 ing 的原因是,避免和 ES SortField 重名。
*/
public
class
SortingField
implements
Serializable
{
/**
* 顺序 - 升序
*/
public
static
final
String
ORDER_ASC
=
"asc"
;
/**
* 顺序 - 降序
*/
public
static
final
String
ORDER_DESC
=
"desc"
;
/**
* 字段
*/
private
String
field
;
/**
* 顺序
*/
private
String
order
;
// 空构造方法,解决反序列化
public
SortingField
()
{
}
public
SortingField
(
String
field
,
String
order
)
{
this
.
field
=
field
;
this
.
order
=
order
;
}
public
String
getField
()
{
return
field
;
}
public
SortingField
setField
(
String
field
)
{
this
.
field
=
field
;
return
this
;
}
public
String
getOrder
()
{
return
order
;
}
public
SortingField
setOrder
(
String
order
)
{
this
.
order
=
order
;
return
this
;
}
}
归档/common/mall-spring-boot-starter-system-error-code/pom.xml
deleted
100644 → 0
浏览文件 @
ff18d2f3
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
common
</artifactId>
<groupId>
cn.iocoder.mall
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
mall-spring-boot-starter-system-error-code
</artifactId>
<description>
错误码 ErrorCode 的自动配置功能,提供如下功能:
1. 远程读取:项目启动时,从 system-service 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提水可配置;
2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-service 服务加载最新的 ErrorCode 错误码;
3. 自动写入:项目启动时,将项目本地的错误码写到 system-service 服务中,方便管理员在管理后台编辑;
</description>
<dependencies>
<!-- Mall 相关 -->
<dependency>
<groupId>
cn.iocoder.mall
</groupId>
<artifactId>
system-service-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<!-- Spring 核心 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
<!-- RPC 相关 -->
<dependency>
<groupId>
org.apache.dubbo
</groupId>
<artifactId>
dubbo
</artifactId>
</dependency>
</dependencies>
</project>
归档/common/mall-spring-boot-starter-system-error-code/src/main/java/cn/iocoder/mall/system/errorcode/config/ErrorCodeAutoConfiguration.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
mall
.
system
.
errorcode
.
config
;
import
cn.iocoder.mall.system.errorcode.core.ErrorCodeAutoGenerator
;
import
cn.iocoder.mall.system.errorcode.core.ErrorCodeRemoteLoader
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
@Configuration
@EnableConfigurationProperties
(
ErrorCodeProperties
.
class
)
@EnableScheduling
// 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码
public
class
ErrorCodeAutoConfiguration
{
// @Bean
// public ErrorCodeAutoGenerator errorCodeAutoGenerator(ErrorCodeProperties errorCodeProperties) {
// return new ErrorCodeAutoGenerator(errorCodeProperties.getGroup())
// .setErrorCodeConstantsClass(errorCodeProperties.getConstantsClass());
// }
//
// @Bean
// public ErrorCodeRemoteLoader errorCodeRemoteLoader(ErrorCodeProperties errorCodeProperties) {
// return new ErrorCodeRemoteLoader(errorCodeProperties.getGroup());
// }
}
归档/common/mall-spring-boot-starter-system-error-code/src/main/java/cn/iocoder/mall/system/errorcode/config/ErrorCodeProperties.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
mall
.
system
.
errorcode
.
config
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.validation.annotation.Validated
;
import
javax.validation.constraints.NotNull
;
@ConfigurationProperties
(
"mall.error-code"
)
@Validated
public
class
ErrorCodeProperties
{
/**
* 应用分组
*/
@NotNull
(
message
=
"应用分组不能为空,请设置 mall.error-code.group 配置项,推荐直接使用 spring. application.name 配置项"
)
private
String
group
;
/**
* 错误码枚举类
*/
private
String
constantsClass
;
public
String
getGroup
()
{
return
group
;
}
public
ErrorCodeProperties
setGroup
(
String
group
)
{
this
.
group
=
group
;
return
this
;
}
public
String
getConstantsClass
()
{
return
constantsClass
;
}
public
ErrorCodeProperties
setConstantsClass
(
String
constantsClass
)
{
this
.
constantsClass
=
constantsClass
;
return
this
;
}
}
归档/common/mall-spring-boot-starter-system-error-code/src/main/java/cn/iocoder/mall/system/errorcode/core/ErrorCodeAutoGenerator.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
mall
.
system
.
errorcode
.
core
;
import
cn.iocoder.common.framework.exception.ErrorCode
;
import
cn.iocoder.common.framework.util.StringUtils
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.ErrorCodeFeign
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.scheduling.annotation.Async
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
public
class
ErrorCodeAutoGenerator
{
//
// private Logger logger = LoggerFactory.getLogger(ErrorCodeAutoGenerator.class);
//
// /**
// * 应用分组
// */
// private final String group;
// /**
// * 错误码枚举类
// */
// private String errorCodeConstantsClass;
//
//
// @Autowired
// private ErrorCodeFeign errorCodeFeign;
// public ErrorCodeAutoGenerator(String group) {
// this.group = group;
// }
//
// public ErrorCodeAutoGenerator setErrorCodeConstantsClass(String errorCodeConstantsClass) {
// this.errorCodeConstantsClass = errorCodeConstantsClass;
// return this;
// }
//
// @EventListener(ApplicationReadyEvent.class)
// @Async // 异步,保证项目的启动过程,毕竟非关键流程
// public void execute() {
// // 校验 errorCodeConstantsClass 参数
// if (!StringUtils.hasText(errorCodeConstantsClass)) {
// logger.info("[execute][未配置 mall.error-code.constants-class 配置项,不进行自动写入到 system-service 服务]");
// return;
// }
// Class errorCodeConstantsClazz;
// try {
// errorCodeConstantsClazz = Class.forName(errorCodeConstantsClass);
// } catch (ClassNotFoundException e) {
// logger.error("[execute][配置的 ({}) 找不到对应的类]", errorCodeConstantsClass);
// return;
// }
// // 写入 system-service 服务
// logger.info("[execute][自动将 ({}) 类的错误码,准备写入到 system-service 服务]", errorCodeConstantsClass);
// List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs = new ArrayList<>();
// Arrays.stream(errorCodeConstantsClazz.getFields()).forEach(field -> {
// if (field.getType() != ErrorCode.class) {
// return;
// }
// try {
// // TODO 芋艿:校验是否重复了;
// ErrorCode errorCode = (ErrorCode) field.get(errorCodeConstantsClazz);
// autoGenerateDTOs.add(new ErrorCodeAutoGenerateDTO().setGroup(group)
// .setCode(errorCode.getCode()).setMessage(errorCode.getMessage()));
// } catch (IllegalAccessException e) {
// throw new RuntimeException(e);
// }
// });
// CommonResult<Boolean> autoGenerateErrorCodesResult = errorCodeFeign.autoGenerateErrorCodes(autoGenerateDTOs);
// if (autoGenerateErrorCodesResult.isSuccess()) {
// logger.info("[execute][自动将 ({}) 类的错误码,成功写入到 system-service 服务]", errorCodeConstantsClass);
// } else {
// logger.error("[execute][自动将 ({}) 类的错误码,失败写入到 system-service 服务,原因为 ({}/{}/{})]", errorCodeConstantsClass,
// autoGenerateErrorCodesResult.getCode(), autoGenerateErrorCodesResult.getMessage(), autoGenerateErrorCodesResult.getDetailMessage());
// }
// }
}
归档/common/mall-spring-boot-starter-system-error-code/src/main/java/cn/iocoder/mall/system/errorcode/core/ErrorCodeRemoteLoader.java
deleted
100644 → 0
浏览文件 @
ff18d2f3
package
cn
.
iocoder
.
mall
.
system
.
errorcode
.
core
;
import
cn.iocoder.common.framework.exception.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.util.DateUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.ErrorCodeFeign
;
import
cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.context.event.ApplicationReadyEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
java.util.Date
;
import
java.util.List
;
public
class
ErrorCodeRemoteLoader
{
//
// private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000;
//
// private Logger logger = LoggerFactory.getLogger(ErrorCodeRemoteLoader.class);
//
// /**
// * 应用分组
// */
// private final String group;
//
// @Autowired
// private ErrorCodeFeign errorCodeFeign;
// private Date maxUpdateTime;
//
// public ErrorCodeRemoteLoader(String group) {
// this.group = group;
// }
//
// @EventListener(ApplicationReadyEvent.class)
// public void loadErrorCodes() {
// // 从 errorCodeFeign 全量加载 ErrorCode 错误码
// CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, null);
// listErrorCodesResult.checkError();
// logger.info("[loadErrorCodes][从 group({}) 全量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
// // 写入到 ServiceExceptionUtil 到
// listErrorCodesResult.getData().forEach(errorCodeVO -> {
// ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
// // 记录下更新时间,方便增量更新
// maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
// });
// }
//
// @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD)
// public void refreshErrorCodes() {
// // 从 errorCodeFeign 增量加载 ErrorCode 错误码
// // TODO 优化点:假设删除错误码的配置,会存在问题;
// CommonResult<List<ErrorCodeVO>> listErrorCodesResult = errorCodeFeign.listErrorCodes(group, maxUpdateTime);
// listErrorCodesResult.checkError();
// if (CollectionUtils.isEmpty(listErrorCodesResult.getData())) {
// return;
// }
// logger.info("[refreshErrorCodes][从 group({}) 增量加载到 {} 个 ErrorCode 错误码]", group, listErrorCodesResult.getData().size());
// // 写入到 ServiceExceptionUtil 到
// listErrorCodesResult.getData().forEach(errorCodeVO -> {
// ServiceExceptionUtil.put(errorCodeVO.getCode(), errorCodeVO.getMessage());
// // 记录下更新时间,方便增量更新
// maxUpdateTime = DateUtil.max(maxUpdateTime, errorCodeVO.getUpdateTime());
// });
// }
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论