From c1d32ecdb36d7365a660ae2cf1405e1ca1898b4b Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期日, 20 十月 2024 22:21:02 +0800
Subject: [PATCH] 优化楼层查找
---
pkg/floor.go | 52 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 33 insertions(+), 19 deletions(-)
diff --git a/pkg/floor.go b/pkg/floor.go
index 379d22b..ad14c3b 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,45 @@
// 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) {
+ var direction, sign uint8
+ var floorNumber, floorStr, directionStr string
- sign := encoded[0]
- number := encoded[1:]
+ // 3浣嶆槸鏃х殑鏍煎紡, 涓轰簡鍏煎, 鏆傛椂淇濈暀
+ if len(encoded) == 3 {
+ sign = encoded[0]
+ floorNumber = encoded[1:]
+ } else if len(encoded) == 4 {
+ direction = encoded[0]
+ sign = encoded[1]
+ floorNumber = encoded[2:]
+ } else {
+ return "", "", fmt.Errorf("encoded string must be 3 characters long")
+ }
// Convert the number back to integer to remove any leading zeros
- parsedNumber, err := strconv.Atoi(number)
+ parsedNumber, err := strconv.Atoi(floorNumber)
if err != nil {
- return "", err
+ return "", "", err
}
- var restoredFloor 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