- useGetRowsWhenGetRow.
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
||||
type StoreUserInfo struct {
|
||||
model.WeiXins
|
||||
Members []*model.WeiXins `orm:"-" json:"members"`
|
||||
MembersStr string `orm:"members_str" json:"-"`
|
||||
MembersStr string `json:"-"`
|
||||
}
|
||||
|
||||
func GetStoreUsers(storeID int) (storeUserInfo *StoreUserInfo, err error) {
|
||||
@@ -23,9 +23,8 @@ func GetStoreUsers(storeID int) (storeUserInfo *StoreUserInfo, err error) {
|
||||
WHERE t1.parentid = -1 AND t1.jxstoreid = ?
|
||||
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
||||
`
|
||||
var storeUserInfos []*StoreUserInfo
|
||||
if err = dao.GetRows(nil, &storeUserInfos, sql, storeID); err == nil {
|
||||
storeUserInfo = storeUserInfos[0]
|
||||
storeUserInfo = new(StoreUserInfo)
|
||||
if err = dao.GetRow(nil, storeUserInfo, sql, storeID); err == nil {
|
||||
if storeUserInfo.MembersStr != "" {
|
||||
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
||||
}
|
||||
@@ -42,9 +41,8 @@ func GetUserInfo(mobile string) (storeUserInfo *StoreUserInfo, err error) {
|
||||
WHERE t1.tel = ?
|
||||
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
||||
`
|
||||
var storeUserInfos []*StoreUserInfo
|
||||
if err = dao.GetRows(nil, &storeUserInfos, sql, mobile); err == nil {
|
||||
storeUserInfo = storeUserInfos[0]
|
||||
storeUserInfo = new(StoreUserInfo)
|
||||
if err = dao.GetRow(nil, storeUserInfo, sql, mobile); err == nil {
|
||||
if storeUserInfo.MembersStr != "" {
|
||||
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
@@ -10,6 +11,10 @@ import (
|
||||
"github.com/astaxie/beego/orm"
|
||||
)
|
||||
|
||||
const (
|
||||
useGetRowsWhenGetRow = true
|
||||
)
|
||||
|
||||
type DaoDB struct {
|
||||
db orm.Ormer
|
||||
}
|
||||
@@ -72,7 +77,24 @@ func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (er
|
||||
if db == nil {
|
||||
db = GetDB()
|
||||
}
|
||||
return db.db.Raw(sql, values).QueryRow(inPtr)
|
||||
if !useGetRowsWhenGetRow { // beego QueryRow有bug,嵌入的struct不能正常绑定
|
||||
err = db.db.Raw(sql, values).QueryRow(inPtr)
|
||||
} else {
|
||||
typeInfo := reflect.TypeOf(inPtr)
|
||||
if typeInfo.Kind() != reflect.Ptr {
|
||||
return errors.New("inPtr must be ptr")
|
||||
}
|
||||
slice := reflect.New(reflect.SliceOf(typeInfo.Elem()))
|
||||
if err = GetRows(db, slice.Interface(), sql, values...); err == nil {
|
||||
slice = slice.Elem()
|
||||
if slice.Len() > 0 {
|
||||
reflect.ValueOf(inPtr).Elem().Set(slice.Index(0))
|
||||
} else {
|
||||
return orm.ErrNoRows
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func GetRows(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {
|
||||
|
||||
Reference in New Issue
Block a user