feat: 完成规格映射与采购任务创建 (#69)
This commit is contained in:
@@ -184,6 +184,26 @@ func ListClientsForUser(db *sql.DB, keyword, visibleUserID string) ([]ClientWith
|
||||
return listClientsForUserPage(db, keyword, visibleUserID, -1, 0)
|
||||
}
|
||||
|
||||
// ClientVisibleToUser 校验客户端是否存在且位于当前账号可见范围。
|
||||
// visibleUserID 为空表示管理员,可选择任意已登记客户端。
|
||||
func ClientVisibleToUser(q Execer, clientID, visibleUserID string) (bool, error) {
|
||||
query := `SELECT COUNT(*) FROM clients c`
|
||||
args := []any{}
|
||||
if visibleUserID != "" {
|
||||
query += ` JOIN client_user_assignments a
|
||||
ON a.client_id = c.client_id AND a.ended_at IS NULL
|
||||
AND a.user_id = ?`
|
||||
args = append(args, visibleUserID)
|
||||
}
|
||||
query += ` WHERE c.client_id = ?`
|
||||
args = append(args, clientID)
|
||||
var count int
|
||||
if err := q.QueryRow(query, args...).Scan(&count); err != nil {
|
||||
return false, fmt.Errorf("校验客户端可见范围失败: %w", err)
|
||||
}
|
||||
return count == 1, nil
|
||||
}
|
||||
|
||||
// ListClientsForUserPage 返回一页客户端和同一可见范围内的总数。
|
||||
func ListClientsForUserPage(db *sql.DB, keyword, visibleUserID string, limit, offset int) ([]ClientWithAssignee, int, error) {
|
||||
where, args := clientListFilter(keyword, visibleUserID)
|
||||
|
||||
Reference in New Issue
Block a user