1
This commit is contained in:
214
business/dao/dao_utils.go
Normal file
214
business/dao/dao_utils.go
Normal file
@@ -0,0 +1,214 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals/refutil"
|
||||
)
|
||||
|
||||
func IDCULDFilterMapByStructObject(mapData map[string]interface{}, obj interface{}, isCheckValue bool) (valid map[string]interface{}, invalid map[string]interface{}) {
|
||||
// 这里必须用首字母小写,因为是用于访问map,是需要完全匹配的
|
||||
return refutil.FilterMapByStructObject(mapData, obj, nil, []string{"id", "createdAt", "updatedAt", "finishedAt", "deletedAt", "syncStatus", "lastOperator"}, isCheckValue)
|
||||
}
|
||||
|
||||
func NormalMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
||||
retVal, _ = IDCULDFilterMapByStructObject(mapData, obj, false)
|
||||
return retVal
|
||||
}
|
||||
|
||||
func StrictMakeMapByStructObject(mapData map[string]interface{}, obj interface{}, userName string) (retVal map[string]interface{}) {
|
||||
retVal, _ = IDCULDFilterMapByStructObject(mapData, obj, true)
|
||||
return retVal
|
||||
}
|
||||
|
||||
func IDCULDFilterMapByStructObject2(mapData map[string]interface{}, obj interface{}, objPtr interface{}, isCheckValue bool) (valid map[string]interface{}, invalid map[string]interface{}) {
|
||||
return refutil.FilterMapByStructObject(mapData, obj, objPtr, []string{"id", "createdAt", "updatedAt", "finishedAt", "deletedAt", "syncStatus", "lastOperator"}, isCheckValue)
|
||||
}
|
||||
|
||||
//根据传进来的objPtr去修改它的值
|
||||
func StrictMakeMapByStructObject2(mapData map[string]interface{}, obj interface{}, objPtr interface{}, userName string) (retVal map[string]interface{}) {
|
||||
retVal, _ = IDCULDFilterMapByStructObject2(mapData, obj, objPtr, true)
|
||||
return retVal
|
||||
}
|
||||
|
||||
func NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) {
|
||||
retVal, _ = refutil.FilterMapByFieldList(mapData, fields)
|
||||
return retVal
|
||||
}
|
||||
|
||||
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 := refutil.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 := refutil.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 := refutil.CheckAndGetStructValue(item)
|
||||
nowValue := reflect.ValueOf(now)
|
||||
value.FieldByName(model.FieldUpdatedAt).Set(nowValue)
|
||||
value.FieldByName(model.FieldLastOperator).SetString(lastOperator)
|
||||
}
|
||||
return item
|
||||
}
|
||||
|
||||
func GenQuestionMarks(count int) (marks string) {
|
||||
if count > 0 {
|
||||
if count == 1 {
|
||||
marks = "?"
|
||||
} else {
|
||||
builder := &strings.Builder{}
|
||||
builder.Grow(1 + (count-1)*3)
|
||||
builder.WriteString("?")
|
||||
for i := 1; i < count; i++ {
|
||||
builder.WriteString(", ?")
|
||||
}
|
||||
marks = builder.String()
|
||||
}
|
||||
}
|
||||
return marks
|
||||
}
|
||||
|
||||
func ConvertStructFieldPrefix(prefix string) string {
|
||||
return prefix
|
||||
}
|
||||
|
||||
func ConvertJsonFieldPrefix(prefix string) string {
|
||||
return strings.ToLower(prefix)
|
||||
}
|
||||
|
||||
func ConvertDBFieldPrefix(prefix string) string {
|
||||
return strings.ToLower(prefix)
|
||||
}
|
||||
|
||||
func GetVendorThingIDStructField(prefix string) string {
|
||||
return ConvertStructFieldPrefix(prefix) + "ID"
|
||||
}
|
||||
|
||||
func GetVendorThingIDJsonField(prefix string) string {
|
||||
return ConvertJsonFieldPrefix(prefix) + "ID"
|
||||
}
|
||||
|
||||
func GetVendorThingIDDBField(prefix string) string {
|
||||
return ConvertDBFieldPrefix(prefix) + "_id"
|
||||
}
|
||||
|
||||
func GetSyncStatusStructField(prefix string) string {
|
||||
return ConvertStructFieldPrefix(prefix) + "SyncStatus"
|
||||
}
|
||||
|
||||
func GetSyncStatusJsonField(prefix string) string {
|
||||
return ConvertJsonFieldPrefix(prefix) + "SyncStatus"
|
||||
}
|
||||
|
||||
func GetSyncStatusDBField(prefix string) string {
|
||||
return ConvertDBFieldPrefix(prefix) + "_sync_status"
|
||||
}
|
||||
|
||||
func GetVendorPriceStructField(prefix string) string {
|
||||
return ConvertStructFieldPrefix(prefix) + "Price"
|
||||
}
|
||||
|
||||
func GetVendorPriceJsonField(prefix string) string {
|
||||
return ConvertJsonFieldPrefix(prefix) + "Price"
|
||||
}
|
||||
|
||||
func GetVendorPriceDBField(prefix string) string {
|
||||
return ConvertDBFieldPrefix(prefix) + "_price"
|
||||
}
|
||||
|
||||
func GetCategoryIDStructField(prefix string) string {
|
||||
return ConvertStructFieldPrefix(prefix) + "CategoryID"
|
||||
}
|
||||
|
||||
func GetCategoryIDJsonField(prefix string) string {
|
||||
return ConvertJsonFieldPrefix(prefix) + "CategoryID"
|
||||
}
|
||||
|
||||
func GetCategoryIDDBField(prefix string) string {
|
||||
return ConvertDBFieldPrefix(prefix) + "_category_id"
|
||||
}
|
||||
|
||||
func GetVendorLockTimeStructField(prefix string) string {
|
||||
return ConvertStructFieldPrefix(prefix) + "LockTime"
|
||||
}
|
||||
|
||||
func value2Value(srcValue, dstValue reflect.Value, copyType int) {
|
||||
srcType := srcValue.Type()
|
||||
for i := 0; i < srcType.NumField(); i++ {
|
||||
fieldName := srcType.Field(i).Name
|
||||
if dstFieldvalue := dstValue.FieldByName(fieldName); dstFieldvalue.IsValid() {
|
||||
srcFieldValue := srcValue.FieldByName(fieldName)
|
||||
if false { //dstFieldvalue.Kind() == reflect.Struct {
|
||||
fmt.Printf("%v, %v\n", utils.Format4Output(srcFieldValue.Interface(), false), utils.Format4Output(dstFieldvalue.Interface(), false))
|
||||
value2Value(srcFieldValue, dstFieldvalue, copyType)
|
||||
} else {
|
||||
// fmt.Printf("%v, %v\n", srcFieldValue.Interface(), dstFieldvalue.Interface())
|
||||
dstFieldvalue.Set(srcFieldValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// func copyBetweenNoramAndNullObj(src, dst interface{}, copyType int) {
|
||||
// dstValue := reflect.ValueOf(dst)
|
||||
// if dstValue.Kind() != reflect.Ptr {
|
||||
// panic("ObjNormal2Null dst must be ptr of struct")
|
||||
// }
|
||||
// srcValue := reflect.ValueOf(src)
|
||||
// if srcValue.Kind() == reflect.Ptr {
|
||||
// srcValue = srcValue.Elem()
|
||||
// }
|
||||
// value2Value(srcValue, dstValue.Elem(), copyType)
|
||||
// }
|
||||
|
||||
// func ObjNormal2Null(src, dst interface{}) {
|
||||
// copyBetweenNoramAndNullObj(src, dst, 1)
|
||||
// }
|
||||
|
||||
// func ObjNull2Normal(src, dst interface{}) {
|
||||
// copyBetweenNoramAndNullObj(src, dst, 2)
|
||||
// }
|
||||
|
||||
func IsVendorThingIDEmpty(vendorThingID string) bool {
|
||||
return vendorThingID == "" || vendorThingID == "0"
|
||||
}
|
||||
|
||||
func GetAuthType4Vendor(vendorID int) (authType string) {
|
||||
authType = ConvertJsonFieldPrefix(model.VendorNames[vendorID])
|
||||
if authType != "" {
|
||||
authType = "vendor." + authType
|
||||
}
|
||||
return authType
|
||||
}
|
||||
Reference in New Issue
Block a user