From d3ea6799865812baaa1439922d6123e70a0cccdc Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 23 八月 2024 17:39:04 +0800 Subject: [PATCH] 修复otherFeature字段传送楼层信息 --- pkg/floor.go | 42 +++++++++++++++++++++++++----------------- 1 files changed, 25 insertions(+), 17 deletions(-) diff --git a/pkg/floor.go b/pkg/floor.go index 379d22b..c4c52a7 100644 --- a/pkg/floor.go +++ b/pkg/floor.go @@ -6,30 +6,31 @@ "strings" ) +// 宸插純鐢� // 鐢熸垚涓�涓寘鍚ゼ灞傜殑浜鸿劯id,瑙f瀽妤煎眰 // 浣跨敤48浣嶆簮id, 鍏朵腑鍓�41浣嶆槸imageid, 涓嶅彲浠ヤ慨鏀� 41-43浣嶅~ 06 浠h〃鍥惧儚, +99 + 3浣嶆ゼ灞�(绗竴浣�0琛ㄧず姝�,1琛ㄧず璐�) func GenerateFaceIdContainFloor(srcId, floorStr string) string { - floorNum, _ := ParseFloor(floorStr) + floorNum, _ := ParseFloor("0", floorStr) newId := srcId[0:43] + "99" + floorNum //newId := srcId[0:43] + "99" + floorNum + snowflake.CreateRandomNumber(1) return newId } -func ParseFloorFromId(srcId string) (string, error) { +func ParseFloorFromId(srcId string) (string, string, error) { if len(srcId) != 48 { - return "", fmt.Errorf("invalid id %s", srcId) + return "", "", fmt.Errorf("invalid id %s", srcId) } if srcId[43:45] != "99" { - return "", fmt.Errorf("invalid flag %s", srcId[43:45]) + return "", "", fmt.Errorf("invalid flag %s", srcId[43:45]) } return RestoreFloor(srcId[45:48]) } // ParseFloor parses the floor string and returns a three-character string -func ParseFloor(floor string) (string, error) { +func ParseFloor(direction, floor string) (string, error) { var sign string var number string @@ -50,32 +51,39 @@ // Format the number to be two digits formattedNumber := fmt.Sprintf("%02s", number) - return sign + formattedNumber, nil + return direction + sign + formattedNumber, nil } // RestoreFloor restores the three-character string back to the original floor string -func RestoreFloor(encoded string) (string, error) { - if len(encoded) != 3 { - return "", fmt.Errorf("encoded string must be 3 characters long") +func RestoreFloor(encoded string) (string, string, error) { + if len(encoded) != 4 { + return "", "", fmt.Errorf("encoded string must be 3 characters long") } - sign := encoded[0] - number := encoded[1:] + direction := encoded[0] + sign := encoded[1] + number := encoded[2:] // Convert the number back to integer to remove any leading zeros parsedNumber, err := strconv.Atoi(number) if err != nil { - return "", err + return "", "", err } - var restoredFloor string + var floorStr, directionStr string if sign == '1' { - restoredFloor = fmt.Sprintf("-%dF", parsedNumber) + floorStr = fmt.Sprintf("-%dF", parsedNumber) } else if sign == '0' { - restoredFloor = fmt.Sprintf("%dF", parsedNumber) + floorStr = fmt.Sprintf("%dF", parsedNumber) } else { - return "", fmt.Errorf("invalid sign character in encoded string") + return "", "", fmt.Errorf("invalid sign character in encoded string") } - return restoredFloor, nil + if direction == '1' { + directionStr = "in" + } else if direction == '2' { + directionStr = "out" + } + + return directionStr, floorStr, nil } -- Gitblit v1.8.0