|
|
@@ -14,6 +14,7 @@ import (
|
|
|
"git.sxidc.com/go-tools/utils/reflectutils"
|
|
|
"github.com/pkg/errors"
|
|
|
"reflect"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
func Create(tableName string, needCreateUserID bool, callbacks *CreateCallbacks) binding.ServiceFunc[string] {
|
|
|
@@ -197,7 +198,7 @@ func Update(tableName string, needLastUpdateUserID bool, callbacks *UpdateCallba
|
|
|
|
|
|
type ConditionFieldCallback func(conditions *sql.Conditions, fieldName string, columnName string, value any) (hasDeal bool, err error)
|
|
|
|
|
|
-func Query[O any](tableName string, orderBy string, callbacks *QueryCallbacks[O], conditionFieldCallback ConditionFieldCallback) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
+func Query[O any](tableName string, orderBy string, stringFieldQueryCondition string, callbacks *QueryCallbacks[O], conditionFieldCallback ConditionFieldCallback) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (response.InfosData[O], error) {
|
|
|
errResponse := response.InfosData[O]{
|
|
|
Infos: make([]O, 0),
|
|
|
@@ -243,7 +244,27 @@ func Query[O any](tableName string, orderBy string, callbacks *QueryCallbacks[O]
|
|
|
if !hasDeal {
|
|
|
fieldValue := reflect.ValueOf(field.Value)
|
|
|
if !fieldValue.IsZero() {
|
|
|
- conditions.Equal(field.ColumnName, field.Value)
|
|
|
+ if fieldValue.Type().Kind() != reflect.String {
|
|
|
+ conditions.Equal(field.ColumnName, field.Value)
|
|
|
+ } else {
|
|
|
+ stringValue, ok := field.Value.(string)
|
|
|
+ if !ok {
|
|
|
+ return errResponse, errors.New("字符串字段值类型错误")
|
|
|
+ }
|
|
|
+
|
|
|
+ switch stringFieldQueryCondition {
|
|
|
+ case StringFieldQueryConditionEqual:
|
|
|
+ conditions.Equal(field.ColumnName, stringValue)
|
|
|
+ case StringFieldQueryConditionTrimSpaceEqual:
|
|
|
+ conditions.Equal(field.ColumnName, strings.TrimSpace(stringValue))
|
|
|
+ case StringFieldQueryConditionLike:
|
|
|
+ conditions.Like(field.ColumnName, "%"+stringValue+"%")
|
|
|
+ case StringFieldQueryConditionTrimSpaceLike:
|
|
|
+ conditions.Like(field.ColumnName, "%"+strings.TrimSpace(stringValue)+"%")
|
|
|
+ default:
|
|
|
+ conditions.Equal(field.ColumnName, stringValue)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|