- move some funcs from jxtools to dao.

This commit is contained in:
gazebo
2018-09-11 11:38:31 +08:00
parent 45ce7352fc
commit 70bf5a522a
8 changed files with 130 additions and 48 deletions

View File

@@ -56,6 +56,18 @@ func GetDB() *DaoDB {
return &DaoDB{db: orm.NewOrm()}
}
func Begin(db *DaoDB) error {
return db.db.Begin()
}
func Commit(db *DaoDB) error {
return db.db.Commit()
}
func Rollback(db *DaoDB) error {
return db.db.Rollback()
}
func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {
if db == nil {
db = GetDB()
@@ -154,7 +166,7 @@ func DeleteEntity(db *DaoDB, item interface{}, conditions map[string]interface{}
err = utils.CallFuncLogError(func() error {
qs := db.db.QueryTable(item)
if len(conditions) == 0 {
qs = qs.Filter("ID", jxutils.GetObjFieldByName(item, model.FieldID))
qs = qs.Filter(model.FieldID, jxutils.GetObjFieldByName(item, model.FieldID))
} else {
for k, v := range conditions {
qs = qs.Filter(k, v)

View File

@@ -0,0 +1,80 @@
package dao
import (
"reflect"
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
)
func NormalFilterMapByStructObject(mapData map[string]interface{}, obj interface{}) (valid map[string]interface{}, invalid map[string]interface{}) {
return jxutils.FilterMapByStructObject(mapData, obj, []string{"id", "createdAt", "syncStatus", "lastOperator", "updatedAt", "finishedAt"})
}
func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
retVal, _ = NormalFilterMapByStructObject(mapData, obj)
retVal["lastOperator"] = userName
retVal["updatedAt"] = time.Now()
return retVal
}
func NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) {
retVal, _ = jxutils.FilterMapByFieldList(mapData, fields)
retVal["lastOperator"] = userName
retVal["updatedAt"] = time.Now()
return retVal
}
func checkAndGetStructValue(item interface{}) *reflect.Value {
value := reflect.ValueOf(item)
if value.Kind() == reflect.Ptr {
value = value.Elem()
} else {
panic("item ust be ptr type")
}
return &value
}
func WrapAddIDCULEntity(item interface{}, lastOperator string) interface{} {
now := time.Now()
if mapData, ok := item.(map[string]interface{}); ok {
mapData[model.FieldID] = 0
mapData[model.FieldCreatedAt] = now
mapData[model.FieldUpdatedAt] = now
mapData[model.FieldLastOperator] = lastOperator
} else {
value := checkAndGetStructValue(item)
nowValue := reflect.ValueOf(now)
value.FieldByName(model.FieldID).SetInt(0)
value.FieldByName(model.FieldCreatedAt).Set(nowValue)
value.FieldByName(model.FieldUpdatedAt).Set(nowValue)
value.FieldByName(model.FieldLastOperator).SetString(lastOperator)
}
return item
}
func WrapAddIDCULDEntity(item interface{}, lastOperator string) interface{} {
if mapData, ok := item.(map[string]interface{}); ok {
mapData[model.FieldDeletedAt] = utils.DefaultTimeValue
} else {
value := checkAndGetStructValue(item)
value.FieldByName(model.FieldDeletedAt).Set(reflect.ValueOf(utils.DefaultTimeValue))
}
return WrapAddIDCULEntity(item, lastOperator)
}
func WrapUpdateULEntity(item interface{}, lastOperator string) interface{} {
now := time.Now()
if mapData, ok := item.(map[string]interface{}); ok {
mapData[model.FieldUpdatedAt] = now
mapData[model.FieldLastOperator] = lastOperator
} else {
value := checkAndGetStructValue(item)
nowValue := reflect.ValueOf(now)
value.FieldByName(model.FieldUpdatedAt).Set(nowValue)
value.FieldByName(model.FieldLastOperator).SetString(lastOperator)
}
return item
}