package dao import ( "reflect" "strings" "time" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" ) func IDCULDFilterMapByStructObject(mapData map[string]interface{}, obj interface{}, isCheckValue bool) (valid map[string]interface{}, invalid map[string]interface{}) { // 这里必须用首字母小写,因为是用于访问map,是用于访问map,是需要完全匹配的 return jxutils.FilterMapByStructObject(mapData, obj, []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 NormalMakeMapByFieldList(mapData map[string]interface{}, fields []string, userName string) (retVal map[string]interface{}) { retVal, _ = jxutils.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 := jxutils.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 := jxutils.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 := jxutils.CheckAndGetStructValue(item) nowValue := reflect.ValueOf(now) value.FieldByName(model.FieldUpdatedAt).Set(nowValue) value.FieldByName(model.FieldLastOperator).SetString(lastOperator) } return item } func GenQuestionMarks(count int) string { marks := "" if count > 0 { marks = "?" for i := 1; i < count; i++ { marks += ", ?" } } 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 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" }