zhangzengfei
2024-10-22 2c77f012601b7788dc58b0c9fd99aad587983b0d
pkg/floor.go
@@ -10,7 +10,7 @@
// 生成一个包含楼层的人脸id,解析楼层
// 使用48位源id, 其中前41位是imageid, 不可以修改 41-43位填 06 代表图像, +99 + 3位楼层(第一位0表示正,1表示负)
func GenerateFaceIdContainFloor(srcId, floorStr string) string {
   floorNum, _ := ParseFloor("0", floorStr)
   floorNum, _ := BuildFloorString("0", floorStr)
   newId := srcId[0:43] + "99" + floorNum
   //newId := srcId[0:43] + "99" + floorNum + snowflake.CreateRandomNumber(1)
@@ -29,10 +29,20 @@
   return RestoreFloor(srcId[45:48])
}
// ParseFloor parses the floor string and returns a three-character string
func ParseFloor(direction, floor string) (string, error) {
// BuildFloorString parses the floor string and returns a string
func BuildFloorString(direction, floor string) (string, error) {
   var dire string
   var sign string
   var number string
   switch direction {
   case "in":
      dire = "1"
   case "out":
      dire = "2"
   default:
      dire = "0"
   }
   // Check if the floor is negative
   if strings.HasPrefix(floor, "-") {
@@ -51,7 +61,7 @@
   // Format the number to be two digits
   formattedNumber := fmt.Sprintf("%02s", number)
   return direction + sign + formattedNumber, nil
   return dire + sign + formattedNumber, nil
}
// RestoreFloor restores the three-character string back to the original floor string
@@ -93,3 +103,25 @@
   return directionStr, floorStr, nil
}
func CheckDirection(str1, str2 string) string {
   // 去掉字符串最后一个字符 'F'
   numStr1 := strings.TrimSuffix(str1, "F")
   numStr2 := strings.TrimSuffix(str2, "F")
   // 转换为 int 类型
   num1, err1 := strconv.Atoi(numStr1)
   num2, err2 := strconv.Atoi(numStr2)
   // 检查转换是否成功
   if err1 != nil || err2 != nil {
      return ""
   }
   // 比较两个整数的大小
   if num1 > num2 {
      return "out"
   } else {
      return "in"
   }
}