This commit is contained in:
suyl
2021-07-23 15:27:02 +08:00
parent 514eb69497
commit 5fe854a6db
2 changed files with 4 additions and 6 deletions

View File

@@ -60,7 +60,7 @@ func Update(db *sqlx.DB, obj interface{}, fields ...string) (err error) {
sql = strings.Builder{} sql = strings.Builder{}
sqlParams = []interface{}{} sqlParams = []interface{}{}
direct reflect.Value direct reflect.Value
fieldsMap = make(map[string]string) fieldsMap = make(map[string]*struct{})
) )
if stype.Kind() != reflect.Struct { if stype.Kind() != reflect.Struct {
direct = reflect.Indirect(value) direct = reflect.Indirect(value)
@@ -74,12 +74,12 @@ func Update(db *sqlx.DB, obj interface{}, fields ...string) (err error) {
fieldsStr := []string{} fieldsStr := []string{}
for _, v := range fields { for _, v := range fields {
fieldsStr = append(fieldsStr, v+"=?") fieldsStr = append(fieldsStr, v+"=?")
fieldsMap[v] = v fieldsMap[v] = &struct{}{}
} }
sql.WriteString(strings.Join(fieldsStr, ",")) sql.WriteString(strings.Join(fieldsStr, ","))
sql.WriteString(" WHERE id = ?") sql.WriteString(" WHERE id = ?")
for i := 1; i < stype.NumField(); i++ { for i := 1; i < stype.NumField(); i++ {
if fieldsMap[stype.Field(i).Tag.Get("json")] != "" { if fieldsMap[stype.Field(i).Tag.Get("json")] != nil {
if stype.Field(i).Type.String() == "*time.Time" { if stype.Field(i).Type.String() == "*time.Time" {
if direct.Field(i).Interface().(*time.Time) != nil { if direct.Field(i).Interface().(*time.Time) != nil {
sqlParams = append(sqlParams, direct.Field(i).Interface()) sqlParams = append(sqlParams, direct.Field(i).Interface())
@@ -96,8 +96,6 @@ func Update(db *sqlx.DB, obj interface{}, fields ...string) (err error) {
} else { } else {
sqlParams = append(sqlParams, direct.Field(0).Int()) sqlParams = append(sqlParams, direct.Field(0).Int())
} }
fmt.Println(sql.String())
fmt.Println(sqlParams)
_, err = db.DB.Exec(sql.String(), sqlParams...) _, err = db.DB.Exec(sql.String(), sqlParams...)
return err return err
} }

View File

@@ -49,7 +49,7 @@ var (
if err == nil { if err == nil {
order.PrepayID = result.PayInfo order.PrepayID = result.PayInfo
order.TransactionID = result.TrxID order.TransactionID = result.TrxID
err = dao.Update(db, order, "prepay_id", "transaction_id") err = dao.Update(db, order, "transaction_id", "prepay_id")
} }
return err return err
}, },