- useGetRowsWhenGetRow.
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
|||||||
type StoreUserInfo struct {
|
type StoreUserInfo struct {
|
||||||
model.WeiXins
|
model.WeiXins
|
||||||
Members []*model.WeiXins `orm:"-" json:"members"`
|
Members []*model.WeiXins `orm:"-" json:"members"`
|
||||||
MembersStr string `orm:"members_str" json:"-"`
|
MembersStr string `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoreUsers(storeID int) (storeUserInfo *StoreUserInfo, err error) {
|
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 = ?
|
WHERE t1.parentid = -1 AND t1.jxstoreid = ?
|
||||||
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
||||||
`
|
`
|
||||||
var storeUserInfos []*StoreUserInfo
|
storeUserInfo = new(StoreUserInfo)
|
||||||
if err = dao.GetRows(nil, &storeUserInfos, sql, storeID); err == nil {
|
if err = dao.GetRow(nil, storeUserInfo, sql, storeID); err == nil {
|
||||||
storeUserInfo = storeUserInfos[0]
|
|
||||||
if storeUserInfo.MembersStr != "" {
|
if storeUserInfo.MembersStr != "" {
|
||||||
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
||||||
}
|
}
|
||||||
@@ -42,9 +41,8 @@ func GetUserInfo(mobile string) (storeUserInfo *StoreUserInfo, err error) {
|
|||||||
WHERE t1.tel = ?
|
WHERE t1.tel = ?
|
||||||
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
GROUP BY t1.id, t1.jxstoreid, t1.openid, t1.tel, t1.nickname, t1.parentid;
|
||||||
`
|
`
|
||||||
var storeUserInfos []*StoreUserInfo
|
storeUserInfo = new(StoreUserInfo)
|
||||||
if err = dao.GetRows(nil, &storeUserInfos, sql, mobile); err == nil {
|
if err = dao.GetRow(nil, storeUserInfo, sql, mobile); err == nil {
|
||||||
storeUserInfo = storeUserInfos[0]
|
|
||||||
if storeUserInfo.MembersStr != "" {
|
if storeUserInfo.MembersStr != "" {
|
||||||
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
err = utils.UnmarshalUseNumber([]byte(storeUserInfo.MembersStr), &storeUserInfo.Members)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dao
|
package dao
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -10,6 +11,10 @@ import (
|
|||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
useGetRowsWhenGetRow = true
|
||||||
|
)
|
||||||
|
|
||||||
type DaoDB struct {
|
type DaoDB struct {
|
||||||
db orm.Ormer
|
db orm.Ormer
|
||||||
}
|
}
|
||||||
@@ -72,7 +77,24 @@ func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (er
|
|||||||
if db == nil {
|
if db == nil {
|
||||||
db = GetDB()
|
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) {
|
func GetRows(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user