Files
cmautobuy/admin/service/inner_code_delete.go

33 lines
878 B
Go

package service
import (
"database/sql"
"fmt"
"cmautobuy/admin/repository"
)
// DeleteInnerCodes 物理删除当前页选中的档口入库码记录。
// applying 记录禁止删除;删除不会撤销顺运宝已经写入的远端值。
func DeleteInnerCodes(db *sql.DB, ids []int64) (int, error) {
if len(ids) == 0 {
return 0, fmt.Errorf("请先选择要删除的记录")
}
seen := make(map[int64]bool, len(ids))
unique := make([]int64, 0, len(ids))
for _, id := range ids {
if id <= 0 || seen[id] {
continue
}
seen[id] = true
unique = append(unique, id)
}
if len(unique) == 0 {
return 0, fmt.Errorf("没有有效的档口入库码记录")
}
if len(unique) > InnerCodeDeleteBatchLimit {
return 0, fmt.Errorf("一次最多删除当前页 %d 条记录", InnerCodeDeleteBatchLimit)
}
return repository.HardDeleteInnerCodeRecords(db, unique)
}