作者 yangfu

fix: query set copy set default module

@@ -128,17 +128,19 @@ func (o *QueryOptions) AdditionOptionsByTable(table *domain.Table) *QueryOptions @@ -128,17 +128,19 @@ func (o *QueryOptions) AdditionOptionsByTable(table *domain.Table) *QueryOptions
128 } 128 }
129 129
130 type Condition struct { 130 type Condition struct {
  131 + params QueryOptions
131 domain.Condition 132 domain.Condition
132 Distinct bool 133 Distinct bool
133 DisableFormat bool 134 DisableFormat bool
134 } 135 }
135 136
136 func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) { 137 func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) {
  138 + c.SetParams(params)
137 if len(c.Like) > 0 { 139 if len(c.Like) > 0 {
138 q.Where(fmt.Sprintf("%v like '%%%v%%'", c.FormatIfNull(params, c.Field), c.Like)) 140 q.Where(fmt.Sprintf("%v like '%%%v%%'", c.FormatIfNull(params, c.Field), c.Like))
139 } 141 }
140 if len(c.In) > 0 { 142 if len(c.In) > 0 {
141 - q.Where(fmt.Sprintf("cast(%v as string) in %v", c.FormatIfNull(params, c.Field), c.InArgs(c.In))) 143 + q.Where(fmt.Sprintf("%v in %v", c.CastType(c.FormatIfNull(params, c.Field), "string"), c.InArgs(c.In)))
142 } 144 }
143 if len(c.Ex) > 0 { 145 if len(c.Ex) > 0 {
144 in := c.InArgs(c.Ex) 146 in := c.InArgs(c.Ex)
@@ -173,6 +175,10 @@ func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) { @@ -173,6 +175,10 @@ func (c Condition) SetWhere(params QueryOptions, q *gorm.DB) {
173 } 175 }
174 } 176 }
175 177
  178 +func (c *Condition) SetParams(params QueryOptions) {
  179 + c.params = params
  180 +}
  181 +
176 func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string { 182 func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string {
177 if params.Table != nil && params.Table.TableType == domain.ObjectDBTable { 183 if params.Table != nil && params.Table.TableType == domain.ObjectDBTable {
178 return f.SQLName 184 return f.SQLName
@@ -183,6 +189,13 @@ func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string { @@ -183,6 +189,13 @@ func (c Condition) FormatIfNull(params QueryOptions, f *domain.Field) string {
183 return f.SQLName 189 return f.SQLName
184 } 190 }
185 191
  192 +func (c Condition) CastType(sql, t string) string {
  193 + if c.params.Table != nil && c.params.Table.TableType == domain.ObjectDBTable {
  194 + return sql
  195 + }
  196 + return fmt.Sprintf("cast(%v as %v)", sql, t)
  197 +}
  198 +
186 var opMap = map[string]string{ 199 var opMap = map[string]string{
187 "=": "=", 200 "=": "=",
188 ">": ">", 201 ">": ">",