|
|
@@ -326,34 +326,36 @@ func Query[O any](tableName string, orderBy string, stringFieldQueryCondition st
|
|
|
}
|
|
|
|
|
|
if !hasDeal {
|
|
|
- fieldValueType := reflect.TypeOf(field.Value)
|
|
|
- if fieldValueType.Kind() != reflect.String {
|
|
|
- conditions.Equal(field.ColumnName, field.Value)
|
|
|
- } else {
|
|
|
- stringValue, ok := field.Value.(string)
|
|
|
- if !ok {
|
|
|
- return errResponse, errors.New("字符串字段值类型错误")
|
|
|
- }
|
|
|
+ fieldValue := reflect.ValueOf(field.Value)
|
|
|
+ if !fieldValue.IsZero() {
|
|
|
+ if fieldValue.Type().Kind() != reflect.String {
|
|
|
+ conditions.Equal(field.ColumnName, field.Value)
|
|
|
+ } else {
|
|
|
+ stringValue, ok := field.Value.(string)
|
|
|
+ if !ok {
|
|
|
+ return errResponse, errors.New("字符串字段值类型错误")
|
|
|
+ }
|
|
|
|
|
|
- queryCondition := stringFieldQueryCondition
|
|
|
- if customStringFieldQueryCondition != nil {
|
|
|
- custom, ok := customStringFieldQueryCondition[field.FieldName]
|
|
|
- if ok {
|
|
|
- queryCondition = custom
|
|
|
+ queryCondition := stringFieldQueryCondition
|
|
|
+ if customStringFieldQueryCondition != nil {
|
|
|
+ custom, ok := customStringFieldQueryCondition[field.FieldName]
|
|
|
+ if ok {
|
|
|
+ queryCondition = custom
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- switch queryCondition {
|
|
|
- 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)
|
|
|
+ switch queryCondition {
|
|
|
+ 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)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|