func CreateId(db *gorm.DB) int {
var configs []Config
db.Select("pname").Find(&configs)
var usedNumbers []int
for _, config := range configs {
if strings.HasPrefix(config.Pname, "ppp") {
numberStr := strings.TrimPrefix(config.Pname, "ppp")
number, err := strconv.Atoi(numberStr)
if err == nil {
usedNumbers = append(usedNumbers, number)
}
}
}
sort.Ints(usedNumbers) // 确保编号是排序的
// 找出空缺的编号或顺延到下一个可用编号
missingNumber := 0
for _, number := range usedNumbers {
if number == missingNumber {
missingNumber++
} else {
break // 找到空缺的编号
}
}
// 如果所有编号都已经使用,missingNumber 将是最大的编号加一
if missingNumber == len(usedNumbers) {
// 所有编号都已使用,顺延到下一个编号
if len(usedNumbers) > 0 {
missingNumber = usedNumbers[len(usedNumbers)-1] + 1
}
}
return missingNumber
}