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