| | |
| | | // 生成一个包含楼层的人脸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) |
| | | |
| | |
| | | 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, "-") { |
| | |
| | | // 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 |
| | |
| | | |
| | | 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" |
| | | } |
| | | } |