Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xpkg
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
屠思豪
xpkg
Commits
639f55d7
提交
639f55d7
authored
11月 18, 2025
作者:
mooncake
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
a71424db
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
137 行增加
和
88 行删除
+137
-88
response.go
gin/response/response.go
+11
-10
xerror_api.go
pkg/xerrors/xerror/xerror_api.go
+45
-13
xerror_api_code.go
pkg/xerrors/xerror/xerror_api_code.go
+8
-8
xerror_api_option.go
pkg/xerrors/xerror/xerror_api_option.go
+1
-1
xerror_error.go
pkg/xerrors/xerror/xerror_error.go
+26
-10
xerror_error_code.go
pkg/xerrors/xerror/xerror_error_code.go
+2
-2
xerror_error_format.go
pkg/xerrors/xerror/xerror_error_format.go
+1
-1
xerror_error_json.go
pkg/xerrors/xerror/xerror_error_json.go
+1
-1
xerror_error_stack.go
pkg/xerrors/xerror/xerror_error_stack.go
+2
-2
xerror_z_unit_test.go
pkg/xerrors/xerror/xerror_z_unit_test.go
+1
-1
controller.go
xcommon/controller.go
+4
-4
odao.go
xcommon/odao/odao.go
+35
-35
没有找到文件。
gin/response/response.go
浏览文件 @
639f55d7
...
@@ -4,6 +4,7 @@ package response
...
@@ -4,6 +4,7 @@ package response
import
(
import
(
"bytes"
"bytes"
"encoding/json"
"encoding/json"
"fmt"
"net/http"
"net/http"
"strconv"
"strconv"
"time"
"time"
...
@@ -267,17 +268,17 @@ func Error(c *gin.Context, err error) {
...
@@ -267,17 +268,17 @@ func Error(c *gin.Context, err error) {
c
.
Set
(
ctxutils
.
KeyRspCode
,
0
)
c
.
Set
(
ctxutils
.
KeyRspCode
,
0
)
msg
:=
""
msg
:=
""
if
err
!=
nil
{
if
err
!=
nil
{
msg
=
err
.
Error
()
switch
e
:=
err
.
(
type
)
{
if
e
,
ok
:=
err
.
(
*
xerror
.
Error
);
ok
{
case
*
xerror
.
BizError
,
*
xerror
.
ParamError
:
//if !errcode.IsSysDefinedError(xerr.Code()) {
msg
=
e
.
Error
()
// logger.Error(err.Error(), logger.Err(err), ctxutils.GinTraceIDField(c))
case
*
xerror
.
DBError
,
*
xerror
.
NetError
:
//}
logger
.
Error
(
fmt
.
Sprintf
(
"[response]%s"
,
err
.
Error
()),
ctxutils
.
GinTraceIDField
(
c
))
if
e
.
Code
()
!=
errcode
.
InvalidParams
.
Code
()
{
msg
=
"网络开小差了,请稍后再试~"
logger
.
Error
(
err
.
Error
(),
logger
.
Err
(
err
),
ctxutils
.
GinTraceIDField
(
c
))
default
:
}
msg
=
e
.
Error
()
}
else
{
logger
.
Error
(
fmt
.
Sprintf
(
"[response]%s"
,
err
.
Error
()),
ctxutils
.
GinTraceIDField
(
c
))
logger
.
Error
(
err
.
Error
(),
logger
.
Err
(
err
),
ctxutils
.
GinTraceIDField
(
c
))
}
}
}
}
respJSONWith200
(
c
,
CustomErrorCode
,
msg
)
respJSONWith200
(
c
,
CustomErrorCode
,
msg
)
}
}
pkg/xerrors/xerror/xerror_api.go
浏览文件 @
639f55d7
...
@@ -8,16 +8,48 @@ import (
...
@@ -8,16 +8,48 @@ import (
// New 用于创建一个自定义文本错误信息的 error 对象,并包含堆栈信息。
// New 用于创建一个自定义文本错误信息的 error 对象,并包含堆栈信息。
func
New
(
text
string
)
error
{
func
New
(
text
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
text
,
text
:
text
,
code
:
xcode
.
CodeDefault
,
code
:
xcode
.
CodeDefault
,
}
}
}
}
func
NewNetError
(
text
string
)
error
{
e
:=
NetError
{}
e
.
stack
=
callers
()
e
.
text
=
text
e
.
code
=
xcode
.
CodeDefault
return
&
e
}
func
NewDBError
(
text
string
)
error
{
e
:=
DBError
{}
e
.
stack
=
callers
()
e
.
text
=
text
e
.
code
=
xcode
.
CodeDefault
return
&
e
}
func
NewParamError
(
text
string
)
error
{
e
:=
ParamError
{}
e
.
stack
=
callers
()
e
.
text
=
text
e
.
code
=
xcode
.
CodeDefault
return
&
e
}
func
NewBizError
(
text
string
)
error
{
e
:=
BizError
{}
e
.
stack
=
callers
()
e
.
text
=
text
e
.
code
=
xcode
.
CodeDefault
return
&
e
}
// NewC add code
// NewC add code
func
NewC
(
code
int
,
text
string
)
error
{
func
NewC
(
code
int
,
text
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
text
,
text
:
text
,
code
:
code
,
code
:
code
,
...
@@ -49,21 +81,21 @@ func Join(errs ...error) error {
...
@@ -49,21 +81,21 @@ func Join(errs ...error) error {
// Newf 用于创建一个自定义文本错误带参数信息的 error 对象,并包含堆栈信息。
// Newf 用于创建一个自定义文本错误带参数信息的 error 对象,并包含堆栈信息。
func
Newf
(
format
string
,
args
...
any
)
error
{
func
Newf
(
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
xcode
.
CodeDefault
,
code
:
xcode
.
CodeDefault
,
}
}
}
}
func
Errorf
(
format
string
,
args
...
any
)
error
{
func
Errorf
(
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
xcode
.
CodeDefault
,
code
:
xcode
.
CodeDefault
,
}
}
}
}
func
NewCf
(
code
int
,
format
string
,
args
...
any
)
error
{
func
NewCf
(
code
int
,
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
code
,
code
:
code
,
...
@@ -73,7 +105,7 @@ func NewCf(code int, format string, args ...any) error {
...
@@ -73,7 +105,7 @@ func NewCf(code int, format string, args ...any) error {
// NewSkip 用于创建一个自定义错误信息的 error 对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
// NewSkip 用于创建一个自定义错误信息的 error 对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
// 参数 `skip` 指定堆栈跳过的层数。
// 参数 `skip` 指定堆栈跳过的层数。
func
NewSkip
(
skip
int
,
text
string
)
error
{
func
NewSkip
(
skip
int
,
text
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
text
,
text
:
text
,
code
:
xcode
.
CodeDefault
,
code
:
xcode
.
CodeDefault
,
...
@@ -81,7 +113,7 @@ func NewSkip(skip int, text string) error {
...
@@ -81,7 +113,7 @@ func NewSkip(skip int, text string) error {
}
}
func
NewSkipC
(
code
,
skip
int
,
text
string
)
error
{
func
NewSkipC
(
code
,
skip
int
,
text
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
text
,
text
:
text
,
code
:
code
,
code
:
code
,
...
@@ -91,7 +123,7 @@ func NewSkipC(code, skip int, text string) error {
...
@@ -91,7 +123,7 @@ func NewSkipC(code, skip int, text string) error {
// NewSkipf 用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
// NewSkipf 用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
// 参数 `skip` 指定堆栈跳过的层数。
// 参数 `skip` 指定堆栈跳过的层数。
func
NewSkipf
(
skip
int
,
format
string
,
args
...
any
)
error
{
func
NewSkipf
(
skip
int
,
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
xcode
.
CodeDefault
,
code
:
xcode
.
CodeDefault
,
...
@@ -99,7 +131,7 @@ func NewSkipf(skip int, format string, args ...any) error {
...
@@ -99,7 +131,7 @@ func NewSkipf(skip int, format string, args ...any) error {
}
}
func
NewSkipCf
(
code
,
skip
int
,
format
string
,
args
...
any
)
error
{
func
NewSkipCf
(
code
,
skip
int
,
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
code
,
code
:
code
,
...
@@ -112,7 +144,7 @@ func Wrap(err error, text string) error {
...
@@ -112,7 +144,7 @@ func Wrap(err error, text string) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(),
stack
:
callers
(),
text
:
text
,
text
:
text
,
...
@@ -125,7 +157,7 @@ func Wrapf(err error, format string, args ...any) error {
...
@@ -125,7 +157,7 @@ func Wrapf(err error, format string, args ...any) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
...
@@ -138,7 +170,7 @@ func WrapSkip(skip int, err error, text string) error {
...
@@ -138,7 +170,7 @@ func WrapSkip(skip int, err error, text string) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
text
,
text
:
text
,
...
@@ -151,7 +183,7 @@ func WrapSkipf(skip int, err error, format string, args ...any) error {
...
@@ -151,7 +183,7 @@ func WrapSkipf(skip int, err error, format string, args ...any) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
...
...
pkg/xerrors/xerror/xerror_api_code.go
浏览文件 @
639f55d7
...
@@ -9,7 +9,7 @@ import (
...
@@ -9,7 +9,7 @@ import (
// NewCode 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
// NewCode 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
func
NewCode
(
code
int
,
text
...
string
)
error
{
func
NewCode
(
code
int
,
text
...
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
strings
.
Join
(
text
,
separatorSpace
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
code
:
code
,
code
:
code
,
...
@@ -18,7 +18,7 @@ func NewCode(code int, text ...string) error {
...
@@ -18,7 +18,7 @@ func NewCode(code int, text ...string) error {
// NewCodef 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
// NewCodef 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
func
NewCodef
(
code
int
,
format
string
,
args
...
any
)
error
{
func
NewCodef
(
code
int
,
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
code
,
code
:
code
,
...
@@ -27,7 +27,7 @@ func NewCodef(code int, format string, args ...any) error {
...
@@ -27,7 +27,7 @@ func NewCodef(code int, format string, args ...any) error {
// NewCodeSkip 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
// NewCodeSkip 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func
NewCodeSkip
(
code
int
,
skip
int
,
text
...
string
)
error
{
func
NewCodeSkip
(
code
int
,
skip
int
,
text
...
string
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
code
:
code
,
code
:
code
,
...
@@ -36,7 +36,7 @@ func NewCodeSkip(code int, skip int, text ...string) error {
...
@@ -36,7 +36,7 @@ func NewCodeSkip(code int, skip int, text ...string) error {
// NewCodeSkipf 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
// NewCodeSkipf 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func
NewCodeSkipf
(
code
int
,
skip
int
,
format
string
,
args
...
any
)
error
{
func
NewCodeSkipf
(
code
int
,
skip
int
,
format
string
,
args
...
any
)
error
{
return
&
Err
or
{
return
&
Err
{
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
code
:
code
,
code
:
code
,
...
@@ -48,7 +48,7 @@ func WrapCode(code int, err error, text ...string) error {
...
@@ -48,7 +48,7 @@ func WrapCode(code int, err error, text ...string) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(),
stack
:
callers
(),
text
:
strings
.
Join
(
text
,
separatorSpace
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
...
@@ -61,7 +61,7 @@ func WrapCodef(code int, err error, format string, args ...any) error {
...
@@ -61,7 +61,7 @@ func WrapCodef(code int, err error, format string, args ...any) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(),
stack
:
callers
(),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
...
@@ -74,7 +74,7 @@ func WrapCodeSkip(code int, skip int, err error, text ...string) error {
...
@@ -74,7 +74,7 @@ func WrapCodeSkip(code int, skip int, err error, text ...string) error {
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
text
:
strings
.
Join
(
text
,
separatorSpace
),
...
@@ -87,7 +87,7 @@ func WrapCodeSkipf(code int, skip int, err error, format string, args ...any) er
...
@@ -87,7 +87,7 @@ func WrapCodeSkipf(code int, skip int, err error, format string, args ...any) er
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
err
,
error
:
err
,
stack
:
callers
(
skip
),
stack
:
callers
(
skip
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
text
:
fmt
.
Sprintf
(
format
,
args
...
),
...
...
pkg/xerrors/xerror/xerror_api_option.go
浏览文件 @
639f55d7
...
@@ -10,7 +10,7 @@ type Option struct {
...
@@ -10,7 +10,7 @@ type Option struct {
// NewOption 用于自定义配置的错误对象创建。
// NewOption 用于自定义配置的错误对象创建。
func
NewOption
(
option
Option
)
error
{
func
NewOption
(
option
Option
)
error
{
err
:=
&
Err
or
{
err
:=
&
Err
{
error
:
option
.
Error
,
error
:
option
.
Error
,
text
:
option
.
Text
,
text
:
option
.
Text
,
code
:
option
.
Code
,
code
:
option
.
Code
,
...
...
pkg/xerrors/xerror/xerror_error.go
浏览文件 @
639f55d7
...
@@ -8,14 +8,30 @@ import (
...
@@ -8,14 +8,30 @@ import (
"github.com/pkg/errors"
"github.com/pkg/errors"
)
)
// Err
or
自定义错误对象。
// Err 自定义错误对象。
type
Err
or
struct
{
type
Err
struct
{
error
error
// 包装错误。
error
error
// 包装错误。
stack
stack
// 堆栈数组,当创建或包装此错误时记录堆栈信息。
stack
stack
// 堆栈数组,当创建或包装此错误时记录堆栈信息。
text
string
// 创建错误时自定义错误文本。
text
string
// 创建错误时自定义错误文本。
code
int
// 如有必要,错误码。
code
int
// 如有必要,错误码。
}
}
type
NetError
struct
{
Err
}
type
DBError
struct
{
Err
}
type
ParamError
struct
{
Err
}
type
BizError
struct
{
Err
}
const
(
const
(
// stackFilterKeyLocal 过滤当前错误模块路径的键。
// stackFilterKeyLocal 过滤当前错误模块路径的键。
stackFilterKeyLocal
=
"/xerrors/xerror"
stackFilterKeyLocal
=
"/xerrors/xerror"
...
@@ -33,7 +49,7 @@ func init() {
...
@@ -33,7 +49,7 @@ func init() {
}
}
// Error 实现错误的接口,它将所有错误返回为字符串。
// Error 实现错误的接口,它将所有错误返回为字符串。
func
(
err
*
Err
or
)
Error
()
string
{
func
(
err
*
Err
)
Error
()
string
{
if
err
==
nil
{
if
err
==
nil
{
return
""
return
""
}
}
...
@@ -48,14 +64,14 @@ func (err *Error) Error() string {
...
@@ -48,14 +64,14 @@ func (err *Error) Error() string {
}
}
// Cause 获取根错误 error。
// Cause 获取根错误 error。
func
(
err
*
Err
or
)
Cause
()
error
{
func
(
err
*
Err
)
Cause
()
error
{
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
loop
:=
err
loop
:=
err
for
loop
!=
nil
{
for
loop
!=
nil
{
if
loop
.
error
!=
nil
{
if
loop
.
error
!=
nil
{
if
e
,
ok
:=
loop
.
error
.
(
*
Err
or
);
ok
{
if
e
,
ok
:=
loop
.
error
.
(
*
Err
);
ok
{
// 内部自定义错误。
// 内部自定义错误。
loop
=
e
loop
=
e
}
else
if
e
,
ok
:=
loop
.
error
.
(
ICause
);
ok
{
}
else
if
e
,
ok
:=
loop
.
error
.
(
ICause
);
ok
{
...
@@ -76,11 +92,11 @@ func (err *Error) Cause() error {
...
@@ -76,11 +92,11 @@ func (err *Error) Cause() error {
// Current 获取当前 error。
// Current 获取当前 error。
// 如果当前错误是 nil, 则返回 nil。
// 如果当前错误是 nil, 则返回 nil。
func
(
err
*
Err
or
)
Current
()
error
{
func
(
err
*
Err
)
Current
()
error
{
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
return
&
Err
or
{
return
&
Err
{
error
:
nil
,
error
:
nil
,
stack
:
err
.
stack
,
stack
:
err
.
stack
,
text
:
err
.
text
,
text
:
err
.
text
,
...
@@ -89,7 +105,7 @@ func (err *Error) Current() error {
...
@@ -89,7 +105,7 @@ func (err *Error) Current() error {
}
}
// Unwrap 获取下一层 error。
// Unwrap 获取下一层 error。
func
(
err
*
Err
or
)
Unwrap
()
error
{
func
(
err
*
Err
)
Unwrap
()
error
{
if
err
==
nil
{
if
err
==
nil
{
return
nil
return
nil
}
}
...
@@ -98,7 +114,7 @@ func (err *Error) Unwrap() error {
...
@@ -98,7 +114,7 @@ func (err *Error) Unwrap() error {
// Equal 错误对象比较。
// Equal 错误对象比较。
// 如果它们的 `code` 和 `text` 都相同,则认为错误相同。
// 如果它们的 `code` 和 `text` 都相同,则认为错误相同。
func
(
err
*
Err
or
)
Equal
(
target
error
)
bool
{
func
(
err
*
Err
)
Equal
(
target
error
)
bool
{
if
err
.
Error
()
==
target
.
Error
()
{
if
err
.
Error
()
==
target
.
Error
()
{
return
true
return
true
}
}
...
@@ -112,7 +128,7 @@ func (err *Error) Equal(target error) bool {
...
@@ -112,7 +128,7 @@ func (err *Error) Equal(target error) bool {
}
}
// Is 当前错误 `err` 的链接错误中是否包含错误 `target`。
// Is 当前错误 `err` 的链接错误中是否包含错误 `target`。
func
(
err
*
Err
or
)
Is
(
target
error
)
bool
{
func
(
err
*
Err
)
Is
(
target
error
)
bool
{
if
Equal
(
err
,
target
)
{
if
Equal
(
err
,
target
)
{
return
true
return
true
}
}
...
...
pkg/xerrors/xerror/xerror_error_code.go
浏览文件 @
639f55d7
...
@@ -4,7 +4,7 @@ import "gitlab.wanzhuangkj.com/tush/xpkg/pkg/xerrors/xcode"
...
@@ -4,7 +4,7 @@ import "gitlab.wanzhuangkj.com/tush/xpkg/pkg/xerrors/xcode"
// Code 获取错误码。
// Code 获取错误码。
// 如果没有错误代码,则返回 `xcode.CodeDefault`。
// 如果没有错误代码,则返回 `xcode.CodeDefault`。
func
(
err
*
Err
or
)
Code
()
int
{
func
(
err
*
Err
)
Code
()
int
{
if
err
==
nil
{
if
err
==
nil
{
return
xcode
.
CodeDefault
return
xcode
.
CodeDefault
}
}
...
@@ -15,7 +15,7 @@ func (err *Error) Code() int {
...
@@ -15,7 +15,7 @@ func (err *Error) Code() int {
}
}
// SetCode 使用指定 `code` 更新内部 `code` 。
// SetCode 使用指定 `code` 更新内部 `code` 。
func
(
err
*
Err
or
)
SetCode
(
code
int
)
{
func
(
err
*
Err
)
SetCode
(
code
int
)
{
if
err
==
nil
{
if
err
==
nil
{
return
return
}
}
...
...
pkg/xerrors/xerror/xerror_error_format.go
浏览文件 @
639f55d7
...
@@ -11,7 +11,7 @@ import (
...
@@ -11,7 +11,7 @@ import (
// %-v, %-s : 打印当前级别错误字符串;
// %-v, %-s : 打印当前级别错误字符串;
// %+s : 打印完整堆栈错误列表;
// %+s : 打印完整堆栈错误列表;
// %+v : 打印错误字符串和完整堆栈错误列表
// %+v : 打印错误字符串和完整堆栈错误列表
func
(
err
*
Err
or
)
Format
(
s
fmt
.
State
,
verb
rune
)
{
func
(
err
*
Err
)
Format
(
s
fmt
.
State
,
verb
rune
)
{
switch
verb
{
switch
verb
{
case
's'
,
'v'
:
case
's'
,
'v'
:
switch
{
switch
{
...
...
pkg/xerrors/xerror/xerror_error_json.go
浏览文件 @
639f55d7
...
@@ -2,6 +2,6 @@ package xerror
...
@@ -2,6 +2,6 @@ package xerror
// MarshalJSON 实现 json.Marshal 接口。
// MarshalJSON 实现 json.Marshal 接口。
// 注:这里不要使用指针作为其接收器。
// 注:这里不要使用指针作为其接收器。
func
(
err
Err
or
)
MarshalJSON
()
([]
byte
,
error
)
{
func
(
err
Err
)
MarshalJSON
()
([]
byte
,
error
)
{
return
[]
byte
(
`"`
+
err
.
Error
()
+
`"`
),
nil
return
[]
byte
(
`"`
+
err
.
Error
()
+
`"`
),
nil
}
}
pkg/xerrors/xerror/xerror_error_stack.go
浏览文件 @
639f55d7
...
@@ -22,7 +22,7 @@ type stackLine struct {
...
@@ -22,7 +22,7 @@ type stackLine struct {
}
}
// Stack 以字符串形式返回错误堆栈信息。
// Stack 以字符串形式返回错误堆栈信息。
func
(
err
*
Err
or
)
Stack
()
string
{
func
(
err
*
Err
)
Stack
()
string
{
if
err
==
nil
{
if
err
==
nil
{
return
""
return
""
}
}
...
@@ -40,7 +40,7 @@ func (err *Error) Stack() string {
...
@@ -40,7 +40,7 @@ func (err *Error) Stack() string {
infos
=
append
(
infos
,
info
)
infos
=
append
(
infos
,
info
)
loopLinesOfStackInfo
(
loop
.
stack
,
info
)
loopLinesOfStackInfo
(
loop
.
stack
,
info
)
if
loop
.
error
!=
nil
{
if
loop
.
error
!=
nil
{
if
e
,
ok
:=
loop
.
error
.
(
*
Err
or
);
ok
{
if
e
,
ok
:=
loop
.
error
.
(
*
Err
);
ok
{
loop
=
e
loop
=
e
}
else
{
}
else
{
infos
=
append
(
infos
,
&
stackInfo
{
infos
=
append
(
infos
,
&
stackInfo
{
...
...
pkg/xerrors/xerror/xerror_z_unit_test.go
浏览文件 @
639f55d7
...
@@ -221,7 +221,7 @@ func Test_SetCode(t *testing.T) {
...
@@ -221,7 +221,7 @@ func Test_SetCode(t *testing.T) {
assert
.
Equal
(
t
,
xerror
.
Code
(
err
),
-
1
)
assert
.
Equal
(
t
,
xerror
.
Code
(
err
),
-
1
)
assert
.
Equal
(
t
,
err
.
Error
(),
"123"
)
assert
.
Equal
(
t
,
err
.
Error
(),
"123"
)
err
.
(
*
xerror
.
Err
or
)
.
SetCode
(
xcode
.
CodeValidationFailed
)
err
.
(
*
xerror
.
Err
)
.
SetCode
(
xcode
.
CodeValidationFailed
)
assert
.
Equal
(
t
,
xerror
.
Code
(
err
),
xcode
.
CodeValidationFailed
)
assert
.
Equal
(
t
,
xerror
.
Code
(
err
),
xcode
.
CodeValidationFailed
)
assert
.
Equal
(
t
,
err
.
Error
(),
"123"
)
assert
.
Equal
(
t
,
err
.
Error
(),
"123"
)
}
}
...
...
xcommon/controller.go
浏览文件 @
639f55d7
...
@@ -2,7 +2,6 @@ package xcommon
...
@@ -2,7 +2,6 @@ package xcommon
import
(
import
(
"context"
"context"
"errors"
"net/http"
"net/http"
"os"
"os"
"reflect"
"reflect"
...
@@ -57,13 +56,14 @@ func (e *Controller) Bind(c *gin.Context, req any) error {
...
@@ -57,13 +56,14 @@ func (e *Controller) Bind(c *gin.Context, req any) error {
if
valid
,
ok
:=
req
.
(
IValid
);
ok
{
if
valid
,
ok
:=
req
.
(
IValid
);
ok
{
if
err
:=
valid
.
Valid
();
err
!=
nil
{
if
err
:=
valid
.
Valid
();
err
!=
nil
{
return
err
return
xerror
.
NewParamError
(
err
.
Error
())
}
}
}
}
storePagination
(
req
,
reflectPagination
(
c
))
storePagination
(
req
,
reflectPagination
(
c
))
c
.
Set
(
"reqbody"
,
req
)
c
.
Set
(
"reqbody"
,
req
)
return
nil
return
nil
}
}
...
@@ -106,9 +106,9 @@ func zhError(err error) error {
...
@@ -106,9 +106,9 @@ func zhError(err error) error {
strs
=
append
(
strs
,
zhStr
)
strs
=
append
(
strs
,
zhStr
)
}
}
if
len
(
strs
)
>
0
{
if
len
(
strs
)
>
0
{
return
errors
.
New
(
strings
.
Join
(
strs
,
";"
))
return
xerror
.
NewParamError
(
strings
.
Join
(
strs
,
";"
))
}
else
{
}
else
{
return
xerror
.
Join
(
errs
)
return
xerror
.
NewParamError
(
xerror
.
Join
(
errs
)
.
Error
()
)
}
}
}
}
return
err
return
err
...
...
xcommon/odao/odao.go
浏览文件 @
639f55d7
...
@@ -67,7 +67,7 @@ func (x *ODao[T]) deleteCaches(ctx context.Context, ids []xsf.ID) error {
...
@@ -67,7 +67,7 @@ func (x *ODao[T]) deleteCaches(ctx context.Context, ids []xsf.ID) error {
func
(
x
*
ODao
[
T
])
TruncateTable
(
ctx
context
.
Context
)
error
{
func
(
x
*
ODao
[
T
])
TruncateTable
(
ctx
context
.
Context
)
error
{
var
t
T
var
t
T
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Exec
(
fmt
.
Sprintf
(
"truncate table `%s`"
,
t
.
TableName
()))
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Exec
(
fmt
.
Sprintf
(
"truncate table `%s`"
,
t
.
TableName
()))
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
nil
return
nil
}
}
...
@@ -96,7 +96,7 @@ func (x *ODao[T]) CreateSliceSilent(ctx context.Context, tbs []*T) error {
...
@@ -96,7 +96,7 @@ func (x *ODao[T]) CreateSliceSilent(ctx context.Context, tbs []*T) error {
func
(
x
*
ODao
[
T
])
CreateTx
(
ctx
context
.
Context
,
tx
*
gorm
.
DB
,
tb
*
T
)
error
{
func
(
x
*
ODao
[
T
])
CreateTx
(
ctx
context
.
Context
,
tx
*
gorm
.
DB
,
tb
*
T
)
error
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Create
(
tb
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Create
(
tb
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCache
(
ctx
,
(
*
tb
)
.
GetID
())
_
=
x
.
deleteCache
(
ctx
,
(
*
tb
)
.
GetID
())
return
nil
return
nil
...
@@ -107,7 +107,7 @@ func (x *ODao[T]) CreateSliceInBatches(ctx context.Context, tbs []*T, batchSize
...
@@ -107,7 +107,7 @@ func (x *ODao[T]) CreateSliceInBatches(ctx context.Context, tbs []*T, batchSize
return
nil
return
nil
}
}
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
CreateInBatches
(
tbs
,
batchSize
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
CreateInBatches
(
tbs
,
batchSize
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCaches
(
ctx
,
x
.
getIDs
(
tbs
))
_
=
x
.
deleteCaches
(
ctx
,
x
.
getIDs
(
tbs
))
return
nil
return
nil
...
@@ -118,7 +118,7 @@ func (x *ODao[T]) CreateSliceTx(ctx context.Context, tx *gorm.DB, tbs []*T) erro
...
@@ -118,7 +118,7 @@ func (x *ODao[T]) CreateSliceTx(ctx context.Context, tx *gorm.DB, tbs []*T) erro
return
nil
return
nil
}
}
if
err
:=
tx
.
WithContext
(
ctx
)
.
Create
(
tbs
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Create
(
tbs
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCaches
(
ctx
,
x
.
getIDs
(
tbs
))
_
=
x
.
deleteCaches
(
ctx
,
x
.
getIDs
(
tbs
))
return
nil
return
nil
...
@@ -154,7 +154,7 @@ func (x *ODao[T]) DeleteByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID) erro
...
@@ -154,7 +154,7 @@ func (x *ODao[T]) DeleteByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID) erro
}
}
var
tb
T
var
tb
T
if
err
:=
tx
.
WithContext
(
ctx
)
.
Where
(
"id = ?"
,
id
)
.
Delete
(
&
tb
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Where
(
"id = ?"
,
id
)
.
Delete
(
&
tb
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCache
(
ctx
,
id
)
_
=
x
.
deleteCache
(
ctx
,
id
)
return
nil
return
nil
...
@@ -166,7 +166,7 @@ func (x *ODao[T]) DeleteByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID)
...
@@ -166,7 +166,7 @@ func (x *ODao[T]) DeleteByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID)
}
}
var
tb
T
var
tb
T
if
err
:=
tx
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
ids
)
.
Delete
(
&
tb
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
ids
)
.
Delete
(
&
tb
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCaches
(
ctx
,
ids
)
_
=
x
.
deleteCaches
(
ctx
,
ids
)
return
nil
return
nil
...
@@ -216,7 +216,7 @@ func (x *ODao[T]) updByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID, upd any
...
@@ -216,7 +216,7 @@ func (x *ODao[T]) updByIDTx(ctx context.Context, tx *gorm.DB, id xsf.ID, upd any
}
}
var
table
T
var
table
T
if
err
:=
tx
.
WithContext
(
ctx
)
.
Model
(
&
table
)
.
Where
(
"id = ?"
,
id
)
.
Updates
(
upd
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Model
(
&
table
)
.
Where
(
"id = ?"
,
id
)
.
Updates
(
upd
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCache
(
ctx
,
id
)
_
=
x
.
deleteCache
(
ctx
,
id
)
return
nil
return
nil
...
@@ -264,7 +264,7 @@ func (x *ODao[T]) updByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, upd
...
@@ -264,7 +264,7 @@ func (x *ODao[T]) updByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, upd
}
}
var
table
T
var
table
T
if
err
:=
tx
.
WithContext
(
ctx
)
.
Model
(
&
table
)
.
Where
(
"id IN (?)"
,
ids
)
.
Updates
(
upd
)
.
Error
;
err
!=
nil
{
if
err
:=
tx
.
WithContext
(
ctx
)
.
Model
(
&
table
)
.
Where
(
"id IN (?)"
,
ids
)
.
Updates
(
upd
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
_
=
x
.
deleteCaches
(
ctx
,
ids
)
_
=
x
.
deleteCaches
(
ctx
,
ids
)
return
nil
return
nil
...
@@ -272,7 +272,7 @@ func (x *ODao[T]) updByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, upd
...
@@ -272,7 +272,7 @@ func (x *ODao[T]) updByIDsTx(ctx context.Context, tx *gorm.DB, ids []xsf.ID, upd
func
(
x
*
ODao
[
T
])
GetAll
(
ctx
context
.
Context
)
(
records
[]
*
T
,
err
error
)
{
func
(
x
*
ODao
[
T
])
GetAll
(
ctx
context
.
Context
)
(
records
[]
*
T
,
err
error
)
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
records
,
nil
return
records
,
nil
}
}
...
@@ -306,13 +306,13 @@ func (x *ODao[T]) Page(ctx context.Context, where IPageParams) (rs []*T, total i
...
@@ -306,13 +306,13 @@ func (x *ODao[T]) Page(ctx context.Context, where IPageParams) (rs []*T, total i
condition
=
condition
.
Unscoped
()
condition
=
condition
.
Unscoped
()
}
}
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
return
rs
,
total
,
xerror
.
New
(
err
.
Error
())
return
rs
,
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
if
total
==
0
{
if
total
==
0
{
return
rs
,
total
,
nil
return
rs
,
total
,
nil
}
}
if
err
=
condition
.
Limit
(
where
.
GetLimit
())
.
Offset
(
where
.
GetOffset
())
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Limit
(
where
.
GetLimit
())
.
Offset
(
where
.
GetOffset
())
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
rs
,
total
,
xerror
.
New
(
err
.
Error
())
return
rs
,
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
total
,
nil
return
rs
,
total
,
nil
}
}
...
@@ -323,14 +323,14 @@ func (x *ODao[T]) JPage(ctx context.Context, where IPageParams, result any, resu
...
@@ -323,14 +323,14 @@ func (x *ODao[T]) JPage(ctx context.Context, where IPageParams, result any, resu
condition
=
condition
.
Unscoped
()
condition
=
condition
.
Unscoped
()
}
}
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
return
total
,
xerror
.
New
(
err
.
Error
())
return
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
if
total
==
0
{
if
total
==
0
{
return
total
,
nil
return
total
,
nil
}
}
fields
:=
GetGormTags
(
resultType
)
fields
:=
GetGormTags
(
resultType
)
if
err
=
condition
.
Select
(
strings
.
Join
(
fields
,
","
))
.
Limit
(
where
.
GetLimit
())
.
Offset
(
where
.
GetOffset
())
.
Scan
(
result
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Select
(
strings
.
Join
(
fields
,
","
))
.
Limit
(
where
.
GetLimit
())
.
Offset
(
where
.
GetOffset
())
.
Scan
(
result
)
.
Error
;
err
!=
nil
{
return
total
,
xerror
.
New
(
err
.
Error
())
return
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
total
,
nil
return
total
,
nil
}
}
...
@@ -341,14 +341,14 @@ func (x *ODao[T]) JList(ctx context.Context, where IListParams, result any, resu
...
@@ -341,14 +341,14 @@ func (x *ODao[T]) JList(ctx context.Context, where IListParams, result any, resu
condition
=
condition
.
Unscoped
()
condition
=
condition
.
Unscoped
()
}
}
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
return
total
,
xerror
.
New
(
err
.
Error
())
return
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
if
total
==
0
{
if
total
==
0
{
return
total
,
nil
return
total
,
nil
}
}
fields
:=
GetGormTags
(
resultType
)
fields
:=
GetGormTags
(
resultType
)
if
err
=
condition
.
Select
(
strings
.
Join
(
fields
,
","
))
.
Scan
(
result
)
.
Error
;
err
!=
nil
{
if
err
=
condition
.
Select
(
strings
.
Join
(
fields
,
","
))
.
Scan
(
result
)
.
Error
;
err
!=
nil
{
return
total
,
xerror
.
New
(
err
.
Error
())
return
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
total
,
nil
return
total
,
nil
}
}
...
@@ -361,7 +361,7 @@ func (x *ODao[T]) GetPageByColumns(ctx context.Context, params *query.Params) (r
...
@@ -361,7 +361,7 @@ func (x *ODao[T]) GetPageByColumns(ctx context.Context, params *query.Params) (r
if
params
.
Sort
!=
OrderIgnoreCount
{
if
params
.
Sort
!=
OrderIgnoreCount
{
var
tb
T
var
tb
T
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Model
(
&
tb
)
.
Where
(
queryStr
,
args
...
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Model
(
&
tb
)
.
Where
(
queryStr
,
args
...
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
return
nil
,
0
,
xerror
.
New
(
err
.
Error
())
return
nil
,
0
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
if
total
==
0
{
if
total
==
0
{
return
nil
,
total
,
nil
return
nil
,
total
,
nil
...
@@ -369,7 +369,7 @@ func (x *ODao[T]) GetPageByColumns(ctx context.Context, params *query.Params) (r
...
@@ -369,7 +369,7 @@ func (x *ODao[T]) GetPageByColumns(ctx context.Context, params *query.Params) (r
}
}
order
,
limit
,
offset
:=
params
.
ConvertToPage
()
order
,
limit
,
offset
:=
params
.
ConvertToPage
()
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Order
(
order
)
.
Limit
(
limit
)
.
Offset
(
offset
)
.
Where
(
queryStr
,
args
...
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Order
(
order
)
.
Limit
(
limit
)
.
Offset
(
offset
)
.
Where
(
queryStr
,
args
...
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
nil
,
0
,
xerror
.
New
(
err
.
Error
())
return
nil
,
0
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
total
,
err
return
rs
,
total
,
err
}
}
...
@@ -380,7 +380,7 @@ func (x *ODao[T]) GetSliceByCondition(ctx context.Context, c *query.Conditions)
...
@@ -380,7 +380,7 @@ func (x *ODao[T]) GetSliceByCondition(ctx context.Context, c *query.Conditions)
return
nil
,
err
return
nil
,
err
}
}
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
queryStr
,
args
...
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
queryStr
,
args
...
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
nil
return
rs
,
nil
}
}
...
@@ -391,7 +391,7 @@ func (x *ODao[T]) GetSliceByLastID(ctx context.Context, lastID xsf.ID, limit int
...
@@ -391,7 +391,7 @@ func (x *ODao[T]) GetSliceByLastID(ctx context.Context, lastID xsf.ID, limit int
}
}
page
:=
query
.
NewPage
(
0
,
limit
,
sort
)
page
:=
query
.
NewPage
(
0
,
limit
,
sort
)
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Order
(
page
.
Sort
())
.
Limit
(
page
.
Limit
())
.
Where
(
"id < ?"
,
lastID
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Order
(
page
.
Sort
())
.
Limit
(
page
.
Limit
())
.
Where
(
"id < ?"
,
lastID
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
nil
return
rs
,
nil
}
}
...
@@ -401,14 +401,14 @@ func (x *ODao[T]) GetByWhere(ctx context.Context, query any, args ...any) (recor
...
@@ -401,14 +401,14 @@ func (x *ODao[T]) GetByWhere(ctx context.Context, query any, args ...any) (recor
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
return
nil
,
nil
}
}
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
record
,
nil
return
record
,
nil
}
}
func
(
x
*
ODao
[
T
])
QuerySliceTotal
(
ctx
context
.
Context
,
where
Query
,
total
*
int64
)
error
{
func
(
x
*
ODao
[
T
])
QuerySliceTotal
(
ctx
context
.
Context
,
where
Query
,
total
*
int64
)
error
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
total
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
total
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
nil
return
nil
}
}
...
@@ -418,7 +418,7 @@ func (x *ODao[T]) GetSliceByWhere(ctx context.Context, query any, args ...any) (
...
@@ -418,7 +418,7 @@ func (x *ODao[T]) GetSliceByWhere(ctx context.Context, query any, args ...any) (
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
return
nil
,
nil
}
}
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
records
,
nil
return
records
,
nil
}
}
...
@@ -431,7 +431,7 @@ func (x *ODao[T]) GetOrderSliceByWhere(ctx context.Context, order string, query
...
@@ -431,7 +431,7 @@ func (x *ODao[T]) GetOrderSliceByWhere(ctx context.Context, order string, query
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
return
nil
,
nil
return
nil
,
nil
}
}
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
records
,
nil
return
records
,
nil
}
}
...
@@ -441,7 +441,7 @@ func (x *ODao[T]) CountByWhere(ctx context.Context, where any) (count int64, err
...
@@ -441,7 +441,7 @@ func (x *ODao[T]) CountByWhere(ctx context.Context, where any) (count int64, err
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
if
xerror
.
Is
(
err
,
gorm
.
ErrRecordNotFound
)
{
return
0
,
nil
return
0
,
nil
}
}
return
0
,
xerror
.
New
(
err
.
Error
())
return
0
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
count
,
nil
return
count
,
nil
}
}
...
@@ -455,7 +455,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
...
@@ -455,7 +455,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
if
xerror
.
Is
(
err
,
ErrRecordNotFound
)
{
if
xerror
.
Is
(
err
,
ErrRecordNotFound
)
{
return
nil
,
nil
return
nil
,
nil
}
}
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
record
,
nil
return
record
,
nil
}
}
...
@@ -473,7 +473,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
...
@@ -473,7 +473,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
}
}
return
nil
,
nil
return
nil
,
nil
}
}
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
if
err
=
x
.
Cache
.
Set
(
ctx
,
id
,
record
,
x
.
Cache
.
ExpireTime
);
err
!=
nil
{
if
err
=
x
.
Cache
.
Set
(
ctx
,
id
,
record
,
x
.
Cache
.
ExpireTime
);
err
!=
nil
{
logger
.
Warn
(
"cache.Set error"
,
logger
.
Err
(
err
),
logger
.
Any
(
"id"
,
id
),
ctxutils
.
CtxTraceIDField
(
ctx
))
logger
.
Warn
(
"cache.Set error"
,
logger
.
Err
(
err
),
logger
.
Any
(
"id"
,
id
),
ctxutils
.
CtxTraceIDField
(
ctx
))
...
@@ -481,7 +481,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
...
@@ -481,7 +481,7 @@ func (x *ODao[T]) GetByID(ctx context.Context, id xsf.ID) (record *T, err error)
return
record
,
nil
return
record
,
nil
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
r
,
ok
:=
val
.
(
*
T
)
r
,
ok
:=
val
.
(
*
T
)
if
!
ok
{
if
!
ok
{
...
@@ -502,7 +502,7 @@ func (x *ODao[T]) GetMapByIDs(ctx context.Context, ids []xsf.ID) (itemMap map[xs
...
@@ -502,7 +502,7 @@ func (x *ODao[T]) GetMapByIDs(ctx context.Context, ids []xsf.ID) (itemMap map[xs
if
x
.
Cache
==
nil
{
if
x
.
Cache
==
nil
{
var
records
=
make
([]
*
T
,
0
,
len
(
ids
))
var
records
=
make
([]
*
T
,
0
,
len
(
ids
))
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
ids
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
ids
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
itemMap
=
make
(
map
[
xsf
.
ID
]
*
T
)
itemMap
=
make
(
map
[
xsf
.
ID
]
*
T
)
for
_
,
record
:=
range
records
{
for
_
,
record
:=
range
records
{
...
@@ -523,7 +523,7 @@ func (x *ODao[T]) GetMapByIDs(ctx context.Context, ids []xsf.ID) (itemMap map[xs
...
@@ -523,7 +523,7 @@ func (x *ODao[T]) GetMapByIDs(ctx context.Context, ids []xsf.ID) (itemMap map[xs
if
len
(
missedIDs
)
>
0
{
if
len
(
missedIDs
)
>
0
{
var
records
[]
*
T
var
records
[]
*
T
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
missedIDs
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
if
err
=
x
.
DB
()
.
WithContext
(
ctx
)
.
Where
(
"id IN (?)"
,
missedIDs
)
.
Find
(
&
records
)
.
Error
;
err
!=
nil
{
return
nil
,
xerror
.
New
(
err
.
Error
())
return
nil
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
var
recordIDMap
=
make
(
map
[
xsf
.
ID
]
struct
{})
var
recordIDMap
=
make
(
map
[
xsf
.
ID
]
struct
{})
if
len
(
records
)
>
0
{
if
len
(
records
)
>
0
{
...
@@ -556,15 +556,15 @@ func (x *ODao[T]) CalcCondition(ctx context.Context, where IPageParams, columns
...
@@ -556,15 +556,15 @@ func (x *ODao[T]) CalcCondition(ctx context.Context, where IPageParams, columns
condition
=
condition
.
Unscoped
()
condition
=
condition
.
Unscoped
()
}
}
if
err
:=
condition
.
Order
(
""
)
.
Scan
(
ret
)
.
Error
;
err
!=
nil
{
if
err
:=
condition
.
Order
(
""
)
.
Scan
(
ret
)
.
Error
;
err
!=
nil
{
return
xerror
.
New
(
err
.
Error
())
return
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
nil
return
nil
}
}
func
(
x
*
ODao
[
T
])
Transaction
(
fc
func
(
tx
*
gorm
.
DB
)
error
,
opts
...*
sql
.
TxOptions
)
error
{
func
(
x
*
ODao
[
T
])
Transaction
(
fc
func
(
tx
*
gorm
.
DB
)
error
,
opts
...*
sql
.
TxOptions
)
error
{
if
err
:=
x
.
DB
()
.
Transaction
(
fc
,
opts
...
);
err
!=
nil
{
if
err
:=
x
.
DB
()
.
Transaction
(
fc
,
opts
...
);
err
!=
nil
{
if
_
,
ok
:=
(
err
)
.
(
*
xerror
.
Err
or
);
!
ok
{
if
_
,
ok
:=
(
err
)
.
(
*
xerror
.
Err
);
!
ok
{
err
=
xerror
.
New
(
err
.
Error
())
err
=
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
err
return
err
}
}
...
@@ -574,7 +574,7 @@ func (x *ODao[T]) Transaction(fc func(tx *gorm.DB) error, opts ...*sql.TxOptions
...
@@ -574,7 +574,7 @@ func (x *ODao[T]) Transaction(fc func(tx *gorm.DB) error, opts ...*sql.TxOptions
// GetTotal only total
// GetTotal only total
func
(
x
*
ODao
[
T
])
GetTotal
(
ctx
context
.
Context
,
where
Query
)
(
total
int64
,
err
error
)
{
func
(
x
*
ODao
[
T
])
GetTotal
(
ctx
context
.
Context
,
where
Query
)
(
total
int64
,
err
error
)
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
-
1
)
.
Offset
(
-
1
)
.
Count
(
&
total
)
.
Error
;
err
!=
nil
{
return
total
,
xerror
.
New
(
err
.
Error
())
return
total
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
total
,
nil
return
total
,
nil
}
}
...
@@ -582,7 +582,7 @@ func (x *ODao[T]) GetTotal(ctx context.Context, where Query) (total int64, err e
...
@@ -582,7 +582,7 @@ func (x *ODao[T]) GetTotal(ctx context.Context, where Query) (total int64, err e
// QuerySlice no page no total
// QuerySlice no page no total
func
(
x
*
ODao
[
T
])
QuerySlice
(
ctx
context
.
Context
,
where
Query
)
(
rs
[]
*
T
,
err
error
)
{
func
(
x
*
ODao
[
T
])
QuerySlice
(
ctx
context
.
Context
,
where
Query
)
(
rs
[]
*
T
,
err
error
)
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
rs
,
xerror
.
New
(
err
.
Error
())
return
rs
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
nil
return
rs
,
nil
}
}
...
@@ -590,7 +590,7 @@ func (x *ODao[T]) QuerySlice(ctx context.Context, where Query) (rs []*T, err err
...
@@ -590,7 +590,7 @@ func (x *ODao[T]) QuerySlice(ctx context.Context, where Query) (rs []*T, err err
// QueryPageSlice only page
// QueryPageSlice only page
func
(
x
*
ODao
[
T
])
QueryPageSlice
(
ctx
context
.
Context
,
where
Query
,
limit
,
offset
int
)
(
rs
[]
*
T
,
err
error
)
{
func
(
x
*
ODao
[
T
])
QueryPageSlice
(
ctx
context
.
Context
,
where
Query
,
limit
,
offset
int
)
(
rs
[]
*
T
,
err
error
)
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
limit
)
.
Offset
(
offset
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
if
err
:=
x
.
DB
()
.
WithContext
(
ctx
)
.
Table
(
where
.
TableName
())
.
Scopes
(
x
.
MakeCondition
(
where
))
.
Limit
(
limit
)
.
Offset
(
offset
)
.
Find
(
&
rs
)
.
Error
;
err
!=
nil
{
return
rs
,
xerror
.
New
(
err
.
Error
())
return
rs
,
xerror
.
New
DBError
(
err
.
Error
())
}
}
return
rs
,
nil
return
rs
,
nil
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论