|
@@ -281,7 +281,7 @@ type CustomCondition struct {
|
|
|
|
|
|
|
|
type FormCustomConditionFunc func(c *api.Context, params request.Params, e entity.Entity, i *infrastructure.Infrastructure) (*CustomCondition, error)
|
|
type FormCustomConditionFunc func(c *api.Context, params request.Params, e entity.Entity, i *infrastructure.Infrastructure) (*CustomCondition, error)
|
|
|
|
|
|
|
|
-func Query[O any](tableName string, orderBy string, stringFieldQueryCondition string, callbacks *QueryCallbacks[O], conditionFieldCallback ConditionFieldCallback, formCustomConditionFunc FormCustomConditionFunc) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
|
|
|
|
+func Query[O any](tableName string, orderBy string, stringFieldQueryCondition string, customStringFieldQueryCondition map[string]string, callbacks *QueryCallbacks[O], conditionFieldCallback ConditionFieldCallback, formCustomConditionFunc FormCustomConditionFunc) binding.ServiceFunc[response.InfosData[O]] {
|
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (response.InfosData[O], error) {
|
|
return func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (response.InfosData[O], error) {
|
|
|
errResponse := response.InfosData[O]{
|
|
errResponse := response.InfosData[O]{
|
|
|
Infos: make([]O, 0),
|
|
Infos: make([]O, 0),
|
|
@@ -326,28 +326,31 @@ func Query[O any](tableName string, orderBy string, stringFieldQueryCondition st
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if !hasDeal {
|
|
if !hasDeal {
|
|
|
- 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("字符串字段值类型错误")
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- 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)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ 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("字符串字段值类型错误")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ queryCondition, ok := customStringFieldQueryCondition[field.FieldName]
|
|
|
|
|
+ if !ok {
|
|
|
|
|
+ queryCondition = stringFieldQueryCondition
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ 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)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|